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.
Jawaban:
Tetapi kami dapat dengan mudah mengatasi batasan Anda. Misalkan programG 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.
sumber
sumber