Lý do chọn đề tài Văn phạm phi ngữ cảnh là một là mô hình toán học sản sinh ralớp ngôn ngữ phi ngữ cảnh.Văn phạm phi ngữ cảnh cho phép mô tả cácbiểu thức số học trong các dấu ngoặc lồng
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
LUẬN VĂN THẠC SĨ TOÁN HỌC
Người hướng dẫn khoa học:
TS KIỀU VĂN HƯNG
Hà Nội - 2018
Header Page 2 of 128.
Trang 3LỜI CẢM ƠN
Sau một thời gian cố gắng, nỗ lực học tập và nghiên cứu, đến naytôi đã hoàn thành luận văn tốt nghiệp thạc sĩ của mình Để có được kếtquả này, tôi xin bày tỏ lòng biết ơn sâu sắc và lời cảm ơn chân thànhnhất đến thầy giáo, TS Kiều Văn Hưng, người đã định hướng nghiêncứu và truyền thụ kiến thức cho tôi trong suốt thời gian thực hiện luậnvăn của mình
Tôi xin chân thành cảm ơn sự giúp đỡ quý báu của các thầy côgiáo trong bộ môn Toán Ứng dụng nói riêng và khoa Toán, trường Đạihọc Sư phạm Hà Nội 2 nói chung
Xin cảm ơn những người thân trong gia đình và tất cả những ngườibạn thân yêu đã hết sức thông cảm, chia sẻ và tạo điều kiện tốt nhất chotôi để tôi có thể học tập, nghiên cứu và thực hiện luận văn của mình
Tôi rất mong nhận được sự đóng góp ý kiến của các thầy cô và cácbạn để luận văn được hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Hà Nội, ngày 08 tháng 06 năm 2018
Tác giả luận văn
Đặng Văn Quân
Header Page 3 of 128.
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan luận văn này là công trình nghiên cứu của riêngtôi, được thực hiện dưới sự hướng dẫn của thầy giáo TS Kiều Văn Hưng
Trong quá trình nghiên cứu, tôi đã kế thừa thành quả khoa họccủa các nhà khoa học với sự trân trọng và biết ơn Các kết quả trích dẫntrong luận văn này đã được chỉ rõ nguồn gốc
Hà Nội, ngày 08 tháng 06 năm 2018
Tác giả luận văn
Đặng Văn Quân
Header Page 4 of 128.
Trang 5Mục lục
1.1 Ngôn ngữ và biểu diễn ngôn ngữ 8
1.1.1 Ngôn ngữ 8
1.1.2 Biểu diễn ngôn ngữ 14
1.2 Văn phạm 15
1.3 Ngôn ngữ phi ngữ cảnh 18
2 Văn phạm phi ngữ cảnh 20 2.1 Định nghĩa 20
2.2 Cây dẫn xuất trong văn phạm phi ngữ cảnh 25
2.3 Các chiến lược phân tích cú pháp 29
3 Ứng dụng của văn phạm phi ngữ cảnh 35 3.1 Tổng quan về ứng dụng của văn phạm phi ngữ cảnh 36
3.2 Một số thuật toán phân tích cú pháp 43
Header Page 5 of 128.
Trang 63.2.1 Thuật toán Left to right parse - Leftmost
deriva-tion (LL) 433.2.2 Thuật toán Earley 473.2.3 Thuật toán Cocke-Younger-Kasami (CYK) 49
Header Page 6 of 128.
Trang 7Mở đầu
1 Lý do chọn đề tài
Văn phạm phi ngữ cảnh là một là mô hình toán học sản sinh ralớp ngôn ngữ phi ngữ cảnh.Văn phạm phi ngữ cảnh cho phép mô tả cácbiểu thức số học trong các dấu ngoặc lồng nhau hay những cấu trúc khốitrong ngôn ngữ lập trình, có nhiều ứng dụng thực tế rất quan trọng, đặcbiệt là trong phân tích cú pháp
Ngôn ngữ hình thức được nhà ngôn ngữ học nổi tiếng Noam sky phân ra làm bốn loại: ngôn ngữ ngữ cấu (nhóm 0), ngôn ngữ cảmngữ cảnh (nhóm 1), ngôn ngữ phi ngữ cảnh (nhóm 2) và ngôn ngữ chínhquy (nhóm 3) Với mong muốn tìm hiểu sâu hơn về lớp ngôn ngữ phi ngữcảnh và văn phạm phi ngữ cảnh em đã quyết định chọn đề tài nghiêncứu cho luận văn tốt nghiệp thạc sĩ chuyên ngành Toán ứng dụng là
Chom-“Văn phạm phi ngữ cảnh và ứng dụng trong phân tích cú pháp”
2 Mục đích nghiên cứu
Tìm hiểu về văn phạm và ngôn ngữ phi ngữ cảnh trong lý thuyếtngôn ngữ hình thức
Header Page 7 of 128.
Trang 83 Nhiệm vụ nghiên cứu
Trình bày một cách hệ thống về văn phạm, ngôn ngữ phi ngữ cảnh
và ứng dụng liên quan
4 Đối tượng và phạm vi nghiên nghiên cứu
• Đối tượng nghiên cứu: Văn phạm và ngôn ngữ phi ngữ cảnh
• Phạm vi nghiên cứu: Nghiên cứu tổng quan về văn phạm và ngônngữ phi ngữ cảnh
5 Phương pháp nghiên cứu
Tìm hiểu các tài liệu, sách, báo liên quan đến các kết quả đã có vềvăn phạm và ngôn ngữ phi ngữ cảnh Tổng hợp kiến thức và trình bàymột cách hệ thống
6 Đóng góp mới
Hệ thống các kiến thức về văn phạm phi ngữ cảnh và ứng dụngcủa chúng, góp phần làm phong phú hơn các kết quả, sự hiểu biết vềvăn phạm và ngôn ngữ phi ngữ cảnh Hi vọng luận văn là một tài liệutham khảo hữu ích về lý thuyết và ngôn ngữ hình thức
Header Page 8 of 128.
Trang 9Chương 1 Kiến thức chuẩn bị
Có thể hình dung một văn phạm như một “thiết bị tự động” cókhả năng sinh ra một tập hợp các từ trên một bảng chữ cho trước Mỗi
từ được sinh ra sau một số hữu hạn bước thực hiện các quy tắc của vănphạm
Việc xác định một ngôn ngữ trên bảng chữ cho trước có thể đượcthực hiện bằng một trong các cách thức sau:
Cách 1: Đối với mỗi từ thuộc ngôn ngữ đã cho, ta có thể chọn mộtquy cách hoạt động của “thiết bị tự động” để sau một số hữu hạn bướclàm việc nó dừng và sinh ra chính từ đó
Cách 2: “Thiết bị tự động” có khả năng lần lượt sinh ra tất cả các
từ trong ngôn ngữ đã cho
Cách 3: Với mỗi từ cho trước, “thiết bị tự động” có thể cho biết từ
đó có thuộc ngôn ngữ đã cho hay không
Trong lý thuyết văn phạm, người ta đã chứng minh được rằng bacách thức trên là tương đương nhau hay văn phạm làm việc theo cáccách trên là tương đương nhau Vì vậy, ở đây ta quan tâm đến cách thứ
Header Page 9 of 128.
Trang 10nhất, tức là ta xét văn phạm như là một “thiết bị tự động” sinh ra các
từ Vì lẽ đó mà người ta còn gọi các “thiết bị tự động” đó là văn phạmsinh
Việc sinh ra các từ có thể được thực hiện bằng nhiều cách khácnhau Các từ có thể được sinh ra bởi các văn phạm, bởi các Otomat, bởicác máy hình thức như máy Turing, Ở đây ta đề cập đến cách củaN.Chomsky đưa ra vào những năm 1956-1957
Tổng số vị trí của các ký hiệu xuất hiện trong xâu α được gọi là
độ dài của từ α và ký hiệu là |α|
Như vậy, một từ trên bảng chữ Σ là một xâu hữu hạn gồm một số
Header Page 10 of 128.
Trang 11lớn hơn hay bằng không các chữ của Σ, trong đó một chữ có thể xuấthiện nhiều lần.
Xâu không có chữ nào được gọi là từ rỗng và được ký hiệu là ε
Về cấu trúc đại số thì Σ∗ là một vị nhóm tự do sinh bởi Σ với đơn
vị là từ rỗng ε, còn Σ+ là một nửa nhóm tự do sinh bởi Σ Có thể chứngminh được rằng các tập Σ∗ và Σ+ là vô hạn đếm được
Chú ý rằng ngôn ngữ rỗng: ∅ là khác với ngôn ngữ chỉ gồm một từ rỗng:{ε}
Header Page 11 of 128.
Trang 12Ví dụ 1.3 + L = {ε, 0, 1, 01, 10, 00, 11, 011, 100} là một ngôn ngữ trênbảng chữ cái Γ = {0, 1}.
+ L = {a, b, c, aa, ab, ac, abc} là ngôn ngữ trên bảng chữ Σ = {a, b, c}.+ L1 = {ε, a, b, abb, aab, aaa, bbb, abab}, L2 = {anbn|n ∈ N } là hai ngônngữ trên bảng chữ Σ = {a, b}, L1 là ngôn ngữ hữu hạn trong khi L2 làngôn ngữ vô hạn Mỗi từ thuộc ngôn ngữ L2 có số chữ a bằng số chữ bvới a và b không xen kẽ, a nằm ở phía trái và b ở phía phải của từ
Một số phép toán cơ bảnCác họ ngôn ngữ cụ thể thường được đặc trưng một cách tiện lợiqua các phép toán xác định trên ngôn ngữ, họ đó gồm các ngôn ngữnhận được bằng việc tổ hợp từ một số ngôn ngữ cho trước bởi một sốphép toán nào đó Vì mỗi ngôn ngữ là một tập hợp nên ta có các phéptoán đại số tập hợp như là phép giao, phép hợp, phép hiệu, phép lấy
bù trên các ngôn ngữ Chẳng hạn, với L1 và L2 là hai ngôn ngữ trênbảng chữ Σ thì ta cũng có các ngôn ngữ mới sau đây trên bảng chữ
Trang 13Dễ dàng thấy rằng phép hợp các ngôn ngữ có các tính chất sau:i) Phép hợp hai ngôn ngữ có tính giao hoán: L1 ∪ L2 = L2 ∪ L1.
ii) Phép hợp các ngôn ngữ có tính kết hợp: (L1∪L2)∪L3 = L1∪(L2∪L3).iii) Với mọi ngôn ngữ L trên Σ thì: L ∪ ∅ = ∅ ∪ L = L và L ∪ Σ∗ = Σ∗
Giao của hai ngôn ngữ L1 và L2 trên bảng chữ cái Σ, ký hiệu
L1 ∩ L2, là một ngôn ngữ trên bảng chữ Σ, đó là tập từ:
L = {ω ∈ Σ∗ | ω ∈ L1 và ω ∈ L2}
Định nghĩa phép giao có thể mở rộng cho một số hữu hạn các ngônngữ, tức là giao của các ngôn ngữ L1, L2, , Ln trên bảng chữ Σ, làtập từ:
iv) Với mọi ngôn ngữ L trên Σ thì: L ∩ ∅ = ∅ ∩ L = L và L ∩ Σ∗ = Σ∗
Ngôn ngữ phần bù của ngôn ngữ L trên bảng chữ Σ, ký hiệu CΣL(hay đơn giản là CL, nếu không gây nhầm lẫn), là một ngôn ngữ trênbảng chữ cái Σ, đó là tập từ:
CΣL = {ω ∈ Σ∗ | ω /∈ L}
Nhận xét
Header Page 13 of 128.
Trang 14Dễ dàng thấy rằng phép lấy phần bù các ngôn ngữ có các tính chấtsau:
Trang 15iii) Đặc biệt: Phép nhân ghép không có tính phân phối đối với phép giao.Phép hợp, phép giao không có tính phân phối đối với phép nhân ghép.Tức là với mọi ngôn ngữ L1, L2 và L3, thì:
L1(L2 ∩ L3) 6= (L1L2) ∩ (L1L3) và
L1 ∪ (L2L3) 6= (L1 ∪ L2)(L1 ∪ L3),
L1 ∩ (L2L3) 6= (L1 ∩ L2)(L1 ∩ L3)
Ví dụ 1.5 Đây là một phản ví dụ để chỉ ra rằng phép nhân ghép không
có tính phân phối đối với phép giao Phép hợp, phép giao không có tínhphân phối đối với phép nhân ghép Xét các ngôn ngữ L1 = {0, 01}, L2 ={01, 10}, L3 = {0} trên bảng chữ cái Σ = {0, 1}
+ Có thể kiểm tra được rằng phép nhân ghép không có tính phân phốiđối với phép giao:
Ta có: L2 ∩ L3 = ∅, do đó:
L1(L2 ∩ L3) = ∅,
Mặt khác, ta có L1L2 = {001, 010, 0101, 0110} và L1L3 = {00, 010}, dođó:
Vậy L1∪ (L2L3) 6= (L1∪ L2(L1∪ L3), tức là phép hợp không có tính phânphối đối với phép nhân ghép
Header Page 15 of 128.
Trang 16Tương tự, đối với phép giao, ta có:
1.1.2 Biểu diễn ngôn ngữ
Biểu diễn ngôn ngữ hữu hạn: Biểu diễn chúng bằng cách liệt kêtất cả các chuỗi thuộc vào chúng
Ví dụ 1.6
L1 = {ε}, L2 = {a, ba, aaba, bbbbb}
Ví dụ 1.7 Ngôn ngữ gồm các số tự nhiên nhỏ hơn 20 và lớn hơn 12, là
Trang 171.2 Văn phạm
Định nghĩa 1.1 Văn phạm G là một bộ sắp thứ tự gồm 4 thành phần:
G = hΣ, ∆, S, P i,trong đó:
+ Σ là một bảng chữ, gọi là bảng chữ cơ bản (hay bảng chữ kết thúc),mỗi phần tử của nó được gọi là một ký hiệu kết thúc hay ký hiệu cơ bản;+ ∆ là một bảng chữ, ∆ ∩ Σ = ∅, gọi là bảng ký hiệu phụ (hay bảng chữkhông kết thúc), mỗi phần tử của nó được gọi là một ký hiệu không kếtthúc hay ký hiệu phụ
+ S ∈ ∆ được gọi là ký hiệu xuất phát hay tiên đề;
+ P là tập hợp các quy tắc sinh có dạng α → β, α được gọi là vế trái
và β được gọi là vế phải của quy tắc này, với α, β ∈ (Σ ∪ ∆)∗ và trong
α chứa ít nhất một ký hiệu không kết thúc
P = α → β | α = α0Aα00, với A ∈ ∆, α0, α00, β ∈ (Σ ∪ ∆)
Chẳng hạn, với Σ = {0, 1}, ∆ = {S, A, B} thì các quy tắc S →0S1A, 0AB → 1A1B, A → ε, là các quy tắc hợp lệ vì vế tráiluôn chứa ít nhất 1 ký hiệu phụ thuộc ∆ Nhưng các quy tắc dạng
0 → A, 01 → 0B, là các quy tắc không hợp lệ
Ví dụ 1.10 Các bộ bốn sau là các văn phạm:
+ G1 = h{0, 1}, {S}, S, {S → 0S1, S → ε}i,
+ G2 = h{a, b}, {S, A}, S, {S → Ab, A → aAb, A → ε}i,
+ G3 = h{a, b, c}, {S, A, B, C}, S, {S → ABC, A → aA, B → bB, C →
cC, A → a, B → b, C → c}i,
+ G4 = hΣ, ∆, S, P i, trong đó:
Σ = {tôi, anh, chị, ăn, uống, cơm, phở, sữa, café},
Header Page 17 of 128.
Trang 18∆ = {h câui, h chủngữi, h vịngữi, hđộngtừ1i, hđộngtừ2i, hdanhtừ1i,
Chú ý rằng, nếu các quy tắc có vế trái giống nhau có thể viết gọnlại: hai quy tắc α → β, α → γ có thể được viết là α → β | γ Chẳnghạn, như trong văn phạm G1 ở thí dụ 1.10, ta có thể viết hai quy tắccủa nó dưới dạng S → 0S1 | ε
Định nghĩa 1.2 Cho văn phạm G = hΣ, ∆, S, P i và η, ω ∈ (Σ ∪ ∆)∗
Ta nói ω được suy dẫn trực tiếp từ η trong G, ký hiệu η `G ω hay ngắngọn là η ` ω (nếu không sợ nhầm lẫn), nếu tồn tại quy tắc α → β ∈ P
và γ, δ ∈ (Σ ∪ ∆)∗ sao cho η = γαδ, ω = γβδ
Điều này có nghĩa là nếu η nhận vế trái α của quy tắc α → β như là từcon thì ta thay α bằng β để được từ mới ω
Định nghĩa 1.3 Cho văn phạm G = hΣ, ∆, S, P i và η, ω ∈ (Σ ∪ ∆)∗
Ta nói ω được suy dẫn từ η trong G, ký hiệu η |=G ω hay ngắn gọn
là η |= ω (nếu không sợ nhầm lẫn), nếu η = ω hoặc tồn tại một dãy
D = ω0, ω1, , ωk ∈ (Σ ∪ ∆)∗ sao cho ω0 = η, ωk = ω và ωi−1 ` ωi, với
i = 1, 2, , k
Dãy D = ω0, ω1, , ωk được gọi là một dẫn xuất của ω từ η trong G và
số k được gọi là độ dài của dẫn xuất này Nếu ω0 = S và ωk ∈ Σ∗ thìdãy D gọi là dẫn xuất đầy đủ
Header Page 18 of 128.
Trang 19Nếu ωi được suy dẫn trực tiếp từ ωi−1 bằng việc áp dụng một quy tắc pnào đó trong G thì ta nói quy tắc p được áp dụng ở bước thứ i.
Định nghĩa 1.4 Cho văn phạm G = hΣ, ∆, S, P i Từ ω ∩ Σ∗ được gọi
là sinh bởi văn phạm G nếu tồn tại suy dẫn S |= ω Ngôn ngữ sinh bởivăn phạm G, ký hiệu L(G), là tập hợp tất cả các từ sinh bởi văn phạmG:
L(G) = {ωk ∈ Σ∗|S |=G ω}
Định nghĩa 1.5 Hai văn phạm G1 = hΣ1, ∆1, S1, P1i và G2 = hΣ2, ∆2, S2, P2iđược gọi là tương đương nếu L(G1) = L(G2)
Ví dụ 1.11 + Xét văn phạm G1 trong thí dụ 1.10 Từ ω = 00001111được suy dẫn từ S bằng dãy dẫn xuất độ dài 5: S ` 0S1 ` 00S11 `000S111 ` 0000S1111 ` 00001111 (có thể viết ngắn gọn là ω = 0414)
Bằng việc sử dụng n lần (n ≥ 0) quy tắc 1 rồi quy tắc 2, ta có: S |= 0n1n
7, ta có: S ` ABC |= amAbnBckC |= ambnck
Do đó L(G3) = {ambnck|m ≥ 1, n ≥ 1, k ≥ 1}
+ Dễ dàng thấy rằng: L(G4) = {tôi ăn cơm, anh ăn cơm, chị ăn cơm, }
Ví dụ 1.12 Cho hai văn phạm
G3 = hΣ, {S}, S, P 3i, G4 = hΣ, {S}, S, P 4i,
Header Page 19 of 128.
Trang 20S ` Si1 ` Si2i1 ` ` Sik−1 i2i1 ` Sikik−1 i2i1,
(với i1, i2, , ik ∈ Σ), trong đó i1, i2, , ik−1 ≥ 0 và ik ≥ 1 Do đó,L(G3) = {n|n ≥ 1}
Lập luận như trên, ta nhận được L(G4) = {n|n ≥ 0} Vì vậy, G3 và G4
không tương đương nhau
Định nghĩa 1.6 Một văn phạm G = hΣ, ∆, S, P i được gọi là phi ngữcảnh (context free) nếu mọi luật sinh trong P có dạng A → x, trong đó
A ∈ Σ còn x ∈ (Σ ∩ ∆)∗
Định nghĩa 1.7 Một ngôn ngữ được gọi là phi ngữ cảnh nếu và chỉ nếu
có một văn phạm phi ngữ cảnh G sao cho L = L(G)
Ví dụ 1.13 Ngôn ngữ sau là phi ngữ cảnh
Trang 21phạm này sinh ra ngôn ngữ
L = {w ∈ {a, b}∗ : na(w) = nb(w) và na(v) ≥ nb(v)}.với v là một tiếp đầu ngữ bất kỳ của w
Header Page 21 of 128.
Trang 22Chương 2 Văn phạm phi ngữ cảnh
Dựa vào đặc điểm của tập quy tắc mà người ta chia các văn phạmthành các nhóm khác nhau Noam Chomsky (Giáo sư của Viện côngnghệ Massachusetts đã phân loại văn phạm thành bốn nhóm:
Nhóm 0: Văn phạm không hạn chế (hay văn phạm ngữ cấu, vănphạm tổng quát),
Nhóm 1: Văn phạm cảm ngữ cảnh,Nhóm 2: Văn phạm phi ngữ cảnh,Nhóm 3: Văn phạm chính quy
Trang 23a) G được gọi là văn phạm ngữ cảnh nếu:
Văn phạm G = hΣ, ∆, S, P i mà không có một ràng buộc nào đốivới các quy tắc của nó được gọi là văn phạm tổng quát hay văn phạmkhông hạn chế
b) G được gọi là văn phạm cảm ngữ cảnh nếu:
Văn phạm G = hΣ, ∆, S, P i mà các quy tắc của nó đều có dạng:
α → β, với α = α0Aα00, A ∈ ∆, α0, α00, β ∈ (Σ ∩ ∆)∗, và |α| ≤ |β|, đượcgọi là văn phạm nhóm 1 hay văn phạm cảm ngữ cảnh
c) G được gọi là văn phạm phi ngữ cảnh nếu:
Văn phạm G = hΣ, ∆, S, P i mà các quy tắc của nó có dạng A → ω,trong đó A ∈ ∆, ω ∈ (Σ ∩ ∆)∗, được gọi là văn phạm nhóm 2 hay vănphạm phi ngữ cảnh
d) G được gọi là văn phạm chính quy nếu:
Văn phạm G = hΣ, ∆, S, P i mà các quy tắc của nó chỉ có dạng
A → aB, A → a (hoặc chỉ có dạng A → Ba, A → a), trong đó
A, B ∈ ∆, a ∈ Σ, được gọi là văn phạm nhóm 3 hay văn phạm chínhquy
Như vậy, các quy tắc trong văn phạm nhóm 0 có dạng: α → β,với α = α0Aα00, A ∈ ∆, α0, α00, β ∈ (Σ ∩ ∆)∗ Các quy tắc của văn phạmnhóm 0 được gọi là quy tắc không hạn chế Ngôn ngữ do văn phạm nhóm
0 sinh ra được gọi là ngôn ngữ tổng quát
Các quy tắc trong văn phạm nhóm 1 được gọi là quy tắc cảm ngữcảnh Ngôn ngữ do văn phạm cảm ngữ cảnh sinh ra được gọi là ngônngữ cảm ngữ cảnh
Các văn phạm mà các quy tắc của chúng có dạng trên, đồng thời
Header Page 23 of 128.
Trang 24chứa thêm quy tắc rỗng S → ε, cũng được xếp vào lớp văn phạm
nhóm 1
Như vậy, các quy tắc trong văn phạm phi ngữ cảnh có vế trái chỉchứa một ký hiệu phụ còn vế phải là tùy ý, và được gọi là quy tắc phingữ cảnh Ngôn ngữ do văn phạm phi ngữ cảnh sinh ra được gọi là ngônngữ phi ngữ cảnh
Các văn phạm mà các quy tắc của chúng có dạng trên, đồng thờichứa thêm quy tắc rỗng S → ε cũng được gọi là văn phạm chính quy(hay còn gọi là văn phạm chính quy suy rộng)
Các quy tắc trong văn phạm chính quy được gọi là quy tắc chínhquy Ngôn ngữ do văn phạm chính quy sinh ra được gọi là ngôn ngữchính quy
Ví dụ 2.1 Cho văn phạm G = h{a, b, c}, {S, A, B, C}, S, P i, trong đó:
P = {S → aSAC, S → abC, CA → BA, BA → BC, BC → AC, bA →
bb, C → c} Khi đó G là văn phạm cảm ngữ cảnh
Sử dụng n − 1 lần (n ≥ 1) quy tắc 1, rồi quy tắc 2, kế đến sử dụng liêntiếp các quy tắc 3, 4, 5 (để đổi chỗ A và C), sau đó sử dụng n − 1 lầnquy tắc 6 và n lần quy tắc 7, ta có:
S |= an−1S(AC)n−1 ` anbC(AC)n−1 |= anbAn−1Cn |= anbncn
Từ đó suy ra L(G) = {anbncn|n ≥ 1}
Ví dụ 2.2 + Cho văn phạm
G1 = h{a, b}, {S, A}, S, P i,trong đó:
P = {S → Sa, S → Aa, A → aAb, A → ab}
Header Page 24 of 128.
Trang 25Khi đó G1 là văn phạm phi ngữ cảnh.
Khi đó, G1 là văn phạm chính quy và L(G1) = {12n | n ≥ 0} Thật vậy,
sử dụng quy tắc 1, ta có S ` 12n, (ε = 12n với n = 0), sử dụng quy tắc
2, rồi n − 1 lần (n ≥ 1) liên tiếp cặp quy tắc 3 và 4, cuối cùng là quytắc 5, ta có:
S ` 1A ` 11B ` 111A ` |= 1(12n−2)A ` 1(12n−2)1 = 12n.+ Cho văn phạm
G2 = h{0, 1}, {S, A}, S, P2, P2 = {S → 0A, A → 0A, A → 1A, A → 0}i.Khi đó, G1 là văn phạm chính quy và L(G2) = {0ω0 | ω ∈ {0, 1}∗} Thậtvậy, sử dụng quy tắc 1, rồi một số hưữ hạn lần tuỳ ý, có thể xen kẽ cácquy tắc 2 và 3, cuối cùng là quy tắc 4, ta có: S ` 0A |= 0ωA ` 0ω0.Nhận xét
Từ các định nghĩa trên, ta thấy lớp văn phạm không hạn chế làrộng nhất, nó chứa đựng các văn phạm cảm ngữ cảnh, lớp văn phạm
Header Page 25 of 128.
Trang 26cảm ngữ cảnh chứa các văn phạm phi ngữ cảnh và lớp văn phạm phingữ cảnh chứa các văn phạm chính quy.
Ngôn ngữ hình thức được gọi là ngôn ngữ tổng quát (hay cảm ngữcảnh, phi ngữ cảnh, chính quy) nếu tồn tại văn phạm loại tương ứngsinh ra nó Vì vậy, đối với các lớp ngôn ngữ, nếu ký hiệu L0, L1, L2, L3lần lượt là các lớp ngôn ngữ tổng quát, cảm ngữ cảnh, phi ngữ cảnh vàchính quy thì ta có bao hàm thức:
L3 ⊂ L2 ⊂ L1 ⊂ L0
Ta cũng thấy về mặt cấu trúc ngữ pháp thì các quy tắc của cácvăn phạm phi ngữ cảnh và văn phạm chính quy là đơn giản hơn cả vàchúng có nhiều ứng dụng trong việc thiết kế các ngôn ngữ lập trình vàtrong nghiên cứu về chương trình dịch Vì vậy, trong các phần tiếptheo chúng ta dành thêm sự quan tâm tới hai lớp văn phạm đó
Ví dụ 2.4 Cho bảng chữ cái Σ = {a1, a2, , an}
Chứng minh rằng các ngôn ngữ: L1 = {ω = a1a2 an}, L2 = Σ+, L3 =
Σ∗, L = ∅ là các ngôn ngữ chính quy trên bảng chữ Σ
Thật vậy, ta có thể xây dựng các văn phạm chính quy sinh các ngôn ngữtrên:
G1 = hΣ, {S, A1, , An−1}S,
{S → a1A1, A1 → a2A2, , An−2 → an−1An−1, An−1 → an}i
Dễ thấy G1 là văn phạm chính quy, và L1 = L(G1)
G2 = hΣ, {S}, S, {S → aS, S → a|a ∈ Σ}i,
dễ thấy G2 là văn phạm chính quy, và L2 = L(G2)
G3 = hΣ, {S, A}, S, {S → ε, S → a, S → aA, A → aA, A → a|a ∈ Σ}i,
dễ thấy G3 là văn phạm chính quy, và L3 = L(G3)
G4 = hΣ, {S}, S, {S → aS|a ∈ Σ}i, dễ thấy G4 là văn phạm chính quy,
Header Page 26 of 128.
Trang 27và nó làm việc không bao giờ dừng, tức là không có ω ∈ Σ∗ sinh bởi G4,vậy G4 sinh ra ngôn ngữ ∅.
Định nghĩa 2.2 Cho văn phạm phi ngữ cảnh G = hΣ, ∆, S, P i Câysuy dẫn đầy đủ trong văn phạm G là một cây có gốc thoả mãn bốn điềukiện sau:
i Mỗi đỉnh của cây được gán một nhãn là các ký hiệu trong tập Σ ∪ ∆ ∪{ε} Gốc của cây được gán nhãn là S
ii Mỗi đỉnh trong được gán nhãn là một ký hiệu nào đó trong ∆
iii Mỗi đỉnh ngoài (lá của cây) được gán nhãn là một ký hiệu trong tậpΣ
iv Nếu đỉnh m được gán nhãn là A ∈ ∆, còn các đỉnh n1, n2, , nk
là các con của đỉnh m theo thứ tự từ trái sang phải và được gán nhãn
B1, B2, , Bk tương ứng thì A → B1B2 Bk là một quy tắc trong Pcủa văn phạm G
Nếu đọc tất cả nhãn ở các lá theo thứ tự từ trái sang phải, ta sẽnhận được một từ nào đó Từ đó sẽ là một phần tử trong L(G) và đượcgọi là kết quả của cây suy dẫn trong G
Định nghĩa 2.3 Suy dẫn trái nhất (nói gọn là suy dẫn trái), nếu ở mỗibước suy dẫn, biến được thay thế là biến nằm bên trái nhất trong dạngcâu
Suy dẫn phải nhất: (nói gọn là suy dẫn phải), nếu ở mỗi bước suy dẫn,biến được thay thế là biến nằm bên phải nhất trong dạng câu
Header Page 27 of 128.