Uploaded by richardylobosapan33

8. Tata Bahasa Regular dan Ekspresi Regular

advertisement
Tata Bahasa Regular
dan
Ekspresi Regular
Tata Bahasa Regular
1
Tata Bahasa Linear
Tata bahasa dengan paling banyak satu
variabel pada ruas kanan produksi
Contoh:
S → aSb
S → Ab
S →
A → aAb
A→
Tata Bahasa Regular
2
Tata Bahasa Non-Linear
Tata bahasa: G
S → SS
S →
S → aSb
S → bSa
L(G ) = {w : na ( w) = nb ( w)}
Banyak
a pada string w
Tata Bahasa Regular
3
Tata Bahasa Linear Lainnya
Tata bahasa:
G
S→A
A → aB | 
B → Ab
L(G ) = {a b : n  0}
n n
Tata Bahasa Regular
4
Tata Bahasa Linear-Kanan
Semua produksi memiliki bentuk:
A → xB
atau
A→ x
Contoh:
S → abS
S →a
Tata Bahasa Regular
string
terminal
5
Tata Bahasa Linear-Kiri
Semua produksi memiliki bentuk:
A → Bx
atau
A→ x
Contoh:
S → Aab
A → Aab | B
string
terminal
B→a
Tata Bahasa Regular
6
Tata Bahasa Regular
Tata Bahasa Regular
7
Tata Bahasa Regular
Tata bahasa Regular adalah tata bahasa
linear-kanan atau linear-kiri
Contoh:
G1
G2
S → abS
S → Aab
S →a
A → Aab | B
B→a
Tata Bahasa Regular
8
Observasi
Tata bahasa Regular men generate Bahasa
regular
G2
Contoh:
G1
S → Aab
S → abS
A → Aab | B
S →a
B→a
L(G1) = (ab) * a
L(G2 ) = aab(ab) *
Tata Bahasa Regular
9
Tata Bahasa Regular
Men Generate
Bahasa Regular
Tata Bahasa Regular
10
Teorema
Bahasa yang di
Generated oleh
Tata bahasa Regular
=
Tata Bahasa Regular
Bahasa
Regular
11
Teorema - Bagian 1
Bahasa yang di
Generated oleh
Tata bahasa Regular

Bahasa
Regular
Setiap tata bahasa regular akan men generate
bahasa regular
Tata Bahasa Regular
12
Teorema - Bagian 2
Bahasa yang di
Generated oleh
Tata Bahasa Regular

Bahasa
Regular
Setiap Bahasa regular di generated
Oleh tata bahasa regular
Tata Bahasa Regular
13
Bukti – Bagian 1
Bahasa yang di
Generated oleh
Tata Bahasa Regular

Bahasa
Regular
Bahasa L(G ) yang di generated oleh
Tata Bahasa regular G adalah regular
Tata Bahasa Regular
14
Kasus Tata Bahasa Linear-Kanan
Mis
G adalah tata bahasa linear-kanan
Akan dibuktikan:
L(G ) adalah regular
Ide: akan dikonstruksi NFA M
dengan L( M ) = L(G )
Tata Bahasa Regular
15
Tata Bahasa G adalah linear-kanan
Contoh:
S → aA | B
A → aa B
B→b B|a
Tata Bahasa Regular
16
Konstruksi NFA M demikian sehingga
Setiap state adalah variabel tata bahasa:
A
S
S → aA | B
VF
special
final state
B
A → aa B
B→b B|a
Tata Bahasa Regular
17
Tambahkan edge untuk setiap produksi:
a
A
S
VF
B
S → aA
Tata Bahasa Regular
18
a
S
A
VF

B
S → aA | B
Tata Bahasa Regular
19
A
a
a
S
a

VF
B
S → aA | B
A → aa B
Tata Bahasa Regular
20
A
a
a
S
S → aA | B

B
b
A → aa B
B → bB
VF
a
Tata Bahasa Regular
21
A
a
a
S
S → aA | B
a

a
B
b
A → aa B
B → bB | a
VF
Tata Bahasa Regular
22
A
a
a
S
a

VF
a
B
b
S  aA  aaaB  aaabB  aaaba
Tata Bahasa Regular
23
NFA
Tata bahasa
M
a
G
S → aA | B
a
B → bB | a
A
a
S

