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


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×Γk→Q×Γ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:1∧0101⊔⊔⊔…Tape 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:10∧101⊔⊔⊔…Tape 2:1⊔∧⊔⊔⊔⊔…Tape 3:⊔∧⊔⊔⊔⊔⊔…

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

Tape 1:101∧01⊔⊔⊔…Tape 2:1⊔∧⊔⊔⊔⊔…Tape 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).


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.