Bài Ging Môn hc: OTOMAT VÀ NGÔN NG HÌNH THC
TS. Nguyn Văn Định, Khoa CNTT
Li nói đầu
Ngôn ng là phương tin để giao tiếp, s giao tiếp có th hiu là giao tiếp gia con
người vi nhau, giao tiếp gia người vi máy, hay giao tiếp gia máy vi máy. Ngôn ng để
con người có th giao tiếp vi nhau được gi là ngôn ng t nhiên, chng hn như tiếng Anh,
tiếng Nga, tiếng Vit… là các ngôn ng t nhiên. Các quy tc cú pháp ca ngôn ng t nhiên
nói chung rt phc tp nhưng các yêu cu nghiêm ngt v ng nghĩa thì li thiếu cht ch,
chng hn cùng mt t hay cùng mt câu ta có th hiu chúng theo nhng nghĩa khác nhau
tùy theo tng ng cnh c th. Con người mun giao tiếp vi máy tính tt nhiên cũng thông
qua ngôn ng. Để có s giao tiếp gia người vi máy hay gia máy vi nhau, cn phi có mt
ngôn ng vi các quy tc cú pháp cht ch hơn so vi các ngôn ng t nhiên, nói cách khác,
vi mt t hay mt câu thì ng nghĩa ca chúng phi là duy nht mà không ph thuc vào
ng cnh. Nhng ngôn ng như thế được gi là ngôn ng hình thc. Con người mun máy
tính thc hin công vic, phi viết các yêu cu đưa cho máy bng ngôn ng máy hiu được.
Vic viết các yêu cu như thế gi là lp trình. Ngôn ng dùng để lp trình được gi là ngôn
ng lp trình. Các ngôn ng lp trình đều là các ngôn ng hình thc.
C ngôn ng hình thc ln ngôn ng t nhiên đều có th xem như nhng tp các t,
tc là các xâu hu hn các phn t ca mt b ch cái cơ s nào đó. V mt truyn thng, lý
thuyết ngôn ng hình thc liên quan đến các đặc t cú pháp ca ngôn ng nhiu hơn là đến
nhng vn đề ng nghĩa. Mt đặc t v cú pháp ca mt ngôn ng có hu hn t, ít nht v
nguyên tc, có th được cho bng cách lit kê các t. Điu đó không th áp dng đối vi các
ngôn ng có vô hn t. Nhim v chính ca lý thuyết ngôn ng hình thc là nghiên cu các
cách đặc t hu hn ca các ngôn ng vô hn.
Lý thuyết tính toán cũng như ca nhiu ngành khác nhau ca nó, chng hn mt mã
hc, có liên quan mt thiết vi lý thuyết ngôn ng. Các tp vào và ra ca mt thiết b tính toán
có th được xem như các ngôn ng và nói mt cách sâu sc hơn thì các mô hình tính toán có
th được đồng nht vi các lp các đặc t ngôn ng theo nghĩa mà trong bài ging này chúng
ta s nêu chính xác hơn. Chng hn, các máy Turing có th được đồng nht vi các văn phm
cu trúc câu, các otomat hu hn có th đồng nht vi các văn phm chính quy.
Môn hc otomat và ngôn ng hình thc nhm trang b cho sinh viên các năm cui ca
ngành Tin hc các khái nim v ngôn ng hình thc, các otomat, máy Turing…Trên cơ sơ đó,
sinh viên có th hiu sâu hơn cu trúc các ngôn ng lp trình, các chương trình dch cũng như
bn cht ca thut toán và độ phc tp tính toán ca chúng.
Trong khi chưa có điu kin biên son mt giáo trình cho môn hc này, chúng tôi tm
thi cung cp cho sinh viên ngành Tin hc tp bài ging này, để làm tài liu tham kho và hc
tp. Do thi gian biên son có hn nên chc rng tp bài ging này còn nhiu thiếu sót, rt
mong nhn được nhng ý kiến đóng góp ca các em sinh viên và đồng nghip.
1
Chương 1
VĂN PHM VÀ NGÔN NG HÌNH THC
Trong chương này, chúng ta đề cp đến mt s khái nim và kết qu cơ bn liên quan
đến văn phm và ngôn ng hình thc.
§ 1. Các khái nim cơ bn v ngôn ng hình thc
1.1 Bng ch cái
1.2 T
1.3 Ngôn ng
§ 2. Các phép toán trên các t
2.1 Phép nhân ghép
2.2 Phép ly t ngược
2.3 Phép chia t
§ 3. Các phép toán trên ngôn ng
3.1 Phép hp
3.2 Phép giao
3.3 Phép ly phn bù
3.4 Phép nhân ghép
3.5 Phép lp
3.6 Phép ly ngôn ng ngược
3.7 Phép chia ngôn ng
§ 4. Văn phm và ngôn ng sinh bi văn phm
4.1 Định nghĩa văn phm
4.2 Ngôn ng sinh bi văn pham
4.3 Phân loi văn phm theo Chomsky
§ 5. Các tính cht ca văn phm và ngôn ng
5.1 Tính cht ca văn phm và dn xut
5.2 Tính đóng ca lp ngôn ng sinh bi văn phm
2
§1. Các khái nim cơ bn v ngôn ng hình thc
1.1 Bng ch cái
Định nghĩa 1.1 Tp Σ khác rng gm hũu hn hay vô hn các ký hiu được gi là bng ch
cái. Mi phn t a Σ được gi là mt ch cái hay mt ký hiu.
Thí d 1.1 Dưới đây là các bng ch cái:
1. = {a, b, c, … , x, y, z}
2. Δ = {α, β, γ, δ, ε, η, ϕ, κ, μ, χ, ν, π, θ, ρ, σ, τ, ω,ξ, ψ},
3. Г = {0, 1},
4. W = {if, then, else, a, b, c, d, e, f, +, , , /, =, }.
1.2 T
Định nghĩa 1.2 Gi s có bng ch cái Σ = {a1, a2, …, am}, mt dãy các ch cái α = ai1 ai2
…ait, vi aij Σ (1 j t) được gi là mt t hay mt xâu trên bng ch cái Σ.
Tng s v trí ca các ký hiu xut hin trong xâu α được gi là độ dài ca t α và ký hiu là
| α |.
Như vy, mt t trên bng ch cái Σ là mt xâu hu hn gm mt s ln hơn hay bng không
các ch cái ca Σ, trong đó mt ch cái có th xut hin nhiu ln.
Xâu không có ch cái nào được gi là t rngđược ký hiu là ε. Rõ ràng t rng là t
thuc mi bng ch cái.
Hai t α = a1a2…anβ = b1b2…bm được gi là bng nhau, và được ký hiu là α = β, nếu n =
m và ai = bi vi mi i = 1, 2, …, n.
Nếu α là mt t trên bng ch cái Σ, và Σ Δ thì α cũng là t trên bng ch cái Δ.
Tp mi t trên bng ch cái Σ được ký hiu là Σ* , còn tp mi t khác rng trên bng ch
cái Σ được ký hiu là Σ+. Như vy Σ+ = Σ* \ {ε} và Σ* = Σ+ {ε}. D thy rng các
tp Σ* Σ+ là vô hn.
V cu trúc đại s thì Σ* là mt v nhóm t do sinh bi Σ vi đơn v là t rng ε, còn
Σ+ là mt na nhóm t do sinh bi Σ. Có th chng minh đưc rng các tp Σ*Σ+ là vô hn
đếm được.
Thí d 1.2
1. Ta có ε , 0, 01, 101, 1010, 110011 là các t trên bng ch cái Г = {0,1}
2. Các xâu ε, beautiful, happy, holiday là các t trên bng ch cái Σ = {a, b, c, …, z}.
3
1.3 Ngôn ng
Định nghĩa 1.3 Cho bng ch cái Σ, mt tp con L Σ* được gi là mt ngôn ng hình thc
(hay ngôn ng) trên bng ch cái Σ.
Tp rng, ký hiu , là mt ngôn ng không gm mt t nào và được gi là ngôn ng rng.
Vy ngôn ng rng là ngôn ng trên mi bng ch cái.
Chú ý rng ngôn ng rng: L = là khác vi ngôn ng ch gm mt t rng: L = {ε}.
Thí d 1.3
1. Σ* là ngôn ng gm tt c các t trên Σ còn Σ+ là ngôn ng gm tt c các t khác t trng
trên Σ.
2. L = { ε, 0, 1, 01, 10, 00, 11, 011,100} là mt ngôn ng trên bng ch cái Г = {0, 1}.
} là ngôn ng trên bng ch cái Σ = {a, b, c}. 3. L = {a, b, c, aa, ab, ac, abc
4. L1 = {ε, a, b, abb, aab, aaa, bbb, abab}, L2 = {anbn | n N} là hai ngôn ng trên bng ch
Σ = {a, b}, L1 là ngôn ng hu hn trong khi L2 là ngôn ng vô hn. Mi t thuc ngôn
ng L2 có s ch cái a bng s ch cái b vi a và b không xen k, a nm phía trái và b
phía phi ca t
§2. Các phép toán trên các t
Các phép toán dưới đây thc hin trên các t trên cùng mt bng ch cái Σ, to nên các t
mi cũng thuc cùng mt bng ch cái.
2.1 Phép nhân ghép
Định nghĩa 2.1 Tích ghép (hay nhân ghép) ca hai t α = a1a2…am và t β = b1b2…bn trên
bng ch cái Σ, là t γ = a1a2…amb1b2…bn trên bng ch cái Σ.
Kí hiu phép nhân ghép là γ = α.β (hay γ = αβ).
Nhn xét: T định nghĩa 2.1, ta thy:
T rng là phn t đơn v đối vi phép nhân ghép, tc là: ωε = εω = ω đúng vi mi t ω.
Phép nhân ghép có tính kết hp, nghĩa là vi mi t α, β, γ, ta có (αβ)γ = α(βγ).
Ký hiu ωn, vi n là s t nhiên, được dùng theo nghĩa quen thuc:
>
=
=
=
.1
,1
,0
1nkhi
nkhi
nkhi
n
n
ωω
ω
ε
ω
4
Đối vi phép nhân ghép thì hàm độ dài có mt s tính cht hình thc ca lôgarit: vi mi
t α, β và mi s t nhiên n, thì:
|αβ| = |α| + |β|, và
|αn| = n|α|.
Và rõ ràng là vi phn t đơn v, tc là t rng ε, thì | ε | = 0.
Chng minh các kết qu trên là khá d dàng, xin dành cho sinh viên như là bài tp.
Mt vài khái nim liên quan
Đối vi các t ω, t1, φ, t2 trên bng ch cái Σω = t1φt2 thì *φ * ( * không phi là mt
ký hiu ca Σ) gi là mt v trí ca φ trên Σ.
Xâu φ được gi là mt t con trong ω nếu tn ti ít nht mt v trí ca φ trong ω.
Nếu t1 = ε, tc là ω = φ t2 thì φ được gi là tin t (phn đầu) ca t ω, nếu t2 = ε, tc là ω
= t1φ thì φ được gi là hu t (phn cui) ca t ω. D thy rng t rng ε là phn đầu,
phn cui và là t con ca mt t ω bt k trên bng ch cái Σ.
Trường hp | φ | = 1, tc là φ ch gm 1 ký hiu, chng hn φ = b Σ, thì *b* được gi là
mt v trí ca b trong t ω, cũng gi là mt đim trong ω.
S v trí ca kí hiu a trong t ω được ký hiu là Ia(ω), hay |ω|a hoc đơn gin hơn là ω|a.
Thí d 2.1
1. Trên bng ch cái W = {if, then, else, a, b, c, d, e, f, +, , , /, =, }, ta có các t α = if
a+b=c then cd=e và β = else c/d=f , còn αβ là t: if a+b=c then cd=e else c/d=f.
2. Cho Σ = {a, b, c}, khi đó: T ω = abcbcb cha 2 v trí ca bcb, đó là a*bcb*cb và
abc*bcb*, φ = bcb là mt t con ca ω. T ω cha mt v trí ca ký hiu a, đó là
*a*bcbcb.
3. T ω = 010111001 trên bng ch cái {0, 1} có độ dài 9, trong đó 0101 là tin t và 11001
là hu t ca ω.
2.2 Phép ly t ngược
Định nghĩa 2.2 Gi s có t khác rng ω = a1a2 …am trên bng ch cái Σ, khi đó t am am-1
… a2 a1 được gi là t ngược (hay t soi gương) ca t ω, và được ký hiu là ωR , hay ω^ .
Khi ω = ε ta quy ước εR = ε.
Nhn xét: D thy rng phép ly t ngược có các tính cht sau:
(ωR)R = ω.
(αβ)R = βR αR
| αR | = | α |.
5