CSG3D3 Teori Komputasi Non-Deterministic Finite Automata Agung Toto Wibowo Ahmad Suryan Yanti Rusmawati Mahmud Dwi Sulistiyo Kurniawan Nur Ramadhani Said Al Faraby Dede Rohidin KK Intelligence, Computing, and Multimedia
Finite Automata Finite Automata (FA) : Suatu model komputer dengan jumlah memory yang sangat terbatas. Model komputasional yang paling sederhana. Ada 2 jenis : Deterministik Finite Automata (DFA) Deterministik setiap input alphabet/simbol dari suatu state hanya akan bertransisi ke satu state lain. Atau dengan kata lain, deterministik berarti tidak ambigu dalam menentukan next state. Non-Deterministik Finite Automata (NDFA) Non-Deterministrik setiap input alphabet/simbol dari suatu state mungkin akan bertransisi ke lebih dari satu state lain.
Contoh Non-Deterministic FA Mesin di bawah adalah mesin (NFA) untuk mengenali string biner yang selalu diakhiri 01. Lihat bahwa, dari state q0 akan muncul kerancuan atau keambiguan jika menerima input 0 (akan ke q0 atau q1).
Sifat NDFA NDFA memiliki kemampuan untuk berada di lebih dari 1 state pada saat yang bersamaan. NDFA selalu menerima bahasa yang di terima oleh DFA. Sebagaimana DFA, NDFA menerima secara tepat bahasa Reguler. Hal ini dikarenaakan NDFA dan DFA berada pada kelas bahasa yang sama (Lihat hirarki Chomsky). NDFA sering kali lebih ringkas dibanding DFA karena tidak harus fully defined.
Definisi Informal NDFA Terdiri dari finite number of state(s) Satu initial state, minimal satu final state Terdiri dari finite symbol (alphabet) Himpunan fungsi transisi Perbedaan NDFA dan DFA terletak pada aturan transisi, di mana ada minimal satu state NDFA, yang pada saat menerima suatu simbol, berpindah ke nol atau lebih dari satu state yang lain
NDFA sebagai Acceptor Misalnya kita punya mesin NDFA (menerima string berakhiran 01 ). Lihat proses berikut, bahwa 00101 dapat diterima oleh mesin itu.
Definisi Formal NDFA [1] Suatu NFA dapat didefinisikan secara formal sebagai 5-tuple berikut : A = (Q,,, q 0, F) Keterangan : 1. Q adalah himpunan terbatas dari states 2. himpunan terbatas dari symbols 3. : Q x Q fungsi transisi, dinotasikan ke (q, a) p p adalah himpunan state hasil transisi 4. q 0 Q adalah initial state 5. F Q adalah himpunan accepted/final states
Definisi Formal NDFA [2] Pada kasus di atas dapat didefinisikan : ({q0, q1, q2}, {0, 1},, q0, {q2}) dan dideskripsikan sebagai berikut. 0 1 q 0 {q 0, q 1 } {q 0 } q 1 {} {q 2 } q 2 {} {}
Fungsi Transisi yang Diperluas Fungsi tansisi yang ada di definisi formal dapat diperluas menjadi bentuk yang menerima beberapa input sekaligus (Ullman). Perluasan aturan transisi itu terangkum dalam : 1. (q 0, λ) = {q 0 } 2. (q 0, 0) = {q 0, q 1 } 3. (q 0, 00) = ({q 0, q 1 }, 0) (q 0, 00) = (q 0, 0) (q 1, 0) = {q 0, q 1 } {} = {q 0, q 1 } 4. (q 0, 001) = 5. (q 0, 0010) =
Bahasa dari NDFA Jika A = (Q,,, q 0, F) adalah NDFA, maka L(A) = { w (q 0, w) F {} } Sehingga L(A) adalah himpunan untaian string w dari * sehingga (q 0, w) memuat sedikitnya satu final/accepted state. Dari sini, dapat kita ambil kesimpulan bahwa, untuk mengecek apakah suatu string dapat diterima atau tidak oleh sebuah NDFA, kita juga dapat menggunakan metode aturan transisi yang diperluas ini.
Ekivalensi NDFA dengan DFA [1] Pada banyak bahasa, kita lebih mudah membangun NDFA daripada DFA. Ada fakta mengejutkan bahwa untuk setiap NDFA yang dibangun, selalu bisa dideskripsikan bentuk DFA yang ekivalen dengannya. Jumlah state pada DFA yang ekivalen tsb. minimal sama dengan yang dimiliki NDFA. Di kasus yang paling buruk, jumlah state DFA-nya adalah 2 n dari n state di NDFA.
Ekivalensi NDFA dengan DFA [2] Jika kita memiliki NDFA N = (Q N,, N, q 0, F N ), maka kita dapat membangun L(D) = L(N), dengan DFA D = (Q D,, D, {q 0 }, F D ) Perhatikan kembali definisi formal dari NDFA, di mana hasil transisi dari setiap fungsi transisi NDFA merupakan himpunan states. Maka semua kemungkinan himpunan tsb. dapat diartikan sebagai sebuah power set dari himpunan states di NDFA. Q D adalah powerset dari Q N sehingga jumlah state Q D adalah 2 n jika kita memiliki n state di Q N (kadang tidak semua state di pakai). F D adalah seluruh subset Q N yang mengandung setidaknya satu accepted state pada N (F N ).
Ekivalensi NDFA dengan DFA [3] Dari definisi dan langkahlangkah di atas, kita dapatkan aturan transisi sebagai berikut. {} {q 0 } {q 1 } {q 2 } {q 0, q 1 } {q 0, q 2 } {q 1, q 2 } {q 0, q 1, q 2 } 0 1 {} {} {q 0, q 1 } {q 0 } {} {q 2 } {} {} {q 0, q 1 } {q 0, q 2 } {q 0, q 1 } {q 0 } {} {q 2 } {q 0, q 1 } {q 0, q 2 } A B C D E F G H 0 1 A A E B A D A A E F E B A D E F
Ekivalensi NDFA dengan DFA [4] Dari semua states yang didapat, ternyata jika ditelusuri dari initial state, hanya ada 3 states saja yang bisa di capai, yakni B, E, dan F. Untuk menghindari pembuatan transisi yang tidak pernah dicapai, proses ekivalensi ini dapat dilakukan dengan cara Lazy Evaluation. Lazy Evaluation hanya men-generate subset state yang muncul dengan menelusuri mulai dari initial state. 0 1 {q0} {q0, q1} {q0} {q0, q1} {q0, q1} {q0, q2} {q0, q2} {q0, q1} {q0}
Ekivalensi NDFA dengan DFA [5] ({q 0 }, 0) = {q 0, q 1 }, dan ({q 0 }, 1) = {q 0 } ({q 0, q 1 }, 0) = {q 0, q 1 }, dan ({q 0, q 1 }, 1) = {q 0, q 2 } ({q 0, q 2 }, 0) = {q 0, q 1 }, dan ({q 0, q 2 }, 1) = {q 0 } 1 0 B 0 1 E F 1 0
Latihan 1 Cari DFA yang ekivalen dengan NDFA yang menerima string biner berakhiran 010 berikut ini dengan cara Lazy Evaluation. 0 1 q0 0 1 0 q1 q2 q3
Latihan 2 Ubah NDFA berikut menjadi DFA yang ekivalen menggunakan cara Lazy Evaluation. 0 r p 0 0 0 1 q 1 t 0, 1 0 s
Latihan 3 Yang menjadi pembeda antara Deterministic dan Non- Deterministic FA adalah a. Ada/tidak transisi epsilon b. Fully Defined c. Ambigu / tidak dalam menentukan next state d. a, b, dan c benar e. b, dan c benar
Latihan 4 Jika kita memiliki mesin seperti gambar di bawah, maka pada saat kita definisikan sebagai tupple (Q,,, q0, F) akan kita dapatkan: a. Q : {q0, q1, q2} b. : {0, 1} c. q0 sebagai initial state d. q2 sebagai final state e. semua jawaban benar