Saya mengerti bahwa sebagian besar masalah sepele jika tersedia oracle yang berhenti (atau, saya pikir setara, hiper-komputasi). Namun, menerapkan argumen yang menunjukkan Masalah Henti tidak mungkin untuk mesin Turing juga menunjukkan bahwa tidak mungkin bagi oracle Turing + untuk memutuskan Masalah Henti untuk oracle Turing +. Apakah ada contoh aktual, praktis, masalah yang tidak dapat dipecahkan oleh oracle yang berhenti?
Catatan: dengan "oracle" Maksud saya oracle untuk mesin Turing standar, bukan TM dengan oracle itu sendiri.
Jawaban:
Ambillah masalah yang memiliki gelar Turing di atas , yang merupakan tingkat The Halting Oracle. Dalam hal hierarki aritmatika Anda menginginkan masalah yang ada di atas . Contoh masalah seperti itu (di mana adalah fungsi komputasi parsial ke- dan adalah - set yang dapat dihitung yang dapat dihitung):0′ Σ01 ϕn n Wn={k∈N∣ϕn(k) is defined} n
Tak satu pun dari ini dapat diselesaikan bahkan jika Anda memiliki Menghentikan Oracle. Sebagai contoh, perhatikan contoh kedua, "is total?" Mengingat bagaimana bantuan terputus-putus Oracle kita memutuskan apakah mesin Turing dikodekan oleh perhentian di setiap masukan?φn n n
[Ditambahkan 2014-06-03] Untuk aspek "praktis" dari semua ini, pertimbangkan masalahnya: seorang programmer telah menulis suatu fungsi
void charge_credit_card(int card_number, int amount)
dan kami ingin tahu apakah fungsi tersebut berakhir pada semua input. Tidak mungkin untuk menulis kompiler yang secara otomatis dapat memeriksa ini secara umum. Selain itu, bahkan jika kita mengizinkan kompiler untuk mengajukan pertanyaan kepada kita tentang bentuk "apakahcharge_credit_card
diakhiri ketika diberi masukan(k,m)
?", Itu masih mustahil.sumber
int
, cukup jelas. Apakah Anda benar-benar membutuhkan saya untuk menulisBigInt
atau semacamnya, atau akankah Anda mengeluh bahwa memori komputer terbatas?