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.
turing-machines
simulation
użytkownik678392
źródło
źródło
Odpowiedzi:
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 }k k
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
(Mam nadzieję) prosty przykład:
Aby zbudować połączoną maszynę z jedną taśmą, musimy dodać nowe symbole do alfabetu taśmy:
Po drugim kroku:
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).
źródło