To pytanie przyszło mi do głowy z powodu problemu z zatrzymaniem i nie mogłem znaleźć dobrej odpowiedzi online, zastanawiając się, czy ktoś może pomóc.
Czy jest możliwe, że problem zatrzymania jest rozstrzygalny dla dowolnej TM na dowolnym wejściu, o ile wejście nie jest samą TM? Gruntownie:
Halts(TM, I)
IF TM == I:
Undecidable, return a random result/throw an exception, whatever
ELSE:
Solve the problem
Halts'(X)
IF Halts(X, X):
Loop infinitely
ELSE:
Print 'done'
To pozornie rozwiązuje sprzeczność. Kiedy nazywamy paradoksalne „Halts”, nie możemy spodziewać się spójnego zachowania, ale wszystkie inne wezwania do Halts (i „Halts”) są uzasadnione i możliwe do rozwiązania.
Rozumiem, że jest to bardzo nieintuicyjne. Jeśli jakiś wzorzec w bitach może ujawnić zachowanie wszystkich możliwych programów, dlaczego nagle rozpadłby się, gdy TM i wejście pasowałyby do siebie? Ale czy możemy matematycznie wyeliminować to jako możliwość?
Ten zredukowany problem zatrzymania nie byłby wcale nieciekawy. Nawet jeśli istniał jakiś znaczący program, który pobierał własny kod jako dane wejściowe, można go w prosty sposób przepisać, aby działał na nieco innych danych wejściowych. Oczywiście ta sugestia sprawia, że jest jeszcze mniej zrozumiałe, dlaczego istniało rozwiązanie wstrzymujące z tym jednym zastrzeżeniem, ale ponownie, czy naprawdę możemy matematycznie wyeliminować tę możliwość?
Dziękuję za wszelką pomoc.