Wybierz uniwersalną maszynę Turinga ze stanami ( ) i kolorami ( ) działającą na jednowymiarowej taśmie (nazywamy rzeczy związane z tą maszyną „prawdziwą”). Zbudujmy razem stanową maszynę Turinga (state i ) z kolorami : prawdziwe kolory i kolory „ulepszone”, które niosą informacje o stanach. Dodajemy ograniczenie, że stan początkowy powinien być identyczny ze stanem początkowym prawdziwej maszyny, z wyjątkiem ewentualnie komórki, w której zaczynamy.S0≤s<SC0≤c<C2LRC+4SC
Przez cały czas tylko bieżąca komórka lub dwie komórki uczestniczące w przejściu mogą mieć ulepszone kolory: wszystkie inne komórki mają swój prawdziwy kolor. Chcemy, aby nasza maszyna zachowywała się w następujący sposób: sprawdź, jakie prawdziwe przejście należy wykonać, przenieś informacje o „stanie prawdziwym” z komórki, którą chcemy pozostawić do komórki docelowej (wymaga to wiele tam i z powrotem), posprzątaj komórkę zostawiliśmy (nadając jej prawdziwy kolor), powtórz.
Przed przejściem bieżąca komórka ma wzmocniony kolor kodujący prawdziwy kolor i prawdziwy stan, a wszystkie inne mają swój prawdziwy kolor. Sprawdź, jakie przejście wykona prawdziwa maszyna --- możemy założyć, że zmierza w prawo (odwróć i wszędzie, aby przejść w lewo). Zmień ulepszony kolor na , przesuń w prawo i zmień bieżący stan na .(c,s)LR(cnew,snew,emit)L
Następnie maszyna widzi normalny kolor i jest w stanie . Zmienia na i wraca w lewo, w stanie . Mamy więc komórki
gdzie różne prawdziwe kolory są oczywiście niezależne, ale nieistotne. Celem jest przeniesienie do komórki docelowej. Robimy to, zmniejszając lewy stan i zwiększając prawy stan, przechodząc między nimi. Koniec jest łatwy do wykrycia w lewej komórce ( stał sięcLc(c,0,L,receive)R
⋯cc(c,s,emit)(c,0,L,receive)cc⋯
ss0), ale trudniejsze do wykrycia w odpowiedniej komórce. Do tego służy etykieta : tak długo, jak odpowiada temu stan, kontynuuj pętlę dekrementacji / inkrementacji, ale jeśli nie, to skończymy i posprzątamy.
L
Oto przejścia do implementacji tego. W prawie wszystkich przypadkach przesuń się w kierunku określonym przez bieżący stan, a następnie odwróć stan
c→(c,0,⟨dir⟩,receive) gdzie to bieżący stan; przesuń, odwróć stan.⟨dir⟩
(c,s)→(cnew,snew,emit) zgodnie z przejściami prawdziwej maszyny; zignoruj obecny stan, ustaw go w kierunku, w którym chcemy się poruszać; przesuń, odwróć stan.
(c,s,emit)→(c,s−1,emit) dla ; przesuń, odwróć stan.s>0
(c,0,emit)→c ; ruszaj się, nie zmieniaj stanu.
(c,s,⟨dir⟩,receive)→(c,s+1,⟨dir⟩,receive) jeśli stan to ; przesuń, odwróć stan.⟨dir⟩
⟨ d i r ⟩(c,s,⟨dir⟩,receive)→(c,s) jeśli stan nie jest ; nie ruszaj się, rób co chcesz z państwem. Można to połączyć z 2., jeśli chcesz zawsze się poruszać.⟨dir⟩
Łączenie 6 i 2 zmniejsza liczbę kolorów do . Uważam, że możliwe jest, aby początkowa konfiguracja nie miała w ogóle ulepszonego koloru, ale prawdopodobnie jest niechlujna.C+3SC