문제는 L = A에 대해 NP-hard입니다 . * 여기서 A 는 다음 단어를 포함하는 유한 언어입니다.L=A∗A
- x 111 , x 000 ,x111x000
- y 100 , y 010 , y 001 ,y100y010y001
- 00 c 11 , 01 c 10 , 10 c 01 및 11 c 0000c1101c1010c0111c00
감소는 NP-hard로 알려진 문제인 그래프 방향에서 발생합니다 ( https://link.springer.com/article/10.1007/s00454-017-9884-9 참조 ). 이 문제에서는 모든 정점에 " { 1 } "또는 " { 0 , 3 } " 이라는 레이블이 붙은 3 개의 정규 무 방향 그래프가 제공됩니다 . 목표는 모든 정점의 외곽이 해당 정점에 레이블을 설정하도록 그래프의 가장자리를 지시하는 것입니다.{1}{0,3}
축소는 그래프 방향 인스턴스를 입력으로 사용하고 출력으로 트리플 목록을 생성해야합니다. 이 축소에서 우리가 출력하는 트리플은 항상 특정 제약 조건을 충족시킵니다. 이러한 제약 조건은 아래에 나열되어 있으며, 이러한 제약 조건을 만족하는 경우에만 트리플 목록을 유효한 것으로 간주합니다.
- 문자 x , y 및 c 에는 정확히 하나의 인덱스를 포함하는 간격 만 제공됩니다. 즉, 이러한 문자를 배치 할 때마다 특정 위치에 배치됩니다.xyc
- i ∈ { 0 , 1 } 과 함께 인스턴스에 존재하는 모든 트리플 ( i , l , r ) 에 대해 트리플 ( 1 - i , l , r ) 도 존재합니다.(i,l,r)i∈{0,1}(1−i,l,r)
- 경우 ( α , L , R ) 및 ( α ' , L ' , R은 ' ) 모두 다음 예에서 본 루타 중입니다 L < L ' ≤ R ' < R 또는 L ' < L ≤ R < R ' , 또는 { α , α '(α,l,r)(α′,l′,r′)l<l′≤r′<rl′<l≤r<r′ } = { 0 , 1 } 와 L = 리터{α,α′}={0,1}'' < r = r ' .l=l′<r=r′
- 경우 ( α , L , R는 ) 삼중 인 후 트리플 번호 ( α ' , L ' , R ' ) 와 L ≤ L ' ≤ R ' ≤ r은 정확히 R - L + 1 .(α,l,r)(α′,l′,r′)l≤l′≤r′≤rr−l+1
이 글의 끝에서 입증 된 다음의 정리는주의하십시오.
Lemma : 유효한 트리플 목록의 경우 문자 x , y 및 c 는 트리플로 표시된대로 정확하게 배치해야하며 트리플 ( 0 , l , r ) 및 ( 1 , l , r ) 쌍 에는 해당 트리플의 두 문자는 인덱스 l 과 r에 배치해야합니다 .xyc(0,l,r)(1,l,r)lr
그런 다음 축소의 아이디어는 다음과 같습니다.
가장자리를 나타 내기 위해 트리플 ( 0 , l , r ) 및 ( 1 , l , r ) 쌍을 사용 합니다. 가장자리는 인덱스 l 과 인덱스 r 에서 끝점 사이를 이동합니다 . 유효한 트리플 목록을 생성한다고 가정하면,이 두 트리플의 문자는 l 과 r에 위치해야합니다 . 따라서 순서가 가장자리의 방향을 나타내는 것으로 간주 할 수 있습니다. 여기서 1 은 가장자리의 "머리"이고 0 은 "꼬리"입니다. 즉, 1 이 r에 있으면(0,l,r)(1,l,r)lrlr101r 은 가장자리가 l 에서 r을 가리키고 1 이 l에 있으면lr1l 에서 그 에지 점을 R 을 L .rl
꼭짓점을 나타 내기 위해 인덱스에 x 또는 y 문자를 배치 하고 다음 세 문자를 정점에 닿는 세 모서리의 끝점으로 사용합니다. x를 배치하면 유한 언어 A 의 문자열로 인해 꼭짓점의 세 모서리가 모두 같은 방향을 향해야합니다 (모두 꼭짓점 또는 모두 꼭짓점 바깥 쪽) . 이러한 꼭짓점은 0 또는 3보다 다르므로 { 0 , 3 }으로 표시된 꼭짓점에 정확히 x를 배치합니다 . 우리가 y를 놓으면xyxA03x{0,3}y꼭짓점의 세 모서리 중 하나는 A 의 문자열로 인해 같은 방향을 가리켜 야합니다 . 이러한 꼭짓점은 1보다 다르므로 { 1 } 이라고 표시된 꼭짓점에 정확히 y를 배치합니다 .A1y{1}
어떤 의미에서 우리는 끝났습니다. 특히,이 인스턴스를 해결하는 것과 그래프 방향 인스턴스를 해결하는 것 사이의 대응 관계가 명확해야합니다. 불행하게도, 우리가 생성 한 트리플의 목록이 유효하지 않을 수 있으므로 설명 된 "가장자리"가 의도 한대로 작동하지 않을 수 있습니다. 특히, 트리플의 간격이 항상 서로를 포함해야하는 조건이 유지되지 않을 수 있기 때문에 트리플의 목록이 유효하지 않을 수 있습니다. 두 가장자리의 간격이 서로를 포함하지 않고 겹칠 수 있습니다.
이를 방지하기 위해 인프라를 추가했습니다. 특히 "교차 정점"을 추가합니다. 크로스 오버 버텍스는 각 쌍 내에서 한 에지가 크로스 오버 버텍스를 가리키고 하나를 가리 키도록 에지가 짝을 이루는 정도 4 의 버텍스입니다 . 다시 말해, 크로스 오버 버텍스는 두 개의 "크로싱"에지와 동일하게 동작합니다. 우리는 문자 배치하여 크로스 오버의 정점을 나타내는 C를 일부 인덱스에서 전 . 그런 언어 유의 A가 있는 문자를 구속 I - 1 과 I + 2 대향 (하나가 0 과 하나의 1 에서) 및 문자 I - 24ciAi−1i+201i−2그리고 난 + 1 대향한다. 따라서이 지수를 교차 정점에서 4 개의 모서리에 대한 종점으로 사용하는 경우 동작은 정확히 설명 된 것입니다. 4 개의 모서리는 쌍으로되어 있고 모든 쌍 중에서 1 점, 1 점입니다.i+1
이 크로스 오버를 실제로 어떻게 배치합니까? 겹치는 두 간격 ( l , r ) 과 ( l ' , r ' ) 이 있다고 가정 해 봅시다 . WLOG, l < l ' < r < r ' . 교차 문자를 중간에 추가합니다 ( l ' 와 r 사이 ). (따라서 우리는 항상 충분한 공간이 있도록 모든 것을 분리했다고 말하고 결국에는 사용되지 않는 공간을 제거 할 것입니다.) 크로스 오버 문자의 색인을 i로하십시오 . 그런 다음 네 개의 트리플을 대체합니다 ( 0(l,r)(l′,r′)l<l′<r<r′l′ri , L , R ) ,(0,l,r) ( 1 , l , r ) , ( 0 , l ' , r ' ) 및 ( 1 , l ' , r ' ) 및 2 개의 각각 3 개 (문자 0 및 문자 1) ) 다음 네 구간 ( l , i - 1 ) , ( i + 2 , r )(1,l,r)(0,l′,r′)(1,l′,r′)01(l,i−1)(i+2,r), ( l ' , i - 2 ) , ( i + 1 , r ' ) . 간격이 더 이상 잘못된 방식으로 겹치지 않습니다. (이 변경 후, 두 간격이 겹치면 하나는 다른 하나의 내부에 엄격하게 위치합니다.) 또한 l 에서 r 까지의 가장자리는 l 에서 교차 정점 까지의 가장자리로 대체되고 그 다음부터 r 까지의 가장자리 로 대체됩니다 . 이 두 모서리는 하나가 지적되고 하나가 지적되는 방식으로 교차 정점에서 쌍을 이룹니다. 다시 말해, 두 모서리는 함께 교체하는 한쪽 모서리처럼 작동합니다.(l′,i−2)(i+1,r′)lrlr
어떤 의미에서,이 교차 정점에 두 개의 모서리 (간격이 겹치는)를 "교차하지 않은"상태로 두십시오. 교차 정점을 추가해도 추가 모서리가 교차되지는 않습니다. 따라서 충분한 교차 정점을 삽입하여 모든 교차 모서리 쌍을 교차 해제 할 수 있습니다. 최종 결과는 여전히 Graph Orientation 인스턴스에 해당하지만 이제는 트리플 목록이 유효합니다. 이제 교차 모서리를 "교차"했으므로 속성을 쉽게 확인할 수 있습니다. 따라서 보조 표가 적용됩니다. 대응 관계는 실제로 동등성입니다. 즉,이 감소는 정확합니다.
정리의 증거
Lemma : 유효한 트리플 목록의 경우 문자 x , y 및 c 는 트리플로 표시된대로 정확하게 배치해야하며 트리플 ( 0 , l , r ) 및 ( 1 , l , r ) 쌍 에는 해당 트리플의 두 문자는 인덱스 l 과 r에 배치해야합니다 .xyc(0,l,r)(1,l,r)lr
증명:
우리는 간격 길이로 트리플에 유도를 진행합니다. 특히, 우리의 진술은 다음과 같습니다. 일부 트리플의 간격 길이가있는 경우 모든 kk K를 표제어에 설명 된 바와 같이 그 배에서 문자를 배치해야합니다.k
기본 사례 : k = 0 의 경우 트리플은 간격 내 단일 인덱스에 문자 x , y 또는 c 를 배치해야합니다 . 이것은 정확히 정리대로 설명되어 있습니다.k=0xyc
Inductive case: assume the statement holds for any kk less than some k′k′. Now consider some triple with interval length k′k′. Then that triple must be of the form (i,l,r)(i,l,r) with r=l+k′−1r=l+k′−1 and i∈{0,1}i∈{0,1}. The triple (1−i,l,r)(1−i,l,r) must also be present. The number of triples (α′,l′,r′)(α′,l′,r′) with l≤l′≤r′≤rl≤l′≤r′≤r is exactly r−l+1=k′r−l+1=k′. These triples include triples (0,l,r)(0,l,r) and (1,l,r)(1,l,r) but also k′−2k′−2 other triples of the form (α′,l′,r′)(α′,l′,r′) with l<l′≤r′<rl<l′≤r′<r. These other triples all have interval length smaller than k′k′, so they all must place their characters as specified in the lemma. The only way for this to occur is if these triples place characters in every index starting at index l+1l+1 and ending at index r+1r+1. Thus, our two triples (0,l,r)(0,l,r) and (1,l,r)(1,l,r) must place their characters at indices ll and rr, as described in the lemma, concluding the inductive case.
By induction, the lemma is correct.