lecture08 CS3113 EAR regular expression...• Ekspresi regularyang ekuivalen dengan DFA di samping adalah 1111*0 000(0000+1 111)*. • Ekspresi regular tersebut menyatakan bahasa yang

Post on 01-Dec-2020

21 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related