Saya telah merevisi Teori Komputasi untuk bersenang-senang dan pertanyaan ini telah mengganggu saya untuk sementara waktu (lucu tidak pernah memikirkannya ketika saya belajar Teori Automata di sarjana saya). Jadi "mengapa" tepatnya kita mempelajari automata terbatas deterministik dan non-deterministik (DFA / NFA)? Jadi, inilah beberapa jawaban yang saya dapatkan setelah soliloquing tetapi masih gagal melihat kontribusi keseluruhan mereka pada momen 'aha':
- Untuk mempelajari apa mereka dan tidak mampu yaitu keterbatasan
- Mengapa?
- Karena mereka adalah model dasar perhitungan teoretis dan akan meletakkan dasar model komputasi yang lebih mampu lainnya.
- Apa yang membuat mereka 'dasar'? Apakah mereka hanya memiliki sedikit penyimpanan dan transisi status?
- Oke, lalu bagaimana? Bagaimana semua ini berkontribusi untuk menjawab pertanyaan tentang komputabilitas? Tampaknya mesin Turing membantu memahami hal ini dengan sangat baik dan ada model perhitungan yang lebih rendah seperti PDA, DFA / NFAs / Regexes dll. Tetapi jika seseorang tidak tahu FAs apa yang mereka lewatkan?
Jadi meskipun saya 'mengerti' sampai batas tertentu, saya tidak dapat menjawab pertanyaan ini untuk diri saya sendiri? Bagaimana sebaiknya Anda menjelaskan 'mengapa belajar D / N-FA'? Apa pertanyaan yang ingin mereka jawab? Bagaimana ini membantu dan mengapa hal itu diajarkan pertama kali dalam Teori Automata?
PS: Saya mengetahui berbagai aplikasi leksikografis dan pencocokan pola yang dapat diimplementasikan. Namun, saya tidak ingin tahu apa yang bisa digunakan untuk praktis tetapi apa alasan mereka untuk menggunakan / penemuan / desain selama kulminasi mempelajari teori perhitungan. Secara historis berbicara apa yang menyebabkan seseorang memulai dengan ini dan apa pengertian 'aha' yang seharusnya dituju? Jika Anda menjelaskan pentingnya mereka kepada siswa CS yang baru mulai mempelajari Teori Automata, bagaimana Anda melakukannya?
Jawaban:
Saya pribadi telah menikmati beberapa Aha! beberapa saat dari mempelajari teori automata dasar. NFA dan DFA membentuk mikrokosmos untuk ilmu komputer teoretis secara keseluruhan.
Saya dapat melanjutkan. (Dan terus.) * Saya merasa berguna memiliki automata di belakang kepala saya dan mengingatnya setiap sekarang dan kemudian untuk memahami konsep baru atau untuk mendapatkan intuisi tentang ide-ide matematika tingkat tinggi. Saya ragu bahwa semua yang saya sebutkan di atas dapat dikomunikasikan dalam beberapa kuliah pertama kursus, atau bahkan dalam kursus pertama. Ini adalah imbalan jangka panjang berdasarkan investasi awal yang dibuat dalam kuliah awal kursus teori automata.
Untuk membahas judul Anda: Saya tidak selalu mencari pencerahan, tetapi ketika saya melakukannya, saya lebih suka automata terbatas. Tetap haus, teman saya.
sumber
Ada banyak alasan teoritis yang baik untuk mempelajari N / DFA. Dua yang langsung muncul di pikiran adalah:
Mesin Turing (menurut kami) menangkap semua yang dapat dihitung. Namun, kita dapat bertanya: Bagian mana dari mesin Turing yang "penting"? Apa yang terjadi ketika Anda membatasi mesin Turing dengan berbagai cara? DFA adalah batasan yang sangat parah dan alami (menghilangkan ingatan). PDA adalah batasan yang tidak terlalu parah, dll. Secara teoritis menarik untuk melihat apa yang memberi Anda memori dan apa yang terjadi ketika Anda pergi tanpa itu. Sepertinya pertanyaan yang sangat wajar dan mendasar bagi saya.
Mesin Turing membutuhkan pita tak terbatas. Alam semesta kita terbatas, jadi dalam beberapa hal setiap perangkat komputasi adalah DFA. Sepertinya topik yang penting, dan sekali lagi alami, untuk dipelajari.
Bertanya mengapa seseorang harus mempelajari DFA sama dengan menanyakan mengapa seseorang harus mempelajari teorema kelengkapan Godel ketika hal yang benar-benar menarik adalah teorema ketidaklengkapannya .
Alasan mereka menjadi topik pertama dalam teori automata adalah karena itu wajar untuk membangun ke mode yang lebih rumit dari yang kurang rumit.
sumber
Untuk menambahkan satu perspektif lagi ke sisa jawaban: karena Anda benar-benar dapat melakukan hal-hal dengan automata terbatas, berbeda dengan mesin Turing.
Hampir semua properti menarik dari mesin Turing tidak dapat diputuskan. Sebaliknya, dengan automata terbatas, hanya tentang segala sesuatu adalah decidable. Kesetaraan bahasa, inklusi, kekosongan, dan universalitas semuanya dapat dipilih. Dikombinasikan dengan automata terbatas ditutup di bawah hampir setiap operasi yang dapat Anda pikirkan, dan bahwa operasi ini dapat dihitung, Anda dapat melakukan hampir semua hal yang ingin Anda lakukan dengan automata terbatas.
Ini berarti bahwa jika Anda dapat menangkap sesuatu menggunakan automata terbatas, Anda secara otomatis mendapatkan banyak alat untuk menganalisisnya. Misalnya, dalam pengujian perangkat lunak, sistem dan spesifikasinya dapat dimodelkan sebagai automata terbatas. Anda kemudian dapat secara otomatis menguji apakah sistem Anda mengimplementasikan spesifikasi dengan benar.
Oleh karena itu, mesin Turing dan automata terbatas mengajarkan kepada orang-orang suatu kontras yang menarik dan ada di mana-mana: kekuatan yang lebih deskriptif berjalan seiring dengan lebih sedikit kemudahan penelusuran. Automata yang terbatas tidak dapat menjelaskan banyak hal, tetapi setidaknya kita dapat melakukan hal-hal dengan mereka.
sumber
Negara. Anda perlu belajar bahwa seseorang dapat memodelkan dunia (untuk masalah-masalah tertentu) sebagai ruang keadaan terbatas, dan seseorang dapat berpikir tentang perhitungan dalam pengaturan ini. Ini adalah wawasan yang sederhana tetapi sangat berguna jika Anda melakukan pemrograman apa pun - Anda akan mengalami keadaan berulang-ulang, dan FA memberi Anda cara untuk memikirkannya. Saya menganggap ini sebagai alasan yang cukup untuk mengajar kelas yang lengkap. Tentu saja, negara dapat bersifat deterministik atau non-deterministik. Dengan demikian DFA dan NFA, tetapi Anda dapat mengkonversi di antara mereka, dll.
Hal kedua yang harus dipelajari adalah teorema Menghentikan. Yang terkait dengan teorema ketidaklengkapan Godel. (Anda tidak dapat membangun mesin yang dapat menghitung semuanya, dan ada klaim matematis bahwa Anda tidak dapat membuktikan atau menyangkal, dan karena itu perlu dianggap sebagai aksioma. Artinya, kita hidup di dunia yang tidak memiliki deskripsi hingga atau nyata oracle - ya untuk kita!)
Sekarang, saya melakukan sarjana saya dalam matematika, dan Anda terbiasa dengan gagasan bahwa Anda belajar hal-hal yang Anda tidak tahu mengapa Anda belajar (teori grup, teori ukuran, teori himpunan, ruang Hilbert, dll, dll, dll. [Semua hal yang baik , BTW]). Ada sesuatu yang bisa dikatakan tentang belajar cara belajar - lain kali Anda harus belajar matematika bizarro (karena Anda perlu menggunakannya untuk melakukan sesuatu di luar sana di dunia nyata) yang terlihat sangat aneh Anda ambil dengan tenang. Secara khusus, hal ketiga yang harus dipelajari adalah kematangan matematika - bisa berdebat dengan hati-hati tentang hal-hal, tahu kapan bukti benar atau tidak, tuliskan bukti, dll. Jika sudah memilikinya, kursus ini mudah, dan Anda tidak akan terlalu peduli banyak alasan Anda mempelajarinya.
Kecuali untuk ini, kursus ini hanya membuang-buang waktu Anda, seperti yang lainnya. Secara khusus, Anda dapat menjalani kehidupan yang bahagia tanpa mengetahui hal-hal ini. Tetapi ini benar-benar berlaku untuk semua pengetahuan. Lebih atau kurang. Bagi saya, mata kuliah di universitas layak dilakukan, jika Anda memandang dunia secara berbeda setelah mempelajarinya. Ini jelas merupakan salah satu kursus yang mengubah cara saya berpikir tentang dunia. Apa lagi yang bisa Anda tanyakan?
sumber
Meskipun sebenarnya bukan alasan mereka awalnya dipelajari, automata terbatas dan bahasa reguler yang mereka kenali cukup traktat sehingga mereka telah digunakan sebagai blok bangunan untuk teori matematika yang lebih rumit. Dalam konteks ini lihat terutama grup otomatis (grup di mana elemen dapat diwakili oleh string dalam bahasa reguler dan di mana produk elemen oleh generator grup dapat dihitung dengan transduser keadaan terbatas) dan subshift lunak (subshift dari ruang shift yang kata-kata terlarang membentuk bahasa biasa). Jadi ada alasan untuk mempelajarinya bahkan jika Anda tertarik pada matematika murni daripada ilmu komputer.
Automata terbatas juga telah digunakan dalam desain algoritma untuk objek jenis lain. Sebagai contoh, suatu algoritma Culik untuk menguji apakah otomat seluler satu dimensi dapat dibalikkan melibatkan pembuatan, modifikasi, dan pengujian properti NFA tertentu. Dan makalah FOCS tahun 1986 oleh Natarajan menunjukkan bagaimana memecahkan masalah tertentu dalam desain jalur perakitan mekanis dengan mereduksinya menjadi perhitungan tentang automata terbatas.
sumber
Anda mengajukan (setidaknya) dua pertanyaan yang berbeda: (a) Apa bagian dari teori yang dibangun di atas automata terbatas saat ini? (B) Mengapa automata terbatas dikembangkan di tempat pertama? Saya pikir cara terbaik untuk mengatasi yang terakhir adalah dengan melihat koran lama, seperti:
Inilah dua paragraf pertama:
Singkatnya, mereka dikembangkan sebagai model komputer nyata, yang memiliki sumber daya terbatas.
sumber
Alasan lain adalah model teoretis yang relatif praktis . Mesin Turing, terlepas dari ketidakmungkinan pita tak terbatas, adalah jenis yang canggung untuk apa rasanya memprogram komputer (perhatikan bahwa ini bukan analogi yang baik untuk memulai!). Namun PDA dan DFA cukup dapat diterima untuk menjadi model program aktual dalam arti bahwa desain PDA / DFA seringkali dapat dengan mudah diubah menjadi program nyata. Desain kompiler, misalnya, menggunakannya secara luas. Jadi pada titik-titik koneksi semacam ini antara teori dan praktik, kita mendapat pegangan tentang bagaimana semua itu saling berhubungan, dan apa yang bisa dan tidak bisa kita lakukan.
sumber
Lihat Game "Living Binary Adder" di sini: http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html Saya biasa menyajikan game ini kepada siswa saya di bab-bab awal tentang DFA / NFA. Ini menggambarkan dua hal penting dalam Teori Automata:
Ini, terkadang membawa momen "Aha" kepada murid-murid saya.
sumber
Konsep DFA sangat berguna untuk merancang solusi yang efisien untuk berbagai jenis masalah. Salah satu contohnya adalah jaringan. Setiap protokol dapat diimplementasikan sebagai mesin negara. Menerapkan solusi dengan cara ini membuat kode lebih sederhana dan lebih sederhana berarti tingkat cacat yang lebih rendah. Ini juga berarti bahwa perubahan pada kode lebih mudah dan memiliki dampak yang lebih rendah, lagi-lagi memiliki tingkat cacat yang lebih rendah.
Beberapa orang merasa sulit untuk melihat protokol jaringan sebagai mesin negara tetapi mereka yang dapat melakukan lompatan merasa sangat bermanfaat dalam hal pengembalian usaha.
sumber
Sebenarnya, murid-murid saya kadang-kadang bertanya persis seperti ini - setelah menghabiskan sebagian besar semester pada automata terbatas dan akhirnya tiba di mesin Turing. Mengapa menghabiskan begitu banyak waktu pada formalisme yang lebih lemah ketika yang lebih kuat tersedia? Jadi saya menjelaskan tradeoff inheren dalam kekuatan ekspresif vs kompleksitas analitik. Model yang lebih kaya biasanya lebih sulit untuk dianalisis. Dikotomi DFA vs TM adalah ekstrem, karena masalah keanggotaan sepele untuk satu dan tidak dapat diperhitungkan untuk yang lain. Contoh yang kurang ekstrim adalah DFA vs PDA. Masalah keanggotaan untuk yang terakhir ternyata dapat dipecahkan secara efisien, tetapi solusinya sama sekali tidak sepele. Kami melihat kejadian ini di banyak cabang matematika dan sains: mempelajari model sederhana untuk mendapatkan pemahaman selengkap mungkin, yang biasanya mengarah pada wawasan ke model yang lebih kompleks juga.
sumber
Saya melihat beberapa jawaban menyebut FM "lebih rendah" daripada mesin Turing.
Fokus utama di kelas Pascasarjana saya ambil terletak pada kesetaraan mereka, bukan perbedaan. Untuk setiap model FSM yang kami pelajari, kami harus membuktikan kesetaraannya dengan Mesin Turing. Ini dilakukan dengan menerapkan Mesin Turing di FSM. IIRC, kami juga mempelajari beberapa model komputasi lain yang dingin tidak mengimplementasikan TM, tapi saya lupa apa itu. Intinya adalah, jika Anda dapat mengimplementasikan TM, Anda dapat menjalankan program TM apa pun pada model tersebut, diberi pita analog yang cukup besar untuk masalah yang sedang berjalan.
Dorongan dari jawaban untuk pertanyaan itu adalah: TM adalah model komputabilitas dasar, tetapi tidak terlalu praktis dalam hal membangun mesin yang bermanfaat. Oleh karena itu model FSM.
Ini dibawa pulang secara visual kepada saya ketika, pada sekitar waktu yang sama (1984), saya menemukan bahasa FORTH. Mesin eksekusi itu dibangun di atas realisasi murni dari Dual Stack PDA. Melangkah lebih dalam Saya menyukai mesin yang sama ini di bawah penyusun ekspresi
Meskipun, bagi saya, dampak nyata FSM adalah menemukan buku "Theory of Finite Automata" oleh Trakhtenbrot dan Korzynski (?) Ketika saya berusia 18 tahun, sebuah penemuan yang pada dasarnya memberi saya karier.
sumber