“k-tape”Turing Machine의 테이프를“1-tape”Turing Machine의 단일 테이프에 매핑하는 방법


11

나는 Sipser를 읽고 있는데 k 테이프가있는 k Turing 기계를 제공하면 하나의 테이프로 동등한 Turing 기계를 뱉어 낼 수있는 과정이 무엇인지 이해하기가 어렵습니다. 좋은 예가 될 것입니다. 실제로 테이프 가있는 TM에서 1 개의 테이프가있는 TM으로 이동하는 방법을 보여주는 예제가 실제로 찾고 있습니다. 지금까지 찾지 못했습니다. 나는 또한 어떤 증거도 찾고 있지 않습니다.k


"동등한 기계"란 무엇을 의미합니까? 입력은 무엇이며 출력은 무엇입니까? (아마도 당신은 테이프를 가진 튜링 머신 하나를 의미했을 까요?)k
Yuval Filmus

예. k 테이프가있는 하나의 터닝 머신.
user678392

답변:


17

뻔뻔에서 복사 대답 자신 :

멀티 테이프 튜링 머신은 확장 전환 기능 여기서 는 테이프 수입니다. 따라서 각 상태에서 전환 기능은 각 테이프의 내용을 읽고 새 상태로 이동하며 (아마도) 각 테이프에 무언가를 쓰고 각 헤드를 이동합니다. 이제 더 많은 것을 읽고 쓰는 것을 제외하고는 일반 TM처럼 움직여Q×ΓkQ×Γk×{L,R}kk

귀하의 질문에서 알 수 있듯이 이러한 기계는 단일 테이프 TM 로 시뮬레이션 할 수 있습니다 . 또한 이차 감속만으로도 수행 할 수 있습니다 (따라서 다항식으로 닫힌 클래스의 경우 단일 테이프 기계에 대해 이야기하면 충분합니다).

이것에 대한 증거는 다소 복잡하고 간단한 웹 검색으로 쉽게 사용할 수 있으므로 테이프를 단일 테이프에 키 매핑하는 방법을 스케치하겠습니다 .k

기본 아이디어는 매우 간단합니다. 우리는 단순히 몇 가지 새로운 기호를 추가하고 각 테이프를 추적하고 차례로 머리를 움직입니다. 계산의 각 단계에서 우리는 한정된 양의 테이프 만 방문 할 수 있었으므로 각 테이프에 대한이 많은 정보 만 저장하면됩니다. 따라서 각 우리는 새로운 심볼 추가 에 (각 테이프) 헤드는 연산의 모든 지점에 위치를 표시한다. 또한 "가상"테이프의 시작과 끝을 나타내는 분리 문자 ~ 를 소개합니다 . 주어진 입력γΓγ_Γ#Γω=ω1ωn(우리는 멀티 테이프 머신에서도 모든 입력이 첫 번째 테이프에 있다고 가정 할 수 있습니다. 멀티 테이프 머신에서는 싱글 테이프 머신에

#ω1_ωn#_#_##_#k sections, one per tape

그런 다음 단일 테이프 기계의 상태를 사용하여 다중 테이프 기계의 상태와 헤드가보고있는 것을 인코딩합니다. 단일 테이프 기계의 전이 기능은 다중 테이프 전이 기능의 다단계 시뮬레이션으로, 다른 테이프 동작을 적절히 수행 하여 단일 테이프를 각 섹션으로 차례로 이동시킵니다. 남은 주름은 섹션의 공간이 부족할 때 모든 것을 이동시킵니다 (그러나 이러한 하위 머신은 간단한 연습입니다). 우리는 각 섹션의 크기를 절대로 줄이지 않습니다.k

(희망스럽게) 간단한 예 :

입력 알파벳이 이고 테이프 알파벳이 이고 입력이 . 머신의 초기 테이프 상태는 다음과 같습니다. " "는 각 테이프에서 읽기 / 쓰기 헤드의 위치를 ​​나타냅니다.Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:

결합 된 단일 테이프 기계를 구성하려면 테이프 알파벳에 새로운 기호를 추가해야합니다.

  1. 시뮬레이션 된 테이프의 시작과 끝을 나타내는 기호가 필요합니다
  2. 각 기호에 대해 시뮬레이션 된 테이프 헤드가 시뮬레이션 된 테이프의 해당 문자에 있음을 나타내는 버전도 필요합니다.Γ