A → aa B
VF
a
B
b
L( M ) = L(G ) =
aaab * a + b * a
Tata Bahasa Regular
24
Secara Umum
Seabuah tata bahasa linear-kanan G
Memiliki variabel:
V0 ,V1,V2 ,
dan produksi:
Vi → a1a2 amV j
atau
Vi → a1a2 am
Tata Bahasa Regular
25
Konstruksi NFA
Setiap variabel
sebuah node:
M demikian sehingga:
Vi
berkorespondensi dengan
V1
V3
V0
VF
V2
V4
Tata Bahasa Regular
special
final state
26
Untuk setiap produksi: Vi
→ a1a2 amV j
Tambahkan transisi dan node perantara
Vi
a1
a2
………
Tata Bahasa Regular
am V
j
27
Untuk setiap produksi:
Vi → a1a2 am
Tambahkan transisi dan node perantara
Vi
a1
a2
………
Tata Bahasa Regular
am
VF
28
Hasil NFA
M terlihat sebagai berikut:
a9
a1
V0
a2
V1
a3
V3
a5
a4
a3
V2
berarti:
a4
a5
a8
V4
a9
VF
L(G ) = L( M )
Tata Bahasa Regular
29
Kasus Tata Bahasa Linear-Kiri
Mis
G adalah tata bahasa linear-kiri
Akan dibuktikan:
L(G ) adalah regular
Ide:
akan dikonstruksi sebuah tata bahasa
linear-kanan G dengan
R

L(G ) = L(G )
Tata Bahasa Regular
30
karena G adalah tata bahasa linear-kiri
Produksi berbentuk seperti:
A → Ba1a2 ak
A → a1a2 ak
Tata Bahasa Regular
31
Konstruksi tata bahasa linear-kanan G
Linear
G
Kiri
Linear
G
Kanan
A → Ba1a2 ak
A → Bv
A → ak a2a1B
A→v B
R
Tata Bahasa Regular
32
Konstruksi tata bahasa linear-kanan G
Linear
G
kiri
A → a1a2 ak
Linear

G
kanan
A → ak a2a1
A→v
A→v
R
Tata Bahasa Regular
33
L(G ) = L(G)
Akan terlihat bahwa:
karena
R
G adalah linear-kanan, maka:
L(G)
L(G)
Bahasa
Regular
Bahasa
Regular
R
Tata Bahasa Regular
L(G )
Bahasa
Regular
34
Bukti - Bagian 2
Bahasa yang di
Generated oleh
Tata Bahasa Regular

Bahasa
Regular
Sembarang Bahasa regular L di generated
Oleh beberapa tata bahasa regular G
Tata Bahasa Regular
35
Sembarang Bahasa regular L di generated
Oleh beberapa tata bahasa regular G
ide:
mis
M adalah NFA dengan L = L(M ) .
Konstruksi dari M sebuah tata bahasa
regular G demikian sehingga
L( M ) = L(G )
Tata Bahasa Regular
36
karena L adalah regular
Terdapat NFA M demikian sehingga
L = L(M )
Contoh:
M
q0
b
a
q1
a

L = ab * ab(b * ab) *
L = L(M )
Tata Bahasa Regular
q2
b
q3
37
konversi
M ke tata bahasa linear-kanan
b
M
q0
a
q1
a

q0 → aq1
q2
b
q3
Tata Bahasa Regular
38
b
M
q0
a
q0 → aq1
q1
a

q1 → bq1
q2
b
q3
q1 → aq2
Tata Bahasa Regular
39
b
M
q0 → aq1
q0
a
q1
a

q1 → bq1
q1 → aq2
q2
b
q3
q2 → bq3
Tata Bahasa Regular
40
L(G ) = L( M ) = L
b
G
q0 → aq1
q1 → bq1
M
q0
a
q1
a

q1 → aq2
q2 → bq3
q2
b
q3
q3 → q1
q3 → 
Tata Bahasa Regular
41
Secara Umum
Utk sembarang transisi:
q
Tambahkan produksi:
variabel
a
p
q → ap
terminal
Tata Bahasa Regular
variabel
42
Untuk final state:
Tambahkan produksi:
qf
qf →
Tata Bahasa Regular
43
karena
G adalah tata bahasa linear-kanan
G juga tata bahasa regular
dengan
L(G ) = L( M ) = L
Tata Bahasa Regular
44
Beberapa Sifat
Bahasa Regular
Tata Bahasa Regular
45
Untuk Bahasa regular L1 dan
akan dibuktikan bahwa:
Union:
Concatenation:
L2
L1  L2
L1L2
Star:
L1 *
Reversal:
R
L1
Complement:
L1
Intersection:
L1  L2
Tata Bahasa Regular
Adalah bahasa
regular
46
Bahsa Regular tertutup terhadap operasi
Union:
Concatenation:
L1  L2
L1L2
Star:
L1 *
Reversal:
R
L1
Complement:
L1
Intersection:
L1  L2
Tata Bahasa Regular
47
Transformasi: Gunakan satu state penerima
NFA
a
2 state penerima
b
a
b
NFA Equivalen
1 state penerima
a
a
b
b


