Ide utama
Menjadi dikenali berarti Anda dapat membangun proses otomatis (kami akan kembali lagi nanti) yang menggunakan kata sebagai parameter
- Jika proses otomatis berakhir, ia mengembalikan YA atau TIDAK.
- Proses otomatis ini tidak harus berakhir pada setiap input, tetapi harus berakhir jika kata input dalam bahasa.
Mengenali bersama berarti bahasa w ∈Σ∗, w ∉ L (atau, dalam bahasa Inggris, himpunan semua kata yang tidak ada L., yaitu komplementernya) dapat dikenali.
Menjadi decidable berarti Anda dapat membangun proses otomatis yang menggunakan kata sebagai input, seperti itu
- Proses otomatis selalu berakhir
- Itu menjawab YA atau TIDAK. Jika itu menjawab YA, kata itu dalam bahasa, jika itu menjawab TIDAK, kata itu tidak dalam bahasa.
Satu hasil penting adalah itu L. dapat ditentukan jika dan hanya jika L. dikenali dan dikenali bersama.
Gagasan untuk membuktikan hasil ini, adalah bahwa Anda dapat membangun proses otomatis dari proses yang dapat dikenali dan dikenali bersama Anda, dengan bergantian langkah dari kedua proses, hingga salah satu dari itu memberi Anda jawaban YA. Salah satu dari mereka harus melakukannya, karena setiap kata dalam atau tidak dalam bahasa)
Proses otomatis
Tanpa terlalu formal, banyak jenis mesin telah dirancang, dan pada dasarnya semuanya telah dikaitkan dengan jenis bahasa (tipe-tipe itu bergantung pada alat yang diperlukan untuk mendefinisikan bahasa tersebut. Untuk informasi lebih lanjut, Hierarki Chomsky dapat membantu).
Arti biasa dari proses otomatis, sehubungan dengan decidability, adalah Mesin Turing. Anda dapat mendefinisikan Mesin Turing sedemikian rupa sehingga dapat:
- Terima nilai dari input
- Simpan nilai
- Baca nilai yang disimpannya
- Hitung operasi matematika dasar pada nilai-nilai
- Tes properti matematika dasar pada nilai-nilai itu, dan bertindak sesuai, akhirnya berulang.
Pada dasarnya, Mesin Turing dapat melakukan semua yang Anda bisa mendefinisikan dalam suatu program, kecuali itu adalah objek matematika, dengan memori tak terbatas dan waktu untuk dihabiskan pada perhitungan. Itu tidak selalu berakhir.
Properti penting lainnya dari Mesin Turing, adalah Anda dapat menggambarkan mesin Turing sebagai satu kata (ini adalah encoding), dan ada mesin Turing yang, diberikan sebagai input pengkodean mesin M., dan sebuah kata w, dapat mensimulasikan perhitungan M. pada input w. Ini akan menjadi penting dalam sedikit.
Mari kita tunjukkan bahwa bahasa biasa - yang (hampir) merupakan jenis bahasa paling sederhana yang dapat Anda pikirkan dari sudut pandang matematika - memiliki sifat khusus yang ditutup dengan pelengkap. Ini pada dasarnya berarti bahwa pada bahasa-bahasa tersebut, pengertian tentang dapat diakui dan decidability adalah setara. Ini tidak berlaku ketika Anda naik di Chomsky Hierarchy.
Contoh bahasa yang tidak dapat ditentukan
Kami akan mempelajari masalah Hentikan . Pertanyaannya adalah, bisakah kita membangun Mesin Turing itu, mengingat penyandian Mesin Turing lainM. dan sebuah kata w, memutuskan apakahM. berakhir pada input w ?
Jelas, ini dapat dikenali , karena kita hanya perlu mensimulasikanM. di wsampai itu berakhir, dan ketika itu terjadi, katakan YA. Namun, jikaM.tidak pernah berakhir, kami tidak akan mengatakan TIDAK, jadi kami mengenali bahasa ini, tetapi tidak memutuskannya. Telah terbukti bahwa bahasa ini tidak dapat diputuskan oleh Mesin Turing. Ini melibatkan skema matematika yang biasa: argumen diagonal, yang tidak saya sebut intuitif. Anda dapat memeriksa sketsa bukti ini untuk membiasakan diri dengannya.
Untuk menyimpulkan
Anda tidak akan bisa, diberi bahasa, untuk hanya menyatakan apakah itu decidable atau tidak. Tidak ada algoritma yang dapat melakukan itu, dan membuktikan bahwa suatu bahasa tidak dapat diputuskan membutuhkan pemikiran, dan dapat memerlukan beberapa pengetahuan tentang Mesin Turing, argumen Diagonal, dll ...
Namun, inilah cara pribadi saya menangani pertanyaan ini. Biasanya, ketika mempelajari suatu bahasa, saya menganggap itu dapat dipilih, kecuali jika itu menunjukkan beberapa bentuk referensi tentang cara kerja Mesin Turing. Dalam hal ini, saya mulai waspada, dan mencoba mendefinisikan algoritma yang menentukan bahasa. Jika ini tidak terlihat mudah, kadang-kadang membantu untuk membagi pekerjaan baik dalam algoritme mengenali, maupun mengenali bersama. Jika saya masih tidak bisa melakukannya, saya akan mencoba untuk membuat hubungan antara bahasa ini, dan yang lain yang tidak dapat ditentukan, seperti "Jika saya dapat memutuskan bahasa itu, saya dapat memutuskan masalah penghentian". Ini adalah pengurangan Turing ke masalah yang tidak dapat diputuskan, sehingga masalah pertama tidak dapat diputuskan. Jika semua itu gagal, saya bisa mencoba menggunakan argumen diagonal, tetapi ini bisa sedikit rumit.