이것은 확장 된 주석 일뿐입니다. 몇 번 전에 나는 (합리적으로 인코딩 된) NP- 완전 언어를 받아 들일 수있는 멀티 테이프 NTM이 얼마나 빠른지 물었다. 나는이 아이디어를 생각해 냈습니다.
변수가 단항으로 표시 되더라도 3-SAT는 NP- 완료 상태를 유지합니다. 특히 , 알파벳 Σ = { + , − , 1 에서 n 개의 변수 에 대한 임의의 3-SAT 공식 φ 와 m 개의 절에서 m 개의 절을 변환 할 수 있습니다 } 모든 변수 발생은 단항으로 표시됩니다.(xi∨¬xj∨xk)φnmΣ={+,−,1}
+1i0,−1j,+1k
예를 들어 는 다음과 같이 변환 될 수 있습니다.(x2∨−x3∨+4)
+110-1110+11110
따라서 우리는 절을 연결 하는 동등한 문자열 U ( φ i ) 에서 3-SAT 수식 를 변환 할 수 있습니다 . 언어 L U = { U ( φ i ) ∣ φ i ∈ 3 − S A T } 는 NP- 완료입니다.φiU(φi)LU={U(φi)∣φi∈3−SAT}
로 2 테이프 NTM 문자열의 경우를 결정할 수 있습니다 시간에 2 | x | 이런 식으로.x∈LU2|x|
- 첫 번째 헤드는 왼쪽에서 오른쪽으로 입력을 스캔하고 내부 논리를 사용하여 절에 들어가거나 나갈 때 추적하거나 공식의 끝에 도달 할 때 추적합니다. 또는 -를 찾을 때마다 두 번째 헤드 는 x i 를 나타내는 1 i 에서 오른쪽으로 움직이기 시작합니다 . 1 i 의 끝에서 , 두 번째 헤드가 0 에 있으면, 그것은 진리 값 + 또는 - (할당)를 추측 하여 두 번째 테이프에 씁니다. + 또는 - 를 찾으면 해당 변수에 이미 값이 할당 된 것입니다.+−1ixi1i0+−+−
- 두 경우 모두 내부 논리를 사용하여 NTM은 두 번째 헤드 (할당) 아래의 실제 값을 마지막으로 본 또는 - 와 일치시킵니다 . 일치하면 조항이 충족됩니다.+−
- 두 번째 머리는 가장 오른쪽 셀로 돌아갈 수 있습니다.
- 내부 로직으로 NTM은 첫 번째 헤드가 입력의 끝으로 이동하는 동안 모든 절이 충족되면 추적 할 수 있습니다.
예:
Tape 1 (formula) Tape 2 (variable assignments)
+110-1110+11110... 0000000000000...
^ ^
+110-1110+11110... 0000000000000...
^ ^
+110-1110+11110... 0000000000000...
^ ^
+110-1110+11110... 0+00000000000... first guess set x2=T; matches +
^ ^ so remember that current clause is satisfied
+110-1110+11110... 0+00000000000...
^ ^
...
+110-1110+11110... 0+00000000000...
^ ^
...
+110-1110+11110... 0++0000000000... second guess set x3=T
^ ^ don't reject because current
clause is satisfied (and in every
case another literal must be parsed)
시간을 줄일 수 있습니다 절 표현에 여분의 심볼을 추가하면 :|x|
+1i0i,−1j0j,+1k0k...+++
+++
0i+++++