Tata Bahasa Regular
48
NFA
Secara Umum
NFA Equivalen



Tata Bahasa Regular
1 state
Penerima
49
Kasus Ekstrim
NFA tanpa state penerima
Tambahkan sebuah
State penerima tanpa
transisi
Tata Bahasa Regular
50
Dua Bahasa
Bahasa Regular
L1
Bahasa Regular
L(M1 ) = L1
NFA
L2
L(M 2 ) = L2
NFA
M1
1 state penerima
M2
1 state penerima
Tata Bahasa Regular
51
Contoh
n0
L1 = {a b}
n
M1
a
b
M2
L2 = ba
b
Tata Bahasa Regular
a
52
Union
NFA untuk L1  L2
M1


M2
Tata Bahasa Regular
53
Contoh
NFA untuk
L1  L2 = {a b}  {ba}
n
L1 = {a b}
n
a


b
L2 = {ba}
b
a
Tata Bahasa Regular
54
Concatenation
NFA untuk L1L2
M1
M2

Tata Bahasa Regular
55
Contoh
NFA untuk L1L2
= {a b}{ba} = {a bba}
n
L1 = {a b}
n
n
L2 = {ba}
a
b

b
Tata Bahasa Regular
a
56
Operasi Star
NFA untuk L1 *

wi  L1
M1

w = w1w2  wk

  L1 *

Tata Bahasa Regular
57
Contoh
NFA untuk L1* = {a
n
b} *

L1 = {a b}
n
a


b

Tata Bahasa Regular
58
Reverse
R
NFA untuk L1
L1

M1
M1
1. Reverse semua transisi
2. Membuat state awal sebagai state
penerima dan sebaliknya
Tata Bahasa Regular
59
Contoh
M1
a
L1 = {a b}
n
b
a
R
L1
= {ba }
n

M1
b
Tata Bahasa Regular
60
Complement
L1
M1
L1

M1
1. Tentukan DFA yang menerima L1
2. Buat state penerima non-final,
dan sebaliknya
Tata Bahasa Regular
61
Contoh
M1
a, b
a
L1 = {a b}
n
b
L1 = {a, b} * −{a b}
n
a, b

