1 / 27

Non-deterministic Finite Automata (NFA)

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.

neil
Télécharger la présentation

Non-deterministic Finite Automata (NFA)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Non-deterministic Finite Automata (NFA) Yenni Astuti Version 1.0.0

  2. Pertemuan ke-3 dan ke-4 • DFA (Deterministic Finite Automata) • 1 keadaan + 1 input  1 keadaan 1 q0 q1 0

  3. Non-deterministic Finite Automata (NFA) • Non-deterministic • 1 keadaan + 1 input ≥1 keadaan. • Atau, 1 keadaan + 1 input  0 keadaan • Setiap DFA merupakan NFA.

  4. 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.

  5. 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.

  6. 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.

  7. Cara Kerja?2 • Jika muncul keadaan dengan simbol , maka tanpa membaca input lagi mesin menuju ke semua keadaan berikutnya yang dituju simbol .

  8. 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.

  9. 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.

  10. Pohon Kemungkinan2

  11. Contoh1 Bagaimana cara membaca input 010110?

  12. BentukPohon Kemungkinan Simbol input

  13. NFA yang menerima semua string yang memiliki substring 11 dan 101

  14. 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.

  15. 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:

  16. 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)

  17. 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.

  18. 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.

  19. 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

  20. 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!

  21. Unary Alphabet • NFA N3 berikut memiliki alfabet input {0} • Alfabet yang memiliki hanya satu simbol input disebut dengan unary alphabet.

  22. 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.

  23. 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.

  24. 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.

  25. 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

  26. 5-Tuple NFA N4 N4 = ({q0, q1, q2}, {a,b}, , q0, {q0})  =  = stuck / die / mati

  27. Tugas • Buatlah menggunakan 3 keadaan! Buatlah NFA N5 yang dapat menerima semua string dengan akhiran 00.

More Related