lecture08 cs3113 ear regular expression...• ekspresi regularyang ekuivalen dengan dfa di samping...
TRANSCRIPT
CS3113 Teori Komputasi
Regular Expression
Ekspresi RegularEkspresi RegularEkspresi RegularEkspresi Regular
• Ekspresi regular terdiri dari konstanta, variabel-
variabel yang menyatakan bahasa dan operator
union, dot dan star.
• Ekspresi regular dapat dinyatakan secara rekursif. • Ekspresi regular dapat dinyatakan secara rekursif.
• Definisi ekspresi regular, E, dan bahasa yang
direpresentasikan oleh E yaitu L(E) terdiri dari
basis dan langkah induktif
2CS3113/EAR
Ekspresi RegularEkspresi RegularEkspresi RegularEkspresi Regular
BasisBasisBasisBasis:
1. Konstanta ε dan φ adalah ekspresi regular, berturut-turut menyatakan bahasa {ε} dan φ. Bahwa L(ε) ={ε}, dan L(φ) = φ.
2. Jika a adalah simbol, maka aaaa adalah ekspresi 2. Jika a adalah simbol, maka aaaa adalah ekspresi regular. Ekspresi ini menyatakan bahasa {a}, bahwa L(aaaa) = {a}
3. Sebuah variabel, biasanya dicetak tebal dan miring seperti LLLL, merepresentasikan suatu bahasa.
3CS3113/EAR
Ekspresi RegularEkspresi RegularEkspresi RegularEkspresi Regular
InduksiInduksiInduksiInduksi:
1. Jika EEEE dan FFFF adalah ekspresi regular, maka EEEE + FFFF adalah ekspresi regular yang menyatakan union dari L(EEEE) dan L(FFFF).
Bahwa L(EEEE + FFFF) = L(EEEE) ∪ L(FFFF).
2. Jika EEEE dan FFFF adalah ekspresi regular, maka EFEFEFEF adalah ekspresi regular yang menyatakan perangkaian dari L(EEEE) ekspresi regular yang menyatakan perangkaian dari L(EEEE) dan L(FFFF).
Bahwa LLLL(EFEFEFEF) = L(EEEE).L(FFFF).
Simbol ‘dot’ bisa digunakan atau tidak untuk menotasikan operator perangkaian baik dalam bahasa atau dalam ekspresi regular.
Contoh: 0000.1 1 1 1 adalah ekspresi regular yang artinya sama dengan 01010101 dan merepresentasikan bahasa {01}.
4CS3113/EAR
Ekspresi RegularEkspresi RegularEkspresi RegularEkspresi Regular
3. Jika EEEE adalah sebuah ekspresi regular, maka EEEE*
adalah ekspresi regular menyatakan closure dari
L(EEEE).
Bahwa L(EEEE*) = (L(EEEE))*.Bahwa L(EEEE*) = (L(EEEE))*.
4. Jika EEEE adalah ekspresi regular, maka (EEEE), EEEE
dengan tanda kurung juga ekspresi regular yang
menyatakan bahasa yang sama dengan E.
Bahwa L((EEEE)) = L(EEEE).
5CS3113/EAR
• Contoh konversi bahasa (notasi himpunan) ke
ekspresi reguler yang sesuai
• (di kelas)• (di kelas)
CS3113/EAR 6
Contoh
• Akan dibuat ekspresi regular untuk himpunan string yang terdiri dari 0 dan 1 secara bergantian.
• Langkah-langkah untuk membuat ekspresi regular tersebut adalah
– Pertama dibuat ekspresi regular untuk bahasa – Pertama dibuat ekspresi regular untuk bahasa yang terdiri dari string tunggal 01.
– Gunakan operator star untuk mendapat sebuah ekspresi untuk semua string dengan bentuk 0101...01
7CS3113/EAR
Contoh
BasisBasisBasisBasis: 0000 dan 1 1 1 1 adalah ekspresi regular yang berturut-
turut menyatakan bahasa {0} dan {1}.
InduksiInduksiInduksiInduksi:
• Perangkaian dari 0 dan 1 yaitu 01 adalah ekpresi regular • Perangkaian dari 0 dan 1 yaitu 01 adalah ekpresi regular
yang menyatakan bahasa {01}
• Untuk mendapat semua string yang terdiri dari nol atau
lebih kemunculan 01 digunakan ekspresi regular (01010101)*
• Perhatikan bahwa (01010101)* ≠ 01010101*.
– 01010101* menyatakan bahasa yang terdiri dari sebuah 0 dan sejumlah
1.
8CS3113/EAR
Contoh
• Tetapi, L((01010101)*) bukan bahasa yang tepat yang diinginkan.
• Bahasa ini hanya mencakup string-string dari 0 dan 1 secara bergantian dimulai dengan 0 dan diakhiri dengan 1
� diperlukan kemungkinan terdapat 1 diawal dan 0 diakhir string. Ekspresi regular yang mungkin adalah– (10101010)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali – (10101010)* yang terdiri dari para 0 dan para 1 secara bergantian, diawali 1 dan diakhiri 0.
– 0000(10101010)* yang diawali dan diakhiri 0.
– 1111(01010101)* yang diawali dan diakhiri 1.
• Sehingga keseluruhan ekspresi adalah
(01010101)* + (10101010)* + 0000(10101010)* + 1111(01010101)*
dengan + adalah operator union.
9CS3113/EAR
Contoh Cara Lain
• Mulai dengan (01010101)*, tambahkan 1 (optional) diawal jika kita merangkai pada bagian kiri dengan ekspresi εεεε+1111.
• Bisa juga ditambah 0 (optional) diakhir jika kita merangkai pada bagian kanan dengan ekspresi εεεε+0000.merangkai pada bagian kanan dengan ekspresi εεεε+0000.
• Dengan menggunakan operator +, diperoleh
L(εεεε + 1111) = L(εεεε ) ∪ L(1111) = {ε} ∪ {1} = {ε,1}
• Ekspresi yang dimaksud adalah (εεεε+1111)(01010101)*(εεεε+0000). – Jika 1 yang dipilih dalam (εεεε+1111) didapat string 1w.
– Jika 0 yang dipilih dalam (εεεε+0000) didapat string w0.
10CS3113/EAR
Urutan prioritas operator dalam ekspresi
regular:
1. Operator star
2. Operator dot (concatenation)
Concatenation bersifat asosiatif sehingga 012012012012
dapat dikelompokkan (01010101)2222.dapat dikelompokkan (01010101)2222.
3. Operator + (union) yang bersifat asosiatif.
Contoh, ekspresi 01010101*+1111 dikelompokkan menjadi
(0000(1111*))+1111.
11CS3113/EAR
Algebraic Laws of Regular ExpressionAlgebraic Laws of Regular ExpressionAlgebraic Laws of Regular ExpressionAlgebraic Laws of Regular Expression (1)
1. Associativity and Commutative Law.a. L + M = M + L, commutative law of union.
b. (L+M)+N=L+(M+N), associativity of union.
c. (LM)N = L(MN), associativity of concatenation .
2. Identity and Annihilator
An annihilator for an operator is a value such that An annihilator for an operator is a value such that when an operator is applied to the annihilator with another value, the result is the annihilatora. φ + L = L + φ = L, φ is the identity for union.
b. εL = Lε = L, ε is the identity for concatenation.
c. φL = Lφ =φ, φ is the annihilator for the concatenation.
12CS3113/EAR
Algebraic Laws for Regular ExpressionsAlgebraic Laws for Regular ExpressionsAlgebraic Laws for Regular ExpressionsAlgebraic Laws for Regular Expressions
(2)
3. Distributive Law
– L(M+N) = LM + LN, hukum distributif kiri dari
perangkaian pada union.
– (M+N)L = ML + NL, hukum distributif kanan – (M+N)L = ML + NL, hukum distributif kanan
dari perangkaian pada union.
4. Hukum Idempotent untuk union: L + L = L.
13CS3113/EAR
HukumHukumHukumHukum----Hukum Aljabar untuk Ekspresi Hukum Aljabar untuk Ekspresi Hukum Aljabar untuk Ekspresi Hukum Aljabar untuk Ekspresi
RegularRegularRegularRegular (3)
5. Hukum-hukum yang melibatkan closure:a. (L*)* = L*
b. φ* = ε
c. ε* = ε
d. L+ = LL* = L*L d. L+ = LL* = L*L
L+ = L + LL + LLL + ...
L* = ε + L + LL + LLL + ...
Dengan demikian LL* = Lε + LL + LLL + LLLL + ...
e. L* = L+ + ε
f. L? = ε + L merupakan definisi dari operator ?
14CS3113/EAR
Contoh
• Diberikan ekspresi regular 0000 + 01010101*.
• Ekspresi tersebut dapat disederhanakan menggunakan hukum-hukum aljabar dalam ekspresi regular:
0000 + 01010101*0000 + 01010101*
= 0000ε + 01010101* dari (2b)
= 0(0(0(0(ε + 1111*) dari (3a), distributif kiri
= 01010101* karena ε + R = R
15CS3113/EAR
HukumHukumHukumHukum----Hukum Aljabar untuk Ekspresi Hukum Aljabar untuk Ekspresi Hukum Aljabar untuk Ekspresi Hukum Aljabar untuk Ekspresi
RegularRegularRegularRegular (4)
• Jika diberikan 2 ekspresi regular E dan F,
dapat diuji apakah E = F benar.
• Cara mengujinya adalah sebagai berikut:
– Konversi E dan F ke ekspresi regular kongkrit – Konversi E dan F ke ekspresi regular kongkrit
berturut C dan D dengan mengganti setiap
variabel oleh sebuah simbol kongkrit.
– Uji apakah L(C) = L(D), jika benar, maka E=F
benar. Jika salah maka E=F salah.
16CS3113/EAR
Contoh
1. (L + M )* = (L*M*)*
– Untuk menunjukkan kesamaan tersebut, ganti variabel L dan M berturut-turut dengan simbol a dan b, sehingga diperoleh ekspresi regular (aaaa+bbbb)* dan (aaaa*bbbb*)*. (aaaa+bbbb)* dan (aaaa*bbbb*)*.
– Kedua ekspresi regular tersebut menyatakan bahasa dengan semua string dari a dan b.
– Dengan demikian, kesamaan (L + M )* = (L*M*)* benar.
17CS3113/EAR
Contoh (lanjutan)
2. L* =L*L*
– Untuk menunjukkan kesamaan tersebut, ganti
variabel L dengan simbol a, sehingga diperoleh
ekspresi regular aaaa* dan aaaa*aaaa*. ekspresi regular aaaa* dan aaaa*aaaa*.
– Kedua ekspresi regular tersebut menyatakan
bahasa dengan semua string dari a.
– Dengan demikian, kesamaan L* =L*L* benar.
18CS3113/EAR
Contoh (Lanjutan)
3. L + ML = (L + M)L
– Untuk menunjukkan kesamaan tersebut, ganti
variabel L dan M berturut-turut dengan simbol a dan b,
sehingga diperoleh ekspresi regular aaaa+babababa dan (a+ba+ba+ba+b)aaaa.
– Kedua ekspresi regular tersebut menyatakan bahasa – Kedua ekspresi regular tersebut menyatakan bahasa
yang berbeda.
– Untuk menunjukkan hal tersebut, pilih aa dalam
bahasa dari ekspresi regular (a+ba+ba+ba+b)a,a,a,a, tapi tidak dalam
bahasa dari ekspresi regular aaaa+babababa.
– Dengan demikian, kesamaan L + ML = (L + M)L salah
19CS3113/EAR
Finite AutomataFinite AutomataFinite AutomataFinite Automata dan Ekspresi Regulardan Ekspresi Regulardan Ekspresi Regulardan Ekspresi Regular (1)
• Sebuah ekspresi regular dapat merepresentasikan sebuah bahasa yang diterima oleh finite automata.
• Untuk membuktikan pernyataan tersebut, perlu dibuktikan bahwa:– Setiap bahasa yang didefinisikan oleh salah satu dari automata juga didefinisikan oleh sebuah ekspresi
– Setiap bahasa yang didefinisikan oleh salah satu dari automata juga didefinisikan oleh sebuah ekspresi regular.
Dalam hal ini, asumsikan bahwa bahasa tersebut diterima oleh DFA.
– Setiap bahasa yang didefinisikan oleh suatu ekspresi regular didefinisikan oleh salah satu dari automata.
Dalam hal ini, asumsikan terdapat NFA dengan transisi εyang menerima bahasa yang sama.
20CS3113/EAR
Skema pembuktian ekuivalensi notasiSkema pembuktian ekuivalensi notasiSkema pembuktian ekuivalensi notasiSkema pembuktian ekuivalensi notasi----
notasi untuk bahasa regularnotasi untuk bahasa regularnotasi untuk bahasa regularnotasi untuk bahasa regular: : : :
• Misalkan x dan y adalah
node dalam gambar di
samping.
• Edge dari node x ke y
NFA-ε
• Edge dari node x ke y
berarti bahwa dapat
dibuktikan setiap bahasa
yang didefinisikan oleh
kelas x juga didefinisikan
oleh kelas y.
21CS3113/EAR
Dari DFA ke Ekspresi RegularDari DFA ke Ekspresi RegularDari DFA ke Ekspresi RegularDari DFA ke Ekspresi Regular
Teorema 1:
Jika L = L(A) untuk suatu DFA A, maka
terdapat ekspresi regular R sedemikian
sehingga L = L(R).sehingga L = L(R).
Bukti: Lihat buku rujukan
22CS3113/EAR
Contoh
• Ekspresi regular yang ekuivalen
dengan DFA di samping adalah
1111*0000(0000+1111)*.
• Ekspresi regular tersebut menyatakan bahasa yang terdiri dari • Ekspresi regular tersebut menyatakan bahasa yang terdiri dari semua string yang dimulai dengan 0 atau lebih simbol 1, kemudian memiliki sebuah 0 dan diikuti string dari simbol 0 dan simbol 1.
• Secara ringkas bahasa tersebut terdiri simbol 0 dan simbol 1 dengan sedikitnya satu 0.
23CS3113/EAR
Konversi DFA ke Ekspresi Regular dengan Konversi DFA ke Ekspresi Regular dengan Konversi DFA ke Ekspresi Regular dengan Konversi DFA ke Ekspresi Regular dengan
Mengeliminasi Mengeliminasi Mengeliminasi Mengeliminasi StateStateStateState
• Diberikan NFA yang menerima semua string dari para 0 dan 1, posisi ke-2 atau ke-3 dari ujung string memiliki sebuah 1.
• Bahasa yang diterima oleh NFA terdiri dari semua string dari
para 0 dan 1 bahwa posisi ke-2 atau ke-3 dari ujung string
memiliki sebuah 1.
• Ekspresi regular yang menyatakan bahasa yang sama (dengan
mengeliminasi state):
(0+1)*1(0+1) + (0+1)*1(0+1)(0+1)
24CS3113/EAR
Mengubah Ekspresi Reguler Menjadi
Automata [1]
• Basis pembentukan automata dari ekspresi reguler :
– Bagian yang menangani ekspresi ε dengan
himpunan bahasa {ε}.
– Bagian yang menangani ekspresi {} dengan – Bagian yang menangani ekspresi {} dengan
himpunan bahasa {}
– Bagian yang menangani ekspresi a dengan
himpunan bahasa L(a)
25CS3113/EAR
Mengubah Ekspresi Reguler Menjadi
Automata [2]
• Operasi sub ekspresi dalam membentuk ekspresi di
ekspresi reguler :
� R + S akan menghasilkan bahasa
L(R) ∪ L(S)L(R) ∪ L(S)
� RS akan menghasilkan bahasa
L(R) ° L(S)
� R* akan menghasilkan bahasa
L(R*)
26CS3113/EAR
Mengubah Ekspresi Reguler Menjadi
Automata [3]
• Ubah ekspresi reguler (0 + 1)*1(0 + 1) menjadi
bentuk otomata.
• Langkah : Pandang sebagai sub-sub otomata, dan
lakukan operasi terhadap otomata itu.lakukan operasi terhadap otomata itu.
– Contoh kita bisa menganggap 0 + 1 sebagai sub,
– Kemudian (0 + 1) * sebagai sub,
– Dan kemudian kita gabungkan kesemuanya.
27CS3113/EAR
Mengubah Ekspresi Reguler Menjadi
Automata [4]
• Hasil Akhir
28CS3113/EAR
Mengubah Ekspresi Reguler Menjadi
Automata [5]
• Perhatikan bahwa jika ε dihilangkan akan mendapatkan
hasil yang sederhana.
29CS3113/EAR
Konversi FA ke grammar
• Untuk setiap DFA M=(Q,Σ, δ,q0,F), kita dapat
membentuk tata bahasa reguler G = (T,N,P,S)
yang memiliki aturan produksi sbb:
– A � a– A � a
– A � aB
• A dan B adalah simbol non terminal,
• a dan b adalah simbol terminal
� sedemikian sehingga L(M) = L(G)
30CS3113/EAR
Langkah konversi FA ke Grammar
• Himpunan status Q pada M � himpunan non
terminal N pada G
• Himpunan simbol masukan pada M �
himpunan terminal T pada Ghimpunan terminal T pada G
• Status awal q0 � simbol awal S pada G
• Setiap transisi status δ(A,a) =B menjadi A�aB
• Setiap status akhir P diubah menjadi aturan
produksi P � ε
31CS3113/EAR
Contoh
• (di kelas)
32CS3113/EAR
Konversi Grammar ke FA
• Dari suatu grammar G = (T,N,P,S) kita dapat
membentuk NFA M=(Q,Σ, δ,q0,F) sedemikian
sehingga L(M) = L(G)
33CS3113/EAR
Langkah konversi grammar ke FA
• Himpunan non terminal N pada G ditambah dengan status tambahan A menjadi himpunan status Q pada M � Q = N U {A}
• Himpunan terminal T menjadi himpunan simbol masukan Σ pada M.
• Simbol awal S pada G menjadi status awal q0 pada M• Simbol awal S pada G menjadi status awal q0 pada M
• Jika P mengandung aturan produksi S � ε, maka F={S,A}. Tetapi kalau tidak, maka F = {A}
• Status A di dalam δ(B,a) jika B � a di dalam P
• δ(B,a) mengandung semua C sedemikian sehingga B�aC didalam P
• δ(A,a)= {} untuk setiap a di dalam T
34CS3113/EAR
Contoh
• Di kelas
35CS3113/EAR
FA � regular expression
• Diberikan sebuah DFA M, maka kita dapat
menurunkan ekspresi reguler r yang
menyatakan bahasa yang diterima DFA
tersebut, L(M).tersebut, L(M).
• L = {w | δ(q0, w) di dalam F }
• X0 = L(M) karena
X0 = {w di dalam Σ* | δ(q0, w) di dalam F }
• Xi = U {aXj | qj di dalam (qi,a)}
36CS3113/EAR
Contoh
• Di kelas
CS3113/EAR 37