270 likes | 1.01k Views
Teori Bahasa dan Automata. Ekspresi Regular Ekuivalensi Non Deterministic Finite Automata ke Deterministic Finite Automata. Ekspresi Regular – Introduction. Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya
E N D
TeoriBahasadan Automata Ekspresi Regular Ekuivalensi Non Deterministic Finite Automata ke Deterministic Finite Automata
Ekspresi Regular – Introduction • Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya • Bahasa-bahasa yang diterima oleh suatu finite state automata bisa dinyatakan secara sederhana dengan ekspresi regular (regular expression) ER. • Memberikan suatu pola (pattern) atau template untuk string dari suatu bahasa • String yang menyusun suatu bahasa regular akan cocok (match) dengan pola bahasa itu • Penerapan ekspresi regular yang tampak misalnya string search pada suatu file, biasanya fasilitas ini ada pada text editor.
Ekspresi Regular – Introduction • Contoh : Suatu field masukan hanya menerima input bilangan (0..9). 0,1,…9 0,1,2,…9 q1 q0 selain 0,1,2,…9 selain 0,1,2,…9 q2 FSA menerima bilangan integer tak bertanda Ekrspresi Regular yang dihasilkan adalah (digit) (digit)* dengan digit 0..9
Ekspresi Regular – Introduction • ER juga dapat diaplikasikan untuk melakukan analisis leksikal dalam sebuah kompilator. Yaitu mengidentifikasikan unit-unit leksikal (token) yang dikenal dalam program. • Token-token pada suatu bahasa pemrograman kebanyakan tanpa kecuali dinyatakan sebagai sebuah ER . • Contoh: Suatu identifier baik huruf besar atau huruf kecil yang kemudian diikuti huruf atau digit, dengan tanpa pembatasan jumlah panjang bisa dinyatakan sebagai: (huruf)(huruf+digit)* huruf atau digit huruf q0 q1
Notasi ER Terdapat 5 notasi dalam ER yaitu: ‘*’ , ‘+’ , ‘+’ , ‘’ , ‘.’ • * (karakter asterisk), berarti bisa tidak muncul, bisa juga muncul berhingga kali (0-n) • + (pada posisi superscript/ diatas) berarti minimal muncul satu kali (1-n) • + atau berarti union • . (titik) berarti konkatensi, biasanya titik bisa dihilangkan, misal ab bermakna seperti a.b
Notasi ER - Contoh • ER: ab*cc Contoh string: abcc, abbcc, abbbcc, abbbbcc, acc, (b bisa tidak muncul atau muncul sejumlah berhingga kali) • ER: 010* Contoh string : 01, 010, 0100, 01000 (jumlah 0 diujung bisa tidak muncul, bisa muncul berhingga kali) • ER: a*d Contoh string : d, ad, aad, aaad • ER: a+d Contoh string: ad, aad, aaad --- (a minimal muncul sekali)
Notasi ER -Contoh • ER: a*b* (ingat ‘’ berarti atau) Contoh string : a, b, aa, bb, aaa, bbb, aaaa, bbbb • ER: (ab) --- Contoh string: a, b • ER: (ab)* Contoh string : a, b, ab, ba, abb, bba, aaaa, bbbb (string yang memuat a atau b) ---- * perhatikan : notasi ‘’ kadang dituliskan juga sebagai ‘+’ --- • ER: 01*+0 Contoh string: 0, 01, 011, 0111, 01111, (string yang berawalan dengan 0, dan selanjutnya boleh diikuti deretan 1)
Konstruksi NFA Dari ER Yang Ditentukan 0,1 NFA untuk ER: ab a q0 q1 b q2 0 q1 q0 q0 a q1 b untuk ER: 0 (10)* q2 NFA untuk ER: a b
0,1 0 q0 q1 0,1 0 q0 q1 0,1 1 q2 Ekuivalensi NFA ke DFA • Dari sebuah mesin Non-deterministic Finite Automata dapat dibuat mesin Deterministic Finite Automata-nya yang ekivalen (bersesuaian) • Ekivalen disini artinya mampu menerima bahasa yang sama L(M1) = L(M2)
Ekuivalensi NFA ke DFA – Steps • Membuat tabel transisi • Mulai dari state awal • Ikuti transisinya untuk membentuk state-state baru • Untuk setiap state yang terbentuk diikuti lagi transisinya sampai ter’cover’ semua
0 1 q0 q1 0,1 1 Ekuivalensi NFA ke DFA – Contoh Mesin otomata NFA • Buat Tabel Transisi
q0 q1 1 q0 q0, q1 0 Ekuivalensi NFA ke DFA – Contoh • Mulai dari state awal (q0) • Telusuri state berikutnya • state q0 bila memperoleh input 0 menjadi stateq0, q1 • state q0 bila memperoleh input 1 menjadi stateq1 Hasil dari penelusuran q0 * Setiap state dituliskan sebagai himpunan state
Ekuivalensi NFA ke DFA – Contoh • Ikuti transisinya untuk membentuk state-state baru • state q1 bila memperoleh input 0 menjadi state • state q1 bila memperoleh input 1 menjadi stateq0, q1 • state q0, q1 bila memperoleh input 0 menjadi stateq0, • q1, ini di peroleh dari (q0,0)= q0, q1 di gabung dengan • (q1,0) =, maka hasilnya (q0, q1, 0) =q0, q1 • state q0, q1 bila memperoleh input 1 menjadi stateq0, q1, • ini di peroleh dari (q0,1)= q1 di gabung dengan (q1,1) = q0, q1, • maka hasilnya (q0, q1, 1) = q0, q1 * Setiap state dituliskan sebagai himpunan state
q1 q1 1 1 0 0 q0 q0 1 1 q0, q1 q0, q1 0 0 0,1 0,1 Ekuivalensi NFA ke DFA – Contoh Hasilsetelahpenusuran q1danq0, q1 * merupakan sebuah state • Telusuri state State menerima input 0 atau 1 menjadi state, atau (,1)= 0,1
q1 1 0 q0 1 0,1 q0, q1 0 0,1 Ekuivalensi NFA ke DFA – Contoh Dari NFA, kita tahu bahwa himpunan state akhjr adalah q1, maka pada DFA yg dihasilkan state-state akhir merupakan semua state yg mengandung q1. F = {{q1 }, {q0, q1 }} Mesin DFA yang ekivalen dengan NFA
Ekuivalensi NFA ke DFA – Contoh Pembuktian : String ‘001’ Dari diagram NFA kita bisa lihat bahwa ∂(q0,001) dapat diterima oleh NFA tsb. Untuk DFA kita lihat: ∂(q0,001) = ∂(q0, q1,01)= ∂ (q0, q1,1)= q0, q1 Karena stateq0, q1 termasuk state akhir, maka berarti string tersebut diterima.