AUTOMATA HINGGA BAHASA REGULAR EKSPRESI REGULAR Sulistyo Puspitodjati
AUTOMATA HINGGA, BAHASA REGULAR, EKSPRESI REGULAR Sulistyo Puspitodjati 1
1 q 2 q 4 0 ε 0 q 1 2 q 3
Non-deterministic finite automaton (NFA) is a 5 -tuple N = (Q, Σ, , Q 0, F) Q = himpunan states Σ = alfabet : Q Σε → 2 Q ad. fungsi transisi Q 0 Q = himpunan start states F Q = himpunan accept states 2 Q = himpunan subset-subset Q dan Σε = Σ {ε} 3
N = (Q, Σ, , Q 0, F) 1 q 2 q 4 Q = {q 1, q 2, q 3, q 4} Σ = {0, 1} 0 ε Q 0 = {q 1, q 2} q 3 F = {q 4} Q 0 0 q 1 q 2 q 3 4 q 4 1 ε
N = (Q, Σ, , Q 0, F) 1 q 2 q 4 Q = {q 1, q 2, q 3, q 4} Σ = {0, 1} 0 ε Q 0 = {q 1, q 2} q 3 F = {q 4} Q 0 q 1 5 0 1 ε q 1 {q 3} q 2 {q 4} q 3 {q 4} { q 2} q 4
N = (Q, Σ, , Q 0, F) 1 q 2 q 4 Q = {q 1, q 2, q 3, q 4} Σ = {0, 1} 0 ε, 0 Q 0 = {q 1, q 2} q 3 F = {q 4} Q 0 q 1 00 L(N)? 6 01 L(N)? 0 1 ε q 1 {q 3} q 2 {q 4} q 3 {q 2, q 4} { q 2} q 4
Mis. w Σ* dan w dapat ditulis sebagai w 1. . . wn dimana wi Σε (ε mewakili empty string) Maka mesin NFA N dikatakan menerima w jika terdapat r 0, r 1, . . . , rn Q sedemikian sehingga 1. r 0 Q 0 2. ri+1 (ri, wi+1 ) untuk i = 0, . . . , n-1, dan 3. rn F L(N) = bahasa dari mesin N = himpunan semua untai yang diterima oleh mesin N Bahasa L dikatakan dikenal (recognized) oleh NFA N jika L = L (N). 7
N = (Q, Σ, , Q 0, F) 1 q 2 q 4 Q = {q 1, q 2, q 3, q 4} Σ = {0, 1} 0 ε, 0 Q 0 = {q 1, q 2} q 3 F = {q 4} Q 0 q 1 00 L(N)? 8 01 L(N)? 0 1 ε q 1 {q 3} q 2 {q 4} q 3 {q 2, q 4} { q 2} q 4
FROM NFA TO DFA Input: N = (Q, Σ, , Q 0, F) Output: M = (Q , Σ, , q 0 , F ) Q = 2 Q : Q Σ → Q (R, ) = ε( (r, ) ) r R * q 0 = ε(Q 0) * 9 F = { R Q | f R for some f F } For R Q, the ε-closure of R, ε(R) = {q that can be reached from some r R by traveling along zero or more ε arrows},
Dik: NFA N = ( {1, 2, 3}, {a. b}, , {1} ) Buat: DFA M yang equivalen dengan NFA N N 1 a a b ε 2 a, b ε({1}) = {1, 3} 10 3 a b ε 1 {2} {3} 2 {2, 3} {3} 3 {1}
} Σ, , Q 0, F ) N = ( Q, Dik: NFA N = ( {1, 2, 3}, {a, b}, , {1} ) = (Q , Σ, , q 0 , F ) Buat: equivalent DFA M N b ε {2} {3} a 1 a b ε 2 a, b q 0 = ε({1}) = {1, 3} 11 3 a {1} {2} {2, 3} {1, 2} {2, 3} {1, 3} {2, 3} {1, 2, 3} b {2} {3} {2, 3} {2} {3} {2, 3}
Σ, , Q 0, F ) N = ( Q, Dik: NFA N = ( {1, 2, 3}, {a, b}, , {1} ) = (Q , Σ, , q 0 , F ) Buat: equivalent DFA M N 1 a a b ε 2 a, b q 0 = ε({1}) = {1, 3} 12 3 a {1} {2} {2, 3} {1, 2} {2, 3} {1, 3} {2, 3} {1, 2, 3} b {2} {3} {2, 3} {2} {3} {2, 3}
BAHASA REGULAR TERTUTUP TERHADAP OPERASI STAR Jika L bahasa regular dan M adalah DFA untuk L Kita dapat membuat NFA N yang mengenal (recognize) L* ε 1 0 ε 0, 1 1 0 0 1 13 ε
Input: M = (Q, Σ, , q 1, F) DFA Output: N = (Q , Σ, , {q 0}, F ) NFA Q = Q {q 0} F = F {q 0} (q, a) = 14 { (q, a)} Jika q Q dan a ≠ ε {q 1} jika q F dan a = ε {q 1} Jika q = q 0 dan a = ε jika q = q 0 dan a ≠ ε else
Show: L(N) = L* 1. L(N) L* 2. L(N) L* 15
1. L(N) L* Asumsikan w = w 1…wk is in L*, untuk w 1, …, wk L Akan ditunjukkan N accept w secara induksi pada k Base Cases: k=0 k=1 (w = ε) (w L) Inductive Step: Asusmsikan N meneruma semua strings v = v 1…vk L*, vi L, dan misalkan u = u 1…ukuk+1 L* , vj L Karena N menerima u 1…uk (by induction) dan M menerima uk+1, berarti N menerima u 16
2. L(N) L* Asumsikan w diterima N, akan ditunjukkann w L* jika w = ε, maka w L* jika w ≠ ε ε L* By induction ε L* 17 accept By induction
BAHAS REGULAR TERTUTUP TERHADAP OPERATION REGULAR Union: A B = { w | w A or w B } Intersection: A B = { w | w A and w B } Negation: A = { w Σ* | w A } Reverse: AR = { w 1 …wk | wk …w 1 A } Concatenation: A B = { vw | v A and w B } Star: A* = { w 1 …wk | k ≥ 0 and each wi A } 18
PUMPING LEMMA DAN EKSPRESI REGULAR 19
Ada BAHASA yang TIDAK REGULAR B = {0 n 1 n | n ≥ 0} is NOT regular! 20
WHICH OF THESE ARE REGULAR C = { w | w untai yang mempunyai sejumlah 1 dan 0 yang sama} NOT REGULAR D = { w | w mempunyai sejumlah kemunculan 01 dan 10 yang sama} REGULAR!!! 21
THE PUMPING LEMMA Jika L be bahasa regular dengan |L| = Maka terdapat bilanga bulat positif P sedemikan sehingga jika w L dan |w| ≥ P maka w = xyz, dimana: 1. |y| > 0 2. |xy| ≤ P 3. xyiz L untuk setiap i ≥ 0 22
Mis. M ad. DFA yang mengenal L Mis P adalah banyaknya states di M Asumsikan w L adalah yang |w| ≥ P Akan ditunjukkan w = xyz 1. |y| > 0 2. |xy| ≤ P 3. xyiz L i ≥ 0 x q 0 … qi qj q|w| Berarti ada j > i sedemikian sehingga qi = qj 23
PUMPING LEMMA Gunakan pumping lemma untuk membuktikan bahwa B = {0 n 1 n | n ≥ 0} bukan bahasa regular Hint: Asumsikan B regular Mis. B = L(M), untuk DFA M, dan P > banyaknya di M Pumping s = 0 P 1 P 24
Use the pumping lemma to prove that C = { w | w has an equal number of 0 s and 1 s} is not regular Hint: Try pumping s = 0 P 1 P If C is regular, s can be split into s = xyz, where for any i ≥ 0, xyiz is also in C and |xy| ≤ P 26
WHAT DOES D LOOK LIKE? D = { w | w has equal number of occurrences of 01 and 10} = { w | w = 1, w = 0, w = ε or w starts with a 0 and ends with a 0 or w starts with a 1 and ends with a 1 } (0(0 1)*0) (1(0 1)*1) 1 0 ε 27
EKSPRESI REGULAR dari bahasa regular atas didefinisikan secara rekursif sbb: s adalah suatu e. r. mewakili bahasa { } ε adalah suatu e. r. mewakili bahasa {ε} adalah suatu e. r. mewakili bahasa Jika r 1 dan r 2 adalah suatu e. r. mewakili 28 bahasa L 1 dan L 2 maka: (r 1 r 2) mewakili L 1 L 2 (r 1 | r 2) mewakili L 1 L 2 (r 1)* mewakili L 1* *e. r = ekspresi reguler
PRECEDENCE operator Tinggi Rendah 29 Star (“*”) Concatenation (“. ”, “”) Union (“ ”, “+”, “|”)
EXAMPLE r 1*r 2 | r 3 = 30 ( ( r 1* ) r 2 ) | r 3
L = { w | w has exactly a single 1 } ekspresi reguler r 31 0*10*
Contoh e. r_1 Bahasa apa yang diwakili e. r. * ? {ε} 32
Contoh e. r_2 Tentukan ekspresi reguler untuk bahasa L = { w | w yang panjang ≥ 3 dan simbol ketiga adalah 0 } Ekspresi regulernya adalah 000(0|1)* | 010(0 1)* | 100(0|1)* | 110(0 1)* = (0|1)0(0|1)* 33
Contoh e. r_3 Tentukan ekspresi reguler untuk bahasa L = { w | setiap posisi ganjil w ad. 1 } Ekspresi regulernya adalah 1((0|1)1)*(0|1|ε) | ε atau (1(0|1))*(1|ε) 34
EQUIVALENSI L dapat direpresentasikan dengan ekspresi reguler L adalah bahasa regular 35
L dapat direpresentasikan oleh suatu regexp L adalah bahasa regular Untuk ekspresi regular R, pasti ada suatu NFA N sedemikian sehingga R merepresentasikan L(N) Pembuktian ditunjukkan secara induksi pada panjang R: 36
Untuk ekspresi regular R, pasti ada suatu NFA N sedemikian sehingga L(N) direpresentasikan R Pembuktian induksi pada panjang R: Base Cases (R dengan panjang 1): R= (matches a single symbol) R=ε (matches the empty string) R= (matches nothing) 37
Inductive Step: Asumsikan R mempunyai panjang k > 1 dan setiap ekspresi regular dg panang < k merepresentasikan bahasa yang daat dikenal oleh suatu NFA 3 kemungkinan untuk R: R = R 1 | R 2 R = R 1 R 2 R = (R 1)* 38 (Union Theorem!)
Semua sudah ditunjukkan sebelumnya L dapat direpresentasikan oleh regexp L adalah bahasa regular 39
Contoh Transform (1(0 1))* ke suatu NFA ε 1 1, 0 ε 40
L dapat direpresentasikan oleh regexp L adalah bahasa regular 41
L dapat direpresentasikan oleh regexp L adalah bahasa regular Ide pembuktian: Transform NFA untuk L ke ekspresi regular dengan menghapus state dan mengekspresikan panah dengan ekpresi reguler 42
ε ε ε NFA ε ε Tambah Add state awal dan akhir yang baru While mesin mempunyai lebih dari 2 state: Pilih internal state, buang dan namakan panah dg regexps, untuk mengakomodasi state yang dibuang contoh 43 0 0 1
ε ε NFA ε ε ε While mesin mempunyai lebih dari 2 state: Pilih internal state, buang dan namakan panah dg regexps, untuk mengakomodasi state yang dibuang 01*0 44
Contoh a q 0 ε q 1 a, b b q 2 R(q 0, q 3) = (a*b)(a|b)* 45 ε q 3
a, b q 0 a*b q 2 R(q 0, q 3) = (a*b)(a|b)* 46 ε q 3
q 0 (a*b)(a b)* R(q 0, q 3) = (a*b)(a|b)* 47 q 3
Contoh b bb a q 1 a ε b b a q 3 48 q 2 ε ε
b bb a q 1 ε q 2 a aba b b a ε 49 ε
bb (abb ba)b*a = R(q 1, q 1) q 1 ε a a ba b q 2 b (a ba)b*ε (bb (a ba)b*a)* (b (a ba)b*) 50
Convert NFA ini ke ekpersi regular a, b (a b)b*b(bb*b)* b q 2 q 1 ε (a b)b*b b (a b)b*b(bb*b)*a bb*b a b q 3 ε 51 ε
((a | b)b*b(bb*b)*a)* | ((a | b)b*b(bb*b)*a)*(a | b)b*b(bb*b)* 52
Secara Formal: Tambah qstart dan qaccept untuk membuat G Run CONVERT(G): (return regexp) If #states = 2 Return ekspresi pada panah dari qstart menuju qaccept If #states > 2 53
Secara Formal: Tambah qstart dan qaccept untuk membuat G Run CONVERT(G): (return regexp) If #states > 2 select qrip Q yang bukan qstart dan qaccept define Q = Q – {qrip} define R as: } Defines: G (GNFA) R (qi, qj) = R(qi, qrip)R(qrip, qrip)*R(qrip, qj) R(qi, qj) return CONVERT(G ) 54
CONVERT(G) is “equivalent” to G Bukti dg induksi pada k (banyaknya states di G) Base Case: k=2 Inductive Step: Assumsikan benar untuk k-1 states Perhatikan saat awal G and G ad “equivalent” Namun, menurut hipotesa induksi, G “equivalent” dg CONVERT(G ) dan CONVERT(G ) equivalent dg CONVERT(G ) 55 QED
DFA NFA DEF Regular Language 57 Regular Expression
- Slides: 55