lecture08 CS3113 EAR regular expression...• Ekspresi regularyang ekuivalen dengan DFA di samping...
Transcript of lecture08 CS3113 EAR regular expression...• Ekspresi regularyang ekuivalen dengan DFA di samping...
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