400 likes | 1.01k Views
Non-deterministic Finite Automata (NFA). Yenni Astuti Version 1.0.0. Pertemuan ke-3 dan ke-4. DFA (Deterministic Finite Automata) 1 keadaan + 1 input 1 keadaan. 1. q 0. q 1. 0. Non-deterministic Finite Automata (NFA). Non-deterministic 1 keadaan + 1 input ≥ 1 keadaan.
E N D
Non-deterministic Finite Automata (NFA) Yenni Astuti Version 1.0.0
Pertemuan ke-3 dan ke-4 • DFA (Deterministic Finite Automata) • 1 keadaan + 1 input 1 keadaan 1 q0 q1 0
Non-deterministic Finite Automata (NFA) • Non-deterministic • 1 keadaan + 1 input ≥1 keadaan. • Atau, 1 keadaan + 1 input 0 keadaan • Setiap DFA merupakan NFA.
NFA vs DFA1 • Setiap keadaan di DFA memiliki tepat satu anak panah transisi untuk setiap simbol alfabet. • Otomata NFA melanggar aturan DFA. Keadaan q1 memiliki satu anak panah transisi untuk simbol 0, namun untuk simbol 1, anak panahnya ada dua. • Keadaan q2 punya satu anak panah untuk simbol 0, namun tidak memiliki anak panah untuk 1. • Pada NFA, satu keadaan dapat memiliki nol, satu, atau lebih anak panah untuk setiap simbol transisi.
NFA vs DFA2 • DFA: Label transisi berupa simbol-simbol alfabet. • NFA: Label transisi dapat berupa simbol alfabet, dan/atau . • Nol, satu, atau lebih anak panah berlabel dapat berasal dari tiap keadaan.
Cara Kerja?1 • Misal: kita berada di keadaan q1 suatu NFA N1. • Diberikan simbol input 1. • Setelah membaca input tersebut, mesin menuju semua keadaan berikutnya yang berlabel 1. • Kemudian mesin membaca input berikutnya. • Bila keadaan berikutnya ada lebih dari satu keadaan, ikuti semua keadaan tersebut. • Bila tidak ditemukan keadaan berikutnya, maka runtutan string tersebut mati. • Jika salah satu dari cabang urutan string mencapai keadaan akhir/ final state/ keadaan yang diterima, NFA menerima string yang diberikan.
Cara Kerja?2 • Jika muncul keadaan dengan simbol , maka tanpa membaca input lagi mesin menuju ke semua keadaan berikutnya yang dituju simbol .
Komputasi Paralel? • NFA dapat dipandang sebagai bentuk komputasi paralel, yakni beberapa ‘proses’ dijalankan bersamaan. • NFA yang bercabang/mengikuti sejumlah pilihan berarti mengalami proses pemisahan menjadi sejumlah ‘anak’ dengan proses yang saling terpisah. • Jika salah satu proses percabangan ini sampai ke keadaan akhir, maka seluruh komputasi untuk string tersebut diterima.
Pohon Kemungkinan1 • Salah satu cara membayangkan komputasi NFA yakni dengan pohon kemungkinan. • Sebagai akarnya adalah keadaan awal komputasi. • Setiap titik cabang pada pohon adalah titik cabang komputasi. • Mesin menerima masukan string jika salah satu cabang komputasi berakhir di keadaan akhir/ keadaan yang diterima.
Contoh1 Bagaimana cara membaca input 010110?
BentukPohon Kemungkinan Simbol input
NFA yang menerima semua string yang memiliki substring 11 dan 101
NFA menjadi DFA? • Setiap NFA dapat diubah menjadi suatu bentuk DFA. • Membuat NFA kadangkala lebih mudah dibandingkan dengan membuat DFA. • Fungsi NFA lebih mudah dipahami daripada DFA.
Contoh2 Misalkan A adalah bahasa yang terdiri dari semua string {0,1}. A memiliki satu 1 di posisi ketiga dari belakang (misal 000100 termasuk dalam A, 0011 tidak termasuk dalam A) Bentuk NFA N2yang mengenali A, seperti berikut:
NFA N2 0,1 q0 q1 q2 1 0, 1 1 0, 1 q3 A memiliki satu 1 di posisi ketiga dari belakang (misal 000100 termasuk dalam A, 0011 tidak termasuk dalam A)
Cara Membuat N2 • Salah satu cara untuk membuat komputasi NFA N2 adalah tetap berada pada keadaan awal, q0, hingga bit ketiga dari belakang. • Artinya, jika simbol input adalah 1, maka percabangan akan menuju q1. Keadaan q2 dan q3 digunakan untuk memeriksa tebakan benar atau tidak.
NFA N2 menjadi DFA • Telah dikatakan, setiap NFA dapat diubah menjadi DFA ekivalennya. • Kadangkala, DFA ekivalen punya lebih banyak keadaan dibanding NFA. • DFA terkecil untuk A memiliki 8 keadaan.
DFA dari N2 0 0 q000 q010 0 0 1 1 0 0 0 0 q110 q101 q100 q111 1 1 1 q001 q011 1 1 1
Penambahan pada N2 • Misal kita menambahkan label pada anak panah dari q1 ke q2 dan dari q2 ke q3 dari Mesin N2. • Artinya, kedua anak panah memiliki label 0, 1, ; bukan hanya 0, 1. • Dengan modifikasi tersebut, Language seperti apakah yang akan dikenali N2? • Modifikasikan juga DFA N2!
Unary Alphabet • NFA N3 berikut memiliki alfabet input {0} • Alfabet yang memiliki hanya satu simbol input disebut dengan unary alphabet.
Keterangan NFA N3 • Mesin N3 menunjukkan kemudahan dari penggunaan tanda panah berlabel . • N3 menerima semua string dalam bentuk 0k dengan k adalah kelipatan 2 atau 3. (ingat bahwa pangkat menandakan pengulangan, bukan tanda eksponesial). Sebagai contoh, N3 menerima string , 00, 000, dan 000000; tidak menerima string 0 atau 00000.
Keterangan NFA N3 • Mesin N3 digunakan untuk menguji jumlah 0 kelipatan 2 atau kelipatan 3 dengan membuat percabangan siklus atas ataupun siklus bawah. • Mesin N3 dapat digantikan dengan mesin lain yang tidak memiliki atau NFA murni. Namun N3 menujukkan cara termudah untuk memahami Language yang dimaksud.
Latihan NFA • Buatlah NFA N4 yang dapat menerima string , a, baba, dan baa; namun tidak menerima string b, bb, dan babba. • Buatlah menggunakan 3 keadaan! Mesin ini akan kita gunakan nanti untuk mengilustrasikan prosedur pengubahan NFA ke DFA.
NFA N4 yang dapat menerima string , a, baba, dan baa; namun tidak menerima string b, bb, dan babba. a b Label dapat diletakkan sebelum keadaan q0. Jika tidak dituliskan juga tidak jadi masalah karena semua anak panah sebelum keadaan awal (start state) artinya input q0 q0 q1 q2 a, b a, b
5-Tuple NFA N4 N4 = ({q0, q1, q2}, {a,b}, , q0, {q0}) = = stuck / die / mati
Tugas • Buatlah menggunakan 3 keadaan! Buatlah NFA N5 yang dapat menerima semua string dengan akhiran 00.