REGULAR
EXPRESSION
ADE CHANDRA SAPUTRA S.KOM.,M.CS
T I U N PA R (A d e C S )
Buku
John E. Hopcroft, Rajeev Motwani
, Jeffrey D. Ullman. 2001.
Introduction to Automata Theory, Languange , and Computation. Edisi ke-2. Addison-Wesley
T I U N PA R (A d e C S )
Pendahuluan
Tata Bahasa Reguler Chomsky:
Aturan :
Simbol pada sebelah kiri harus berupa sebuah
simbol variabel
Simbol pada sebelah kanan maksimal hanya
memiliki sebuah simbol variabel dan bila ada hanya terletak di posisi paling kanan
T I U N PA R (A d e C S )
Contoh Tata Bahasa
Reguler
A b (diterima)
a B (ditolak, karena simbol pada sebelah kiri
harus berupa simbol variabel)
A B (diterima)
A Bc (Ditolak, karena simbol variabel pd
sebelah kanan hrs berada pd posisi paling kanan) A bcD (diterima) T I U N PA R (A d e C S )
Tentukan apakah produksi2 berikut memenuhi aturan
tata bahasa Reguler :
A b B bdB B C B bC B Ad B bcdef B bcdefg A aSa A aSS A T I U N PA R (A d e C S )
Ekspresi Regular
Bahasa dinyatakan regular finite state
automata yg menerima
Bahasa2 yg diterima oleh suatu finite state
automata bisa dinyatakan secara sederhana
dgn Ekspresi Regular
Contoh pemakaian ER adalah pd suatu text
editor T I U N PA R (A d e C S )
(5 + 3)
4
Ekspresi Aritmatika
Ekspresi Reguler
(0
1)0*
32
semua string
yang berawal
dengan string 0
atau 1, diikuti
sembarang
jumlah 0
T I U N PA R (A d e C S )Notasi Ekspresi Regular
_* yaitu karakter asterik, berarti bisa tidak
muncul, bisa juga muncul dari satu kali
_+ berarti minimal muncul satu kali
+ atau U berarti union
. (titik / dot) berarti konkatenasi
T I U N PA R (A d e C S )
Bahasa Regular VS
Ekpresi Regular
Bahasa Reguler Reguler Expression
{a} a {b} b {a,b} a.b {a,b} = {a} U {b} a U b {a}* a* {a}+ a+ Ø Ø {} {} T I U N PA R (A d e C S )
Contoh ER
ER : ab * cc
Cth string yg dibangkitkan : abcc, abbcc, abbbcc,
abbbbcc, acc
ER : 010*
Cth string yg dibangkitkan : 01, 010, 0100, 01000
ER : a*d
Cth string yg dibangkitkan : d, ad, aad, aaad
ER : a+d
Cth string yg dibangkitkan : ad, aad, aaad
T I U N PA R (A d e C S )
Contoh ER
ER : a* U b* (U berarti atau)
Contoh string yg dibangkitkan : a, b , aa, bb, aaa,
bbb, dst
ER : a U b
Contoh string yg dibangkitkan : a , b
ER : 01* + 0
Contoh string yg dibangkitkan : 0 , 01, 011, 0111,
01111 T I U N PA R (A d e C S )
Ekspresi Reguler
Operasi reguler yang digunakan untuk membentuk suatu bahasa (language).
Operasi Reguler:
(Union)
2. . (konkatenasi)
3. * (closure)
T I U N PA R (A d e C S )Language dari (0
1)0*
(0 1) = ({0} {1})
0* = {0}* semua string yang anggotanya simbol 0.
(0 1)0* = (0 1) . 0* L = {00, 10, 000, 100, 0000, 1000, … } T I U N PA R (A d e C S )
Language dari (0
1)*
Ekspresi ini dapat dituliskan sebagai *, dengan
= {0,1}
L = {0, 1, 00, 01, 10, 11, … }
Kalau diteruskan (3 digit) menjadi :
{….,000,001,010,011,100,101,110,111,……} T I U N PA R (A d e C S )
Prioritas Operasi
Aritmatika (perkalian) 2. + (penambahan)Reguler
1. * (operasi bintang)
2. . (sambungan)
(union/ gabungan)
T I U N PA R (A d e C S )Definisi Matematis
Ekspresi Reguler
R merupakan ekspresi reguler jika R adalah:
1. a, dengan a anggota alfabet .
. .
4. (R1 R2) dengan R1 dan R2 merupakan
ekspresi reguler.
5. R1 . R2 dengan R1 dan R2 merupakan ekspresi
reguler.
6. (R1)*, dengan R1 merupakan ekspresi reguler.
T I U N PA R (A d e C S )
Contoh Ekspresi Reguler
= {0,1}
1. 0*10* = {w|w memiliki tepat satu 1}
*1 * = {w|w memiliki sekurangnya satu 1}
*001 * = {w|w memiliki substring 001}
4. ( )* = {w|panjang w adalah kelipatan tiga}
5. 01 10 = {01, 10} 6. (0 )(1 ) = {, 0, 1, 01} T I U N PA R (A d e C S )
Operasi Identitas R
R = R
Penggabungan bahasa kosong ke sembarang bahasa tidak akan mengubah R.
R ○ = R
Penyambungan string kosong ke sembarang string tidak akan mengubah R. T I U N PA R (A d e C S )
Aplikasi Ekspresi Reguler
• Identifikasi pola suatu bahasa
• Pengecekan alamat e-mail
•
fsa@yahoo.com
•
Unpar@gmail.com
• pertamina@pertamina.co.id
T I U N PA R (A d e C S )Pengeceka
n Alamat
[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|
0-9]+)*)?
T I U N PA R (A d e C S )Ekivalensi RE dan FA
RE dan FA memiliki kemampuan yang sama dalam
menggambarkan perilaku suatu sistem transisi.
RE dapat diubah dalam bentuk FA
yang dapat mengenali bahasa yang
sama.
T I U N PA R (A d e C S )RE menjadi NFA
1 Jika R = a untuk sembarang a pada .
Maka L(R) = {a}
q
0 aq
1 T I U N PA R (A d e C S )RE menjadi NFA
2 Jika R = , Maka L(R) = {} Jika R = , Maka L(R) = q
0q
0 T I U N PA R (A d e C S )RE menjadi NFA
3 R = R1 R2 R = R1 . R2 R = R1* T I U N PA R (A d e C S )Contoh: RE menjadi FA
1R = (ab a)*
Cari NFA ekivalennya yang diberi nama NFA N.
a
a
bb
T I U N PA R (A d e C S )Contoh: RE menjadi FA
2R = (ab a)*
Cari NFA ekivalennya yang diberi nama NFA N.
ab
a bab
a
a b a T I U N PA R (A d e C S )Contoh: RE menjadi FA
3R = (ab a)*
Cari NFA ekivalennya yang diberi nama NFA N.
(ab
a)*
a b a T I U N PA R (A d e C S )Contoh: RE menjadi FA
4R = (a b)* aba
Cari NFA ekivalennya yang diberi nama NFA N1.
a
a
bb
T I U N PA R (A d e C S )Contoh: RE menjadi FA
5R = (a b)* aba
Cari NFA ekivalennya yang diberi nama NFA N1.
a
b
a b T I U N PA R (A d e C S )Contoh: RE menjadi FA
5R = (a b)* aba
Cari NFA ekivalennya yang diberi nama NFA N1.
(a
b)*
a b T I U N PA R (A d e C S )Contoh: RE menjadi FA
6R = (a b)* aba
Cari NFA ekivalennya yang diberi nama NFA N1.
aba
a b a T I U N PA R (A d e C S )Contoh: RE menjadi FA
6R = (a b)* aba
Cari NFA ekivalennya yang diberi nama NFA N1.
(a
b)* aba
T I U N PA R (A d e C S )FA menjadi RE
1q
iq
jq
rR
4R
1R
3R
2q
jq
i(R
1)(R
2)*(R
3)
(R
4)
BEFORE
AFTER
T I U N PA R (A d e C S )DFA menjadi RE
21
2
a
a, b
b
(a)
1
a
a
a
b
b
s
2
(b)
T I U N PA R (A d e C S )DFA menjadi RE
3 T I U N PA R (A d e C S )1
a
a
b (a
b)*
s
(c)
a
a*b (a
b)*
s
(d)
Latihan
Deskripsikan Himpunan string dalam RE yang diterima oleh FNA 1 2 T I U N PA R (A d e C S )
3 4 T I U N PA R (A d e C S )