Ch
ng 4 Ôtômat đ y xu ng
\ Ôtômat đ y xu ng
Ngôn ng hình th c và Ôtômat
(Formal Language & Automata)
Automata)
u
Ngôn ng phi ng c nh
u
Quan h v i cá
các ôtômat đ y xu ng
u
Tính ch t c a cá
các ngôn ng phi ng c nh
\ Khá
Khái ni m v cây phân tí
tích
nh lý “b m”
m” và ng d ng
u
PGS.TS. Phan Huy Khá
Khánh
u
Các thu t gi i cho cá
các ngôn ng PNC
\ Ôtômat đ y xu ng đ n đ nh
Ch ng 4
Ôtômat đ y xu ng
u
Nguyên lý
u
Hình th c hó
hóa
u
Các ngôn ng PNC đ n đ nh
u
Tính ch t c a cá
các ngôn ng PNC đ n đ nh
2/65
2/65
Mô t ôtômat đ y xu ng (ôđx
(ôđx))
Ho t đ ng c a ôđx
\ M t ôđx không đ n đ nh
(NSA : NonNon-deterministic Stack Automaton,
hay NPA : NonNon-deterministic Pushdown Automaton)
Automaton)
có m t s ph n t t ng t ôhh :
u M t b ng và
vào ch a câu s đ c đoá
đoán nh n ( mút trá
trái nh t)
u M t đ u đ c đ c l n l
t cá
các ký t c a câu trên b ng
u M t t p h p cá
các tr ng thá
thái, trong đó
đó có m t tr ng thá
thái đ u và
và
m t s tr ng thá
thái cu i (tr ng thá
thái đ t đ c)
u M t quan h chuy n ti p là
làm thay đ i tr ng thá
thái
v i m i ký t đ c đ c rên b ng
Ngoà
Ngoài ra, NSA còn có
có :
u M t danh sá
sách đ y xu ng (Stack/Pushdown
(Stack/Pushdown List)
List) (DS
(DS X)
X)
có th ch a không h n ch các ký t nào đó
đó
u M t đ u ghi đ có th ghi lên DS X
Ho t đ ng đoá
đoán nh n Ôđx không đ n đ nh nh sau :
ng t m t ôhh không đđ,
đđ,
câu và
vào w∈
w∈Σ* đ c đ t mút trá
trái trên b ng và
vào
uT
đ u, đ u đ c v trí
trí w(1)
w(1)
DS X r ng và
và ôđx đang tr ng thá
thái đ u q0
u Lúc
u
uđ cđ cl nl
t t ng ký t c a w trên b ng
nhì
nhìn m t ph n câu trên đ nh DS X (Top) đ thay th
(Pop(Pop-Push) b ng cá
cách ghi (đè) lên m t dãy ký t
u Ôđx
u Ôđx
di chuy n đ u đ c qua ph i và
và thay đ i tr ng thá
thái
d ng khi m i ký t c a w đã đ c đ c h t
và th a nh n câu, ho c hó
hóc gi a ch ng
u Ôhh
3/65
3/65
4/65
4/65
Minh ho ho t đ ng c a ôđx
nh ngh a hì
hình th c ôđx
\ M t NSA là
là m t b 7 : M = (Q, Σ, Γ, Δ, Z, q0, A)
A), trong
trong đó
đó :
u
Q là
là t p h p h u h n cá
các tr ng thá
thái
u
Σ là b ng ch vào h u h n (Input Alphabet)
Alphabet)
u
Γ là b ch đ y xu ng h u h n (Stack Alphabet)
Alphabet)
u
Z ∈ Γ là ký t đ u c a DS X (Initial Stack Symbol)
Symbol)
β
u
q0 ∈ Q là
là tr ng thá
thái đ u
γ
u
F ⊆ Q là
là t p cá
các tr ng thá
thái cu i
u
Δ ⊂ ((Q × Σ* × Γ*) × (Q × Γ*)) là
là quan h chuy n ti p
Câu và
vào trên b ng w=a
w=anbn
a
qi
a
a
b
b
b
α
γ
Tr
c : trên đ nh DS X là
là α
a
a
qi+1
a
b
b
b
Sau : trên
trên đ nh DS X là
là β
5/65
5/65
g m m t t p h p h u h n cá
các quan h ((p, u, β), (q, γ))
p, q ∈ Q ;
u ∈ Σ* ;
β, γ ∈ Γ*
6/65
6/65
1
Mô t
Các khá
khái ni m
\ B ch đ y xu ng Γ c a ôđx :
u
Ch a t p h p cá
các ký t s đ
u
Không nh t thi t phân bi t Γ v i Σ (có
(có th Γ∩Σ ≠ ∅)
\ Ng i ta c ng đ nh ngh a m t cá
cách hì
hình th c
t ng t các ôhh, nh ng có
có m t c a DS X cá
các khá
khái ni m :
u C u hì
hình
u Chuy n ti p m t b
c
u Chuy n ti p nhi u b
c
u Ôđx đoá
đoán nh n câu và
vào
c đ a và
vào trong DS X
\ Ký t Z là
là ký t đ u hay n i dung ban đ u c a DS X
\ Các chuy n ti p ((p, u, β), (q, γ)) trong Δ :
u T
ng t m t ôhh không đđ
u
u
Có thêm ho t đ ng chuy n ti p c a DS X :
¬ Câu
¬
c th a nh n b i ôđx
và
vào b t đ u b i ti n t u : w = uw’
uw’
¬ Ôtômat
¬ Ph
NN đ
chuy n t tr ng thá
thái p sang tr ng thá
thái q
n câu β đang n m trên đ nh c a DS X
u đ c đ c xong ti n t u c a câu và
vào
¬ Thay
th
β trên đ nh DS X b i câu ph n γ
7/65
7/65
8/65
8/65
C u hì
hình
Chuy n ti p m t b
\ C u hì
hình c a ôđx
Là b ba C = (q, u, α) ∈ Q × ∑* × Γ*
Trong đó
đó :
Q∈Q
là tr ng thá
thái c a ôtômat
u ∈ ∑*
là m t ph n c a câu và
vào s đ
α ∈ Γ*
là n i dung c a DS X
\ Cho ôđx M,
M, ta nó
nói :
C u hì
hình C’
C’=(q’, w’
w’, α’) nh n đ c t C=(
C=(q, w, α)
Kí hi u : (q, w, α) M (q’
(q’, w’
w’, α’) n u :
¬ w = uw’
uw’ ( câu w có
có ti n t u ∈ ∑*)
¬ α = βδ
( tr c khi chuy n ti p, đ nh DS X ch a β∈Γ*
n u đ c t trá
trái qua ph i)
¬ α’ = γδ
( sau khi chuy n ti p, ph n β c a DS X
đ c thay th b i γ,
ký t đ u tiên c a γ bây gi n m đ nh DS X )
¬ ((q, u, β),
β), (q’, γ)) ∈ Δ
c x lý
u ph n câu s x lý
V
abbb, AZ)
Víí d C = (q11, aaabbb,
Vi t g n :
q11a
abbbAZ
aabbbAZ
a
a
a
q11
b
b
c
b
A
Z
9/65
9/65
Minh ho chuy n ti p m t b
10/65
10/65
c
Chuy n ti p nhi u b
\ C u hì
hình C’
C’ nh n đ
Ph n câu x lý w=uw’
w=uw’
u
p
w’
α
δ
Tr
u
α = βδ
c khi chuy n ti p
ký hi u : C
Ph n câu x lý w’
w’
M
β
δ
c t C qua nhi u giai đo n
C’
n u
w’
q
*
M
c
∃k≥0 và
và k-1 c u hì
hình trung gian C0, C1, C2, ..., Ck
α’ = γδ
sao cho :
C = C0, C’
C’ = Ck, Ci
M
Ci+1 v i 0 ≤ i < k
Sau khi chuy n ti p
11/65
11/65
12/65
12/65
2
Ôđx đoá
đoán nh n câu và
vào
Ôđx th a nh n câu và
vào
\ Cho ôđx M và
và m t câu và
vào c n x lí w ∈ ∑
\ Cho ôđx M=(
Q, ∑, Γ, Δ, Z, q0, F)
M=(Q,
F) và m t câu và
vào w∈
w∈∑*
\ M t đoá
đoán nh n (Execution)
Execution) c a M trên w là
là dãy c u hì
hình :
\ Ôđx th a nh n câu w n u quá
quá trì
trình đoá
đoán nh n đ t đ n m t
trong cá
các tr ng thá
thái k t thú
thúc :
u Ph n câu x lí còn l i r ng
u (q0, w, Z) *M ( p, ε, γ ) v i p ∈ F
*
( q0, w, Z)
Z)
M
( q1, w1, α1)
M
...
M
( qn, ε, γ)
trong đó
đó q0 là tr ng thá
thái đ u, Z là
là ký t đá
đáy c a DS X và
và ε là câu r ng
\ Mô t :
u
Lúc đ u, DS X ch a ký t đá
đáy Z (đ
u
Câu w đang n m trên b ng và
vào, đ u đ c
u
M ti n hà
hành đoá
đoán nh n w b ng cá
cách th c hi n liên ti p
các b c chuy n ti p Ci M Ci+1
u
M d ng đoá
đoán nh n :
¬ ho
c
¬ ho
c M b hóc
c xem là
là DS r ng)
mút trá
trái nh t w(1)
\ Do ôđx M không đ n đ nh, nên có
có th có
nhi u phé
phép đoá
đoán nh n khá
khác nhau trên cù
cùng m t câu và
vào
m t tr ng thá
thái k t thú
thúc, ph n câu x lí còn l i r ng
m t tr ng thá
thái nà
nào đó
đó
13/65
13/65
14/65
14/65
Bi u di n ôtômat đ y xu ng
Dùng đ th bi u di n ôđx
\ Cho ôtômat M = (Q, ∑, Γ, Δ, Z, q0, F)
F)
\ Cho ôđx M = (Q, ∑, Γ, Δ, Z, q0, F)
F)
quy c v M nh sau :
\ Có th bi u di n M t ng t các ôhh nh sau :
u B ng cá
cách li t kê h t cá
các thà
thành ph n c a M
u Dùng đ th
p là tr ng thái đ u, p = q0
> p
\ Th c t , ng
ng i ta th ng dù
dùng cách bi u di n đ th
khi s tr ng thá
thái c a ôtômat không quá
quá l n
p
u, α|β
q
((p, u, α), (q, β)) ∈ Δ
q là tr ng thái cu i, q ∈ F
q
15/65
15/65
16/65
16/65
Ví d 1 : ôđx đ n đ nh
\ Ngôn ng { anbn | n ≥ 0 } đ
Ôđx M1 đoá
đoán nh n câu anbn
c th a nh n b i ôđx M1 :
Q = { s, p, q }
∑ = { a, b }
Γ = { A }, F = { q }
Δ g m cá
các chuy n ti p :
(s, a, ε) → ( s, A)
(s, b, A)
A)
A) → ( p, ε)
(s, ε, Z)
(p, b, A)
(p, ε, Z)
Z) → ( q, ε)
A) → (p, ε)
Z) → (q, ε)
VV aa đđ cc vv aa ghi
ghi nh
nh
AA và
ào DS
vvào
DS XX
nn con
a
đã
đ
c
con a đã đ c
\ Cho câu và
vào a3b3, ôđx M1 th c hi n đoá
đoán nh n nh sau :
saaabbbZ
M1
M1 pbbAAZ
> s
XX lý
lý câu
câu rr ng
ng
ε ∈ annbnn
b, A|ε
p
ε, Z|ε
sabbbAAZ
M1 pbAZ
M1
sbbbAAAZ ghi nh a
M1
pZ
ki m tra b
th a nh n
a, ε|A
> s
b, A|ε
M1
qε
cc tt ng
ng con
con bb
vvà
à xoá
á đđ nh
xo
xoá
nh DS
DS XX
llà
à con
con AA
a, ε|A
saabbbAZ
b, A|ε
b, A|ε
p
ε, Z|ε
q
ε, Z|ε
q
\ Nh v y M1 th a nh n cá
các câu anbn, n≥0, ta vi t L(M1) = anbn
ε, Z|ε
17/65
17/65
18/65
18/65
3
Ví d 2 : ôđx không đ n đ nh
Cách v khá
khác c a ôđx M1
\ Ngôn ng {wwR} đ
Có th v ôđx M1 theo cá
cách khá
khác nh sau :
Q = { s, p, q}
c th a nh n b i M2 nh sau :
∑ = { a, b }
Γ = { A, B }
F={q}
Δ ch a cá
các chuy n ti p :
a, Z|AZ
a, A|AAZ
b, A|ε
>
b, A|ε
s
ε, Z|ε
p
(s, a, ε) → (s, A)
A)
(s, ε, ε) → (p, ε)
(p, b, B)
B) → (p, ε)
(s, b, ε) → (s, B)
B)
(p, a, A)
A) → (p, ε)
(p, ε, z)
z) → (q, ε)
VV aa đđ cc vv aa ghi
ghi nh
nh
A,
ào DS
vvào
A, BB và
DS XX
ccác
ác con
con a,
a, bb đã
đã đđ cc
q
ε, Z|ε
a, ε|A
ε ∈ wwRR
\ Cho câu và
vào abba, ôđx M2 th c hi n đoá
đoán nh n nh sau :
sbbaAZ
M2
pbaBAZ
M2
paAZ
M2
M2
ghi nh a,
a, b đã đ c
sbaBAZ
pZ
qε
20/65
20/65
\ V n câu và
vào abba, ôđx M2 th c hi n đoá
đoán nh n nh sau :
M1
sbbaAZ
M2
sbaBAZ
ghi nh a,
a, b đã đ c
chuy n d ch không đ n đ nh
M2
saBBAZ
M2
sABBAZ
hóc : không th đ c ti p a hay b !
ki m tra a, b đ xoá
xoá A,
A, B trên DS X
M2
pABBAZ ???
a, ε|A
sabbaZ
c ng v n hó
hóc : không th đ c ti p
ε, ε|ε
a, ε|A
ε, Z|ε
p
> s
q
Γ = { A, B }
F={p}
(s, a, ε) → (s, A)
A)
( s, ε, ε) → (p, ε)
(p, b, B)
B) → (p, ε)
(s, b, ε) → (s, B)
B)
(p, a, A)
A) → (p, ε)
(p, ε, Z)
Z) → (p, ε)
22/65
22/65
V n ph m phi ng c nh
\ T G, có
có th đ nh ngh a NN PNC :
L = L(G)
\ M t NN L là
là PNC n u t n t i m t VP PNC s n sinh ra L
a, A|ε
p
ε, Z|ε
\ Theo phân c p VP c a Chomsky, VP phi ng c nh (PNC) :
G = ( N, ∑, R, S )
g m cá
các s n xu t d ng A → β
v i A ∈ N, β ∈ (N∪∑)
∪∑)* = V*, không có
có h n ch gì trên β
Δ g m cá
các chuy n ti p :
ε, ε|ε
b, B|ε
q
21/65
21/65
\ Có th xây d ng ôđx M3 g m ch hai tr ng thá
thái
M3 th a nh n ngôn ng wwR v i DS X r ng :
a, ε|A
ε, Z|ε
p
Chuy n d ch
không đ n đ nh
Ví d 3 ôđx không đ n đ nh hai tr ng thá
thái
∑ = { a, b }
a, A|ε
ε, ε|ε
b, ε|A
ε, Z|ε
b, B|ε
Chuy n d ch
không đ n đ nh
> s
ôtômat không th a nh n câu abba !
a, A|ε
b, ε|A
Q = { s, p }
ε, Z|ε
b, B|ε
th a nh n câu abba (thà
(thành công)
> s
q
Ôđx M2 đoá
đoán nh n câu abba th t b i
Ôđx M2 th a nh n câu abba
M1
ε, Z|ε
p
b, ε|A
XX lý
lý câu
câu rr ng
ng
19/65
19/65
a, A|ε
ε, ε|ε
> s
sabbaZ
cc tt ng
ng con
con a,
a, bb
vvà
à xoá
á đđ nh
xo
xoá
nh DS
DS XX
llà
à con
con A,
A, BB
b, B|ε
ε, Z|ε
b, ε|A
ε, Z|ε
23/65
23/65
24/65
24/65
4
Ví d các VP2
\D
Quan h gi a VP2 và ôđx
u
G1 { S → aSb | ε }
L(G1) =
u
G2 { S → aSa | bSb | ε }
L(G1) = wwR
u
\ Các ngôn ng th a nh n b i cá
các ôtômat đ y xu ng có
có th
đ c sinh b i cá
các v n ph m PNC và
và ng c l i
i đây là
làm t s VP PNC :
G3 { S → aB | bA | ε
anbn,
A → bAA | aS
n≥
n≥0
\
B → bS | aBB }
L(G3) g m cá
các câu ch a cù
cùng s ch a và ch b trong m t
th t nào đó
đó
u
G4 { S → aAS | a
nh lý :
M t ngôn ng là PNC n u
ngôn ng đó
đó đ c th a nh n b i m t ôtômat đ y xu ng
L = L(M) = L(G) v i G là
là VP2 và M là
là ôđx
A → SbA | SS | ba }
L(G4) = ?
25/65
25/65
Ngôn ng L1 ∪ L2 là phi ng c nh
Tính ch t c a cá
các ngôn ng PNC
\ Cho L1 và L2 là hai NN PNC, ta có
có các tí
tính ch t sau :
u Các ngôn ng sau là phi ng c nh :
u
¬
L1 ∪ L 2
phé
phép h p c a hai NN PNC
¬
L1 . L2
phé
phép ghé
ghép ti p hai NN PNC
¬
L1*
l y bao đó
đóng c a m t NN PNC
\ Cho :
G1 = (N1, ∑1, R1, S1)
G2 = (N2, ∑2, R2, S2 )
L1 ∩ L 2
phé
phép giao c a hai NN PNC
không h n là
là phi ng c nh !
u
sao cho L1 = L(G1)
sao cho L2 = L(G2)
\ Xây d ng VP2 G sinh ra ngôn ng L1∪L2 nh sau :
G = ( V, ∑, R, S ) v i :
u N = N1 ∪ N2 ∪ { S }
S là
là m t ký t m i thêm và
vào
u ∑ = ∑1 ∪ ∑2
u L y ký t m i thêm và
vào S là
làm ký t đ u
u R = R1 ∪ R2 ∪ { S → S1, S → S2 }
Ngôn ng :
¬
26/65
26/65
Tuy nhiên ngôn ng :
¬
LR ∩ L2 là PNC v i LR là NNCQ và
và L2 là PNC
27/65
27/65
Ví d L1 ∪ L2 là phi ng c nh
Ví d L1 . L2 là phi ng c nh
\ Cho :
G1 = (N1, ∑1, R1, S1)
G2 = (N2, ∑2, R2, S2 )
\ Cho :
G1 { A → A+B | a ; B → a }
L1 = L(G1) = a(+a)*
G2 { C → C−D | b ; D → b }
b(−
b(−b)*
L2 = L(G2) =
28/65
28/65
sao cho L1 = L(G1)
sao cho L2 = L(G2)
\ Xây d ng VP2 G sinh ra ngôn ng L1 . L2 nh sau :
G = ( V, ∑, R, S ) v i :
u N = N1 ∪ N2 ∪ { S }
S là
là m t ký t m i thêm và
vào
u ∑ = ∑1 ∪ ∑2
u L y ký t m i thêm và
vào S là
làm ký t đ u
u R = R1 ∪ R2 ∪ { S → S1S2 }
\ Xây d ng VP2 G :
G { S → A | C ; A → A+B | a ;
B → a ; C → C−D | b ; D → b }
\ G sinh ra ngôn ng L1∪L2 nh sau :
L = L1 ∪ L2 = L(G) = a(+a)* ∪ b(−
b(−b)*
29/65
29/65
30/65
30/65
5
Ngôn ng L* là phi ng c nh
Ví d L1 . L2 là phi ng c nh
\ Cho v n ph m PNC G = (N, ∑, R, S) có
có L = L(G)
\ Cho :
G1 { A → aA | ε }
G2 { B → bB | ε }
L1 = L(G1) = am m≥0
L2 = L(G2) =
bn
s n sinh ra ngôn ng L = L(G)
\ Xây d ng VP sinh ra ngôn ng L* nh sau :
n≥0
G = (N, ∑, R ∪ { S → SS | ε }, S)
\ Xây d ng VP2 G :
G c ng là
là VP phi ng c nh
G { S → AB ; A → aA | ε ; B → bB | ε }
\ Ví d :
u Cho G { S → ab } có
có L(G) = { ab }
u V n ph m G { S → SS | ab | ε }
\ G sinh ra ngôn ng L1 . L2 nh sau :
L = L1 . L2 = L(G) = ambn
m≥0, n≥
n≥0
L g m cá
các câu có
có m t s tu ý con a r i m t s tu ý con b
sinh ra ngôn ng :
{ ε, ab, abab, ababab, ... } = { (ab)* }
31/65
31/65
32/65
32/65
V n đ t o sinh câu c a VP PNC
Ví d có nhi u cá
cách suy d n
\ Cho VP PNC G = (N, ∑, R, S) có
có L = L(G)
\ Khi áp d ng cá
các s n xu t đ t o sinh câu, th t áp d ng
là không quan tr ng :
u Xu t phá
phát t ký t đ u S, có
có th áp d ng tu ý cá
các s n xu t,
hay dù
dùng cá
các d n xu t khá
khác nhau trong G đ u có
có th t o ra
cùng m t câu
u Tính “phi ng c nh”
nh” th hi n ch : m t ký t không k t
thú
thúc A∈
A∈N có
có th đ c thay th đ c l p v i cá
các ký t bao
xung quanh (tr
(tr c A và
và sau A), không ph thu c và
vào “ng
c nh”
nh”
\ Tính không quan tr ng v th t khi áp d ng cá
các s n xu t
là đ c tr ng c a cá
các NN PNC
\ Cho v n ph m G :
G { S → SS 1 | aSa 2 | bSb 3 | ε 4 }
(đánh s các s n xu t)
\ V i câu w=aabaab,
có th có 10 cá
cách suy d n khá
khác nhau đ sinh ra w :
Cách 1 (dãy cá
các SX là
là 124324) :
S ⇒1 SS ⇒2 aSaS ⇒4 aaS ⇒3 aabSb ⇒2 aabaSab ⇒4
aabaab
Cách 2 (dãy cá
các SX là
là 132424) :
S ⇒1 SS ⇒3 SbSb ⇒2 SbaSab ⇒4 Sbaab ⇒2 aSabaab ⇒4 aabaab
V.v...
\ S khá
khác nhau c a cá
các cá
cách suy d n ra w
là th t áp d ng cá
các s n xu t c a G
33/65
33/65
34/65
34/65
Khá
Khái ni m v cây phân tí
tích
Khá
Khái ni m v cây phân tí
tích (CPT)
\ Ng i ta s d ng c u trú
trúc cây đ bi u di n quá
quá trì
trình áp
d ng cá
các SX c a VP đ suy d n t o sinh câu
\ Cho VP PNC G = (V, Σ, R, S)
u Cây phân tí
tích (Parse
(Parse Tree),
hay còn đgl cây suy d n (Derivation
(Derivation Tree) đđ
c
\ Ng i ta s d ng c u trú
trúc cây đ bi u di n quá
quá trì
trình áp
d ng cá
các SX c a VP đ suy d n t o sinh câu
\ Cho VP PNC G = (V, Σ, R, S)
u Cây phân tí
tích (Parse
(Parse Tree),
hay còn đgl cây suy d n (Derivation
(Derivation Tree) đ c XD nh sau :
¬
G c (Root) c a cây là
là ký t đ u S
¬
M i nút trong là m t ký hi u không k t thú
thúc A∈
A∈N
¬
M i nút lá
lá là m t ký hi u k t thú
thúc a∈
a∈Σ ho c ký t r ng ε
¬
N u v i m i nú
nút trong A có
có A → X1X2...Xk là m t SX c a G
thì
thì (A, X1, X2, ..., Xk) là
là m t cây con tr c ti p có
có :
• A là
là nút g c
• các nú
nút n i v i A l n l
u Câu
35/65
35/65
tt
ng ng là
là X1, X2, ..., Xk
sinh b i CPT b ng cá
cách ghé
ghép ti p cá
các lá
lá t trá
trái qua ph i
36/65
36/65
6
Ví d cây phân tí
tích
M t s tính ch t c a cây PT
\ Cho VPPNC G, khi
khi đó
đó hai m nh đ sau là
là t ng đ
u Câu w ∈ L(G), ngh a là
là S ⇒*G w
u T n t i m t cây phân tí
tích c a VP G đ sinh ra w
\ Cho v n ph m G { S → SS | aSa | bSb | ε }
1
có các cây con t
2
3
ng ng v i cá
các SX nh sau :
1 S
2 S
S
a
S
4
S
3 S
a
b
S
S
4
\ Quá
Quá trì
trình suy d n t o sinh câu S ⇒*G w đ
theo cá
cách ch n ký t không k t thú
thúc N :
u Duy trì
trì ch n t trá
trái qua ph i
u Ho c ch n t ph i qua trá
trái
u Ho c ch n t gi a ra hai bên tu ý
ε
b
\ Phé
Phép suy d n ra câu aabaab trong G :
S ⇒1 SS ⇒2 aSaS ⇒4 aaS ⇒3 aabSb ⇒2 aabaSab ⇒4 aabaab
có th bi u di n b i cây phân tí
tích :
S
S
a
S
4
1
S
2
a
ε
b
S
a
S
4
Tính t
ng đ
b
u
Có th có nhi u suy d n t
a
u
Có th có nhi u cây PT t
ε
38/65
38/65
Bi n đ i v n ph m
ng c a cá
các v n ph m
L(G1) = L(G2) = ... = L(Gk)
ng ng v i m t cây PT duy nh t
ng ng v i nhi u suy d n
37/65
37/65
\ Ta có
có các tí
tính ch t sau :
u M t VP PNC G ch có th s n sinh m t (và
(và ch m t) NN L(G)
L(G)
u Nh ng có
có th có nhi u VP PNC cù
cùng sinh ra m t NN L :
u Ví
c th c hi n
\ V i m i câu w ∈ L(G) :
3
2
ng :
v i k>0
d :
\ Cho VP PNC G
\ Ta có
có th bi n đ i G đ nh n đ c G’
G’ sao cho :
u G’ t
ng đ ng v i G : G’ ~ G
u và bi n đ i ng
c l i t G’ đ nh n đ c G : G ~ G’
G’
\ Sau đây ta s bi n đ i G đ nh n đ c G’
G’ sao cho :
u G’ không ch a cá
các s n xu t d ng A→ε
A→ε,, còn
còn đgl ε-SX
u G’ không ch a G cá
các s n xu t d ng A→
A→B
L( {S → aSa | bSb | ε } ) =
L( {S → A | ε ; A → aAa | bAb} ) =
L( {S → ASA | BSB | C ; A → a ; B → b ; C → ε } ) = wwR
\ T các tí
tính ch t trên, ng i ta nó
nói :
Hai VP G1 và G2 đgl t ng đ ng,
ng, ký hi u G1 ~ G2
N u
L(G1) = L(G2)
39/65
39/65
40/65
40/65
Lo i b các s n xu t d ng A→ε
A→ε
Cách x lý lo i b các ε-SX
\ Cho VP PNC G = (N, ∑, R, S) có
có ch a cá
các SX d ng A→ε
A→ε
lo i b các ε-SX t VP PNC G = (N, ∑, R, S) :
\ Xây d ng VP PNC G’
G’ ~ G sao cho G’
G’ không còn ε-SX :
u N u ε ∈ L(G), G’
G’ nh n đ c t G b ng cá
cách :
Xây d ng t p h p cá
các ký hi u không k t thú
thúc A sao cho
m i suy d n t A đ u nh n đ c câu r ng ε) nh
nh sau :
¬ Thêm
u
L p l i cá
các b
¬ Ch
¬V
E = { A ∈ N | A ⇒*G ε }
và
vào G m t ký t đ u S’
S’ và các s n xu t S’
S’ → S | ε
T E, c v i m i SX có
có d ng X → X1X2...Xk v i k>1 :
c sau đây :
n m t ε-SX A → ε (không ch n S’
S’→ ε)
¬ Thêm
i m i SX có
có v ph i ch a A : B → αAβ ∈ R, v i α, β ∈(N∪∑
(N∪∑))*
và
vào R cá
các SX m i X → X1X2...Xj-1 Xj+1...Xk ∀j =1..k=1..k-1
v i m i Xj ∈ E
Thêm và
vào R m t s n xu t m i B → αβ (b con A)
Ngh a là
là thêm và
vào R nh ng SX m i sau khi đã lo i b l n l
Lo i b s n xu t A → ε kh i R
các ký hi u có
có m t trong E
t
cho đ n khi G’
G’ không còn cá
các ε-SX
41/65
41/65
42/65
42/65
7
Ví d 1 : lo i b các ε-SX
Ví d 2 : lo i b các ε-SX
\ Cho VP PNC G2 có các SX :
\ Cho VP PNC G1 có các SX :
{ S → ABC ; A → BB | ε ; B → CC | a ; C → AA | b }
{ S → ABCD ; A → CD ; B → Cb ; C → a | ε ; D → bD | ε }
\ XD t p E1 = { A ∈ N | A
⇒*G
\ XD t p E2 = { A ∈ N | A ⇒*G ε } = { S, A, B, C }
ε } = { A, C, D }
\ XD VP PNC G2’ g m cá
các SX :
{ S → ABC | BC | AC | AB | A | B | C ;
A → BB | B;
B → CC | C | a ;
C → AA | A | b
\ XD VP PNC G1’ g m cá
các SX :
{ S → ABCD | BCD | ABD | ABC | BD | BC | AB | B ;
A → CD | B | D ;
B → Cb | b ;
C→a;
}
D → bD | b
}
43/65
43/65
44/65
44/65
Lo i b các s n xu t d ng A→
A→B
Ví d lo i b các SX d ng A→
A→B
\ Cho VP PNC G = (N, ∑, R, S) có
có ch a cá
các SX d ng A→
A→B
u N u G có
có các s n xu t d ng A → B và
và B → A, v i A, B ∈ N,
có th d n đ n cá
các suy d n có
có đ dài tù
tùy ý :
A ⇒ B ⇒ A ⇒ B ⇒ A ⇒ ..., hay A ⇒* A
u Các suy d n A ⇒* A là
làm đì
đình tr hay t c ngh n vi c sinh câu
\ Xây d ng G’
G’ ~ G sao cho G’
G’ không còn SX d ng A→
A→B :
u Tìm cá
các s n xu t d ng A → B
u V i m i s n xu t d ng B → α, v i α∈(N
∪∑))*
α∈(N∪∑
thêm và
vào s n xu t A → α, lo i b A → B
A
B
B
α
A
\ Cho VP PNC G có
có các SX :
{ E → E+T | T ; T → T*F | F ;
F → (E) | a }
\ XD VP PNC G’
G’ g m cá
các SX :
{ E → E+T | T*F | (E) | a ;
T → T*F | (E) | a ;
F → (E) | a
}
α
45/65
45/65
46/65
46/65
V n ph m nh p nh ng
Ví d hi n t
\ Cho VP PNC G :
u VP G đgl nh p nh ng (Ambiguous Grammar) kh
Có hai cây phân tí
tích cù
cùng suy d n cho m t câu w∈
w∈L(G)
\ Cho L là
là NN PNC :
u NN L đgl nh p nh ng c h u
(Inherently Ambiguous Language) kh
NN L đ c sinh b i nhi u VP khá
khác nhau
L = L(G1) = L(G2) = ...
và t t c các v n ph m G1, G2 ... nà
này đ u nh p nh ng
\ Cho VP PNC G nh p nh ng :
u Có th bi n đ i G v G’ t
ng đ ng,
ng, L(G’
L(G’) = L(G), sao cho
u G không còn là
là v n ph m nh p nh ng
47/65
47/65
ng nh p nh ng
\ Trong NN t nhiên nó
nói chung, ti ng Vi t nó
nói riêng,
th ng xuyên x y ra cá
các hi n t ng nh p nh ng
u Nh p nh ng v t lo i :
¬H
c sinh h c sinh h c
u
Nh p nh ng v ngh a :
u
Nh p nh ng v phá
phát âm :
u
Nh p nh ng v ti ng Vi t không d u :
¬ Ông
¬ Bà
già
già đi nhanh quá
quá
Ba b n b n bá
bán bá
bánh
¬ Nha
may Co khi Gia Lam
48/65
48/65
8
Ví d v n ph m nh p nh ng
M t s ví d khá
khác v VP nh p nh ng
\ Cho VP PNC G có
có các SX :
{ E → E+E 1 | E*E 2 | a 3 }
\ VP G nh p nh ng vì
vì có hai cây PT sinh ra câu w=a+a*a :
u
E ⇒1 E+E ⇒3 a+E ⇒2 a+E*E ⇒3 a+a*E ⇒3 a+a*a
u
E ⇒2 E*E ⇒1 E+E*E ⇒3 a+E*E ⇒3 a+a*E ⇒3 a+a*a
1
2
E
E
E
2
3
3 E
a
+
a
*
E
E
1
E
3 E
3
E
a
a
\ Các VP sau đây đ u nh p nh ng :
u G1 { S → aSa | bSb | a | b | ε }
u G2 { S → aS | Sa | a }
E
E
3
E
+
3
a
*
a
49/65
49/65
50/65
50/65
Các d ng chu n c a VP2
\
i v i VP PNC, ng
u
i ta th
ng đ a và
vào hai d ng chu n :
D ng chu n Greibach :
M i SX có
có d ng A → aα
u
nh lý “b m”
m” cho cá
các NN PNC
nh lý “b m”
m” cho NN PNC t
A, B, C∈
C∈N, a∈
a∈Σ
\ Tính ch t :
u M i VP PNC b t k đ u có
có th bi n đ i v m t trong hai
d ng chu n Greibach ho c Chomsky
ng t NNCQ :
u
Cho L NNCQ và
và w∈L có
có đ dài v à đ , w=xuy v i u≠
u≠ε,
khi đó
đó câu w’
w’=xuky, ∀k>0, c ng thu c L
(l p tu ý m t dòng con u c a câu)
u
Tuy nhiên, n u L là
là NN PNC, xu t phá
phát t m t câu w có
có đ
dài v à đ , có
có th xây d ng m t câu khá
khác w’
w’ ∈L b ng cá
cách
A∈N, a∈
a∈Σ, α∈(N∪
(N∪Σ)*
D ng chu n Chomsky :
M i SX có
có d ng A → BC | a
\
l p m t ho c hai dòng con c a câu
\ N i dung đ nh lý “b m”
m” (còn
(còn đgl “uvxyz”
uvxyz”) :
u
Cho L NNPNC, t n t i h ng K sao cho m i câu w∈
w∈L th a mãn
đi u ki n |w| > K và
và w=uvxyz v i vy ≠ ε (v ≠ ε ho c y ≠ ε),
ta đ u có
có w’ = uvkxykz ∈ L , ∀k>0.
51/65
51/65
52/65
52/65
Ch ng minh đ nh lý “b m”
m”
Tìm h ng s K trong đ nh lý “b m”
m”
\ Cho G là
là VP PNC v i L(G)=L, c n ch ra r ng :
u Cho w∈
w∈L đ dài, cây PT cho w ph i ch a m t đ ng đi mà
mà
trên đó
đó, m t bi n A∈
A∈N nà
nào đó
đó xu t hi n ít nh t hai l n :
i l n xu t hi n đ u tiên
c a A, ta nh n đ c uAv
i l n xu t hi n ti p theo
c a A, ta nh n đ c uvAxy
A nà
này, ta nh n đ c
w=uvxyz do phé
phép suy d n
A ⇒* x
¬T
u
Hai câu con v và
và y gi a hai
bi n A có
có th l p tu ý l n
u
n là
là s ký t không k t thú
thúc
p = max { |α| | A→α
A→α ∈ R }
p là
là đ dài t i đa c a cá
các SX
Khi đó
đó ch n K = pn
\ G i T là
là cây PT c a m t câu tu ý w∈
w∈L(G) có
có đ sâu n :
u M i nú
nút c a c a T có
có t i đa p nú
nút th a k
u
dài t i đa c a w s là s lá t i đa c a T, là
là pn
A
¬T
n = Card(N)
u
S
¬T
\ Cho VP PNC G = (N, Σ, R, S) có
có :
A
y
v
\ T đó
đó, n u ch n K = pn :
u M i cây PT sinh ra câu có
có đ dài l n h n K s ph i
ch a ít nh t m t đ ng đi dà
dài h n n
u Theo lý thuy t đ th , trên
trên đ ng đi nà
này,
m t bi n A∈
A∈N nà
nào đó
đó s xu t hi n ít nh t hai l n
z
x
w = uvxyz
53/65
53/65
54/65
54/65
9
Minh ho đ nh lý “b m”
m”
Ví d NN anbn th a mãn đ nh lý “b m”
m”
ng đi SAAx tho mãn đ nh lý “b m”
m” : |uvxyz| > K=pn
\
S
S
A
A
sâu
n
u
u
A
y
v
A
z
z
y
v
c m t câu w, ch ng h n a3b3 = uvxyz
u
Th t v y, cho tr
u
Ch n v là m t dãy ch a, y là m t dãy ch b có
có cùng đ dài :
u
a3b3 = aa2εb2b
u=a, v=a2, x=ε
x=ε, y=b2, z=b
z=b
Khi đó
đó :
a(a2)kb(b2)k = a2kb2k ∈ anbn
L p
kl n
A
y
v
x
NN PNC anbn =L({S → aSb | ε}) th a mãn đ nh lý “b m”
m”
x
w = uvxyz
w = uvkxykz
55/65
55/65
56/65
56/65
NN anbn th a mãn đ nh lý “b m”
m”
aa
SS
bb
aa
SS
bb
aa
SS
bb
u
z
v
\ Có th b o đ m vy≠ε
vy≠ε (v≠ε
(v≠ε ho c y≠ε
y≠ε)) trên
trên đ ng SAAx :
u N u v=y=ε
v=y=ε, ph n cây PT gi a hai bi n A có
có th b đi mà
mà
không là
làm thay đ i câu đã s n sinh
u N u v=y=ε
v=y=ε x y ra cho m i đ ng đi,
đi, câu
câu đ c sinh ra b i
cây PT không th có đ dài v t quá
quá K = pn
SS
SS
u
Nh n xé
xét
SS
bb
aa
SS
bb
aa
SS
bb
aa
SS
bb
aa
SS
bb
z
x
a3b3 = aa2εb2b
\ Chú
Chú ý :
u
y
v
y
εε
aa
v
y
εε
a(a2)2ε(b2)2b = a5b5 ∈ anbn
a
b
an
bn
c s làm mâu thu n v i đ nh lý “b m”
m” !
c
cn
?
nh lý “b m”
m” có còn th a mãn không, n u L h u h n ?
u
Câu tr l i : m t NN PNC h u h n không th có các câu
có đ dài v t quá
quá pn
58/65
58/65
Ngôn ng anbncn không là
là PNC !
nh lý “b m”
m” cho phé
phép ki m tra m t s NN không là
là PNC
N u tá
tách đ
u
57/65
57/65
\ Ví d : Ngôn ng L = {anbncn | n≥
n≥0 } không là
là PCN
u
ch ng minh, c n ch ra r ng không có
có kh n ng
tách m t câu có
có d ng anbncn thà
thành 5 ph n u, v, x, y và
và z
(v i vy ≠ ε) sao cho v i m i k > 0, câu uvkxykz ∈ L
u
c ch rõ
x
Áp d ng đ nh lý “b m”
m”
\
Trong phá
phát bi u đ nh lý “b m”
m”, NN
NN L không đ
ra là
là ph i vô h n
u
v
x
v
z
u
vk
x
yk
z
C
ó th phân tá
ách annbnncnn = uvxyz
ttách
Có
uvxyz
đ c hay không ?
59/65
59/65
\ Ph n ch ng :
Gi s anbncn là PNC,
PNC, do
do đó
đó tho mãn đ nh lý “b m”
m”,
t n t i m t s phân tá
tách anbncn = uv
uvxyz
\ Xét cá
các kh n ng phân tá
tách khá
khác nhau cho v và y :
u C v và y đ u đ
c t o thà
thành t phé
phép l p c a cù
cùng m t ch ,
ch ng h n v ∈ a* và
và y ∈ b* :
¬ Khi đó
đó, s các ch a, b s nhi u h n s các ch c,
vi ph m tí
tính ch t anbncn
u Các câu v và y đ
c t o thà
thành t các ch khá
khác nhau :
¬ Khi đó
đó, cá
các câu uvkxykz s không còn có
có d ng a*b*c*
\ Nh v y, không th phân tá
tách anbncn = uvxyz,
đ nh lý “b m”
m” không đ c tho mãn : mâu thu n !
60/65
60/65
10
Các ngôn ng PNC đ n đ nh
M t s nh n xé
xét
\ Các phé
phép toá
toán giao và
và bù không ph i luôn luôn tho mãn PNC
\
nh lý "b
"b m"
m" cho phé
phép ch ng minh r ng :
u
T n t i hai ngôn ng PNC L1 và L2 sao cho L1 ∩ L2 không là
là PNC
Th t v y :
L1 = {anbncm} và
và L2 = {ambncn} đ u là
là các ngôn ng PNC
\ Cho L ∈
L là
là PNC đ n đ nh n u :
L = L(M), M là
là m t ôtômat đ y xu ng đ n đ nh
\ Ví d :
u L1 = { wwR | w ∈ {a, b}* } ch là PNC,
PNC, không
không PNC đ n đ nh
u L2 = { wcwR | w ∈ {a, b}* } là
là NN PNC đ n đ nh
∑*,
Tuy nhiên :
a, ε|A
L1 ∩ L2 = {anbncn} không là
là PNC !
u
Bù c a m t NN PNC không ph i luôn luôn PNC
a, A|ε
c, ε|ε
> s
p
ε, Z|ε
q
Th t v y :
L1 và L2 là PNC,
PNC, khi
khi đó
đó : L1 ∪ L2 ph i là
là là PNC
b, B|ε
b, ε|A
ε, Z|ε
Gi s bù c a m t NN PNC là
là PNC thì
thì :
L1 ∪ L2 = L1 ∩ L2 c ng là PNC : đi u nà
này mâu thu n v i trên đây
u
V i L2, không xá
xác đ nh đ
u
V i L1 v trí
trí gi a đ
c v trí
trí gi a c a câu
c xá
xác đ nh b i ký t c đ nh n bi t câu
61/65
61/65
Tính ch t c a cá
các NN PNC đ n đ nh
ng d ng c a cá
các ngôn ng PNC
\ L p cá
các NN PNC đđ và
và không đđ có
có tính ch t khá
khác nhau
\ Cho L1 và L2 là các NN PNC đ n đ nh, khi
khi đó
đó :
u L = ∑* − L1 là PNC đ n đ nh
u
¬
Cho M ôhh đđ M’
M’ sao cho L(M)=L1
¬
Xây d ng ôhh đđ M’
M’ t M, b ng cá
cách hoá
hoán đ i vai trò
các tr ng thá
thái đ t đ c và
và không đ t đ c
T n t i cá
các NN PNC nh ng không đ n đ nh
¬
Vì n u m i NN PNC đ u đ n đ nh, thì
thì bù c a m t NN PNC s
luôn luôn PNC, đi u nà
này không đú
đúng
u
L1 ∪ L2 không ph i luôn luôn PNC đ n đ nh
u
L1 ∩ L2 không ph i luôn luôn PNC đ n đ nh
¬
¬
Không ph i luôn luôn xá
xác đ nh đ
Tính ch t nà
này đ
62/65
62/65
c w∈
w∈L1 ho c w∈
w∈L2
\ ng d ng chí
chính c a cá
các NN PNC là
là :
u Mô t cú phá
pháp c a cá
các NNLT nh m t v n ph m PNC G
u Phân tí
tích cú
cú phá
pháp t ng ng v i v n ph m PNC G
u Các ch
ng trì
trình đú
đúng đ n v cú phá
pháp là
là nh ng câu w∈
w∈L(G)
\ Phân tí
tích cú
cú phá
pháp là
là :
u Xác đ nh n u w ∈L(G)
u D a và
vào cây phân tí
tích thi t l p cá
cách s n sinh ra câu w
\ Th c t , đ các thu t toá
toán phân tí
tích ch y hi u qu (áp
d ng cho cá
các ch ng trì
trình r t dà
dài), c n có
có h n ch đ i v i
ki u v n ph m PNC mu n s d ng :
u Ch xét nh ng VP mô t các ngôn ng PNC đ n đ nh
u H các VP LR chuyên đ
c s d ng cho cá
các NNLT
c suy ra t phé
phép h i và
và l y ph n bù
bù
63/65
63/65
Bài t p ch
64/65
64/65
ng 4
1. Mô t các ôhh đ y xu ng th a nh n cá
các NN sau đây :
a) anbncm
b) anbmcn
2. Tìm v n ph m PNC s n sinh cá
các ngôn ng sau đây :
a) anbncm
b) anbmcn
3. Ch ng minh r ng NN { aibjck | i ≠ j ho c i ≠ k } là
là PNC
Ph n bù
bù c a ngôn ng này c ng là
là PNC ?
G i ý : h i c a cá
các ngôn ng PNC c ng là
là PNC
4. Ch ng minh r ng NN { an | n là
là s nguyên t }
không là
là PNC
65/65
65/65
11