1
Chương 2
Ngôn ngữ, văn phạm và
ôtômát
2
Ni dung
Ba khái niệm bản
1. Ngôn ngữ (languages)
Khái niệm ngôn ngữ
Biểu diễn ngôn ngữ
H viết lại vấn đề biểu diễn ngôn ngữ.
2. Văn phạm (grammar)
Định nghĩa văn phạm
Sự phân cấp văn phạm
3. Ôtômat (automata)
3
Tng quan v ngôn ng:
Ngôn ngữ tự nhiên:tiếng Việt,tiếng Anh, …
Ngôn ngữ lập trình: Pascal, C/C++, …
ĐN ngôn ngữ trong các từ điển:
tập hợp các câu theo cấu trúc quy định nào đó
Biểu thị các ý nghĩ, các sự kiện hay các khái niệm
Bao gồm một tập các hiệu các quy tắc để vận dụng chúng
Định nghĩa trên chưa đủ chính xác để nghiên cứu về ngôn
ngữ hình thức (ngôn ngữ dùng chung cho cả ngôn ngữ tự
nhiên lẫn ngôn ngữ lập trình). Chúng ta cần xây dựng một
định nghĩa toán học cho khái niệm về ngôn ngữ.
4
Ký hiu, b ch cái, chui
hiệu (symbol):
dụ: các chữ cái a,b,c,; các chữ số 1,2,3,
Bộ chữ cái (alphabet hay bảng chữ cái) Σ : một tập hợp không rỗng
các hiệu
Bảng chữ cái La : {I, V, X, L, C, D, M}
Bảng chữ số nhị phân: {0, 1}
Bảng chữ số thập phân: {0,1,2,,9}
Bảng chữ cái Latinh :{A, B, C, ... , Z, a, b, c, ... , z}
Bảng chữ cái Hi Lạp: {, β, γ, ,}
Qui ước:
Bộ chữ cái thường dùng Σ = {a,b,c} , Σ = {0,1}
Các hiệu u,v,w,x,y,z,t dùng gọi cho tên chuỗi.
2
5
Ký hiu, b ch cái, chui
Chuỗi (Xâu, string) một dãy hữu hạn các hiệu xếp liên tục
nhau gồm:
Các hiệu thuộc Σ
Mỗi hiệu thể xuất hiện nhiều lần
dụ: 010001 một chuỗi trên bộ chữ cái Σ = {0, 1}
w = abbcab một chuỗi trên bộ chữ cái Σ = {a,b,c}
Độ dài chuỗi w, hiệu bởi |w|, số những hiệu hợp thành w.
Chẳng hạn |010001| = 6.
Chuỗi rỗng, hiệu (hay ), chuỗi độ dài 0, tức chuỗi
không hiệu nào.
Chuỗi con: Chuỗi v được gọi chuỗi con của chuỗi w nếu v được
tạo bởi một dãy các hiệu kề nhau trong w.
Chẳng hạn ab, abb, bc, cb các chuỗi con của chuỗi abbcb.
6
Ký hiu, b ch cái, chui
Chuỗi tiền tố: một chuỗi con bất kỳ nằm đầu chuỗi đó.
Chuỗi hậu tố: một chuỗi con bất kỳ nằm cuối chuỗi đó.
dụ: chuỗi abc các tiền tố , a, ab, abc các hậu tố
, c, bc, abc.
Chuỗi nối kết (ghép): hiệu bởi vw, một chuỗi được tạo
bằng cách viết v rồi viết w tiếp theo sau, không khoảng cách.
dụ: ghép Long Int LongInt.
Nối kết với chuỗi rỗng: εw = = w (w)
khi đó ε đơn vị của phép nối kết
|uv| = |u| + |v|
|εw| = || = |w|
7
Ký hiu, b ch cái, chui
Đảo ngược của một chuỗi u, hiệu uR : chuỗi u viết theo
thứ tự ngược lại, nghĩa nếu:
u = a1a2an thì uR = anan-1a1.
Đương nhiên R = .
Phép lũy thừa: Cho w một chuỗi
w0 =
w1 = w
w2 = ww
w3 = ww2
wn = wwn-1
8
Khái nim v bao đóng sao và bao đóng dương
* +: (bao đóng sao bao đóng dương)
* : tập hợp tất cả các chuỗi con được sinh ra từ bộ chữ cái ,
kể cả chuỗi rỗng ε.
+ : tập hợp tất cả các chuỗi con, được sinh ra từ bộ chữ cái ,
ngoại trừ chuỗi rỗng ε.
* = + + {ε} + = * - {ε}
= {0,1} thì:
* = {ε, 0, 1, 00, 01, 10, 11, 000, …}
+ = {0, 1, 00, 01, 10, 11, 000, …}
Chuỗi 010210 * số 2
Rõ ràng Σ thì hữu hạn còn Σ* và Σ+ thì vô hạn đếm được
3
9
Ngôn ng (Languages)
Một ngôn ngữ (hình thức) L một tập con của Σ* hay nói cách khác
một tập hợp các chuỗi của các hiệu được sinh ra từ bộ chữ cái
Σ.
dụ: Cho Σ = {a, b}
Σ* = {, a, b, aa, ab, ba, bb, aaa, aab, … }
Ta :
L = ngôn ngữ trên bộ chữ cái Σ tùy ý
L = {} ngôn ngữ trên bộ chữ cái Σ tùy ý
L = {a, aa, aab} một ngôn ngữ hữu hạn trên Σ = {a,b}
L = {(ab)n | n 0 } một ngôn ngữ hạn trên Σ ={a,b}
L = {an bn | n ≥ 0 } một ngôn ngữ hạn trên Σ = {a,b}
L = {0n 1n | n ≥ 0 } một ngôn ng hạn trên Σ = {0,1}
10
Từ các ngôn ngữ trước, ta thể thu được các ngôn ng mới nhờ áp
dụng các phép toán lên ngôn ngữ. Các phép toán trên tập hợp đều thể
áp dụng lên các ngôn ngữ.
Phép phần (complement):
= * - L
Phép nối kết (concatenation):
L1L2 = {w1w2 | w1 L1 w2 L2} trên bộ chữ cái Σ1 Σ2
L0 = {ε}
L1 = L
L2 = LL
L3=LL2
Ln = L Ln-1
Các phép toán trên ngôn ng
L
11
Phép bao đóng (closure): Thành lập một ngôn ngữ bằng cách kết nối
các chuỗi (với số lượng bất kỳ) các chuỗi của một ngôn ngữ L cho
trước:
Bao đóng sao của một ngôn ngữ L, hiệu L*
L* = L0 L1 L2
Trong đó Li cho bởi định nghĩa đệ quy sau:
L0 = {}
Li = LLi-1 với i 1.
Bao đóng Kleene: L* =
𝐿𝑖
𝑖=0
Bao đóng dương (positive): L+ =
𝐿𝑖
𝑖=1 = L1 L2 L3 Ln
Chú ý: L* = L0 + L+
Các phép toán trên ngôn ng
dụ: cho L = {a, ba} trên bộ chữ cái = {a,ba}
L2 = {aa, aba, baa, baba}
L3 = {aaa, aaba, abaa, ababa, baaa,baaba, babaa,
bababa}
L* = {ε, a, ba, aa, aba, baa, baba, aaa, aaba, …}
L+ = { a, ba, aa, aba, baa, baba, aaa, aaba, …}
Đôưu tiên ca php ton : (1)bao đóng, (2)ghp,
(3)hợp
12
4
13
Biu din ngôn ng
1. Cách 1: Liệt chuỗi: L = {aa, aba, baa, baba}
2. Cách 2: tả đặc điểm ch yếu: L = {ai | i số nguyên tố}
3. Cách 3: Biểu diễn thông qua văn phạm automata:
Cho phép biểu diễn ngôn ngữ một cách tổng quát
Văn phạm: chế sản sinh ra mọi chuỗi của ngôn ngữ
VD văn phạm tập qui tắc: P={Câu đơn Chủ ngữ Vị ngữ;
….} chế sản sinh ra mọi câu đơn của Tiếng Việt.
Automata: chế cho phép đoán nhận một chuỗi bất kỳ
thuộc một ngôn ngữ L hay không?
14
H viết li và vn đ biu din ngôn ng (tt)
Ta thường biểu diễn ngôn ngữ bằng một văn phạm hay một Ôtômát. Văn
phạm hay Ôtômát gọi hệ viết lại (written rule).
dụ 1: Cho L một ngôn ngữ trên bộ chữ ={a, b}, L định nghĩa như sau:
(1) L
(2) Nếu X L, thì aXb L.
(3) Không còn chuỗi nào khác thuộc L
Ban đầu, do (1), tachuỗi L. Xem X thì do (2) ta sẽchuỗi ab L
tức chuỗi ab L. y giờ xem ab như X thì do (2) ta sẽ aabb L.
Tương tự taaaabbb L, …cứ thế tiếp tục ta có các chuỗi aibi L (i≥0).
Trên đây cho ta một quy tắc viết lại chuỗi.
Dễ nhận thấy rằng ngôn ngữ cần tìm L = {aibi| i = 0, 1, 2, }
15
H viết li và vn đ biu din ngôn ng (tt)
dụ 2: Ngôn ngữ L được định nghĩa tập tất cả các chuỗi
thể thu về chuỗi rỗng bằng một dãy phép thay thế các
chuỗi con ab bởi . Định nghĩa này cho ta một cách đoán
nhận một chuỗi bất kỳ thuộc ngôn ngữ hay không.
Đoán nhận cũng một quy tắc viết lại chuỗi. Chẳng hạn sau
đây một quá trình đoán nhận trong đó chuỗi con ab thay
thế được gạch dưới.
aabbab
abab
ab
Như thế chuỗi aabbab thuộc ngôn ngữ L
16
H viết li và vn đ biu din ngôn ng (tt)
Định nghĩa: Một hệ viết lại một bộ đôi W = (Σ, P) trong
đó Σ bộ chữ cái P tập hợp hữu hạn các cặp chuỗi
trên Σ. Một phần tử (Σ, w) của P được gọi một quy tắc
viết lại hay một sản xuất thường viết Σ w.
ĐN suy dẫn trực tiếp: Ta nói chuỗi x trên Σ suy dẫn trực
tiếp chuỗi y, viết x Wy hoặc viết gọn x y khi hệ W
đã rõ, khi chỉ khi tồn tại các chuỗi x1, Σ, x2 w sao cho
x = x1 Σ x2, y = x1wx2, Σ w một sản xuất trong P.
5
17
H viết li và vn đ biu din ngôn ng (tt)
ĐN suy dẫn gián tiếp: Ta nói chuỗi x suy dẫn chuỗi
y, viết x * y,
hoặc viết gọn x *y khi hệ W đã , khi chỉ khi
tồn tại một dãy các chuỗi trên Σ dạng x0, x1, , xk
với k 0 sao cho x0 = x, xk = y, xi suy dẫn trực
tiếp xi+1 đối với 0 i k-1 .
w
H viết li và vn đ biu din ngôn ng (tt)
Qui tắc viết gộp: Nếu trong P, ta một loạt
các sản xuất cùng một vế trái dạng
Σ w1
Σ w2
Σ wn
thì các sản xuất đó thường được viết gộp vế trái :
Σ w1| w2| …| wn
18
19
H viết li vn đ biu din ngôn ng (tt)
Các ngôn ngữ cho các dụ 1 dụ 2 ở trên
thể biểu diễn bởi hệ viết lại như sau:
Ngôn ngữ Hệ viết lại
dụ 1: Cho L một ngôn ngữ trên bộ chữ {a, b}, định
nghĩa như sau:
L
Nếu X L, thì aXb L.
Vậy L = {ai bi | i ≥ 0}
Ls(W, {X}) {a, b}*,
trong đó:
W = ({a, b, X}, {X ,
X aXb}).
dụ 2: Ngôn ngữ L được định nghĩa tập tất cả các
chuỗi thể thu về chuỗi rỗng bằng một dãy phép thay
thế các chuỗi con ab bởi . Định nghĩa này cho ta một
cách đoán nhận một chuỗi thuộc ngôn ngữ hay không?
Trường hợp này L không thể biểu diễn!
Lđ = (W, {}),
trong đó:
W = ({a, b}, {ab }).
20
Văn phm là gì?
Các từ điển định nghĩa văn phạm một cách không chính xác
một tập các qui tắc về cấu tạo từ các qui tắc về cách
liên kết các từ lại thành câu.
Ví dụ:
Cho đoạn văn phạm tiếng Anh sau
<sentence> <noun phrase><predicate>,
<noun phrase> <article><noun>,
<predicate> <verb>,
<article> a | the,
<noun> boy | dog,
<verb> runs | walks,