Teorema ketidaklengkapan Gödels (pertama) dan Masalah Pemutusan - Seberapa membatasi?


8

Ketika saya pertama kali mendengar hal-hal ini saya sangat terpesona karena saya pikir itu benar-benar menetapkan batas untuk matematika dan sains secara umum. Tetapi seberapa praktis hal-hal ini relevan?

Untuk Masalah Berhenti: Apakah ada lebih dari beberapa kasus yang dibuat secara artifisial, di mana orang tidak dapat memutuskan apakah algoritma akan berakhir atau tidak?

Untuk Teorema Ketidaklengkapan: Apakah ada lebih dari beberapa kasus yang dibangun secara artifisial, di mana orang tidak dapat membuktikan / membantah pernyataan?

Saya menanyakan hal ini karena tampaknya di sebagian besar bidang sains tidak terlalu penting bahwa ada batasan mendasar seperti itu. Apakah mereka ada di sana? Saya ingin tahu di mana ini benar-benar menetapkan batas dan di mana itu benar-benar relevan.


4
Hasil penghentian masalah tidak menyatakan bahwa Anda tidak dapat memutuskan apakah TM yang diberikan tidak berhenti. Ini menyatakan bahwa tidak ada algoritma umum yang dapat memutuskan itu untuk semua TM.
babou

2
Ya, tapi apa implikasi praktis dari ini? Apakah ini benar-benar relevan atau hanya penting dalam kasus yang dibuat secara artifisial?
Nocta

Mungkin sesuatu yang perlu diperhatikan adalah pemrograman fungsional total, yang hanya memungkinkan penghentian program. Kemudian Anda dapat melihat seberapa sering praktisi mengalami kemunduran karena pemrograman fungsional yang lemah (Turing selesai) untuk menyelesaikan masalah. Sejauh menyangkut bahasa pemrograman tujuan umum, saya hanya mendengar tentang Idris - selebihnya tampaknya pembuktian teorema.
Guildenstern

1
Banyak masalah matematika yang menarik dan sulit dapat diselesaikan dengan mudah jika masalah penghentian bisa diselesaikan. Misalnya, Teorema Terakhir Fermat. Butuh waktu 5 menit untuk menulis sebuah program yang akan berhenti jika dan hanya jika ada solusi untuk ^ n + b ^ n = c ^ n dengan a, b, c> 0 dan n> = 3. Jika Anda membuktikan atau menyangkal itu berhenti, itu terbukti FLT. "Ada banyak bilangan prima kembar yang tak terbatas" hanya sedikit lebih sulit untuk dibuktikan jika masalah penghentian diselesaikan.
gnasher729

2
Harap batasi diri Anda untuk satu pertanyaan per posting; dua teorema yang Anda rujuk tidak ada hubungannya satu sama lain. Ungkapan Anda juga menunjukkan bahwa Anda tidak benar-benar mengerti apa yang mereka katakan (lihat komentar babou); Anda harus membaca lagi! Ini adalah pernyataan formal matematis-formal yang tidak dapat dipahami dengan baik dalam mode pop-science.
Raphael

Jawaban:


9

Masalah penghentian menjadi tidak pasti memiliki banyak relevansi praktis, berikut adalah contoh cepat:

Menulis perangkat lunak anti-virus itu sulit: Kami tidak dapat memutuskan apakah suatu kode tertentu berbahaya karena jika kami bisa, kami dapat memutuskan masalah penghentian.

Untuk melihat ini, ambil sepotong kode yang digunakan sebagai input mesin Turing M dan kata input w dan melakukan sesuatu yang berbahaya jika dan hanya jika M berhenti pada input w. Jika kita dapat memutuskan apakah suatu kode tertentu berbahaya atau tidak, maka kita dapat memutuskan apakah kode ini berbahaya atau tidak, tetapi kemudian kita dapat memutuskan masalah penghentian, yang kita tahu tidak bisa kita lakukan.

Apa yang dikatakan ini adalah bahwa tidak ada perangkat lunak anti-virus yang sempurna, itu tidak dapat dilakukan. Itu tidak berarti kita tidak boleh mencoba menulis sotware anti-virus, hanya saja kita tidak akan pernah bisa menulis yang sempurna. Kenyataannya, pernyataan apa pun tentang memutuskan program apa yang dilakukan tidak dapat dipastikan (lihat teorema Rice ).

Sehubungan dengan teorema Godel, teorema Goodstein adalah contoh pernyataan yang tidak dapat dibuktikan menggunakan aksioma Peano.


