Saya punya pertanyaan [agak lucu] di benak saya. Mengapa otomat hingga non-deterministik disebut non-deterministik sementara kami mendefinisikan transisi untuk input. Yah, meskipun ada beberapa transisi dan epsilon , mereka didefinisikan yang berarti bahwa mesin itu deterministik untuk transisi tersebut. Yang berarti itu deterministik.
finite-automata
nondeterminism
Madhusoodan P
sumber
sumber
Jawaban:
"Deterministik" berarti "jika Anda menempatkan sistem dalam situasi yang sama dua kali, dijamin untuk membuat pilihan yang sama dua kali".
"Non-deterministik" berarti "tidak deterministik", atau dengan kata lain, "jika Anda menempatkan sistem dalam situasi yang sama dua kali, mungkin atau mungkin tidak membuat pilihan yang sama dua kali".
Otot terbatas hingga non-deterministik (NFA) dapat memiliki beberapa transisi keluar dari keadaan. Ini berarti ada beberapa opsi untuk apa yang dapat dilakukan dalam situasi itu. Tidak dipaksa untuk selalu memilih yang sama; pada satu input, itu mungkin memilih transisi pertama, dan pada input lain itu mungkin memilih transisi yang sama.
Di sini Anda dapat menganggap "situasi" sebagai "keadaan NFA saat ini, bersama dengan simbol apa yang sedang dibaca berikutnya dari input". Bahkan ketika keduanya sama, NFA mungkin masih memiliki beberapa transisi yang cocok yang dapat dikeluarkan dari negara itu, dan itu dapat memilih secara sewenang-wenang mana yang akan diambil. Sebaliknya, DFA hanya memiliki satu transisi yang cocok yang dapat diambil dalam situasi itu, sehingga tidak memiliki pilihan - selalu akan mengikuti transisi yang sama setiap kali berada dalam situasi itu.
sumber
Ambil otomat ini sebagai contoh, ini adalah NFA dan ia menerima string . Untuk menjadi lebih bertele-tele, ia menerima string yang berakhir pada 10 .0110 10
Untuk melihat itu, kita hanya perlu memeriksa apakah sudah mencapai kondisi terima.
Sekarang di garis merah ada kemungkinan lain, yaitu ketika membaca kedua saya bisa tetap di q 0 dan kemudian tetap di q 0 saat membaca 0 terakhir . Automata tidak memiliki memori, jadi tidak ada cara untuk 'menyimpan' keadaan dan memeriksa kemudian jika string saya berakhir dengan 10 , itu seperti NFA ini membuat menebak apakah string berakhir dengan 10 sebelum bercabang ke keadaan yang dapat diterima. Ketidakpastian di sini membuat banyak pilihan dan selalu membuat yang benar.1 q0 q0 0 10 10
Lebih mudah untuk membangun NFA daripada membangun DFA, hal baiknya adalah keduanya sama .
sumber
Fungsi transisi dari NFA menentukan transisi yang diizinkan pada suatu titik waktu. Mungkin ada lebih dari satu opsi, dan NFA memilih transisi yang tidak ditentukan dengan tujuan mencapai negara penerima.
Mungkin Anda harus menunggu sampai Anda belajar tentang mesin Turing nondeterministic. Nondeterminisme memiliki arti yang sama dalam kedua kasus.
sumber
Mulailah dengan Finite Automaton. Ia memiliki status dan status penerimaan dan transisi.
Sekarang, berikan lebih dari satu aturan trasisi dari masing-masing negara bagian, dan katakan bahwa ia menerima jika ada seperangkat aturan transisi yang diambil setelah fakta yang mengarah ke status penerimaan diberikan string input.
Setelah Anda memiliki string input Anda, ada satu set tetap transisi beton dan menyatakan melalui (satu per satu) untuk menerima string itu. Tetapi transisi yang dipilihnya hanya dipilih pada akhir string . Saat string sedang dibaca, jalur mana yang harus diambil tidak ditentukan.
Ini tidak menentukan. Ia dapat memilih jalurnya melalui grafik setelah Anda memberikan seluruh masalahnya, bukan saat membaca input.
Sekarang, kami memformalkan ini secara berbeda dari eksperimen pemikiran ini, tetapi ini memberi Anda motivasi mengapa ia mendapatkan nama itu.
Ini menjelaskan bagaimana nama itu didapatkan. Ya, Anda dapat memodelkan NDFA dengan cara yang sepenuhnya deterministik, tetapi nama-nama itu melekat . Setelah Anda memanggil sesuatu Bob, ada biaya komunikasi untuk mengganti nama menjadi sesuatu yang lain karena tidak ada yang tahu apa yang Anda bicarakan ketika Anda menyebutnya Alice.
sumber
Dari wikipedia , cara terbaik untuk memikirkan hal ini adalah mulai dengan mesin keadaan terbatas deterministik (DFA). Untuk DFA, setiap transisi secara unik ditentukan oleh kondisi saat ini dan simbol input yang akan diproses. Mesin negara hingga non-deterministik (NFA) hanyalah apa yang Anda dapatkan ketika Anda mengendurkan aturan determinisme ini untuk memungkinkan transisi agar tidak didefinisikan secara unik. Itu yang Anda dapatkan ketika Anda menghapus aturan determinisim dari DFA.
sumber
NFA dan DFA keduanya digunakan untuk (antara lain) mengenali string tertentu.
Otomat terbatas hingga non-deterministik berfungsi seperti itu memiliki pengaruh pada keputusannya - ia dapat "memilih" untuk mengikuti jalan, atau tidak.
Pada gambar di atas, ketika kita berurusan dengan string "00111", perhatikan bahwa ketika menemukan "1" pertama, ada dua cara yang mungkin untuk diikuti. Seseorang dapat tinggal di "p" atau pergi ke "q". Jika automata akan dipindahkan ke "q", itu tidak akan menerima string (karena tidak ada tepi yang keluar dari "q"). Tetapi string dapat diterima oleh automata ini dengan pergi ke "q" dengan hanya 1 yang terakhir, sementara tetap di "p" untuk segala sesuatu yang lain (dan itulah yang terjadi).
NFA membuatnya tampak seperti automata "tahu" apa yang ada di depan, dan memilih yang sesuai.
Tentu saja tidak. DFA dan NFA adalah setara dalam hal kekuatan (Anda dapat mengurangi NFA menjadi DFA dan membuat DFA (mungkin) lebih sederhana dengan penggunaan NFA), tetapi NFA berguna, karena telah memungkinkan untuk mendefinisikan bahasa yang sama dengan DFA sambil menjaga grafik jauh lebih pendek dan lebih mudah dibaca.
Tidak ada yang acak di sana. Bagian non-deterministik menekankan pada fakta bahwa ada beberapa "pilihan" untuk diambil, tetapi kenyataannya adalah bahwa automata tidak mengambil keputusan apa pun.
sumber
Nah di sini adalah campuran dari beberapa konten dari buku [Pengantar Bahasa Resmi dan Automata oleh Peter Linz 4E] dan pemahaman saya.
Pertimbangkan program bermain game di mana mesin perlu membuat keputusan untuk langkah selanjutnya [katakan untuk tic-tac-toe]. Karena ada beberapa gerakan yang mungkin, kami dengan pasti memilih setiap gerakan dan mengevaluasi langkah itu dan memilih yang terbaik. Meskipun proses seleksi bersifat deterministik dan ada banyak kemungkinan gerakan, langkah terakhir yang dibuat adalah langkah tunggal dan dipilih sebagai langkah terbaik sambil menyembunyikan semua perhitungan langkah yang dicoba dari lawan. [Di sini kita mengasumsikan bahwa proses evaluasi setiap gerakan yang mungkin disembunyikan dari lawan].
Karenanya hanya satu pilihan yang dibuat dan lawan diberi ilusi sehingga langkah itu tidak deterministik.
Nah jika Anda belum yakin dengan meminta bahwa langkah terbaik adalah produk dari beberapa perhitungan deterministik maka Anda harus mempertimbangkan mesin yang membuat gerakan acak sempurna (mungkin mesin kehilangan tetapi ini adalah NFA).
sumber