Ngôn ng hình th c và ÔtômatFormal Language & Automata PGS.TS... Weyuker, Computability, Complexity and languages, Academic Press, 1983 J.. Ulman, Introduction to Automata Theory, Languag
Trang 1Ngôn ng hình th c và Ôtômat
(Formal Language & Automata)
PGS.TS Phan Huy Khánh
khanhph@vnn.vn, phk@ud.edu.vn
2/38
Chào m i ng i !
Bonjour Tout le Monde ! Hello Everyone!
!
To Start…
“One picture is worth more than ten thousand words”
Chinese Proverb
“One picture is worth more than ten thousand words”
Chinese Proverb
4/38
(Hai l p tr ng quy t đ t đ nh) :
Chi u th Hai hàng tu n, t i A5-104, 13H30
Nh ng bu i đ i đ u :
Chi u th Hai 14/01 Sáng th B y, 26/01/2008, 7H00 Sau T t, t.29, 13H30, 25/02/08
M t và “chuy n nh ” b t đ t đ u môn h c
Th t c “chào h i”:
Vào l p mu n, hoc ra kh i lp, không c n xin phép
Khi Gi ng viên (GV) hi, cn :
Nói rõ vàto ging đng đ c l p cùng nghe đng nghe đ c
Khi tr l i, c n th c hin ngay :
T ch i, không bi t, hoc tr l i tr c tip vào câu h i
Chu n b h c :
L p s ch s (m i ngha), s n sàng cho bu i dy
Ng i t p trung gn tôi, không ng i kiu “gió đ a ao b đ a ao bè ”
Giúp GV chun b màn hình, đ đèn chiu, cm đim đi n
K t thúc môn h c :
Giúp GV d n dp màn hình, đ đèn chi u, cm đim đin
C nên ghi bài gi ng trên l p vào s , v h c trò ?
Hc b ng slide c n cóTLTK+ cách ghi h p lý
N u không s xy ra hi n t ng “TH A TAY”, “đ tay nhà”
Ghi bài gi ng trên l p vào gi y r i A4
Mi môn h c m t t p giy A4, cómàu đu đánh d u phân bi t Nguyên t c thao tác ti p th tri th c và ng d ng : Thu nh t, lit kê, vun x i
Phân loi, s p x p Khoanh vùng, gi i h n
Ch đ đnh, l a ch n, tìm ki m
Vn d ng, hoàn thi n, làm giàu tri th c Tìm ki m phm ph ng phng pháp h c t p hi u qu Phát huy các giác quan : m tn, tain, mi ngn, m in, tayn
Trang 2có th “t c ký”
Dùng S d ng b ng vi t t t (BVT) :
t đ đnh ngha ch vi t t t c a riíng mình
Víd : ql = qu n lý
pp = phph ng phng phâ
pp+ = phđn ph i
= ng i
Luôn mang BVT theo mình, m i lúc m i n i
Ch ch n ghi câc ý chính, hay t khoâ
Không nh t thi t ghi c cđu
Tìm m i câch đch đ v , thay vìch vi t !
8/38
M c đ c đ ích môn h c
H c ph n cung c p c s toân h c c a câc phc ph ng phng phâp hình th c trong vi c xđy d ng câc ngôn ng l p trình Giúp sinh viín hi u đu đ c nh ng y u t c b n c a m t ngôn ng hình th c nh b ng ch , t v ng, cúphâp vă
ng ngha
H c ph n trình băy câc công c ch y u đu đ lăm vi c v i
c c ngôn ng hình th c lă v n ph m vẵtômat, phđn lo i ngôn ng c a Chomsky :
Ngôn ng chính quy Ngôn ng phi ng c nh Ngôn ng c m ng c nh Ngôn ng loi 0 (g n g i v i ngôn ng t nhiín)
9/38
Ki n th c yíu c u Môn h c yíu c u ki n th c tiín quy t : Toân cho Tin h c
Lý thuy t
T p h p
th
K thu t ch ng minh
Qui n p
Ph n ch ng
K thu t mô ph ng
Câc ki n th c c n thi t khâc :
C s L p trình
Môn hc đòi hc đòi h i m t s k n ng :
Kh n ng đ n ng đ c hiu v n đn đ
Trình băy din đn đ t vn đn đ (ngh thu t!)
Kh n ng th o lu n, lăm vi c theo nhóm
Georg Cantor (1845–1918)
Founder of Modern Set Theory
10/38
Yíu c u :
Hi u ni dung trình bă trínl p
Th c hin câ băit pv nhă
Kh n ng th c hănh Tinh th n thâi đi đ v n ng l c h c t p Nghe gi ng, ghi chĩp
Tr l i vă đ đ t cđu hi Tham kh o tăi li u, truy cp internet Tham gia hc nhóm, t p tho lun văthuy t trình
…
Ki m tra gi a k : Băi thi vi t 15-30 phút
Ki mtracu ik : Băi thivi t 60-75 phút
Ch ng
Ch ng 1 M đ đ u
Ch ng
Ch ng 2 Ôtômat h u h n (ôhh/ôh2/ô2h)
Ch ng
Ch ng 3 V n ph m chính qui (VPCQ)
Ch ng
Ch ng 4 Ôtômat đÔtômat đ y xu ng (ôđxôđx)
Ch ng
Ch ng 5 Mây Turing (MT)
Tăi li u tham kh o Giâo trình + Băi gi ng trín l p
Tăi li u Nguy n V n Ba, Ngôn ng hình th c, NXBKH&KT, 2002
SM D Davis, E J Weyuker, Computability, Complexity and languages, Academic Press, 1983
J E Hopcroft, J D Ulman, Introduction to Automata Theory, Languages and Computation, Addison -Wesley, 1979 Phan Huy Khânh Lý thuy t ngôn ng hình th cv ôtômât Tăi li u l u hănh n i b
H V n Quđn Giâo trình lý thuy t ôtômât văngôn ng hình
th c NXB HQG HCM, 2002
A Salomaa, Nh p môn tin h c, lý thuy t tính toâ v ôtômat
NXB Khoa h c K thu t, Hă i 1992 Internet: tìm ki m Google.com.vn, wikipedia
G p cô H ng, v n
th khoa CNTT (chúng mình ?)
G p cô H ng, v n
th khoa CNTT (chúng mình ?)
Trang 3Vài dòng l ch s Cantor (1845-1918)
Lý thuy t t p h p
Hilbert (1862-1943)
Toán h c ch t ch
Gödel (1906-1978)
Lý thuy t v tính không đ y đ
Church, Kleene, Post, Markov, von Neumann, Turing
CM t đlý mô (Preuves de quels théorèmes)?
CM v i thtoán mô (Avec quels algorithmes)?
Turing (1912-1954)
Máy Turing
McCulloch, Pitts
M ng n -ron nhân t o
Chomsky
Mô hình toán h c mô t ngôn ng - hình th c hoá ngôn ng
“N u tôi có m t s thành công nh t đ nh trong toán h c thì đó là vì tôi luôn th y nó r t khó”
Hilbert
“N u tôi có m t s thành công nh t đ nh trong toán h c thì đó là vì tôi luôn th y nó r t khó”
Hilbert
“T m nhìn ta th t ng n
mà đã th y bao th đ làm”
Alan Turing
“T m nhìn ta th t ng n
mà đã th y bao th đ làm”
Alan Turing
14/38
M t s khái ni m
B ng ch (Σ) Câu (xâu) Ngôn ng
Mô t ngôn ng Các phép toán (θ) trên ngôn ng (ng2)
Bi u th c chính qui (BTCQ) Các ngôn ng phi chính qui
Vn đn đ bi u din ngôn ng
15/38
B ng ch (alphabet) :
làmt t p h u hn các ký t (characters), hay ký t ng/
ký hi u (symbol), ký hiu b i ch ci Hy lp Σ
Kích th c ca b ng ch là ph n t c a bng ch đ đó,
ký hi u |Σ|, hay Card(Σ) (Cardinality)
Víd m t s b ng ch Σ:
{ ♣, ♠, ♦, ♥} |Σ| = 4
{0, 1, 2, , 9} Ch s th p phân, |Σ| = 10
{I, V, X, L, C, D, M} Ch s La Mã
{aA, bB, cC, , zZ} Ch cái La tinh
{αΑ, βΒ, χΧ, , ζΖ} ch cái Hi L p
B ng mã ASCII
16/38
Cho tr c m t b ng ch Σnào đo đó
M t câu(phrase, word), hay xâu(string), trên Σ:
làm t dãy h u h n các phn t c a Σ,
ký hi u b i w(hay x, y, u, v )
d i c a m t câu làs ký t cóm t trong câu,
ký hi u là|w| hay length(w)
d i câu là u h n,
nh ng không h n ch làcóbao nhiêu ký t
M t câu cóth cót 0 đ n n ký t tu ý Câu có đ đ dài b ng 0 đ đ c g i làcâu r ng (empty word),
ký hi u ε, ho c e, ho c λho c ω
Víd
B ng ch Σ Câu trên Σ
{ 0, 1 } ε, 0, 1, 00, 01, 10, 11, 100
{ a z } a, ab, zt, computer
{ 0, , 7, ♠, ♣, ♦, ♥} 4♣3♦2♠, 1234, ♣♠
ASCII Mt cht ch ng trng trình C, Pascal, Java, VB
Cho m t câu w cócó |w|=n, ng i ta cóth trích ra t w
m t ký t nào đo đócóv tríx c đc đnh trong ph m vi 1 n
Víd câu w=aaabbaabbba có|w|=11,
cóth trích ra các ký t :
w(1) = a, , w(4) = b, , w(11) = a
Phép ghép ti p các câu Cho hai câu u vàv trên Σ
Phép ghép tip(Concatenation) c a u vàv làcâu w= uv Ngha làcâu wg m hai ph n :
u đgl l
u đgl là n t (prefix)
r i đi đ n v là u t (postfix) c a w
Tr ng h p câu w = xuy làghép ti p c a ba câu x, u, y,
u đgl
u đgl trung t (infix) c a w
Ng i ta còn g i câu r ng εlàcâu đ n v
vìcóεw = wε= w
v i w làm t câu b t k trên Σ
Returning
Trang 4Các phép toán khác trên xâu
Cho các câu w trên Σ
Phép o ng c(Reversion) m t câu w, ký hi u wR:
L câu w đ đ c vit theo th t ng c l i
Rõ ràng εR= ε
wR= w đgl câu đw đgl câu đ i x ng : OMO, akitOMOtika
Phép L y th a(power) xâu
wn= ww…w (n l n)
w0= εv i m i w Quy (denotation)c ch đ nh m t câu
Quy c ch đ nh m t câu (denotation)
20/38
M t ngôn ng hình th c (nói g n ngôn ng ) :
làt p h p các câu
đ c xây d ng trên cùng m t bng ch đã cho đã cho Σ
Víd :
Σ*làngôn ng gm t p tt c cc xâu trên bng ch Σ
k c xâu rng
Σ+làngôn ng gm t p tt c cc xâu trên b ng ch Σ KHÔNG CÓxâu r ng
Σ + = Σ * - ε
∅ là ngôn ng tr ng (t p tr ng)
Víd L1 = {a, ab, abb, bba, bbb} là ngôn ng h u h n trên {a, b}
L2 = {(ab) n | n > 0} là ngôn ng vô h n trên {a, b}
Chú ý {ε}
Chú ý {ε}
21/38
Các phép toán trên ngôn ng
Ngôn ng làm t t p h p do đp do đócóth áp d ng các phép toán
trên t p h p :
i vi các phn t :
i vi ngôn ng :
Cho L1, L2 vàL làc c ngôn ng , các phép toán:
Phép h p
L1 ∪L2 = {w | w ∈L1 ho c w ∈L2}
Phép giao
L1 ∩L2 = {w | w ∈L1 vàw ∈L2}
Phép hiu
L1 –L2 = {w | w ∈L1 vàw ∉L2}
Phép bù
L’= {w | w ∉L} ho c L’= Σ* -L
∈∉
∩∪⊂⊆⊄⊃⊇
L2 L1
L
22/38
Các phép toán trên ngôn ng Phép ghép n i :
L1L2 = = {w | w = uv, u ∈L1 vàv ∈L2}
Phép nghch đch đ o :
LR= {w | wR∈L}
Phép l y th a :
Ln= LL…L (n l n)
Li= LLi-1 = Li-1L v i i>0
L0= {ε}
Víd : Cho L = { tic, tac, toe } khi đkhi đó:
L2= LL
= { tictic, tictac, tictoe, tactic, tactac, tactoe, toetic, toetac, toetoe }
Ghép n i L1 có m câu, và L2 có n câu,
đ c ngng có ??? câu
Ghép n i L1 có m câu, và L2 có n câu,
đ c ngng có ??? câum.n
Là b n s c a tích êCac (Cartesian Product)
Là b n s c a tích êCac (Cartesian Product)
Các phép toán trên ngôn ng
Phép bao đp bao đóng (closure) :
L*= L0∪L1∪…∪Ln ∪…=
Phép bao đp bao đóng dng d ng ng :
L+= L1∪L2∪…∪Ln ∪…=
Nh n xét :
L+= LL*= L*L
L*= L+∪{ ε}
Víd :
Cho L = { tic, tac, toe } khi đkhi đó:
L*= {ε,tic, tac, toe, tictic, tictac, tictoe, tactic, tactac, tactoe,
toetic, toetac, toetoe, tictictic, tictictac, }
U∞
=0 i i
L
U∞
=1 i i
L
ℜt p h p các ngôn ng chính quy(Regular Languages) trên Σ:
c đ
c đnh ngha d a trên các ngôn ng s c p
v các phép toán h i, ghép và đ đóng l p *
L t p h p nh nh t (ch a ít phn t nh t) các ngôn ng thõa mãn các đic đi u ki n sau:
1 ∅∈ℜ, {ε}∈ℜ
2 { a} ∈ℜv i ∀a∈Σ
3 N u A, B ∈ℜ, thìA∪B, A.B vàA* ∈ℜ
Rõ ràng ℜlàt p h p bénht do đt do đ c xây d ng t c c t p
s c p ∅, { ε} và{ a} b i các phép h i, ghép và bao đ bao đóng
Trang 5(1)
Bi u th c chính quy (BTCQ)
Ng i ta s d ng các bi u th c chính quy (Regular
Expressions) đ đ bi u di n các ngôn ng chính qui trên Σ
Qui t c xây d ng BTCQ trên Σlàc c bi u th c đc đ c t o
thành theo các b c quy n p nh sau:
1.∅, εv a, vi m i ph n t ac a Σ
đ u lành ng BTCQ
2.N u αv βlàhai BTCQ ,
thì(α∪β), (αβ), (α)*c ng lành ng BTCQ
Chú ý 1 : Khi vi t m t BTCQ, có th b các d u ngo c đ n
theo m c u tiên gi m d n : ch ng h n vi t a* thay vì (a)*
Chú ý 2 : Có th vi t a+b thay vì vi t a∪b
Ví d , bi u th c ((0 (1*)) + 0) có th vi t 01*+ 0
Chú ý 1 : Khi vi t m t BTCQ, cóth b cc du ngoc đ nc đ n
theo m c u tiên gim dn : ch ng hn vi t a* thay vì(a)*
Chú ý 2 : C th vi t a+bthay vìvit a∪b
Víd , biu th c ((0 (1*)) + 0) cóth vi t 01*+ 0
26/38
(2)
Bi u di n ngôn ng b i bi u th c chính qui Ngôn ng L(ξ) đ c bi u di n (hay đhay đ c ch đ đnh)
b i BTCQξtheo các b c quy n p nh sau:
1 L(∅) = ∅, L(ε) = { ε}, L(a) = { a } cho ∀a ∈Σ
2 L((α∪β)) = L(α) ∪L(β)
3 L((αβ)) = L(α)L(β)
4 L((α)*) = L(α)*
T (1) và(2) ta cótính ch t sau :
M t ngôn ng là chính qui n u và ch n u ngôn ng đ đ ó đ đ c ch đ đ nh b i m t bi u th c chính qui
Nh n xét : Các BTCQ c ng to thành m t ngôn ng
vìchúng lành ng xâu ký t trên bng ch Σ
27/38
Bao đ
Bao đ óng c a b ng ch Σ
Cho b ng ch Σ, khi đhi đó, L = { a | ∀a ∈Σ} làm t NNCQ
Bao đ
Bao đóng c a L làL* = Σ* làm t NNCQ cóvô h n câu
C th li t kê h t (đ m đm đ c) t t c c c câu c a Σ*
aaa aab aba abb baa bab bba bbb
1
28/38
Cho b ng ch Σ= { a, b },
cóth xây d ng đng đ c m t s NNCQ trên Σ nh sau :
L1= {ε, a, aa, aab } L1có4 câu L2= {w ∈Σ*| |w| ≤8 } L2g m các câu có đ đ d i ≤8
L3= {w ∈Σ*| |w| làm t s l } L3g m các câu có đ đ d i l
L4= {w ∈Σ*| na(w) = nb(w) }
= {ε, ab, ba, aabb, abab, baab, } L4g m các câu cós ch a đ a đúng b ng s ch b L5= {w ∈Σ*| w = wR}
= {ε, aa, bb, aba, bab, abba, baab, }
L5g m các câu đc câu đ i x ng (palindrome)
Cho b ng ch Σ, a ∈Σ, w ∈Σ* vàL ⊆Σ*
Khi đ
Khi đó:
ak= aa a k ch a liên ti p
wk= ww w ghép liên tip k câu w
Σk = ΣΣ Σ= {w ∈Σ*| |w| = k }
Lk= LL L ngôn ng gm các câu làghép k câu tu ý c a L
Tr ng h p đp đ c bi t k = 0 :
a0= w0= ε
Σ0 = L0 = { ε}
Chúý { ε} ≠∅:
{ ε} cómt câu làε
còn ∅không cócâu nào !
M t s tính ch t
V i quy c L(α) là NNCQ đbdb BTCQ NNCQ đbdb BTCQ α Khi đ
Khi đó: L(α) = L(β) khi vàch khi α= β Ngha là:
Hai BTCQ b ng nhau cùng bi u din m t NNCQ
ch ng minh rng hai t p h p A và B đã cho l B đã cho làb ng nhau
A = B
c n ch ra A⊂B vàB⊂A Ngha làc n CM hai chiu “⊂”v “⊃”
Trang 6Ch ng minh r ng :
L((a*b)*∪(b*a)*) = L((a ∪b)*) = Σ* v i Σ= { a, b }
Ngha làcác BTCQ :
(a*b)* ∪(b*a)* vàΣ*
cùng ch đ đnh m t ngôn ng chính qui
T nay v sau đ sau đ đ n gi đ n gi n, ta vi t w ∈αthay vìw ∈L(α)
L i gi i làCM hai chi u “⊂”v “⊃”:
“⊂” Rõ ràng (a*b)*∪(b*a)* ⊂Σ* vìΣ* là bao đ bao đóng
“⊃” : ch ng minh đing minh điu ng c l i, ta xét mt câu :
w = w1w2 wn∈Σ*
Cn ch ng minh w ∈(a*b)*∪(b*a)*
32/38
a*b (a*b)* a*b (a*b)*
Ch ng minh w ∈ (a*b)*∪(b*a)*
Gi s w = w1w2 wn∈Σ*
X y ra b n tr ng h p nh sau:
1.w = an, do đo đów ∈( εa )*⊂( b*a )* ⊂(a*b)*∪(b*a)*
2.w = bn, do đo đów ∈( εb )*⊂( a*b )* ⊂(a*b)*∪(b*a)*
3.w ch a a vàb, k t thúc b i b Ta có :
w = a ab b b a ab b b
Do đ
Do đó, w ∈(a*b)*∪(b*a)*
4.w ch a a vàb và t thúc b i a
T ng t
T ng t tr ng h p 3, ta c ng có:
w ∈L((a*b)*∪(b*a)*)
33/38
Nh n xét :
Các BTCQ làvô h n đn đ m đm đ c
Các BTCQ ch bi u din t p vô hn đn đ m đm đ c NNCQ,
nh ng không bi u din h t m i ngôn ng
T n t i nh ng ngôn ng phi chính qui
v không có đ đ các BTCQ đc BTCQ đ bi u din m i ngôn ng
M i ngôn ng không th làchinh qui:
T p h p các ngôn ng v t p h p các t p h p con c a m t
t p h p đp đ m đm đ c (tp h p các câu) là không đ không đ m đm đ c
T p h p các NNCQ là đ đ m đm đ c vìm i NNCQ đi NNCQ đ c bi u din
b i m t BTCQ vàt p h p các BTCQ là đ đ m đm đ c
S cónhi u ngôn ng khác v i NNCQ
34/38
Có vô h n không đ n không đ m đ m đ c ngôn ng
Σ = { a, b }
Σ= { a, b }
Σ* = { a, b }*
T p các NNCQ ℜ Các ngôn ng phi CQ
Có 2 n t p h p con c a m t t p h p A có n ph n t
N u A có vô h n đ m đ c ph n t thì 2 A có vô h n không đ m đ c ph n t
Có n t p h p con c a m t t p h p A có n ph n t
N u A có vô h n đ n đ m đ m đ c ph n t thì 2 A có vô h n không đ n không đ m đ m đ c ph n t
V n đ n đ bi u di n ngôn ng
M t ngôn ng trên b ng ch Σlàt p h p con c a Σ+
Cho L⊆Σ+, làm sao đm sao đ bi u di n h t m i câu w∈L ?
Khi L có u h n câu, ch vi c lit kê các câu
Khi L cóvô h n câu, không th li t kê h t các câu c a L,
màph i tìm cách bi u din h u hn :
Nu L gm các câu cómt s tính cht nht quán P nào đo đó,
dng tân t đ đ bi u dintính cht P đt P đó
L = { w∈Σ* | P(w) }
Nu L làNNCQ, s dng BTCQ αch đ đnh L :
L = L(α)
L tu ý, không phi làNNCQ : s dng ôtômat và v n phm
-Ôtômat đotômat đoán nhn câu c a mt ngôn ng
- v n phm s n sinh ra câu cho mt ngôn ng
Ngôn ng cóvô h n câu : L1= { ai⏐i làm t s nguyên t }, hay
= { a2, a3, a5, a7, …, a11, a13, …}
L2= { aibj⏐i ≥j ≥0 }, hay
= { ε, a, ab, aab, aabb, …}
làngôn ng gm các câu cómt dãy con a r i đi đ n m t dãy con b, trong đ
trong đós con a bên trái nhiu h n ho c b ng s con b bên ph i L3= (ab)*
= { ε, ab, abab, ababab, …}
làngôn ng gm các câu cócc cp ab tu ý (0 n c p)
Trang 7Ví d s n sinh ra câu c a ngôn ng
Cho L làngôn ng trên { a, b } đ c đc đnh ngha nh sau:
1 ε∈L
2 Nu w ∈L thìawb ∈L
3 L không còn câu nào khác n a (ngoài 1 và2)
Qui lu t s n sinh các câu c a L nh sau :
T (1), L = { ε}
Coi εlàw, t (2), ta cócâu awb = aεb = ab, L = { ε, ab }
Li do (2), ta cóL = { ε, ab, aabb, aaabbb, }
C th , ta cóm i câu c a L có ng aibi⏐∀i ≥0
C th bi u di n L d i d ng :
L = { aibi⏐∀i ≥0 }
38/38
Gi s đ đnh ngha ngôn ng L g m các câu w∈Σ∗:
Cóth thu g n w v câu r ng ε: w ⇒ε Thu g n b ng cách thay th d n các xâu con ab c a w b i ε
Víd :
w = ab ∈L vì : ab ⇒ε
w = aabbab ∈L vì : aabbab ⇒abab ⇒ab ⇒ε Coi a, b l n l t làc p d u ngo c đ n c đ n ( và) :
L g m các c p d u ngoc đ n cân bc đ n cân b ng nhaukhông cài nhau thu đ
thu đ c t m t bi u th c toán h c nào đo đó
Víd , t bi u th c (3*(x −y)) /(x + 1), th c hi n b h t các
ký hi u toán t v toán h ng, ta nhn đn đ c câu ngoc đ n c đ n cân b ng (())(), làcâu aabbab