5
Dengan hormat, saya pikir jawaban ini adalah contoh sempurna dari kegagalan untuk membuat perbedaan yang ditanyakan oleh OP: Anda menggunakan masalah penghentian dengan cara yang tidak memiliki relevansi praktis. Dalam praktiknya, tidak ada alasan untuk sepotong kode jinak berisi instruksi yang melakukan tindakan jahat, jadi tidak masalah bahwa kita tidak dapat menentukan apakah instruksi tersebut pernah dieksekusi atau tidak; jika ada di sana, kode dapat dianggap berbahaya.
Harry Johnston

(Saya menduga Anda dapat menarik kesimpulan yang sama dengan lebih baik dengan mempertimbangkan set instruksi yang efek gabungannya mungkin jinak atau berbahaya, tergantung pada kombinasi instruksi yang dieksekusi, dan kemudian berargumen bahwa dalam keadaan yang tepat Anda tidak dapat mengetahuinya kombinasi mana yang mungkin. Tapi saya tidak yakin bagaimana cara menggabungkannya dengan seksama.)
Harry Johnston

@ HarryJohnston Kemungkinan adalah menyamarkan instruksi jahat dalam data. Untuk beberapa program kami mungkin tidak dapat memutuskan apakah data ini pernah dieksekusi sebagai kode, atau hanya string jinak yang terlihat seperti instruksi jahat. Tentu saja dalam sistem operasi utama (dan bahkan prosesor) ada pemisahan yang dipaksakan antara memori yang dapat dieksekusi read-only dan memori data yang dapat ditulis, tetapi ada skenario di mana ini tidak terjadi.
WaelJ

@ HarryJohnston: Itu akan benar jika kita bisa meminta sedikit instruksi jahat, tapi kita tidak bisa. Perangkat lunak saya yang sewenang-wenang membaca file konfigurasi dari ~ / Documents, dan mendukung menghapus konfigurasinya sendiri. Ada jalur eksekusi di mana "file untuk dihapus" diatur ke ~ / Dokumen sebelum "delete" dipanggil, yang sangat berbahaya, tetapi tidak ada cara untuk mengatakan "hei, aplikasi ini memiliki dua hal ini, itu harus berbahaya ! " tanpa melihat apa yang dilakukannya dengan mereka. Yang tidak dapat Anda lakukan dalam kasus umum, karena menghentikan masalah.
Phoshi

@ Phoshi: ya, itulah contoh argumen yang saya jelaskan di komentar kedua saya. Dugaan saya adalah mungkin untuk membuat asumsi-asumsi tertentu yang keras ini diberikan, meskipun bagi saya tidak jelas bagaimana cara terbaik untuk mendekatinya. OTOH, mungkin untuk membuatnya keras, Anda harus mengizinkan aplikasi untuk menganalisis sendiri (yaitu, memeriksa kode sendiri) dan harus aman dalam praktik untuk melarang ini.
Harry Johnston

6

Untuk Masalah Berhenti: Apakah ada lebih dari beberapa kasus yang dibuat secara artifisial, di mana orang tidak dapat memutuskan apakah algoritma akan berakhir atau tidak?

ada beberapa konteks "kira-kira praktis / diterapkan" dengan penelitian aktif di mana masalah berhenti memainkan peran:

  • pembuktian teorema otomatis . membuktikan teorema oleh komputer berjalan ke dalam batas ketidakpastian yang sama dari masalah penghentian.

  • membuktikan penghentian program untuk program nyata adalah bidang penelitian dan muncul dalam misalnya logika kompiler dan analisis program.

  • Kompleksitas Kolmogorov mencoba mempelajari batas teoritis dari algoritma kompresi data. menemukan kompresi optimal (dalam arti tertentu, yaitu menemukan TM terkecil yang mengompresi string) tidak dapat diputuskan.

  • ketidakpastian muncul dalam beberapa masalah fisik. misalnya sistem dinamis .

  • masalah dasar dipelajari disebut masalah "berang-berang sibuk" . masih teoretis tetapi kurang abstrak daripada masalah terputus-putus dan dipelajari khususnya untuk hubungannya. peneliti telah mencoba untuk menyelesaikan ini selama beberapa dekade untuk "kecil" TM dengan beberapa negara / simbol.

di sini adalah kutipan terkait / menarik dari makalah baru-baru ini yang mempelajari masalah berang-berang yang sibuk "masalah dalam teori bilangan dari kompetisi berang-berang yang sibuk" oleh Michel (hal.3):

