Tata Bahasa Regular dan Ekspresi Regular Tata Bahasa Regular 1 Tata Bahasa Linear Tata bahasa dengan paling banyak satu variabel pada ruas kanan produksi Contoh: S → aSb S → Ab S → A → aAb A→ Tata Bahasa Regular 2 Tata Bahasa Non-Linear Tata bahasa: G S → SS S → S → aSb S → bSa L(G ) = {w : na ( w) = nb ( w)} Banyak a pada string w Tata Bahasa Regular 3 Tata Bahasa Linear Lainnya Tata bahasa: G S→A A → aB | B → Ab L(G ) = {a b : n 0} n n Tata Bahasa Regular 4 Tata Bahasa Linear-Kanan Semua produksi memiliki bentuk: A → xB atau A→ x Contoh: S → abS S →a Tata Bahasa Regular string terminal 5 Tata Bahasa Linear-Kiri Semua produksi memiliki bentuk: A → Bx atau A→ x Contoh: S → Aab A → Aab | B string terminal B→a Tata Bahasa Regular 6 Tata Bahasa Regular Tata Bahasa Regular 7 Tata Bahasa Regular Tata bahasa Regular adalah tata bahasa linear-kanan atau linear-kiri Contoh: G1 G2 S → abS S → Aab S →a A → Aab | B B→a Tata Bahasa Regular 8 Observasi Tata bahasa Regular men generate Bahasa regular G2 Contoh: G1 S → Aab S → abS A → Aab | B S →a B→a L(G1) = (ab) * a L(G2 ) = aab(ab) * Tata Bahasa Regular 9 Tata Bahasa Regular Men Generate Bahasa Regular Tata Bahasa Regular 10 Teorema Bahasa yang di Generated oleh Tata bahasa Regular = Tata Bahasa Regular Bahasa Regular 11 Teorema - Bagian 1 Bahasa yang di Generated oleh Tata bahasa Regular Bahasa Regular Setiap tata bahasa regular akan men generate bahasa regular Tata Bahasa Regular 12 Teorema - Bagian 2 Bahasa yang di Generated oleh Tata Bahasa Regular Bahasa Regular Setiap Bahasa regular di generated Oleh tata bahasa regular Tata Bahasa Regular 13 Bukti – Bagian 1 Bahasa yang di Generated oleh Tata Bahasa Regular Bahasa Regular Bahasa L(G ) yang di generated oleh Tata Bahasa regular G adalah regular Tata Bahasa Regular 14 Kasus Tata Bahasa Linear-Kanan Mis G adalah tata bahasa linear-kanan Akan dibuktikan: L(G ) adalah regular Ide: akan dikonstruksi NFA M dengan L( M ) = L(G ) Tata Bahasa Regular 15 Tata Bahasa G adalah linear-kanan Contoh: S → aA | B A → aa B B→b B|a Tata Bahasa Regular 16 Konstruksi NFA M demikian sehingga Setiap state adalah variabel tata bahasa: A S S → aA | B VF special final state B A → aa B B→b B|a Tata Bahasa Regular 17 Tambahkan edge untuk setiap produksi: a A S VF B S → aA Tata Bahasa Regular 18 a S A VF B S → aA | B Tata Bahasa Regular 19 A a a S a VF B S → aA | B A → aa B Tata Bahasa Regular 20 A a a S S → aA | B B b A → aa B B → bB VF a Tata Bahasa Regular 21 A a a S S → aA | B a a B b A → aa B B → bB | a VF Tata Bahasa Regular 22 A a a S a VF a B b S aA aaaB aaabB aaaba Tata Bahasa Regular 23 NFA Tata bahasa M a G S → aA | B a B → bB | a A a S A → aa B VF a B b L( M ) = L(G ) = aaab * a + b * a Tata Bahasa Regular 24 Secara Umum Seabuah tata bahasa linear-kanan G Memiliki variabel: V0 ,V1,V2 , dan produksi: Vi → a1a2 amV j atau Vi → a1a2 am Tata Bahasa Regular 25 Konstruksi NFA Setiap variabel sebuah node: M demikian sehingga: Vi berkorespondensi dengan V1 V3 V0 VF V2 V4 Tata Bahasa Regular special final state 26 Untuk setiap produksi: Vi → a1a2 amV j Tambahkan transisi dan node perantara Vi a1 a2 ……… Tata Bahasa Regular am V j 27 Untuk setiap produksi: Vi → a1a2 am Tambahkan transisi dan node perantara Vi a1 a2 ……… Tata Bahasa Regular am VF 28 Hasil NFA M terlihat sebagai berikut: a9 a1 V0 a2 V1 a3 V3 a5 a4 a3 V2 berarti: a4 a5 a8 V4 a9 VF L(G ) = L( M ) Tata Bahasa Regular 29 Kasus Tata Bahasa Linear-Kiri Mis G adalah tata bahasa linear-kiri Akan dibuktikan: L(G ) adalah regular Ide: akan dikonstruksi sebuah tata bahasa linear-kanan G dengan R L(G ) = L(G ) Tata Bahasa Regular 30 karena G adalah tata bahasa linear-kiri Produksi berbentuk seperti: A → Ba1a2 ak A → a1a2 ak Tata Bahasa Regular 31 Konstruksi tata bahasa linear-kanan G Linear G Kiri Linear G Kanan A → Ba1a2 ak A → Bv A → ak a2a1B A→v B R Tata Bahasa Regular 32 Konstruksi tata bahasa linear-kanan G Linear G kiri A → a1a2 ak Linear G kanan A → ak a2a1 A→v A→v R Tata Bahasa Regular 33 L(G ) = L(G) Akan terlihat bahwa: karena R G adalah linear-kanan, maka: L(G) L(G) Bahasa Regular Bahasa Regular R Tata Bahasa Regular L(G ) Bahasa Regular 34 Bukti - Bagian 2 Bahasa yang di Generated oleh Tata Bahasa Regular Bahasa Regular Sembarang Bahasa regular L di generated Oleh beberapa tata bahasa regular G Tata Bahasa Regular 35 Sembarang Bahasa regular L di generated Oleh beberapa tata bahasa regular G ide: mis M adalah NFA dengan L = L(M ) . Konstruksi dari M sebuah tata bahasa regular G demikian sehingga L( M ) = L(G ) Tata Bahasa Regular 36 karena L adalah regular Terdapat NFA M demikian sehingga L = L(M ) Contoh: M q0 b a q1 a L = ab * ab(b * ab) * L = L(M ) Tata Bahasa Regular q2 b q3 37 konversi M ke tata bahasa linear-kanan b M q0 a q1 a q0 → aq1 q2 b q3 Tata Bahasa Regular 38 b M q0 a q0 → aq1 q1 a q1 → bq1 q2 b q3 q1 → aq2 Tata Bahasa Regular 39 b M q0 → aq1 q0 a q1 a q1 → bq1 q1 → aq2 q2 b q3 q2 → bq3 Tata Bahasa Regular 40 L(G ) = L( M ) = L b G q0 → aq1 q1 → bq1 M q0 a q1 a q1 → aq2 q2 → bq3 q2 b q3 q3 → q1 q3 → Tata Bahasa Regular 41 Secara Umum Utk sembarang transisi: q Tambahkan produksi: variabel a p q → ap terminal Tata Bahasa Regular variabel 42 Untuk final state: Tambahkan produksi: qf qf → Tata Bahasa Regular 43 karena G adalah tata bahasa linear-kanan G juga tata bahasa regular dengan L(G ) = L( M ) = L Tata Bahasa Regular 44 Beberapa Sifat Bahasa Regular Tata Bahasa Regular 45 Untuk Bahasa regular L1 dan akan dibuktikan bahwa: Union: Concatenation: L2 L1 L2 L1L2 Star: L1 * Reversal: R L1 Complement: L1 Intersection: L1 L2 Tata Bahasa Regular Adalah bahasa regular 46 Bahsa Regular tertutup terhadap operasi Union: Concatenation: L1 L2 L1L2 Star: L1 * Reversal: R L1 Complement: L1 Intersection: L1 L2 Tata Bahasa Regular 47 Transformasi: Gunakan satu state penerima NFA a 2 state penerima b a b NFA Equivalen 1 state penerima a a b b Tata Bahasa Regular 48 NFA Secara Umum NFA Equivalen Tata Bahasa Regular 1 state Penerima 49 Kasus Ekstrim NFA tanpa state penerima Tambahkan sebuah State penerima tanpa transisi Tata Bahasa Regular 50 Dua Bahasa Bahasa Regular L1 Bahasa Regular L(M1 ) = L1 NFA L2 L(M 2 ) = L2 NFA M1 1 state penerima M2 1 state penerima Tata Bahasa Regular 51 Contoh n0 L1 = {a b} n M1 a b M2 L2 = ba b Tata Bahasa Regular a 52 Union NFA untuk L1 L2 M1 M2 Tata Bahasa Regular 53 Contoh NFA untuk L1 L2 = {a b} {ba} n L1 = {a b} n a b L2 = {ba} b a Tata Bahasa Regular 54 Concatenation NFA untuk L1L2 M1 M2 Tata Bahasa Regular 55 Contoh NFA untuk L1L2 = {a b}{ba} = {a bba} n L1 = {a b} n n L2 = {ba} a b b Tata Bahasa Regular a 56 Operasi Star NFA untuk L1 * wi L1 M1 w = w1w2 wk L1 * Tata Bahasa Regular 57 Contoh NFA untuk L1* = {a n b} * L1 = {a b} n a b Tata Bahasa Regular 58 Reverse R NFA untuk L1 L1 M1 M1 1. Reverse semua transisi 2. Membuat state awal sebagai state penerima dan sebaliknya Tata Bahasa Regular 59 Contoh M1 a L1 = {a b} n b a R L1 = {ba } n M1 b Tata Bahasa Regular 60 Complement L1 M1 L1 M1 1. Tentukan DFA yang menerima L1 2. Buat state penerima non-final, dan sebaliknya Tata Bahasa Regular 61 Contoh M1 a, b a L1 = {a b} n b L1 = {a, b} * −{a b} n a, b M1 a, b a b Tata Bahasa Regular a, b 62 Intersection L1 regular L1 L2 L2 regular regular Tata Bahasa Regular 63 DeMorgan’s Law: L1 L2 = L1 L2 L1 , L2 regular L1 , L2 regular L1 L2 regular L1 L2 regular L1 L2 regular Tata Bahasa Regular 64 Contoh L1 = {a b} regular n L2 = {ab, ba} regular Tata Bahasa Regular L1 L2 = {ab} regular 65 Intersection Closure Mesin DFA utk Mesin M1 DFA utk L1 Konstruksi DFA baru M yg menerima M2 L2 L1 L2 M simulates in parallel M1 and M 2 Tata Bahasa Regular 66 State pada M qi , p j State pd M1 State pd M 2 Tata Bahasa Regular 67 DFA q1 DFA M1 a q2 a p1 transisi M2 p2 transisi DFA q1, p1 M a q2 , p2 Transisi baru Tata Bahasa Regular 68 DFA DFA M1 M2 q0 p0 State awal State awal DFA M q0 , p0 State awal baru Tata Bahasa Regular 69 DFA M1 DFA pj qi State penerima M2 pk State penerima DFA M qi , p j qi , pk State penerima baru Keduanya harus menjadi state penerima Tata Bahasa Regular 70 Contoh: n0 m0 L1 = {a b} L2 = {ab } M1 M2 n a q0 b q2 m q1 p0 a, b b a, b a b p1 a p2 a, b Tata Bahasa Regular 71 Automata untuk intersection L = {a nb} {ab n } = {ab} a, b q0 , p0 a b q1, p2 q0 , p1 b q1, p1 a b a a b q0 , p2 q2 , p2 q2 , p1 a b a, b Tata Bahasa Regular 72 M Disimulasikan secara parallel pada dan M 2 M1 M Menerima string w jikka: M1 Menerima string w dan M2 menerima string w L ( M ) = L ( M1 ) L ( M 2 ) Tata Bahasa Regular 73 Ekspresi Regular Tata Bahasa Regular 74 Ekspresi Regular Ekspresi Regular Menggambarkan Bahasa regular Contoh: (a + b c) * menggambarkan bahasa a, bc* = , a, bc, aa, abc, bca,... Tata Bahasa Regular 75 Definisi Rekursif Ekspresi regular primitif: , , Diberikan ekspresi regular r1 dan r2 r1 + r2 r1 r2 r1 * Adalah ekspresi regular (r1 ) Tata Bahasa Regular 76 Contoh Ekspresi regular: (a + b c ) * (c + ) Bukan Ekspresi regular: Tata Bahasa Regular (a + b + ) 77 Bahasa untuk Ekspresi Regular L (r ) : Bahasa untuk ekspresi regular r Contoh L((a + b c) *) = , a, bc, aa, abc, bca,... Tata Bahasa Regular 78 Definisi Untuk Ekspresi regular primitif: L( ) = L( ) = L(a ) = a Tata Bahasa Regular 79 Definisi (continued) Untuk ekspresi regular r1 dan r2 L(r1 + r2 ) = L(r1 ) L(r2 ) L(r1 r2 ) = L(r1 ) L(r2 ) L(r1 *) = ( L(r1 )) * L((r1 )) = L(r1 ) Tata Bahasa Regular 80 Contoh Ekspresi Regular: (a + b ) a * L((a + b ) a *) = L((a + b )) L(a *) = L(a + b ) L(a *) = ( L(a ) L(b )) ( L(a )) * = (a b) (a) * = a, b , a, aa, aaa,... = a, aa, aaa,..., b, ba, baa,... Tata Bahasa Regular 81 Contoh Ekspresi Regular r = (a + b ) * (a + bb ) L(r ) = a, bb, aa, abb, ba, bbb,... Tata Bahasa Regular 82 Contoh Ekspresi Regular r = (aa ) * (bb ) * b L(r ) = {a b 2n 2m b : n, m 0} Tata Bahasa Regular 83 Contoh Ekspresi Regular r = (0 + 1) * 00 (0 + 1) * L(r ) = { semua string yg mengandung 00 } Tata Bahasa Regular 84 Contoh Ekspresi Regular r = (1 + 01) * (0 + ) L(r ) = { semua string tanpa substring 00 } Tata Bahasa Regular 85 Ekspresi Regular Equivalen Definisi: Ekspresi Regular r1 dan r2 equivalen jika L(r1) = L(r2 ) Tata Bahasa Regular 86 Contoh L = { semua string tanpa substring 00 } r1 = (1 + 01) * (0 + ) r2 = (1* 011*) * (0 + ) + 1* (0 + ) dan r2 Ekspresi regular equivalen r1 L(r1) = L(r2 ) = L Tata Bahasa Regular 87 Ekspresi Regular dan Bahasa Regular Tata Bahasa Regular 88 Teorema Bahasa yang di Generated dari Ekspresi Regular = Tata Bahasa Regular Bahasa Regular 89 Bukti: Bahasa yang di Generated dari Ekspresi Regular Bahasa Regular Bahasa yang di Generated dari Ekspresi Regular Bahasa Regular Tata Bahasa Regular 90 Bukti - Bagian 1 Bahasa yang di Generated dari Ekspresi Regular Bahasa Regular Untuk sembarang ekpresi regular r bahasa L(r ) adalah regular Bukti dengan induksi berdasarkan ukuran Tata Bahasa Regular r 91 Induksi Basis Ekspresi Regular Primitif: Hubungkan dengan NFA , , L( M1 ) = = L() L( M 2 ) = {} = L( ) a Bahasa regular L( M 3 ) = {a} = L(a) Tata Bahasa Regular 92 Hipotesis Induksi Anggap Bahwa untuk ekspresi regular r1 dan r2 , L(r1) dan L(r2 ) adalah Bahasa regular Tata Bahasa Regular 93 Langkah Induksi Akan dibuktikan: L(r1 + r2 ) L(r1 r2 ) L(r1 *) L((r1 )) Tata Bahasa Regular Adalah Bahasa regular 94 Berdasarkan definisi ekspresi regular: L(r1 + r2 ) = L(r1 ) L(r2 ) L(r1 r2 ) = L(r1 ) L(r2 ) L(r1 *) = ( L(r1 )) * L((r1 )) = L(r1 ) Tata Bahasa Regular 95 Berdasarkan hipotesis induksi diketahui: L(r1) dan L(r2 ) adalah Bahasa regular Diketahui juga: Bahasa Regular tertutup terhadap: L(r1 ) L(r2 ) Union Concatenation Star L(r1 ) L(r2 ) ( L(r1 )) * Tata Bahasa Regular 96 maka: L(r1 + r2 ) = L(r1 ) L(r2 ) L(r1 r2 ) = L(r1 ) L(r2 ) Adalah Bahasa regular L(r1 *) = ( L(r1 )) * L((r1 )) = L(r1 ) Trivial merupakan Bahasa regular (berdasarkan hipotesis induksi) Tata Bahasa Regular End of Proof-Part 1 97 Menggunakan regular closure dari operasi ini, Dapat dikonstruksi NFA M secara rekursif Yang dapat menerima L(M ) = L(r ) Contoh: r = r1 + r2 L(M1 ) = L(r1 ) L(M ) = L(r ) L(M2 ) = L(r2 ) Tata Bahasa Regular 98 Bukti - Bagian 2 Bahasa yang di Generated dari Ekspresi Regular Bahasa Regular Untuk sembarang Bahasa regular L terdapat sebuah ekspresi regular r dengan L( r ) = L Akan dikonversi sebuah NFA yang menerima L Sebagai ekspresi regular Tata Bahasa Regular 99 karena L adalah regular, terdapat sebuah NFA M yang menerima nya L( M ) = L Memiliki satu final state Tata Bahasa Regular 100 dari M konstruksi graph transisi yang equivalen label transisi nya dengan ekspresi regular Contoh: Corresponding Generalized transition graph M a c a c a+b a, b Tata Bahasa Regular 101 Contoh lain: a q0 b b q1 a, b q2 b b b Label Transition adalah Ekspresi regular a q0 q1 a + b q2 b Tata Bahasa Regular 102 b Reduksi state: a q0 b q1 a + b q2 b Label Transition Adalah ekspresi regular bb * a q0 b bb * (a + b) Tata Bahasa Regular q2 103 Hasil Ekspresi Regular: bb * a q0 b bb * (a + b) q2 r = (bb * a) * bb * (a + b)b * L( r ) = L( M ) = L Tata Bahasa Regular 104 Secara Umum e Hilangkan sebuah state: d qi c qj q a b ae * d ce * b ce * d qi qj ae * b Tata Bahasa Regular 105 Ulangi proses sampai tersisa dua state, graph hasil sebagai berikut Graph awal Graph hasil r1 r4 r3 q0 r2 qf Hasil Ekspresi regular: r = r1 * r2 (r4 + r3r1 * r2 ) * L( r ) = L( M ) = L Tata Bahasa Regular End of Proof-Part 2 106 Representasi Standar dari Bahasa Regular Bahasa Regular DFA NFA Tata Bahasa Regular Ekspresi Regular 107 ketika: Artinya: Diberikan sebuah bahasa Regular L Bahasa standar L adalah representasi (DFA, NFA, atau Ekspresi Regular) Tata Bahasa Regular 108