Nie, nie jest rozstrzygalny.
Dowód będzie poprzez pokazanie redukcji tego problemu do znanego nam problemu stopu maszyny Turinga. Innymi słowy, dostając maszynę Turinga T, zbudujemy maszynę skanującą S, która będzie symulować T, czyli wykonywać na taśmie te same operacje, w szczególności będzie zachodzić równoważność:
T się zatrzymuje \Leftrightarrow S się zatrzymuje.
To będzie bajka o żuczku z Altzheimerem.
Niech T = \langle \Sigma, Q, q_0, q_F, \delta \rangle. Konstruujemy
S = \Sigma \cup \{x, b\}, Q \cup Q \times Sigma \cup Q \times \Sigma \times \Sigma \times Pewien\_Zbior\_Operacji, q_0, q_F, \delta' \rangle.
Nie będę dokładnie opisywał delty, tylko opiszę jak to działa.
Symbol „x” będzie oznaczał miejsce, od którego zaczęliśmy robić sobie spacer. Podczas ruszania się w prawo nie będzie nam to potrzebne, potem jednak niezmiernie.
Symbol „b” będę nazywał „małym blankiem”, czyli czymś, co w T powinno być blankiem, ale u nas nie może być z racji tego, że będziemy masę razy łazić nadmiarowo. Także ilekroć będziemy pisać \delta(q, B, \ldots) \Rightarrow \delta'(q', B, costam), to milcząco dodajemy też instrukcję \delta'(q', b, costam)
Stany dzielą się, jak widać, na trzy grupy: pierwsza z nich jest dość intuicyjna: to jest stan w maszynie T, w którym się „znajdujemy”. Możemy więc dość łatwo opisać tę prostszą część delty prim: \delta(q, a, q', a', \to) \Rightarrow \delta'(q, a, q', a')
W momencie jednak, gdy mamy instrukcję \delta(q, a, q', a', \gets), musimy wykonać szereg skomplikowanych rzeczy:
\delta'(q, a, (q',a'), x), czyli napisać „x” w miejscu gdzie jesteśmy, i przejść do stanu, który pamięta co należy wpisać na miejsce tego iksa.
przejść w tym stanie (q', a') do końca, blanka B nadpisać małym blankiem i przejść, jak nam każą, na początek
równie gładko ominąć alfę
Następnie, używając kolejnego iksa (drugiego), posuwać się z nim powoli w prawo, czyli powtarzać następujące czynności:
(1) zapamiętaj co masz pod sobą (a' ') , nasraj tam iksem i przejdź na następne pole
Jeżeli trafiłeś na iksa to znaczy, że doszedłeś tam, gdzie powinieneś być. Wówczas:
nadpisz tego iksa literką, którą zrobiłaby to T, czyli a'
zrób pętelkę do iksa drugiego, nadpisz go tym, co tam powinno być, czyli a' ' (zapamiętaj też jaką operację wykonujesz!)
przejdź do normalnego wykonywania, czyli do stanu q' i zakończ pętlę (1)
jeżeli nie trafiłeś na iksa, to
zrób pełną pętlę z powrotem do tego przed chwilą nasranego (znowu, w stanie musisz zawrzeć informację o tym co się dzieje)
nadpisz go tym, co tam powinno być (czyli a' ')
przejdź do następnej literki i w kółko macieju (1)
po wykonaniu tych wszystkich kroków, poza naprodukowaniem sobie miliardów sztucznych blanków, udało nam się przesunąć jedno pole w lewo, innymi słowy zasymulować jeden krok maszyny T.
Nietrudno zauważyć, że w momencie, w którym jesteśmy w stanie postaci q \in Q, to na taśmie nie ma żadnego iksa i, gdybyśmy utożsamili małe i duże blanki, jesteśmy w pewnym stanie pędzącej maszyny T. Innymi słowy, jeżeli T się zatrzyma, my też nie będziemy mieli co zrobić. Jeżeli nie - będziemy cały czas ją symulować. To dowodzi, że problem stopu maszyn skanujących jest nierozstrzygalny.