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:Tape 2:Tape 3:1∧0101⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…
∧
Aby zbudować połączoną maszynę z jedną taśmą, musimy dodać nowe symbole do alfabetu taśmy:
- Potrzebujemy symbolu, który będzie oznaczać początek i koniec symulacji taśm
- Γ
Γ′={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:Tape 2:Tape 3:10∧101⊔⊔⊔…1⊔∧⊔⊔⊔⊔…⊔∧⊔⊔⊔⊔⊔…
0 , więc zamiast tego piszemy na trzeciej taśmie:
Tape 1:Tape 2:Tape 3:101∧01⊔⊔⊔…1⊔∧⊔⊔⊔⊔…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).