Ekspresi Regular

23
TEORI BAHASA DAN OTOMATA EKSPRESI REGULAR

Transcript of Ekspresi Regular

Page 1: Ekspresi Regular

TEORI BAHASA DAN OTOMATA

EKSPRESI REGULAR

Page 2: Ekspresi Regular

Penerapan Ekspresi Regular (1)

Sebuah bahasa dikatakan regular jika terdapat finite state otomata yang dapat menerimanya.

Bahasa – bahasa yang diterima oleh suatu finite state otomata bisa dinyatakan secara sederhana dengan ekspresi regular (regular expression) yang disingkat ER

Page 3: Ekspresi Regular

Penerapan Ekspresi Regular (2)

Ekspresi regular memberikan suatu pola (pattern) untuk string dari suatu bahasa.

Penerapan ekspresi regular yang tampak, misalnya pencarian (searching) untai karakter (string) pada suatu file, biasanya fasilitas ini ada pada text editor

Page 4: Ekspresi Regular

Notasi Ekspresi Regular (1)

* yaitu karakter asterisk, berarti bisa tidak muncul, bisa juga muncul berhingga kali (0-n).

+ (posisi superscript) berarti minimal muncul satu kali (1-n).

+ atau υ berarti union. . (titik) berarti konkatenasi. Biasanya

dihilangkan (ab sama artinya dengan a.b)

Page 5: Ekspresi Regular

Notasi Ekspresi Regular (2) Contoh Ekspresi Regular (ER)

Ekspresi Regular

Deskripsi

ab*cc b bisa tidak muncul atau muncul sejumlah berhingga kali. Cth : acc, abcc, abbcc, abbbcc.

a+d a muncul minimal sekali. Cth : ad, aad, aaad.

a* υ b* a bisa tidak muncul/muncul sejumlah kali atau b bisa tidak muncul/muncul sejumlah kali. Cth : a, b, aa, bb, aaa, bbb.

(a υ b) / (a + b)

a muncul 1 kali atau b muncul 1 kali. Cth : a,b.

Page 6: Ekspresi Regular

Notasi Ekspresi Regular (3) Contoh Ekspresi Regular (ER)

Ekspresi Regular

Deskripsi

(a υ b)* /(a + b)*

semua a dan b. Cth : a, b, ab, ba, abb, aab, bba, aaaa, bbbb.

aa a muncul sepasang sebanyak 1 kali

(aa)* a muncul sepasang sebanyak 0-n kali (genap)

ab* + a string yang berawalan dengan a, dan selanjutnya boleh diikuti dengan b

Page 7: Ekspresi Regular

Notasi Ekspresi Regular (4) Contoh Ekspresi Regular (ER)

Ekspresi Regular

Deskripsi

(a + ab)* semua a dan b yang dimulai dengan a dan tidak mempunyai dua b berurutan

(a+b)*aa*(a+b)*

semua a dan b dengan sedikitnya terhadap dua a berturutan

(a+b)*abb semua a dan b yang diakhiri dengan abb

aa*bb*cc* a,b, dan c minimal muncul 1 kali. Sering disingkat a+b+c+.

Page 8: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (1)

NFA

EkspresiRegular

DFA NFA e-move

Page 9: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (2)

Untuk setiap ekspresi regular ada satu NFA ε-move yang ekuivalen.

Untuk setiap DFA ada satu ekspresi regular yang ekuivalen, begitu pula dengan NFA tanpa ε-move.

Apabila ekspresi regular cukup sederhana, bisa langsung mengkonstruksi NFA tanpa melalui NFA ε-move

Page 10: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (3)

NFA ε-move untuk ER: ab

q0 q1 q2 q3a ε b

NFA ε-move untuk ER: a*b

q0 q1 q2ε b

a

Page 11: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (4) NFA untuk ER: ab

q0 q1 q2a b

NFA untuk ER: a υ b

q0

q2

a

b

q1

Page 12: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (5)

NFA untuk ER: aba*

NFA untuk ER: a (b υ a)

q0 q1 q2a a,b

q0 q1 q2a b

a

Page 13: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (6)

NFA untuk ER: a (b υ a)*

NFA untuk ER: ab*a

q0 q1a

a,b

q0 q1 q2a a

b

Page 14: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (7)

NFA untuk ER: a (ba)*

NFA untuk ER: (ab)*

q0 q1

a

b

q0q1

a

b

Page 15: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (8)

Menentukan ekspresi regular (ER) dari NFA atau DFA (Contoh 1)

q0 q1 q2

1 1

0 1

0

Page 16: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (8)

• Langkah – langkahnya1. Cari input yang menuju state final (q2),

yaitu 0 atau 10*12. Perhatikan input yang diterima state

final (q2) lainnya. Selain 0 terdapat input 1 dalam jumlah berapapun (1*) akan tetap di q2.

Dengan demikian mesin ini menerima 01* atau 10*11*, yang dinyatakan dalam ekspresi regular :

01* υ 10*11*

Page 17: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (9)

Menentukan ekspresi regular (ER) dari NFA atau DFA (Contoh 2)

q0 q1 q3a b

a

q2 q4

a

b

a

b

Page 18: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (10)

• Langkah – langkahnya1. Cari input yang menuju state final (q3

dan q2)a. q3

abb. q2

aa

2. Perhatikan input yang diterima state final (q3 dan q2) lainnya.a. q3

a*b. q2

(ba*b)*

Page 19: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (11)

3. Gabungkan q3 pada langkah 1 dan langkah 2 serta q2 pada langkah 1 dan langkah 2a. q3

aba*b. q2

aa(ba*b)*

Dengan demikian, mesin dapat menerima aba* atau aa(ba*b)*, yang dinyatakan dengan ekspresi regular :

aba* υ aa(ba*b)*

Page 20: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (12)

Membuat mesin DFA dari pembentuk bahasa Rancanglah mesin DFA yang menerima

bahasa yang berupa semua string yang berakhiran ’00’ dengan diketahui Σ = (0,1).

Page 21: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (13)

Langkah – langkahnya :1. Tentukan ekspresi regulernya

(0 + 1)*002. Gambarkan mesin NFA-nya terlebih

dahulu untuk memudahkan menggambar DFA-nya

q0 q1 q20 0

0,1

Page 22: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (14)

3. Lakukan ekivalensi NFA dan DFA dengan terlebih dahulu mendaftarkan transisi dari NFA

δ 0 1

q0 {q0,q1} {q0}

q1 {q2} Ø

q2 Ø Ø

Page 23: Ekspresi Regular

Hubungan Ekspresi Regular dan Finite State Automata (15)

4. Cek dengan untai/string yang harus bisa diterima oleh mesin itu, seperti 00, 100, 000, 0100, 0000, 1100

{q0} {q0,q1} {q0,q1,q2}0

0

11

1

0