Jak zamapować taśmy maszyny Turinga typu „k-tape” na pojedynczą taśmę maszyny Turinga typu „1-tape”

11

Czytam Sipser i trudno mi zrozumieć, na czym polega ten proces, więc jeśli dasz mi k maszyn Turinga z k taśmami, mogę wypluć równoważną maszynę Turinga za pomocą tylko jednej taśmy. Przykład byłby miły. Właściwie to naprawdę opracowany przykład, który pokazuje, jak przejść z TM z taśmami na tę, która ma 1 taśmę, jest tym, czego naprawdę szukam. Jak dotąd nie udało mi się go znaleźć. Nie szukam też żadnych dowodów.k

użytkownik678392
źródło
Co rozumiesz przez „równoważną maszynę”? Jakie są dane wejściowe i jakie dane wyjściowe? (Być może chodziło Ci o jedną maszynę Turinga z taśmami ?)k
Yuval Filmus
Tak. Jedna tokarka z taśmami K.
user678392,

Odpowiedzi:

17

Odpowiedź bezwstydnie skopiowana ode mnie :

Maszyna Turinga z wieloma taśmami jest w większości taka sama jak maszyna z jedną taśmą, tyle że mamy rozszerzoną funkcję przejścia gdzie to liczba taśm. Tak więc w każdym stanie funkcja przejścia odczytuje zawartość każdej taśmy, przechodzi do nowego stanu, (być może) zapisuje coś na każdej taśmie i przesuwa każdą głowę - tak jak zwykła TM, tyle że teraz mamy więcej rzeczy do czytania, pisania i ruszaj się. kQ×ΓkQ×Γk×{L,R}kk

Jak sugeruje twoje pytanie, taką maszynę można symulować za pomocą TM z jedną taśmą . Co więcej, można tego dokonać tylko z kwadratowym spowolnieniem (więc w przypadku klas wielomianowo zamkniętych wystarczy mówić o maszynach z jedną taśmą).

Dowód na to jest nieco zaangażowany i łatwo dostępny za pomocą prostego wyszukiwania w sieci, więc po prostu naszkicuję kluczowe mapowanie taśm na pojedynczą taśmę.k

Podstawowa idea jest dość prosta; po prostu dodajemy kilka nowych symboli i śledzimy każdą taśmę i przewijamy jeden po drugim. Na każdym etapie obliczeń odwiedziliśmy tylko skończoną liczbę dowolnych taśm, więc musimy przechowywać tylko tyle informacji o każdej taśmie. Zatem dla każdego dodajemy nowy symbol do który będzie wskazywał, gdzie głowa (dla każdej taśmy) znajduje się w dowolnym punkcie obliczeń. Wprowadzamy również znak separatora do który będzie wskazywał początek i koniec „wirtualnych” taśm. Biorąc pod uwagę dane wejściowe ω = ω 1ω nγ _ Γ # ΓγΓγ_Γ#Γω=ω1ωn(możemy założyć, że nawet na maszynie z wieloma taśmami wszystkie dane wejściowe znajdują się na pierwszej taśmie - co dowodzi, dlaczego jest to dobre ćwiczenie) na maszynie z wieloma taśmami, nasza maszyna z jedną taśmą będzie miała wejście

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

k

(Mam nadzieję) prosty przykład:

Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:

Aby zbudować połączoną maszynę z jedną taśmą, musimy dodać nowe symbole do alfabetu taśmy:

  1. Potrzebujemy symbolu, który będzie oznaczać początek i koniec symulacji taśm
  2. Γ

Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#
) i symulowane głowice 3 symulowanych taśm (podkreślone znaki). Oczywiście taśma jak zwykle rozciąga się nieskończenie w prawo. Oszukałem też łagodnie, przesuwając głowicę taśmy do pierwszego znaku na pierwszym sznurku; ściśle powinien zacząć się od lewej komórki, ale jest to banalna technika.

#

1101

1 na drugiej taśmie, a pierwsza i druga głowica przesuną się w prawo o jeden krok:

Tape 1:10101Tape 2:1Tape 3:

0 , więc zamiast tego piszemy na trzeciej taśmie:

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

Γ i pisząc na odpowiedniej symulowanej taśmie. Tak więc po pierwszym kroku połączona taśma wygląda następująco:

#10_101#1_#_#

Po drugim kroku:

#101_01#1_#1_#

Oczywiście jest to ogólny widok procesu - nie próbowałem wyjaśniać, jak konstruować stany, ani jak każda symulowana taśma wydłuża się (w tym celu potrzebna jest rutyna, która sprawdza, czy napotkano koniec symulowanej taśmy, a następnie przesuwa wszystko o jeden krok w prawo i wciska nowy blank - tzn. dodaje symulowane komórki taśmy tylko wtedy, gdy są potrzebne).

Luke Mathieson
źródło
2
Alternatywnie, użyj osobnych „ ścieżek ”, aby zapisać osobne taśmy obok siebie w tym samym miejscu. Wymaga to jednak wprowadzenia nowego alfabetu.
Hendrik Jan
2
@ user678392 Szczegółowa analiza konstrukcji i zapisanie jej tutaj zajęłoby co najmniej kilka godzin. Jeśli nawet nie zamierzasz wyjaśniać, której części nie rozumiesz, dlaczego ktoś miałby włożyć tyle pracy w Twoim imieniu? A co jeśli ktoś to zrobi? Chcesz tylko powiedzieć: „Nie rozumiem tego. Ktoś inny to robi”.
David Richerby
1
@ user678392 Dzięki. I dla wyjaśnienia, czy to angielski, z którym masz trudności (tj. Czy przeredagowanie może pomóc), czy potrzebujesz bardziej szczegółowych wyjaśnień?
David Richerby
1
@ user678392, dodałem przykład widoku wysokiego poziomu z pierwszych kroków konwersji i praktycznych wyników na taśmach. Unikałem dyskusji o tym, jak skonstruować nowy zestaw stanów, ponieważ jest to bardzo skomplikowane i nie znajdziesz lepszego wyjaśnienia niż to, co jest w Sipser lub podobnym - jest z natury skrzypiące i matematyczne.
Luke Mathieson
1
@RomaKarageorgievich Wydaje się, że wiele wyraźniejszych dowodów zniknęło w ciągu ostatnich 5 lat (nie ufaj internetowi: D). Najczystszy, jaki znalazłem, jest tutaj (ostrzeżenie, plik .doc!). Dowód w „Wprowadzenie do języków i teorii obliczeń” Martina jest całkiem dobry, jeśli masz dostęp do tej książki (str. 244 w 4. wydaniu). Dowód w „Wprowadzenie do teorii obliczeń” Sipsera jest wystarczający (s. 177 w 3 wyd.).
Luke Mathieson