나는 Sipser를 읽고 있는데 k 테이프가있는 k Turing 기계를 제공하면 하나의 테이프로 동등한 Turing 기계를 뱉어 낼 수있는 과정이 무엇인지 이해하기가 어렵습니다. 좋은 예가 될 것입니다. 실제로 테이프 가있는 TM에서 1 개의 테이프가있는 TM으로 이동하는 방법을 보여주는 예제가 실제로 찾고 있습니다. 지금까지 찾지 못했습니다. 나는 또한 어떤 증거도 찾고 있지 않습니다.
나는 Sipser를 읽고 있는데 k 테이프가있는 k Turing 기계를 제공하면 하나의 테이프로 동등한 Turing 기계를 뱉어 낼 수있는 과정이 무엇인지 이해하기가 어렵습니다. 좋은 예가 될 것입니다. 실제로 테이프 가있는 TM에서 1 개의 테이프가있는 TM으로 이동하는 방법을 보여주는 예제가 실제로 찾고 있습니다. 지금까지 찾지 못했습니다. 나는 또한 어떤 증거도 찾고 있지 않습니다.
답변:
뻔뻔에서 복사 대답 자신 :
멀티 테이프 튜링 머신은 확장 전환 기능 여기서 는 테이프 수입니다. 따라서 각 상태에서 전환 기능은 각 테이프의 내용을 읽고 새 상태로 이동하며 (아마도) 각 테이프에 무언가를 쓰고 각 헤드를 이동합니다. 이제 더 많은 것을 읽고 쓰는 것을 제외하고는 일반 TM처럼 움직여
귀하의 질문에서 알 수 있듯이 이러한 기계는 단일 테이프 TM 로 시뮬레이션 할 수 있습니다 . 또한 이차 감속만으로도 수행 할 수 있습니다 (따라서 다항식으로 닫힌 클래스의 경우 단일 테이프 기계에 대해 이야기하면 충분합니다).
이것에 대한 증거는 다소 복잡하고 간단한 웹 검색으로 쉽게 사용할 수 있으므로 테이프를 단일 테이프에 키 매핑하는 방법을 스케치하겠습니다 .
기본 아이디어는 매우 간단합니다. 우리는 단순히 몇 가지 새로운 기호를 추가하고 각 테이프를 추적하고 차례로 머리를 움직입니다. 계산의 각 단계에서 우리는 한정된 양의 테이프 만 방문 할 수 있었으므로 각 테이프에 대한이 많은 정보 만 저장하면됩니다. 따라서 각 우리는 새로운 심볼 추가 에 (각 테이프) 헤드는 연산의 모든 지점에 위치를 표시한다. 또한 "가상"테이프의 시작과 끝을 나타내는 분리 문자 ~ 를 소개합니다 . 주어진 입력(우리는 멀티 테이프 머신에서도 모든 입력이 첫 번째 테이프에 있다고 가정 할 수 있습니다. 멀티 테이프 머신에서는 싱글 테이프 머신에
그런 다음 단일 테이프 기계의 상태를 사용하여 다중 테이프 기계의 상태와 헤드가보고있는 것을 인코딩합니다. 단일 테이프 기계의 전이 기능은 다중 테이프 전이 기능의 다단계 시뮬레이션으로, 다른 테이프 동작을 적절히 수행 하여 단일 테이프를 각 섹션으로 차례로 이동시킵니다. 남은 주름은 섹션의 공간이 부족할 때 모든 것을 이동시킵니다 (그러나 이러한 하위 머신은 간단한 연습입니다). 우리는 각 섹션의 크기를 절대로 줄이지 않습니다.
(희망스럽게) 간단한 예 :
입력 알파벳이 이고 테이프 알파벳이 이고 입력이 . 머신의 초기 테이프 상태는 다음과 같습니다. " "는 각 테이프에서 읽기 / 쓰기 헤드의 위치를 나타냅니다.
결합 된 단일 테이프 기계를 구성하려면 테이프 알파벳에 새로운 기호를 추가해야합니다.
따라서 단일 테이프 시스템의 경우 새 테이프 알파벳은 입니다. 테이프의 초기 상태는 다음과 같습니다. 머신 헤드 ( )와 3 개의 시뮬레이션 된 테이프 (밑줄이 그어진 문자)의 시뮬레이션 헤드의 차이점에 유의하십시오 . 물론 테이프는 평소와 같이 오른쪽으로 무한대로 확장됩니다. 나는 또한 테이프 머리를 첫 번째 줄의 첫 번째 문자로 움직여서 가볍게 속였다. 엄밀히 말하면 가장 왼쪽 셀에서 시작해야하지만 이것은 사소한 기술입니다.
따라서 우리는 원래 기계의 3 개의 테이프에 해당하는 3 개의 마크 아웃 섹션 ( 표시 사이 )을 가지고 있습니다.
이제 기계에 대한 조치를 만들어 봅시다. 의 그것이 보는 경우 원래 기계가 첫 번째 테이프에서 읽어한다고 가정 해 봅시다 , 그것은 기록 번째 테이프에가 보는 경우, 그것은 기록 세 번째 테이프에. 읽거나 쓸 때마다 헤드가 오른쪽으로 이동합니다.
따라서 첫 번째 "단계"(실제 머신에서 여러 상태 및 전환이 필요할 수 있음) 후에 테이프는 두 번째 테이프에서 을 가져야하며 첫 번째 및 두 번째 헤드는 한 단계 오른쪽으로 이동합니다.
두 번째로 돌아 가면서 첫 번째 테이프는 읽으 므로 대신 세 번째 테이프에 씁니다.
단일 테이프 머신은 밑줄을 이동하여 ( 의 대체 문자 버전을 사용 하여 적절한 시뮬레이션 테이프에 기록함으로써)이를 시뮬레이션합니다. 따라서 첫 번째 단계 후에 결합 된 테이프는 다음과 같습니다.
두 번째 단계 후 :
물론 이것은 프로세스에 대한 높은 수준의 견해입니다. 상태를 구성하는 방법이나 각 시뮬레이션 테이프가 길어지는 방법을 설명하지 않았습니다 (이를 위해, 당신은 그런 다음 시뮬레이션 테이프의 끝 부분을 모두 오른쪽으로 한 단계 씩 이동하고 새로운 공백으로 압축합니다. 즉, 필요할 때 시뮬레이션 테이프 셀만 추가합니다.