Apakah mungkin bahwa masalah penghentian dapat dipecahkan untuk semua input kecuali kode mesin?

9

Pertanyaan ini muncul pada saya tentang masalah penghentian dan saya tidak dapat menemukan jawaban online yang bagus, bertanya-tanya apakah ada yang bisa membantu.

Apakah mungkin bahwa masalah penghentian dapat diputuskan untuk setiap TM pada input apa pun asalkan inputnya bukan TM itu sendiri? Pada dasarnya:

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'

Ini tampaknya menyelesaikan kontradiksi. Ketika kita menyebut penghentian paradoks '(Menghentikan'), kita tidak bisa mengharapkan perilaku yang konsisten, tetapi semua panggilan lain untuk Menghentikan (dan Menghentikan ') adalah sah dan dapat dipecahkan.

Saya mengerti bahwa ini sangat tidak intuitif. Jika beberapa pola dalam bit dapat mengungkapkan perilaku semua program yang mungkin, mengapa tiba-tiba hancur ketika TM dan input cocok? Tetapi bisakah kita secara matematis menghilangkan ini sebagai suatu kemungkinan?

Dan mengurangi masalah penghentian ini tidak akan menarik sama sekali. Sekalipun ada beberapa program yang bermakna yang mengambil kodenya sendiri sebagai input, hal itu sepele dapat ditulis ulang untuk bekerja pada input yang sedikit berbeda. Tentu saja saran ini membuatnya semakin tidak dapat dipahami mengapa solusi penghentian bisa ada dengan peringatan yang satu ini tetapi sekali lagi, dapatkah kita benar-benar secara matematis menghilangkan kemungkinan ini?

Terima kasih atas bantuannya.

CS101
sumber
7
Decidability tidak dipengaruhi oleh perubahan yang terbatas.
ada # yang tak terbatas dari TM yang setara, dan tidak ada cara (decidable) untuk mendeteksi TM yang setara (yaitu pada dasarnya sama dengan masalah penghentian itu sendiri). namun ada beberapa "celah" yang rumit; coba Obrolan Ilmu Komputer untuk analisis lebih lanjut tentang masalah penghentian yang terkait dengan pembuktian otomatis, dll. ... mungkin mencoba memasak ini menjadi jawaban ...
vzn
Menyentuh pertanyaan saya menjadi sedikit lebih jelas, maaf jika saya menyesatkan siapa pun.
CS101
Jawabannya tidak, seperti dalam jawaban ini cstheory.stackexchange.com/questions/2853/…
Mohammad Alaggan

Jawaban:

4

Tetapi kami dapat dengan mudah mengatasi batasan Anda. Misalkan program G yang membalikkan bit input dan memanggil H pada hasilnya, lalu tentukan !H dengan semua bit terbalik (yaitu 0 untuk 1s, 1s untuk 0s). Kemudian kita dapat memanggil H dengan G(!H) dan kami kembali ke masalah semula.

Jack Aidley
sumber
Terima kasih. Setelah membaca jawaban @David Richerby, saya mulai berpikir bahwa inilah jawabannya. Jika kita dapat membangun Q 'yang secara fungsional setara untuk semua program Q, maka kita dapat sekali lagi memutuskan haltabilitas untuk semua masalah, bukan hanya yang diagonal. Saya melihat ini yang Anda katakan.
CS101
12

HQMHM(M)QQQ(Q)

Apakah mungkin bahwa masalah penghentian dapat diputuskan untuk setiap TM pada input apa pun asalkan inputnya bukan TM itu sendiri?

HHQ,QH

HQQwQ(w)Q(w)H

David Richerby
sumber
3
Paragraf terakhir saja mungkin cukup untuk menjawab pertanyaan: Anda tidak dapat menghapus kode dari semua pengkodean mesin yang setara tidak peduli adaptasi terbatas (berdasarkan semantik) yang ingin Anda lakukan. (Itu tidak berarti bahwa sisa posting Anda tidak layak dibaca!)
Raphael
Terima kasih atas jawabannya. Bukankah ketidakpastian apakah program secara fungsional setara atau tidak, itu sendiri berasal dari keraguan atas masalah penghentian? Mengapa ini bukan alasan yang melingkar?
CS101
1
HSEBUAHL.THSEBUAHL.T
Bingung sendiri, lupa masalah penghentian penuh masih sama per dugaan saya. Terima kasih.
CS101