M1
a, b
a
b
Tata Bahasa Regular
a, b
62
Intersection
L1
regular
L1  L2
L2
regular
regular
Tata Bahasa Regular
63
DeMorgan’s Law:
L1  L2 = L1  L2
L1 , L2
regular
L1 , L2
regular
L1  L2
regular
L1  L2
regular
L1  L2
regular
Tata Bahasa Regular
64
Contoh
L1 = {a b} regular
n
L2 = {ab, ba} regular
Tata Bahasa Regular
L1  L2 = {ab}
regular
65
Intersection Closure
Mesin
DFA utk
Mesin
M1
DFA utk
L1
Konstruksi DFA baru M yg menerima
M2
L2
L1  L2
M simulates in parallel M1 and M 2
Tata Bahasa Regular
66
State pada M
qi , p j
State pd M1
State pd M 2
Tata Bahasa Regular
67
DFA
q1
DFA
M1
a
q2
a
p1
transisi
M2
p2
transisi
DFA
q1, p1
M
a
q2 , p2
Transisi baru
Tata Bahasa Regular
68
DFA
DFA
M1
M2
q0
p0
State awal
State awal
DFA
M
q0 , p0
State awal baru
Tata Bahasa Regular
69
DFA M1
DFA
pj
qi
State penerima
M2
pk
State penerima
DFA
M
qi , p j
qi , pk
State penerima baru
Keduanya harus menjadi state penerima
Tata Bahasa Regular
70
Contoh:
n0
m0
L1 = {a b}
L2 = {ab }
M1
M2
n
a
q0
b
q2
m
q1
p0
a, b
b
a, b
a
b
p1
a
p2
a, b
Tata Bahasa Regular
71
Automata untuk intersection
L = {a nb}  {ab n } = {ab}
a, b
q0 , p0
a
b
q1, p2
q0 , p1
b
q1, p1
a
b
a
a
b
q0 , p2
q2 , p2
q2 , p1
a
b
a, b
Tata Bahasa Regular
72
M
Disimulasikan secara parallel pada
dan M 2
M1
M Menerima string w jikka:
M1 Menerima string w
dan
M2
menerima string
w
L ( M ) = L ( M1 )  L ( M 2 )
Tata Bahasa Regular
73
Ekspresi Regular
Tata Bahasa Regular
74
Ekspresi Regular
Ekspresi Regular
Menggambarkan Bahasa regular
Contoh:
(a + b  c) *
menggambarkan bahasa
a, bc* =  , a, bc, aa, abc, bca,...
Tata Bahasa Regular
75
Definisi Rekursif
Ekspresi regular primitif:
,  , 
Diberikan ekspresi regular r1 dan r2
r1 + r2
r1  r2
r1 *
Adalah ekspresi regular
(r1 )
Tata Bahasa Regular
76
Contoh
Ekspresi regular:
(a + b  c ) * (c + )
Bukan Ekspresi regular:
Tata Bahasa Regular
(a + b + )
77
Bahasa untuk Ekspresi Regular
L (r ) :
Bahasa untuk ekspresi regular
r
Contoh
L((a + b  c) *) =  , a, bc, aa, abc, bca,...
Tata Bahasa Regular
78
Definisi
Untuk Ekspresi regular primitif:
L( ) = 
L( ) =  
L(a ) = a
Tata Bahasa Regular
79
Definisi (continued)
Untuk ekspresi regular
r1 dan r2
L(r1 + r2 ) = L(r1 )  L(r2 )
L(r1  r2 ) = L(r1 ) L(r2 )
L(r1 *) = ( L(r1 )) *
L((r1 )) = L(r1 )
Tata Bahasa Regular
80
Contoh
Ekspresi Regular:
(a + b )  a *
L((a + b )  a *) = L((a + b )) L(a *)
= L(a + b ) L(a *)
= ( L(a )  L(b )) ( L(a )) *
= (a  b) (a) *
= a, b , a, aa, aaa,...
= a, aa, aaa,..., b, ba, baa,...
Tata Bahasa Regular
81
Contoh
Ekspresi Regular
r = (a + b ) * (a + bb )
L(r ) = a, bb, aa, abb, ba, bbb,...
Tata Bahasa Regular
82
Contoh
Ekspresi Regular
r = (aa ) * (bb ) * b
L(r ) = {a b
2n 2m
b : n, m  0}
Tata Bahasa Regular
83
Contoh
Ekspresi Regular
r = (0 + 1) * 00 (0 + 1) *
L(r ) = { semua string yg mengandung 00 }
Tata Bahasa Regular
84
Contoh
Ekspresi Regular
r = (1 + 01) * (0 +  )
L(r ) = { semua string tanpa substring 00 }
Tata Bahasa Regular
85
Ekspresi Regular Equivalen
Definisi:
Ekspresi Regular r1 dan
r2
equivalen jika L(r1) = L(r2 )
Tata Bahasa Regular
86
Contoh
L = { semua string tanpa substring 00 }
r1 = (1 + 01) * (0 +  )
r2 = (1* 011*) * (0 +  ) + 1* (0 +  )
dan r2
Ekspresi regular
equivalen
r1
L(r1) = L(r2 ) = L
Tata Bahasa Regular
87
Ekspresi Regular
dan
Bahasa Regular
Tata Bahasa Regular
88
Teorema
Bahasa yang di
Generated dari
Ekspresi Regular
=
Tata Bahasa Regular
Bahasa
Regular
89
Bukti:
Bahasa yang di
Generated dari
Ekspresi Regular

Bahasa
Regular
Bahasa yang di
Generated dari
Ekspresi Regular

Bahasa
Regular
Tata Bahasa Regular
90
Bukti - Bagian 1
Bahasa yang di
Generated dari
Ekspresi Regular

