Khái niệm ngôn ngữ lập trình (NNLT)
Văn phạm
Khái niệm văn phạm
Phân cấp các loại văn phạm của Chomsky
Văn phạm chính qui
Ôtômat đẩy xuống
Ngôn ngữ phi ngữ cảnh
Quan hệ với các ôtômat đẩy xuống
Tính chất của các ngôn ngữ phi ngữ cảnh
13 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1279 | Lượt tải: 0
Nội dung tài liệu Lý thuyết tính toán - Chương 3: Văn phạm và ôtômat đẩy xuống, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
DSĐX là
R/W Head
52/77
Định nghĩa hình thức ôđx
Một NSA là một bộ 7 : M Q, , , , Z, q0, A, trong đó :
Q là tập hợp hữu hạn các trạng thái
là bảng chữ vào hữu hạn Input Alphabet
là bộ chữ đẩy xuống hữu hạn Stack Alphabet
Z là ký tự đầu của DSĐX Initial Stack Symbol
q0 Q là trạng thái đầu
F Q là tập các trạng thái cuối
((Q * *) (Q *)) là quan hệ chuyển tiếp
gồm một tập hợp hữu hạn các quan hệ ((p, u, ), (q, ))
p, q Q ; u * ; , *
Có thể viết gọn quan hệ thành puq
53/77
Mô tả
Bộ chữ đẩy xuống của ôđx :
Chứa tập hợp các ký tự sẽ được đưa vào trong DSĐX
Không nhất thiết phân biệt với (có thể )
Ký tự Z là ký tự đầu hay nội dung ban đầu của DSĐX
Các chuyển tiếp ((p, u, ), (q, )) trong :
Tương tự một ôhh không đđ
Có thêm hoạt động chuyển tiếp của DSĐX :
Câu vào bắt đầu bởi tiền tố u : w = uw’
Ôtômat chuyển từ trạng thái p sang trạng thái q
Phầ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ào
Thay thế trên đỉnh DSĐX bởi câu phần
54/77
Các khái niệm
Người ta cũng định nghĩa một cách hình thức
tương tự các ôhh, nhưng có mặt của DSĐX các khái niệm :
Cấu hình
Chuyển tiếp một bước
Chuyển tiếp nhiều bước
Ôđx đoán nhận câu vào
NN được thừa nhận bởi ôđx
10
55/77
Ôđx thừa nhận câu vào
Cho ôđx MQ, , , , Z, q0, F và một câu vào w*
Ôđx thừa nhận câu w nếu quá trình đoán nhận đạt đến một
trong các trạng thái kết thúc :
Phần câu xử lí còn lại rỗng
(q0, w, Z) ├*M p, , với p F
Do ôđx M không đơn định, nên có thể có
nhiều phép đoán nhận khác nhau trên cùng một câu vào
56/77
Biểu diễn ôtômat đẩy xuống
Cho ôtômat M Q, , , , Z, q0, F
Có thể biểu diễn M tương tự các ôhh như sau :
Bằng cách liệt kê hết các thành phần của M
Dùng đồ thị
Thực tế, người ta thường dùng cách biểu diễn đồ thị
khi số trạng thái của ôtômat không quá lớn
57/77
Dùng đồ thị biểu diễn ôđx
Cho ôđx M Q, , , , Z, q0, F
quy ước vẽ M như sau :
q
> p
q
u, |
p
p là trạng thái đầu, p = q0
(p, u, , q,
q là trạng thái cuối, q F
58/77
Ví dụ 1 : ôđx đơn định
Ngôn ngữ { anbn | n 0 } được thừa nhận bởi ôđx M1 :
Q { s, p, q } { a, b } { A }, F { q }
gồm các chuyển tiếp :
s, a, s, A s, b, A p,
s, , Z q, p, b, A p, p, , Z q,
p
b, A|
q> s
a, |A b, A|
, Z|
, Z|
Vừa đọc vừa ghi nhớ
A vào DSĐX
n con a đã đọc
i
Đọc từng con b
và xoá đỉnh DSĐX
là con A
t
ỉ
l
Xử lý câu rỗng
anbn
l r
59/77
Ôđx M1 đoán nhận câu anbn
Cho câu vào a3b3, ôđx M1 thực hiện đoán nhận như sau :
saaabbbZ ├M1 saabbbAZ ├M1 sabbbAAZ ├M1 sbbbAAAZ ghi nhớ a
├M1 pbbAAZ ├M1 pbAZ ├M1 pZ kiểm tra b
q thừa nhận
Như vậy M1 thừa nhận các câu anbn, n0, ta viết L(M1) = anbn
p
b, A|
q> s
a, |A b, A|
, Z|
, Z|
60/77
Cách vẽ khác của ôđx M1
Có thể vẽ ôđx M1 theo cách khác như sau :
p
b, A|
q> s
a, Z|AZ
b, A|
, Z|
, Z|
a, A|AAZ
11
61/77
Ví dụ 2 : ôđx không đơn định
Ngôn ngữ {wwR} được thừa nhận bởi M2 như sau :
Q { s, p, q} { a, b } { A, B } F { q }
chứa các chuyển tiếp :
s, a, s, A s, , p, p, b, B p,
s, b, s, B p, a, A p, p, , z q,
Vừa đọc vừa ghi nhớ
A, B vào DSĐX
các con a, b đã đọc
i
,
,
Đọc từng con a, b
và xoá đỉnh DSĐX
là con A, B
t ,
ỉ
l ,
p
, |
q> s
a, |A a, A|
, Z|
, Z|Xử lý câu rỗng
wwR
l r b, |B b, B|
62/77
Ôđx M2 thừa nhận câu abba
Cho câu vào abba, ôđx M2 thực hiện đoán nhận như sau :
sabbaZ ├M1 sbbaAZ ├M2 sbaBAZ ghi nhớ a, b đã đọc
├M2 pbaBAZ chuyển dịch không đơn định
├M2 paAZ ├M2 pZ kiểm tra a, b để xoá A, B trên DSĐX
q thừa nhận câu abba (thành công)
p
, |
q> s
a, |A a, A|
, Z|
, Z|
Chuyển dịch
không đơn định
ị
ị
b, |A b, B|
63/77
Ôđx M2 đoán nhận câu abba thất bại
Vẫn câu vào abba, ôđx M2 thực hiện đoán nhận như sau :
sabbaZ ├M1 sbbaAZ ├M2 sbaBAZ ghi nhớ a, b đã đọc
├M2 saBBAZ ├M2 sABBAZ hóc : không thể đọc tiếp a hay b !
├M2 pABBAZ ??? cũng vẫn hóc : không thể đọc tiếp
ôtômat không thừa nhận câu abba !
p
, |
q> s
a, |A a, A|
, Z|
, Z|
Chuyển dịch
không đơn định
ị
ị
b, |B b, B|
64/77
Ví dụ ôđx kđđ hai trạng thái
Có thể xây dựng ôđx M3 gồm chỉ hai trạng thái
M3 thừa nhận ngôn ngữ wwR với DSĐX rỗng :
Q { s, p } { a, b } { A, B } F { p }
gồm các chuyển tiếp :
s, a, s, A s, , p, p, b, B p,
s, b, s, B p, a, A p, p, , Z p,
, |
a, |A a, A|
b, |B
b, B|
, Z|
, Z|
p> s
65/77
Văn phạm phi ngữ cảnh
Theo phân cấp VP của Chomsky, VP phi ngữ cảnh (PNC) :
G N, , R, S
gồm các sản xuất dạng A
với A N, (N)* = V*, không có hạn chế gì trên
Từ G, có thể định nghĩa NN PNC :
L = L(G)
Một NN L là PNC nếu tồn tại một VP PNC sản sinh ra L
66/77
Ví dụ các VP2
Dưới đây làmột số VP PNC :
G1 { S aSb | } L(G1) = anbn, n0
G2 { S aSa | bSb | } L(G1) = wwR
G3 { S aB | bA | A bAA | aS B bS | aBB }
L(G3) gồm các câu chứa cùng số chữ a và chữ b trong một
thứ tự nào đó
G4 { S aAS | a A SbA | SS | ba }
L(G4) = ?
12
67/77
Quan hệ giữa VP2 và ôđx
Các ngôn ngữ thừa nhận bởi các ôtômat đẩy xuống có thể
được sinh bởi các văn phạm PNC và ngược lại
Đị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à VP2 và M là ôđx
68/77
Tính chất của các ngôn ngữ PNC
Cho L1 và L2 là hai NN PNC, ta có các tính chất sau :
Các ngôn ngữ sau là phi ngữ cảnh :
L1 L2 phép hợp của hai NN PNC
L1 . L2 phép ghép tiếp hai NN PNC
L1* lấy bao đóng của một NN PNC
Ngôn ngữ :
L1 L2 phép giao của hai NN PNC
không hẳn là phi ngữ cảnh !
Tuy nhiên ngôn ngữ :
LR L2 là PNC với LR là NNCQ và L2 là PNC
69/77
Vấn đề tạo sinh câu của VP PNC
Cho VP PNC G (N, , R, S) có L = L(G)
Khi áp dụng các sản xuất để tạo sinh câu, thứ tự áp dụng
là không quan trọng :
Xuất phát từ ký tự đầu S, có thể áp dụng tuỳ ý các sản xuất,
hay dùng các dẫn xuất khác nhau trong G đều có thể tạo ra
cùng một câu
Tính “phi ngữ cảnh” thể hiện ở chỗ : một ký tự không kết
thúc AN có thể đựơc thay thế độc lập với các ký tự bao
xung quanh (trước A và sau A), không phụ thuộc vào “ngữ
cảnh”
Tính không quan trọng về thứ tự khi áp dụng các sản xuất
là đặc trưng của các NN PNC
70/77
Ví dụ có nhiều cách suy dẫn
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ách suy dẫn khác nhau để sinh ra w :
Cách 1 (dãy các SX là 124324) :
S 1 SS 2 aSaS 4 aaS 3 aabSb 2 aabaSab 4 aabaab
Cách 2 (dãy các SX là 132424) :
S 1 SS 3 SbSb 2 SbaSab 4 Sbaab 2 aSabaab 4 aabaab
V.v...
Sự khác nhau của các cách suy dẫn ra w
là thứ tự áp dụng các sản xuất của G
71/77
Ví dụ hiện tượng nhập nhằng
Trong NN tự nhiên nói chung, tiếng Việt nói riêng,
thường xuyên xảy ra các hiện tượng nhập nhằng
Nhập nhằng về từ loại :
Học sinh học sinh học
Nhập nhằng về nghĩa :
Ông già đi nhanh quá
Nhập nhằng về phát âm :
Bà Ba bốn bận bán bánh
Nhập nhằng về tiếng Việt không dấu :
Nha may Co khi Gia Lam
72/77
Văn phạm nhập nhằng
Cho VP PNC G :
VP G đgl nhập nhằng (Ambiguous Grammar) khĩ
Có hai cây phân tích cùng suy dẫn cho một câu wL(G)
Cho L là NN PNC :
NN L đgl nhập nhằng cố hữu
(Inherently Ambiguous Language) khĩ
NN L được sinh bởi nhiều VP khác nhau
L = L(G1) = L(G2) = ...
và tất cả các văn phạm G1, G2 ... này đều nhập nhằng
Cho VP PNC G nhập nhằng :
Có thể biến đổi G về G’ tương đương, L(G’) = L(G), sao cho
G không còn là văn phạm nhập nhằng
13
73/77
Ví dụ văn phạm nhập nhằng
Cho VP PNC G có các SX :
{ E E+E 1 | E*E 2 | a 3 }
VP G nhập nhằng vì có hai cây PT sinh ra câu w=a+a*a :
E 1 E+E 3 a+E 2 a+E*E 3 a+a*E 3 a+a*a
E 2 E*E 1 E+E*E 3 a+E*E 3 a+a*E 3 a+a*a
E
E
E
a*a a+
1
3
2
E
E E3 3
E
E
E
a + aa *
1
2
E E3 3 3
E
74/77
Một số ví dụ khác về VP nhập nhằng
Các VP sau đây đều :
G1 { S aSa | bSb | a | b | }
G2 { S aS | Sa | a }
Bài tập :
Cho ví dụ minh họa tính nhập nhằng
của G1 và G2 ?
i
í i í
75/77
Bài tập chương 4
1. Mô tả các ôhh đẩy xuống thừa nhận các NN sau đây :
a) anbncm
b) anbmcn
2. Tìm văn phạm PNC sản sinh 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à PNC
Phần bù của ngôn ngữ này cũng là PNC ?
Gợi ý : hội của các ngôn ngữ PNC cũng là PNC
4. Chứng minh rằng NN { an | n là số nguyên tố }
không là PNC
76/77
Hướng dẫn 1
Mô tả các ôhh đẩy xuống thừa nhận NN L = anbncm
Vẽ Ođx thừa nhận anbn (đã biết cách vẽ)
Vẽ tiếp Ođx chỉ đọc cm (không cần ghi nhớ vào DSĐX)
77/77
Hướng dẫn 2
Tìm văn phạm PNC sản sinh ngôn ngữ anbncm
Ý tưởng : vận dụng VP G’ mà L(G’) = anbn sau đó thêm cm
Xây dựng G’ { S aSb | } có L(G’) = anbn
Thêm cm để nhận được G như sau :
G { S AB A aAb | B cB | }
Quả thật, L(G) = anbncm
Các file đính kèm theo tài liệu này:
- lt3_ch3_vanphamodx_6774.pdf