선형속도상승정리
Linear speedup theorem계산 복잡도 이론에서 어떠한 실질적인 c를 감안할 때 튜링 기계의 선형 운전 시간 단축 정리 상태;0과 어떤k-tape 튜링 기계 시간 f(n)에 문제가 해결, 많은에서 시간 동안 같은 문제를 해결하는 다른k-tape 기계 f(n)/c+2n+3, 만일 원본기 명확하지 않습니다 어디에 k>, 1.[1][2], 그때를 찾다.e새 machine는 또한 비파괴주의적이다.예를 들어 2n + 3의 상수 2와 3을 n + 2로 낮출 수 있다.[1]
증명
이 구조는 원래 기계 M의 여러 테이프 기호를 새 기계 N의 하나의 테이프 기호로 포장하는 것에 기초한다.그것은 프로세서에서 긴 단어와 명령을 사용하는 것과 비슷한 효과를 가지고 있다: 그것은 계산 속도를 높이지만 기계 크기를 증가시킨다.얼마나 많은 오래된 기호가 새로운 기호에 채워지는가는 원하는 속도 향상에 달려있다.
새 기계가 세 개의 오래된 기호를 새 기호로 포장한다고 가정합시다.그러면 새로운 기계의 알파벳은 ∪ 3 : 원래의 기호와 포장된 기호로 구성된다.새 기계는 같은 번호 k > 1의 테이프를 가지고 있다.N의 상태는 다음과 같은 구성 요소로 구성된다.
- M의 상태;
- 각 테이프에 대해, 머리 아래에 포장된 기호를 설명하는 포장된 기호 3개, 왼쪽에 포장된 기호 및 오른쪽에 포장된 기호
- 각 테이프에 대해 N 머리 아래의 포장 기호 내의 원래 머리 위치.
새 시스템 N은 지정된 입력을 새 알파벳으로 인코딩하는 것으로 시작한다(따라서 해당 알파벳에는 이(가) 포함되어야 한다).예를 들어, 2-테이프 M에 대한 입력이 왼쪽에 있는 경우, 인코딩 후 N의 테이프 구성이 오른쪽에 있는 경우:
[ # _ a b b a b b a _ ...] [ # (_,_,_) (_,_,_) (_,_,_) ...] [ # _ _ _ _ _ _ _ _ _ ...] [ # (_,a,b) (b,a,b) (b,a,_) ...]
새 기계는 세 개의 오래된 기호(예: 빈 기호 _, 기호 a, 기호 b)를 새 기호(여기서_,a,b)에 넣고 두 번째 테이프에 복사하면서 첫 번째 테이프를 지운다.초기화가 끝나면 새 기계는 머리를 시작으로 향한다.전체적으로 2n + 3단계가 필요하다.
초기화 후 N의 상태는( 0;?,( ,_ , , ,_ , ?,],[ , 1 , (\_), (\, where the symbol means that it will be filled in by the machine later; the symbol means that the head of the original machine points to the first symbols inside and . Now t기계는 6개의 자체 전환기를 사용하여 m = 3번의 전환을 시뮬레이션하기 시작한다(이 경우 속도 상승은 없지만 일반적으로 m은 6보다 훨씬 클 수 있다).M과 N의 구성을 다음과 같이 하십시오.
[ # _ _ b b a b b a _ ...] [ # (_,a,b) (b,a,b) (b,_,_) ...] [ # _ a b b a b b _ _ ...] [ # (_,_,b) (b,a,b) (b,a,_) ...]
여기서 굵은 기호는 머리 위치를 나타낸다.N의 상태는(;?, ( , , b),? ;( ),, ( b ,) (b, (; ~~? ) (\ ?;~~(b? ;~~[ 이제 다음과 같은 일이 일어난다.
- N은 오른쪽, 왼쪽, 왼쪽, 오른쪽으로 움직인다.After the four moves, the machine N has all its filled, and its state becomes
- 이제 N은 원래 기계의 m = 3 전환에 따라 기호와 상태를 업데이트한다.이 작업에는 두 번의 이동이 필요할 수 있다(현재 기호를 업데이트하고 인접한 기호 중 하나를 업데이트).원래 기계는 다음과 같이 움직인다고 가정한다(오른쪽 N의 해당 구성).
[ # _ _ _ _ _ b b a _ ...] [ # (_,a,b) (b,_,_) (_,_,_) ...] [ # _ a b b _ _ _ _ _ ...] [ # (_,_,_) (_,_,b) (b,a,_) ...]
N의 는 ;? ,,, , , , , ,,,, , ,,, ,, ,, , , , , ,, , , , , , ,, , , , , , , , , , ,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,.
복잡성
초기화를 위해서는 2n + 3단계가 필요하다.시뮬레이션에서 N의 6단계는 M의 m단계를 시뮬레이션한다.m > 를 선택하면 시간 f( n)/ + + 3.이 생성된다
참조
- ^ a b Christos Papadimitriou (1994). "2.4. Linear speedup". Computational Complexity. Addison-Wesley.
- ^ Thomas A.Sudkamp (1994). "14.2 Linear Speedup". Languages and Machines: An Introduction to the Theory of Computer Science. Addison-Wesley.