Bahasa
Regular
Untuk sembarang ekpresi regular r
bahasa
L(r ) adalah regular
Bukti dengan induksi berdasarkan ukuran
Tata Bahasa Regular
r
91
Induksi Basis
Ekspresi Regular Primitif:
Hubungkan dengan
NFA
,  , 
L( M1 ) =  = L()
L( M 2 ) = {} = L( )
a
Bahasa
regular
L( M 3 ) = {a} = L(a)
Tata Bahasa Regular
92
Hipotesis Induksi
Anggap
Bahwa untuk ekspresi regular r1 dan r2 ,
L(r1) dan L(r2 ) adalah Bahasa regular
Tata Bahasa Regular
93
Langkah Induksi
Akan dibuktikan:
L(r1 + r2 )
L(r1  r2 )
L(r1 *)
L((r1 ))
Tata Bahasa Regular
Adalah Bahasa
regular
94
Berdasarkan definisi ekspresi regular:
L(r1 + r2 ) = L(r1 )  L(r2 )
L(r1  r2 ) = L(r1 ) L(r2 )
L(r1 *) = ( L(r1 )) *
L((r1 )) = L(r1 )
Tata Bahasa Regular
95
Berdasarkan hipotesis induksi diketahui:
L(r1) dan L(r2 ) adalah Bahasa regular
Diketahui juga:
Bahasa Regular tertutup terhadap:
L(r1 )  L(r2 )
Union
Concatenation
Star
L(r1 ) L(r2 )
( L(r1 )) *
Tata Bahasa Regular
96
maka:
L(r1 + r2 ) = L(r1 )  L(r2 )
L(r1  r2 ) = L(r1 ) L(r2 )
Adalah Bahasa
regular
L(r1 *) = ( L(r1 )) *
L((r1 )) = L(r1 )
Trivial merupakan Bahasa regular
(berdasarkan hipotesis induksi)
Tata Bahasa Regular
End of Proof-Part 1
97
Menggunakan regular closure dari operasi ini,
Dapat dikonstruksi NFA M secara rekursif
Yang dapat menerima L(M ) = L(r )
Contoh: r = r1 + r2
L(M1 ) = L(r1 )
L(M ) = L(r )


L(M2 ) = L(r2 )
Tata Bahasa Regular
98
Bukti - Bagian 2
Bahasa yang di
Generated dari
Ekspresi Regular

Bahasa
Regular
Untuk sembarang Bahasa regular L terdapat
sebuah ekspresi regular r dengan L( r ) = L
Akan dikonversi sebuah NFA yang menerima
L Sebagai ekspresi regular
Tata Bahasa Regular
99
karena L adalah regular, terdapat sebuah
NFA M yang menerima nya
L( M ) = L
Memiliki satu final state
Tata Bahasa Regular
100
dari M konstruksi graph transisi yang
equivalen label transisi nya dengan ekspresi
regular
Contoh:
Corresponding
Generalized transition graph
M
a
c
a
c
a+b
a, b
Tata Bahasa Regular
101
Contoh lain:
a
q0
b
b
q1 a, b
q2
b
b
b
Label Transition adalah
Ekspresi regular
a
q0
q1 a + b q2
b
Tata Bahasa Regular
102
b
Reduksi state:
a
q0
b
q1 a + b q2
b
Label Transition
Adalah ekspresi
regular
bb * a
q0
b
bb * (a + b)
Tata Bahasa Regular
q2
103
Hasil Ekspresi Regular:
bb * a
q0
b
bb * (a + b)
q2
r = (bb * a) * bb * (a + b)b *
L( r ) = L( M ) = L
Tata Bahasa Regular
104
Secara Umum
e
Hilangkan sebuah state:
d
qi
c
qj
q
a
b
ae * d
ce * b
ce * d
qi
qj
ae * b
Tata Bahasa Regular
105
Ulangi proses sampai tersisa dua state,
graph hasil sebagai berikut
Graph awal
Graph hasil
r1
r4
r3
q0
r2
qf
Hasil Ekspresi regular:
r = r1 * r2 (r4 + r3r1 * r2 ) *
L( r ) = L( M ) = L
Tata Bahasa Regular
End of Proof-Part 2
106
Representasi Standar
dari Bahasa Regular
Bahasa Regular
DFA
NFA
Tata Bahasa Regular
Ekspresi
Regular
107
ketika:
Artinya:
Diberikan sebuah bahasa
Regular L
Bahasa
standar
L adalah representasi
(DFA, NFA, atau Ekspresi Regular)
Tata Bahasa Regular
108
Download