MODUL VIII TEORI BAHASA DAN AUTOMATA Tujuan : Mahasiswa memahami ekspresi reguler dan dapat menerapkannya dalam berbagai penyelesaian persoalan. Materi : Hubungan antara DFA, NFA, dan ekspresi regular Aturan Produksi Suatu FSA o Aturan Produksi Bahasa Regular o Mengkonstruksi Aturan Produksi dari Suatu Finite State Automata o Finite State Automata untuk Suatu Tata Bahasa Regular
HUBUNGAN ANTARA DFA, NFA, DAN EKSPRESI REGULAR Hubungan antara Non-deterministic Finite Automata, Deterministic Finite Automata, dan ekspresi regular bisa digambarkan seperti gambar berikut ini. NFA DFA NFA -move Ekspresi Regular Gambar 9. Hubungan antara DFA, NFA, dan ekspresi regular Kita lihat contoh-contoh permasalahan lebih lanjut. Kita ingin membuat mesin Deterministic Finite Automata yang menerima bahasa yang berupa semua string yang berakhiran dengan. Diketahui, = (,) Pertama kita buat ekspresi regularnya: (+)* (kita bisa menuliskan juga sebagai ( )*, karena symbol + bisa menggantikan ). Dari ekspresi regular tersebut kita lebih mudah membuat Non-deterministic Finite Automata, Deterministic Finite Automata-nya lebih dahulu, dari pada langsung Deterministic Finite Automata. Mesin NFA-nya dapat kita bisa lihat ada gambar 2., q q Gambar 2. Mesin NFA
Tabel transisi untuk NFA gambar 2. q q,q q q - - - Akhirnya kita buat Deterministic Finite Automata pada gambar 2 yang ekivalen dengan Non-deterministic Finite Automata tersebut. Bisa kita cek dengan untai yang harus diterima oleh mesin itu, seperti :,,,,, q q,q, q,q, Gambar 2. Mesin DFA Contoh berikutnya: Kita ingin membuat mesin Deterministic Finite Automata yang menerima bahasa berupa semua string yang memuat minimal dua nol berturutan ( ). Diketahui, = (,) Perhatikan perbedaannya dengan soal sebelumnya. Disini tidak ditentukan letak. Kita buat ekspresi regularnya: (+)*(+)* Non-deterministic Finite Automata-nya bisa dilihat pada gambar 22.,, q q Gambar 22. Mesin NFA
Tabel transisi untuk NFA gambar 22: q q,q q q - Akhirnya kita buat Deterministic Finite Automata pada gambar 23 yang ekivalen dengan Non-deterministic Finite Automata tersebut. Bisa kita cek dengan untai yang harus bisa diterima oleh mesin itu, seperti:,,,,,,,,,, q q,q, q,q, q, Gambar 23. Mesin DFA Contoh berikutnya: Kita ingin membuat mesin Deterministic Finite Automata yang menerima bahasa berupa semua string dimana symbol ketiga dari kanan adalah. Diketahui, = (,) Kita buat ekspresi regularnya: (+)*(+)(+) Non-deterministic Finite Automata-nya bisa dilihat pada gambar 24.,,, q q q 3 Gambar 24. Mesin NFA
Tabel transisi untuk NFA gambar 24 q q q,q q q 3 q 3 q 3 - - Akhirnya kita bisa buat Deterministic Finite Automata yang ekivalen dengan Non-deterministic Finite Automata tersebut. Gambarnya memang agak rumit karena jumlah state yang banyak (silahkan anda buat sendiri untuk latihan). Bisa kita cek dengan untai yang harus bisa diterima oleh mesin itu, seperti:,,,,,,,, Contoh berikutnya: Kita ingin membuat mesin Deterministic Finite Automata yang menerima bahasa yang berupa 4 (empat) symbol yang minimal memuat 2 (dua) buah (yang tidak perlu berturutan). Diketahui = (,). Disini kita agak kesulitan membuat ekspresi regular dari permasalahan tersebut. Maka kita coba langsung mengkonstruksi Deterministic Finite Automata-nya dengan jalan melihat semua kemungkinan yang ada. Kemungkinan pertama adalah dua buah nol terletak di paling ujung. Kita lihat pada gambar 25. q q q 4 Gambar 25. DFA untuk Kemungkinan kedua adalah dua buah nol terletak di paling awal, kita tambahkan kemungkinan tersebut sehingga gambarnya dapat dilihat pada gambar 26.
q q q 4, q 5 q 7, q 6 Gambar 26. DFA untuk () + ((+)(+)) Selanjutnya kita tambahkan kemungkinan untuk tiga symbol pertama sudah memuat dua buah nol, dapat dilihat pada gambar 27 q q q 4, q 5 q 8 q 7, q 6 Gambar 27. DFA untuk () + ((+)(+)) Akhirnya kita tambahkan kemungkinan bila tiga symbol pertama baru memuat satu buah nol, kita buat transisi dari state q 8 ke q 3. Hasilnya dapat dilihat pada gambar 28.
q q q 4, q 5 q 8 q 7 q 6, Gambar 28. Hasil akhir mesin DFA Untuk melengkapkannya menjadi sebuah Deterministic Finite Automata dapat pula anda tambahkan transisi ke state : (,) =, (q 3,) =, (q 4,) =, dan (q 4,) =, yang sebenarnya tidak menuju solusi. Kalau kita jeli sebenarnya dapat dibaca makna dari setiap state diatas: state q 4 : mesin sudah menerima empat symbol, memuat minimal dua buah nol state q 7 : mesin sudah menerima tiga symbol, memuat minimal dua buah nol state q 3 : mesin sudah menerima tiga symbol, memuat satu buah nol state q 6 : mesin sudah menerima dua symbol, memuat dua buah nol state q 8 : mesin sudah menerima dua symbol, memuat satu buah nol state : mesin sudah menerima dua symbol, tidak memuat nol state q : mesin sudah menerima satu symbol, tidak memuat nol state q 5 : mesin sudah menerima satu symbol, memuat satu buah nol *Catatan : Untuk ER =, dan ER =, bisa anda lihat otomatanya pada gambar 29 dan 3. Pada gambar tanpa menerima input (input kosong/empty/ ) mencapai state akhir. Pada gambar 2 tidak ada jalan untuk mencapai state akhir, maka ekspresi regularnya =.
q Gambar 29. FSA untuk ER = q q Gambar 3. FSA untuk ER =