Sebenarnya, masalah penghentian untuk mesin Turing diluncurkan pada pita kosong adalah m-selesai, dan ini menyiratkan bahwa masalah ini sama sulitnya dengan masalah kemantapan pernyataan matematis dalam teori logis seperti ZFC (Zermelo Fraenkel menetapkan teori dengan aksioma pilihan). Jadi, ketika mesin Turing dengan lebih banyak negara dan simbol dipelajari, berpotensi semua teorema matematika akan terpenuhi. Ketika semakin banyak mesin Turing yang tidak berhenti dipelajari untuk dibuktikan tidak berhenti, seseorang harus berharap untuk menghadapi masalah yang sulit dalam matematika, yaitu masalah yang tidak bisa diselesaikan oleh pengetahuan matematika saat ini.

dengan kata lain masalah penghentian sebenarnya mengkodekan / merangkum tantangan dalam upaya membuktikan teorema matematika baru dalam matematika / CS dan karenanya dapat dianggap sebagai sangat dalam / praktis / diterapkan dalam pengertian ini. (Namun sementara beberapa menganggap pengamatan ini jelas atau sepele, ini juga umumnya bukan pendapat yang umum dipegang / disuarakan.)


juga, misalnya Penrose berpendapat bahwa ketidakpastian adalah faktor yang mencegah AI dalam pikiran baru Kaisar
vzn

konteks besar lain di mana keraguan muncul dalam beberapa pertanyaan matematika dasar. mungkin yang paling mendasar / terkenal adalah masalah Hilberts ke-10 , Persamaan Diophantine dalam polinomial. juga, keraguan muncul dalam beberapa pertanyaan tentang fraktal misalnya Mandelbrot set dll
vzn

5

Saya menjawab salah satu dari dua pertanyaan Anda, mengenai masalah penghentian.

Pertama, ketidakpastian masalah penghentian tidak menyatakan bahwa Anda tidak dapat memutuskan apakah TM tertentu tidak berhenti. Ini menyatakan bahwa tidak ada algoritma umum yang dapat memutuskan itu untuk semua TM.

Ini adalah pernyataan tentang model kami tentang apa yang merupakan perhitungan. Tetapi, menurut tesis Gereja Turing, hanya itu yang harus kita ungkapkan kompuasinya.

Mengenai relevansi, ini didasarkan pada Mesin Turing yang dibangun secara buatan. Tapi kemudian, semua TM sangat buatan dan dibangun hanya untuk menegaskan beberapa fakta tentang perhitungan. Apakah beberapa TM lebih relevan daripada yang lain dalam praktik adalah pertanyaan yang sama pentingnya dengan jenis kelamin malaikat, atau jumlah mereka yang dapat berdiri di atas kepala jarum.

Ketidakpastian masalah penghentian memberi tahu kita bahwa ada pertanyaan umum yang tidak dapat diselesaikan dengan teknik umum yang berlaku untuk semua kasus. Yang saya maksud dengan pertanyaan umum adalah pertanyaan tergantung pada beberapa parameter, di mana jawabannya dapat ditemukan untuk beberapa nilai parameter.

Ingatlah bahwa tujuan dari banyak matematika kita adalah untuk menemukan teknik umum untuk menyelesaikan keluarga masalah. Contoh tipikal adalah resolusi persamaan. Ketidakpastian masalah penghentian memberi tahu kita bahwa ini tidak selalu mungkin.

Sebagai contoh, ini dapat digunakan untuk menunjukkan bahwa tidak ada teknik umum untuk memutuskan apakah tata bahasa bebas konteks adalah ambigu.

Namun, pertanyaan Anda valid. Mungkin masalah tidak dapat dipastikan karena Anda membuatnya terlalu umum. Mungkin, dengan sedikit membatasi, Anda dapat membuatnya layak untuk subfamili yang berguna dan masih cukup besar.

Saya tidak memiliki contoh yang spektakuler dalam pikiran, tetapi saya yakin pasti ada beberapa.

Saya ingat satu kasus sebenarnya dari masalah analisis program yang terbukti NP-lengkap (kecuali itu tidak dapat dipastikan, saya tidak ingat dengan baik). Terhadap semua saran, seorang mahasiswa PhD memutuskan untuk mengatasinya. Dia benar-benar dapat menunjukkan bahwa beberapa batasan pada masalah, yang tidak terlalu penting dalam praktiknya, mengubahnya menjadi masalah yang sangat mudah ditelusuri, sehingga memungkinkan penggunaan berbagai analisis program dan alat optimisasi.


4
Contoh yang menurut saya cocok dengan jawaban Anda adalah mengoptimalkan kompiler. Ketidakpastian masalah penghentian berarti bahwa, misalnya, tidak ada algoritma yang dapat melakukan penghapusan kode mati yang sempurna atau menghasilkan yang tercepat yang dapat dieksekusi untuk file sumber tertentu. Tetapi ini tidak menghentikan kompiler melakukan pekerjaan yang sangat baik dari hal-hal ini, dalam banyak kasus, dalam praktek
David Richerby
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.