Karena banyak masalah yang sangat praktis adalah masalah yang tersendat. Sebuah solusi bagi mereka untuk memecahkan masalah penghentian.
Anda menginginkan kompiler yang menemukan kode mesin tercepat yang mungkin untuk program tertentu? Sebenarnya masalah penghentian.
Anda memiliki JavaScript, dengan beberapa variabel di tingkat keamanan tinggi, dan beberapa di tingkat keamanan rendah. Anda ingin memastikan bahwa penyerang tidak bisa mendapatkan informasi keamanan yang tinggi. Ini juga masalah penghentian.
Anda memiliki pengurai untuk bahasa pemrograman Anda. Anda mengubahnya, tetapi Anda ingin memastikan itu masih mem-parsing semua program yang dulu. Sebenarnya masalah penghentian.
Anda memiliki program anti-virus, dan Anda ingin melihat apakah itu pernah menjalankan instruksi jahat. Sebenarnya hanya masalah penghentian.
Adapun contoh wikipedia, ya, Anda bisa memodelkan komputer modern sebagai mesin negara-terbatas. Tapi ada dua masalah dengan ini.
Setiap komputer akan menjadi otomat yang berbeda, tergantung pada jumlah bit RAM yang tepat. Jadi ini tidak berguna untuk memeriksa bagian kode tertentu, karena otomat tergantung pada mesin yang dapat dijalankannya.
Anda membutuhkan status jika Anda memiliki n bit RAM. Jadi untuk komputer 8GB modern Anda, itu . Ini adalah angka yang sangat besar sehingga wolfram alpha bahkan tidak tahu bagaimana menafsirkannya. Ketika saya melakukan ia mengatakan bahwa ia memiliki angka desimal. Ini jelas terlalu besar untuk disimpan di komputer biasa.2 32000000000 2 10 9 3000000002n2320000000002109300000000
Masalah Penghentian memungkinkan kita beralasan tentang kesulitan relatif dari algoritma. Ini memberi tahu kami bahwa, ada beberapa algoritme yang tidak ada, yang kadang-kadang, yang bisa kami lakukan hanyalah menebak masalah, dan tidak pernah tahu apakah kami telah menyelesaikannya.
Jika kita tidak memiliki masalah penghentian, kita masih akan mencari algoritma ajaib Hilbert yang memasukkan teorema dan output apakah itu benar atau tidak. Sekarang kita tahu bahwa kita dapat berhenti mencari, dan kita dapat berupaya untuk menemukan heuristik dan metode terbaik kedua untuk memecahkan masalah ini.
UPDATE: Hanya untuk mengatasi beberapa masalah yang diangkat dalam komentar.
@Tyler Fleming Cloutier: Masalah "tidak masuk akal" muncul dalam bukti bahwa masalah penghentian tidak dapat diputuskan, tetapi apa yang menjadi inti dari ketidakpastian adalah benar-benar memiliki ruang pencarian yang tak terbatas. Anda sedang mencari objek dengan properti yang diberikan, dan jika tidak ada, tidak ada cara untuk mengetahui kapan Anda selesai.
Kesulitan masalah bisa terkait dengan jumlah bilangan yang dimilikinya. Mencoba menunjukkan bahwa ada ( ) objek dengan properti sewenang-wenang, Anda harus mencari sampai Anda menemukannya. Jika tidak ada, tidak ada cara (secara umum) untuk mengetahui hal ini. Membuktikan bahwa semua objek ( ) memiliki properti sulit, tetapi Anda dapat mencari objek tanpa properti untuk membuktikannya. Semakin banyak pergantian antara forall dan exist, semakin sulit suatu masalah.∀∃∀
Untuk lebih lanjut tentang ini, lihat Hirarki Aritmatika . Apa pun di atas tidak dapat ditentukan, meskipun level 1 semi-decidable.Σ00=Π00
Mungkin juga untuk menunjukkan bahwa ada masalah yang tidak dapat diputuskan tanpa menggunakan paradoks yang tidak masuk akal seperti masalah Putting atau Liars paradox. Mesin Turing dapat dikodekan menggunakan string bit, yaitu integer. Tetapi masalah dapat dikodekan sebagai bahasa, yaitu subset dari bilangan bulat. Diketahui bahwa tidak ada ikatan antara himpunan bilangan bulat dan himpunan semua himpunan bagian bilangan bulat. Jadi pasti ada beberapa masalah (bahasa) yang tidak memiliki mesin Turing terkait (algoritma).
@ Bos: ya, ini mengakui bahwa ini dapat dipilih untuk komputer modern. Tapi itu layak untuk mesin tertentu. Jika Anda menambahkan drive USB dengan ruang disk, atau kemampuan untuk menyimpan di jaringan, atau apa pun, maka mesin telah berubah dan hasilnya masih tidak berlaku.
Itu juga harus dikatakan bahwa akan ada banyak kali di mana algoritma mengatakan "kode ini akan berhenti" karena kode akan gagal dan kehabisan memori, dan bahwa menambahkan sedikit memori tambahan akan menyebabkan kode untuk berhasil dan memberikan hasil yang berbeda.
Masalahnya, mesin Turing tidak memiliki jumlah memori yang tak terbatas. Tidak pernah ada waktu di mana jumlah simbol yang tak terbatas ditulis untuk rekaman itu. Alih-alih, mesin Turing memiliki memori "tidak terbatas", artinya Anda dapat terus mendapatkan lebih banyak sumber memori saat Anda membutuhkannya. Komputer seperti ini. Anda dapat menambahkan RAM, atau stik USB, atau hard drive, atau penyimpanan jaringan. Ya, Anda kehabisan memori ketika Anda kehabisan atom di alam semesta. Tetapi memiliki memori tanpa batas adalah model yang jauh lebih berguna.