따라서 단일 테이프 시스템의 경우 새 테이프 알파벳은 입니다. 테이프의 초기 상태는 다음과 같습니다. 머신 헤드 ( )와 3 개의 시뮬레이션 된 테이프 (밑줄이 그어진 문자)의 시뮬레이션 헤드의 차이점에 유의하십시오 . 물론 테이프는 평소와 같이 오른쪽으로 무한대로 확장됩니다. 나는 또한 테이프 머리를 첫 번째 줄의 첫 번째 문자로 움직여서 가볍게 속였다. 엄밀히 말하면 가장 왼쪽 셀에서 시작해야하지만 이것은 사소한 기술입니다.Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#

따라서 우리는 원래 기계의 3 개의 테이프에 해당하는 3 개의 마크 아웃 섹션 ( 표시 사이 )을 가지고 있습니다.#

이제 기계에 대한 조치를 만들어 봅시다. 의 그것이 보는 경우 원래 기계가 첫 번째 테이프에서 읽어한다고 가정 해 봅시다 , 그것은 기록 번째 테이프에가 보는 경우, 그것은 기록 세 번째 테이프에. 읽거나 쓸 때마다 헤드가 오른쪽으로 이동합니다.1101

따라서 첫 번째 "단계"(실제 머신에서 여러 상태 및 전환이 필요할 수 있음) 후에 테이프는 두 번째 테이프에서 을 가져야하며 첫 번째 및 두 번째 헤드는 한 단계 오른쪽으로 이동합니다.1

Tape 1:10101Tape 2:1Tape 3:

두 번째로 돌아 가면서 첫 번째 테이프는 읽으 므로 대신 세 번째 테이프에 씁니다.0

Tape 1:10101Tape 2:1Tape 3:1

단일 테이프 머신은 밑줄을 이동하여 ( 의 대체 문자 버전을 사용 하여 적절한 시뮬레이션 테이프에 기록함으로써)이를 시뮬레이션합니다. 따라서 첫 번째 단계 후에 결합 된 테이프는 다음과 같습니다.Γ

#10_101#1_#_#

두 번째 단계 후 :

#101_01#1_#1_#

물론 이것은 프로세스에 대한 높은 수준의 견해입니다. 상태를 구성하는 방법이나 각 시뮬레이션 테이프가 길어지는 방법을 설명하지 않았습니다 (이를 위해, 당신은 그런 다음 시뮬레이션 테이프의 끝 부분을 모두 오른쪽으로 한 단계 씩 이동하고 새로운 공백으로 압축합니다. 즉, 필요할 때 시뮬레이션 테이프 셀만 추가합니다.


2
또는 별도의 " 트랙 "을 사용 하여 동일한 공간에서 별도의 테이프를 서로 옆에 씁니다. 그러나 그것은 새로운 알파벳의 소개를 포함합니다.
Hendrik 1

2
@ user678392 구성을 자세히 살펴보고 여기에 모두 쓰려면 적어도 몇 시간이 걸릴 것입니다. 당신이 이해하지 못하는 부분조차도 설명하지 않는다면 왜 누군가가 당신을 위해 그렇게 많은 노력을 기울여야합니까? 누군가가하면 어떻게해야합니까? 당신은 "나는 그것을 이해하지 못한다. 다른 사람이 그것을한다"고 말할 것인가?
David Richerby

1
감사합니다. 그리고 명확하게 말하면, 당신이 어려움을 겪고있는 영어입니까 (즉, 도움이 될 것입니다) 설명에 더 자세한 내용이 필요합니까?
David Richerby

1
@ user678392, 변환의 첫 단계에 대한 높은 수준의 관점과 테이프의 실제 출력에 대한 예를 추가했습니다. 새로운 상태 집합을 구성하는 방법에 대해 논의하지 않았습니다. 매우 복잡하고 Sipser 또는 그와 비슷한 것보다 더 나은 설명을 얻지 못합니다. 본질적으로 어리 석고 수학적입니다.
Luke Mathieson

1
@RomaKarageorgievich 지난 5 년간 많은 분명한 증거가 사라진 것 같습니다 (인터넷을 믿지 마십시오 : D). 내가 찾은 가장 명확한 것은 여기에 있습니다 (경고, .doc 파일!). 이 책에 접근 할 수 있다면 Martin의 "언어 입문과 계산 이론"의 증거는 상당히 좋습니다 (제 4 판 244 페이지). Sipser의 "계산 이론 입문"의 증거로 충분합니다 (3 판 Ed. 177 페이지).
Luke Mathieson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.