Czy to możliwe, że problem zatrzymania można rozwiązać dla wszystkich danych wejściowych oprócz kodu maszyny?

9

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.

CS101
źródło
7
Skończone zmiany nie mają wpływu na rozstrzygalność.
istnieje nieskończona liczba równoważnych baz TM i nie ma (rozstrzygalnego) sposobu na wykrycie równoważnych baz TM (tj. jest zasadniczo taki sam jak sam problem zatrzymania). istnieją jednak złożone „luki”; spróbuj Informatyki Chat do dalszej analizy problemu stopu związanej zautomatyzowanego THM potwierdzającego itp ... może próbować gotować to na odpowiedź ...
vzn
Podkreśliłem moje pytanie, aby było trochę jaśniej, przepraszam, jeśli kogoś wprowadzę w błąd.
CS101
Odpowiedź brzmi nie, jak w tej odpowiedzi cstheory.stackexchange.com/questions/2853/…
Mohammad Alaggan

Odpowiedzi:

4

Ale możemy łatwo ominąć twoje ograniczenia. Załóżmy, że program odwraca bity wejścia i wywołuje na wyniku, a następnie zdefiniuj z odwróconymi wszystkimi bitami (tj. 0 dla 1s, 1s dla 0s). Następnie możemy wywołać twoje pomocą i wrócimy do pierwotnego problemu.GH!HHG(!H)

Jack Aidley
źródło
Dziękuję Ci. Po przeczytaniu odpowiedzi Davida Richerby'ego zacząłem myśleć, że to jest odpowiedź. Jeśli uda nam się zbudować funkcjonalnie równoważne Q 'dla wszystkich programów Q, wówczas możemy ponownie zdecydować o możliwości zatrzymania wszystkich problemów, nie tylko tych wykreślnych . Widzę, że tak mówisz.
CS101
12

Przypomnijmy standardowy dowód nierozstrzygalności problemu zatrzymania. Załóżmy, że jakaś maszyna  decyduje o problemie zatrzymania i niech będzie maszyną, która na wejściu  używa  do ustalenia, czy zatrzymuje się, a jeśli tak, to  pętle ; w przeciwnym razie  zatrzymuje się. Teraz zatrzymuje się tylko wtedy, gdy się nie zatrzymuje.HQMHM(M)QQQ(Q)

Czy jest możliwe, że problem zatrzymania jest rozstrzygalny dla dowolnej TM na dowolnym wejściu, o ile wejście nie jest samą TM?

Nie. Jeśli zmienisz w ten sposób definicję problemu zatrzymania, dowód nadal działa. Nie obchodzi mnie, co się dzieje, gdy  otrzymuje  jako wejście ponieważ sprzeczność przychodzi po dajemy wejście do  .HHQ,QH

Po drugie, jeśli zmodyfikowałeś  celu wykrycia tego wejścia, moglibyśmy uzyskać tę samą sprzeczność, używając dowolnej innej maszyny  która jest równoważna  w tym sensie, że dla każdego wejścia  ,  zatrzymuje się wtedy i tylko wtedy, gdy ,  zatrzymuje się. Jest ich nieskończenie wiele i  nie może ich wszystkich wykryć, ponieważ nie można rozstrzygnąć, czy dwie maszyny Turinga są równoważne.HQQwQ(w)Q(w)H

David Richerby
źródło
3
Sam ostatni akapit może wystarczyć, aby odpowiedzieć na pytanie: nie można zakodować na stałe wszystkich kodowań równoważnych maszyn bez względu na to, którą adaptację skończoną (na podstawie semantyki) chcesz wykonać. (Nie oznacza to, że reszta twojego postu nie jest warta przeczytania!)
Raphael
Dziękuję za Twoją odpowiedź. Czy nierozstrzygalność tego, czy same programy są funkcjonalnie równoważne, wynika z nierozstrzygalności problemu zatrzymania? Dlaczego to nie byłoby okrągłe rozumowanie?
CS101
1
@ CS101: nierozstrzygalność HALTjest twierdzeniem raz na zawsze, nie „oszukujemy”, gdy używamy go, aby pokazać, że niemożliwe jest rozwiązanie innego problemuHALTktóry próbuje obejść to ograniczenie. Na marginesie, wiemy pragmatycznie, jak udowodnić zakończenie lub zakończenie wielu praktycznych programów (tylko nie wszystkie programy). Jednak udowodnienie równoważności programów okazuje się w praktyce znacznie trudniejsze (chociaż oba są nierozstrzygalne).
cody
Zdezorientowany, zapomniałem, że problem pełnego zatrzymania jest wciąż taki sam w moich przypuszczeniach. Dzięki.
CS101