LỜI CẢM ƠN Trước hết, em xin chân thành cảm ơn các thầy cô giáo trong khoa Công nghệ thông tin Trường ĐH Kỹ thuật – Hậu cần CAND đã trang bị những kiến thức cơ bản, cần thiết và quý báu để em thực hiện chuyên đề của mình. Đặc biệt, em xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới thầy Nghiêm Văn Hưng, giáo viên giảng dạy, và thầy Cao Xuân Trường, người đã tận tình hướng dẫn, chỉ bảo và tạo mọi điều kiện thuận lợi giúp em trong quá trình thực hiện chuyên đề. Mặc dù đã rất cố gắng cùng nhận được sự giúp đỡ tận tâm của thầy giáo hướng dẫn, xong do trình độ còn hạn chế, tài liệu chưa được phong phú, và nội dung này khá khó đối với em nên không tránh khỏi những thiếu sót trong quá trình tiếp nhận kiến thức. Em rất mong nhận được sự quan tâm giúp đỡ, chỉ dẫn của thầy cô và sự góp ý từ bạn bè để trong thời gian tới em có thể tiếp tục tìm hiểu và xây dựng chuyên đề một cách hoàn thiện nhất. Em xin chân thành cảm ơn GIỚI THIỆU TỔNG QUAN VỀ CHUYÊN ĐỀ Tên chuyên đề: Nghiên cứu Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh và Automata đẩy xuống Sinh viên thực hiện: Hoàng Văn Thao Lớp: B3D2B Giáo viên hướng dẫn: Thiếu úy Cao Xuân Trường Tính cấp thiết của chuyên đề: Lý thuyết ngôn ngữ hình thức và Automata đóng một vai trò rất quan trọng trong các cơ sở toán học của tin học. Ngôn ngữ hình thức được sử dụng trong việc xây dựng các ngôn ngữ lập trình, lý thuyết về các chương trình dịch. Các ngôn ngữ hình thức tạo thành một công cụ mô tả đối với các mô hình tính toán cả cho dạng thông tin vào ra lẫn kiểu thao tác. Lý thuyết ngôn ngữ hình thức, chính vì thực chất của nó là một lĩnh vực khoa học liên ngành; nhu cầu mô tả hình thức văn phạm được phát sinh trong nhiều ngành khoa học khác nhau từ ngôn ngữ học đến sinh vật học. Do đó những khía cạnh thích hợp của lý thuyết ngôn ngữ hình thức sẽ có tầm quan trọng quyết định trong các giáo trình về Lý thuyết ngôn ngữ hình thức và Automata. Lĩnh vực mà lý thuyết ngôn ngữ hình thức nghiên cứu là những mẫu hình (pattern) có cấu trúc bên trong ngôn ngữ hình thức, và đó là những khía cạnh hoàn toàn mang tính chất có cú pháp. Ngôn ngữ hình thức không còn đơn giản chỉ là để định nghĩa ngôn ngữ tự nhiên, mà nó vượt ra ngoài khỏi phạm vi đó và nó cũng là một cách để thể hiện được những quy tắc có cú pháp của ngôn ngữ tự nhiên. Mục tiêu của chuyên đề: Nghiên cứu tổng quan về văn phạm hình thức và các Automata, là những công cụ sinh ngôn ngữ, đồng thời đề cập đến các tính chất của ngôn ngữ chính quy, ngôn ngữ phi ngữ cảnh. Ngoài ra, cũng giới thiệu sơ lược về Trình biên dịch, một phần quan trọng của học phần Chương trình dịch gắn bó chặt chẽ với Lý thuyết ngôn ngữ hình thức và Automata, trong đó Văn phạm phi ngữ cảnh là cơ sở lý thuyết để xây dựng Bộ phân tích cú pháp, là thành phần quan trọng nhất trong một Trình biên dịch. Đối tượng nghiên cứu: Ngôn ngữ hình thức và lý thuyết Automata. Phạm vi nghiên cứu: Ngôn ngữ phi ngữ cảnh cùng hai phương tiện để xác định chúng là Văn phạm phi ngữ cảnh; Automata đẩy xuống. Phương pháp nghiên cứu: Phương pháp nghiên cứu tài liệu; Phương pháp chuyên gia; Phương pháp thực nghiệm. Nội dung nghiên cứu: Lý thuyết về Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh và Automata đẩy xuống; Các tính chất của Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh và Automata đẩy xuống; Ứng dụng của Ngôn ngữ hình thức và Automata với trình biên dịch. Chuyên đề gồm 5 chương: Chương I: Nhập môn về văn phạm và ngôn ngữ hình thức 1.1 Khái niệm ngôn ngữ 1.2 Văn phạm và ngôn ngữ sinh bởi văn phạm 1.3 Một số tính chất của ngôn ngữ Chương II: Văn phạm phi ngữ cảnh 2.1 Suy dẫn phi ngữ cảnh 2.2 Biến đổi các Văn phạm phi ngữ cảnh Chương III: Automata đẩy xuống 3.1 Automata đẩy xuống không tiền định 3.2 Automata đẩy xuống và Văn phạm phi ngữ cảnh Chương IV: Tổng quan về trình biên dịch 4.1 Ngôn ngữ lập trình 4.2 Trình biên dịch 4.3 Ứng dụng của Văn phạm phi ngữ cảnh và Automata đẩy xuống với trình biên dịch Chương V: Demo một bài toán 5.1 Bài toán và cơ sở lý thuyết 5.2 Demo ví dụ về sự tương đương giữa BTCQ và NFAε Sản phẩm: Báo cáo chuyên đề; Chương trình demo cơ bản. MỤC LỤC LỜINÓIĐẦU 1 CHƯƠNG 1. NHẬP MÔN VỀ VĂN PHẠM VÀ NGÔN NGỮ HÌNH THỨC 3 1.1. Khái niệm ngôn ngữ 3 1.1.1. Các khái niệm cơ bản 3 1.1.2. Các phép toán trên các từ 4 1.1.3. Cácphéptoántrênngônngữ. 6 1.2. Văn phạm và ngôn ngữ sinh bởi văn phạm 9 1.2.1. Định nghĩavănphạm 10 1.2.2. Ngôn ngữ sinh bởivăn phạm 11 1.2.3. Phân loạivăn phạm theo Chomsky 12 1.3. Một số tính chất của ngôn ngữ 14 1.3.1. Một số tính chất của văn phạm và dẫn xuất 14 1.3.2. Tínhđóng của lớpngôn ngữ sinhbởi văn phạm 15 CHƯƠNG 2. VĂN PHẠM PHI NGỮ CẢNH 17 2.1. Suy dẫn phi ngữ cảnh 17 2.1.1. Các thí dụ về văn phạm phi ngữ cảnh 17 2.1.2. Tính chất cơ bản (phân rã các suy dẫn phi ngữ cảnh) 19 2.1.3. Cây suy dẫn 20 2.1.4. Suy dẫn trái, suy dẫn phải và tính nhập nhằng 23 2.2. Biến đổi các văn phạm phi ngữ cảnh 26 2.2.1. Loại bỏ các ký hiệu vô ích 27 2.2.2. Loại bỏ các εsản xuất 31 2.2.3. Loại bỏ các sản xuất đơn 33 2.2.4. Dạng chuẩn Chomsky 35 CHƯƠNG 3. Ô TÔ MÁT ĐẨY XUỐNG 37 3.1. Ô tô mát đẩy xuống không tiền định 37 3.1.1. Khái niệm và định nghĩa 37 3.1.2. Các tính chất cơ bản của ô tô mát đẩy xuống 38 3.1.3. Tương đương giữa hai loại ô tô mát đẩy xuống thừa nhận theo stack rỗng và thừa nhận theo trạng thái cuối 41 3.2. Tương đương giữa ô tô mát đẩy xuống và văn phạm phi ngữ cảnh 44 3.2.1. Từ văn phạm phi ngữ cảnh đến ô tô mát đẩy xuống 44 3.2.2. Từ ô tô mát đẩy xuống đến văn phạm phi ngữ cảnh 46 CHƯƠNG 4. TỔNG QUANVỀTRÌNHBIÊNDỊCH 49 4.1. Ngôn ngữ lập trình 49 4.1.1. Mởđầu 49 4.1.2. Phânloại 49 4.1.3. Cúpháp và ngữ nghĩa 50 4.2. Trình biên dịch 51 4.2.1. Định nghĩa 51 4.2.2. Cácphầncủatrìnhbiêndịch 52 4.3. Ứng dụng của ngôn ngữ hình thức và ôtômat với trình biên dịch 57 4.3.1. Bộtiềnxửlý 58 4.3.2. Trìnhbiêndịchhợpngữ 59 4.3.3. Trìnhbiêndịchhợpngữhaichuyến(twopassassembler) 59 4.3.4. Bộcấtliênkếtsoạnthảo(loaderlinkeditor): 61 CHƯƠNG 5. DEMO MỘT BÀI TOÁN 63 5.1. Cơ sở lý thuyết 63 5.1.1. Bài toán chuyển từ BTCQ sang NFAε 63 5.1.2. Phương hướng giải quyết 63 5.2. Demo ví dụ về sự tương đương giữa BTCQ và NFAε 65 5.2.1. Giao diện ban đầu 65 5.2.2. Giao diện kết quả 66 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 70
Trang 1LỜI CẢM ƠN
Trước hết, em xin chân thành cảm ơn các thầy cô giáo trong khoa Côngnghệ thông tin Trường ĐH Kỹ thuật – Hậu cần CAND đã trang bị những kiếnthức cơ bản, cần thiết và quý báu để em thực hiện chuyên đề của mình
Đặc biệt, em xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới thầy NghiêmVăn Hưng, giáo viên giảng dạy, và thầy Cao Xuân Trường, người đã tận tìnhhướng dẫn, chỉ bảo và tạo mọi điều kiện thuận lợi giúp em trong quá trình thựchiện chuyên đề
Mặc dù đã rất cố gắng cùng nhận được sự giúp đỡ tận tâm của thầy giáohướng dẫn, xong do trình độ còn hạn chế, tài liệu chưa được phong phú, và nộidung này khá khó đối với em nên không tránh khỏi những thiếu sót trong quátrình tiếp nhận kiến thức Em rất mong nhận được sự quan tâm giúp đỡ, chỉ dẫncủa thầy cô và sự góp ý từ bạn bè để trong thời gian tới em có thể tiếp tục tìmhiểu và xây dựng chuyên đề một cách hoàn thiện nhất
Em xin chân thành cảm ơn!
Trang 2GIỚI THIỆU TỔNG QUAN VỀ CHUYÊN ĐỀ Tên chuyên đề: Nghiên cứu Ngôn ngữ hình thức, Văn phạm phi ngữ
cảnh và Automata đẩy xuống
Sinh viên thực hiện: Hoàng Văn Thao
Lớp: B3-D2B
Giáo viên hướng dẫn: Thiếu úy Cao Xuân Trường
Tính cấp thiết của chuyên đề:
Lý thuyết ngôn ngữ hình thức và Automata đóng một vai trò rất quan trọngtrong các cơ sở toán học của tin học Ngôn ngữ hình thức được sử dụng trongviệc xây dựng các ngôn ngữ lập trình, lý thuyết về các chương trình dịch Cácngôn ngữ hình thức tạo thành một công cụ mô tả đối với các mô hình tính toán
cả cho dạng thông tin vào - ra lẫn kiểu thao tác Lý thuyết ngôn ngữ hình thức,chính vì thực chất của nó là một lĩnh vực khoa học liên ngành; nhu cầu mô tảhình thức văn phạm được phát sinh trong nhiều ngành khoa học khác nhau từngôn ngữ học đến sinh vật học Do đó những khía cạnh thích hợp của lý thuyếtngôn ngữ hình thức sẽ có tầm quan trọng quyết định trong các giáo trình về Lýthuyết ngôn ngữ hình thức và Automata
Lĩnh vực mà lý thuyết ngôn ngữ hình thức nghiên cứu là những mẫu hình(pattern) có cấu trúc bên trong ngôn ngữ hình thức, và đó là những khía cạnhhoàn toàn mang tính chất có cú pháp Ngôn ngữ hình thức không còn đơn giảnchỉ là để định nghĩa ngôn ngữ tự nhiên, mà nó vượt ra ngoài khỏi phạm vi đó
và nó cũng là một cách để thể hiện được những quy tắc có cú pháp của ngônngữ tự nhiên
Mục tiêu của chuyên đề: Nghiên cứu tổng quan về văn phạm hình thức và
các Automata, là những công cụ sinh ngôn ngữ, đồng thời đề cập đến các tínhchất của ngôn ngữ chính quy, ngôn ngữ phi ngữ cảnh Ngoài ra, cũng giới thiệu
sơ lược về Trình biên dịch, một phần quan trọng của học phần Chương trìnhdịch gắn bó chặt chẽ với Lý thuyết ngôn ngữ hình thức và Automata, trong đóVăn phạm phi ngữ cảnh là cơ sở lý thuyết để xây dựng Bộ phân tích cú pháp, làthành phần quan trọng nhất trong một Trình biên dịch
Đối tượng nghiên cứu: Ngôn ngữ hình thức và lý thuyết Automata.
Trang 3Phương pháp nghiên cứu:
Phương pháp nghiên cứu tài liệu;
Phương pháp chuyên gia;
Phương pháp thực nghiệm
Nội dung nghiên cứu:
Lý thuyết về Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh và Automatađẩy xuống;
Các tính chất của Ngôn ngữ hình thức, Văn phạm phi ngữ cảnh vàAutomata đẩy xuống;
Ứng dụng của Ngôn ngữ hình thức và Automata với trình biên dịch
Chuyên đề gồm 5 chương:
Chương I: Nhập môn về văn phạm và ngôn ngữ hình thức
1.1 Khái niệm ngôn ngữ
1.2 Văn phạm và ngôn ngữ sinh bởi văn phạm
1.3 Một số tính chất của ngôn ngữ
Chương II: Văn phạm phi ngữ cảnh
2.1 Suy dẫn phi ngữ cảnh
2.2 Biến đổi các Văn phạm phi ngữ cảnh
Chương III: Automata đẩy xuống
3.1 Automata đẩy xuống không tiền định
3.2 Automata đẩy xuống và Văn phạm phi ngữ cảnh
Chương IV: Tổng quan về trình biên dịch
4.1 Ngôn ngữ lập trình
4.2 Trình biên dịch
4.3 Ứng dụng của Văn phạm phi ngữ cảnh và Automata đẩy xuống vớitrình biên dịch
Chương V: Demo một bài toán
5.1 Bài toán và cơ sở lý thuyết
5.2 Demo ví dụ về sự tương đương giữa BTCQ và NFAε
Sản phẩm:
Báo cáo chuyên đề;
Chương trình demo cơ bản
Trang 4MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG 1 NHẬP MÔN VỀ VĂN PHẠM VÀ NGÔN NGỮ HÌNH THỨC 3
1.1 Khái niệm ngôn ngữ 3
1.1.1 Các khái niệm cơ bản 3
1.1.2 Các phép toán trên các từ 4
1.1.3 Các phép toán trên ngôn ngữ 6
1.2 Văn phạm và ngôn ngữ sinh bởi văn phạm 9
1.2.1 Định nghĩa văn phạm 10
1.2.2 Ngôn ngữ sinh bởi văn phạm 11
1.2.3 Phân loại văn phạm theo Chomsky 12
1.3 Một số tính chất của ngôn ngữ 14
1.3.1 Một số tính chất của văn phạm và dẫn xuất 14
1.3.2 Tính đóng của lớp ngôn ngữ sinh bởi văn phạm 15
CHƯƠNG 2 VĂN PHẠM PHI NGỮ CẢNH 17
2.1 Suy dẫn phi ngữ cảnh 17
2.1.1 Các thí dụ về văn phạm phi ngữ cảnh 17
2.1.2 Tính chất cơ bản (phân rã các suy dẫn phi ngữ cảnh) 19
2.1.3 Cây suy dẫn 20
2.1.4 Suy dẫn trái, suy dẫn phải và tính nhập nhằng 23
2.2 Biến đổi các văn phạm phi ngữ cảnh 26
2.2.1 Loại bỏ các ký hiệu vô ích 27
2.2.2 Loại bỏ các ε-sản xuất 31
2.2.3 Loại bỏ các sản xuất đơn 33
2.2.4 Dạng chuẩn Chomsky 35
CHƯƠNG 3 Ô TÔ MÁT ĐẨY XUỐNG 37
3.1 Ô tô mát đẩy xuống không tiền định 37
3.1.1 Khái niệm và định nghĩa 37
3.1.2 Các tính chất cơ bản của ô tô mát đẩy xuống 38
3.1.3 Tương đương giữa hai loại ô tô mát đẩy xuống thừa nhận theo stack rỗng và thừa nhận theo trạng thái cuối 41
3.2 Tương đương giữa ô tô mát đẩy xuống và văn phạm phi ngữ cảnh 44
3.2.1 Từ văn phạm phi ngữ cảnh đến ô tô mát đẩy xuống 44
Trang 53.2.2 Từ ô tô mát đẩy xuống đến văn phạm phi ngữ cảnh 46
CHƯƠNG 4 TỔNG QUAN VỀ TRÌNH BIÊN DỊCH 49
4.1 Ngôn ngữ lập trình 49
4.1.1 Mở đầu 49
4.1.2 Phân loại 49
4.1.3 Cú pháp và ngữ nghĩa 50
4.2 Trình biên dịch 51
4.2.1 Định nghĩa 51
4.2.2 Các phần của trình biên dịch 52
4.3 Ứng dụng của ngôn ngữ hình thức và ôtômat với trình biên dịch 57
4.3.1 Bộ tiền xử lý 58
4.3.2 Trình biên dịch hợp ngữ 59
4.3.3 Trình biên dịch hợp ngữ hai chuyến (two pass assembler) 59
4.3.4 Bộ cất liên kết soạn thảo (loader/link editor): 61
CHƯƠNG 5 DEMO MỘT BÀI TOÁN 63
5.1 Cơ sở lý thuyết 63
5.1.1 Bài toán chuyển từ BTCQ sang NFAε 63
5.1.2 Phương hướng giải quyết 63
5.2 Demo ví dụ về sự tương đương giữa BTCQ và NFAε 65
5.2.1 Giao diện ban đầu 65
5.2.2 Giao diện kết quả 66
KẾT LUẬN 69
TÀI LIỆU THAM KHẢO 70
Trang 6MỤC LỤC HÌNH
Hình 1.1 Cây dẫn xuất cho ví dụ 12
Hình 2.1 Một cây suy dẫn 21
Hình 2.2 Một A-cây 21
Hình 2.3 Một A-cây có một đỉnh trong 22
Hình 2.4 Một A-cây và các cây con của nó 23
Hình 2.5 Một cây suy dẫn trong G0 24
Hình 2.6 Một cây suy dẫn khác của G0 25
Hình 2.7 Một cây suy dẫn của G1 26
Hình 2.8 Một cây suy dẫn của G1 26
Hình 4.1 Sơ đồ trình biên dịch 50
Hình 4.2 Sơ đồ trình thông dịch 50
Hình 4.3 Cây cú pháp A 51
Hình 4.4 Cây cú pháp B 56
Hình 4.5 Sơ đồ hoạt động loader 61
Hình 5.1 Giao diện làm việc của Demo 65
Hình 5.2 Nhập BTCQ cần chuyển 66
Hình 5.3 Kết quả là bảng biểu diễn một NFAε 67
Hình 5.4 Một cách biểu diễn khác của NFAε 68
MỤC LỤC BẢNG Bảng IV.1 Bảng danh biểu 1 54
Bảng IV.2 Bảng danh biểu 2 60
Trang 7LỜI NÓI ĐẦU
Ngôn ngữ là phương tiện để giao tiếp, sự giao tiếp có thể hiểu là giaotiếp giữa con người với nhau, giao tiếp giữa người với máy, hay giao tiếp giữamáy với máy Ngôn ngữ để con người có thể giao tiếp với nhau được gọi làngôn ngữ tự nhiên, chẳng hạn như tiếng Anh, tiếng Nga, tiếng Việt… là cácngôn ngữ tự nhiên Các quy tắc cú pháp của ngôn ngữ tự nhiên nói chung rấtphức tạp nhưng các yêu cầu nghiêm ngặt về ngữ nghĩa thì lại thiếu chặt chẽ,chẳng hạn cùng một từ hay cùng một câu ta có thể hiểu chúng theo nhữngnghĩa khác nhau tùy theo từng ngữ cảnh cụ thể Con người muốn giao tiếp vớimáy tính tất nhiên cũng thông qua ngôn ngữ Để có sự giao tiếp giữa người vớimáy hay giữa máy với nhau, cần phải có một ngôn ngữ với các quy tắc cú phápchặt chẽ hơn so với các ngôn ngữ tự nhiên, nói cách khác, với một từ hay mộtcâu thì ngữ nghĩa của chúng phải là duy nhất mà không phụ thuộc vào ngữcảnh Những ngôn ngữ như thế được gọi là ngôn ngữ hình thức Con ngườimuốn máy tính thực hiện công việc, phải viết các yêu cầu đưa cho máy bằngngôn ngữ máy hiểu được Việc viết các yêu cầu như thế gọi là lập trình Ngônngữ dùng để lập trình được gọi là ngôn ngữ lập trình Các ngôn ngữ lập trìnhđều là các ngôn ngữ hình thức
Cả ngôn ngữ hình thức lẫn ngôn ngữ tự nhiên đều có thể xem như nhữngtập các từ, tức là các xâu hữu hạn các phần tử của một bộ chữ cái cơ sở nào đó
Về mặt truyền thống, lý thuyết ngôn ngữ hình thức liên quan đến các đặc tả cúpháp của ngôn ngữ nhiều hơn là đến những vấn đề ngữ nghĩa Một đặc tả về
cú pháp của một ngôn ngữ có hữu hạn từ, ít nhất về nguyên tắc, có thể đượccho bằng cách liệt kê các từ Điều đó không thể áp dụng đối với các ngôn ngữ
có vô hạn từ Nhiệm vụ chính của lý thuyết ngôn ngữ hình thức là nghiên cứucác cách đặc tả hữu hạn của các ngôn ngữ vô hạn
Lý thuyết ngôn ngữ hình thức và ôtômat đóng một vai trò rất quan trọngtrong các cơ sở toán học của tin học Ngôn ngữ hình thức được sử dụng trongviệc xây dựng các ngôn ngữ lập trình, lý thuyết về các chương trình dịch Cácngôn ngữ hình thức tạo thành một công cụ mô tả đối với các mô hình tính toán
cả cho dạng thông tin vào-ra lẫn kiểu thao tác Lý thuyết ngôn ngữ hình thức,chính vì thực chất của nó là một lĩnh vực khoa học liên ngành; nhu cầu mô tảhình thức văn phạm được phát sinh trong nhiều ngành khoa học khác nhau từngôn ngữ học đến sinh vật học
Báo cáo này nhằm trình bày về văn phạm hình thức và ôtômat đẩy xuống,
là những công cụ sinh ngôn ngữ, đồng thời đề cập đến các tính chất của ngônngữ chính quy, ngôn ngữ phi ngữ cảnh, ngôn ngữ đệ quy và ngôn ngữ đệ quyđếm được Ngoài ra cũng giới thiệu sơ lược về trình biên dịch, một phần quan
trọng của học phần Chương trình dịch/.
Chuyên đề gồm 8 phần chính:
Lời mở đầu: Giới thiệu về chuyên đề
Trang 8Chương I: Nhập môn về văn phạm và ngôn ngữ hình thức
Chương II: Văn phạm phi ngữ cảnh
Chương III: Automata đẩy xuống
Chương IV: Tổng quan về trình biên dịch
Chương V: Giới thiệu về chương trình Demo
Kết luận: Đưa ra một số đánh giá tổng quan về kết quả nghiên cứu, nêu ra
hướng phát triển trong thời gian tới
Tài liệu tham khảo: Đưa ra các tài liệu đã được trích dẫn, tham khảo khi
thực hiện chuyên đề
Trang 9CHƯƠNG 1 NHẬP MÔN VỀ VĂN PHẠM VÀ NGÔN NGỮ HÌNH THỨC 1.1 Khái niệm ngôn ngữ
1.1.1 Các khái niệm cơ bản
1.1.1.1 Bảng chữ cái
Theo tài liệu [3], tác giả: Phan Đình Diệu, có viết “Một dãy hữu hạn hay
vô hạn các phần tử, kí hiệu được gọi là một bảng chữ cái trong đó mỗi phần
tử a được gọi là một kí hiệu (một chữ cái).”.
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ữ cái là một xâu hữu hạngồm một số lớn hơn hay bằng không các chữ cái của , trong đó một chữ cái cóthể xuất hiện nhiều lần
Xâu không có chữ cái nào được gọi là từ rỗng và được ký hiệu là Rõràng từ rỗng là từ thuộc mọi bảng chữ cái Hai từ = a1a2…an và =b1b2…bm được gọi là bằng nhau, và được ký hiệu là = , nếu n = m và ai =
bi với mọi i = 1, 2, …, n
Nếu α là một từ trên bảng chữ cái , và Δ thì α cũng là từ trên bảngchữ cái Δ Tập mọi từ trên bảng chữ cái được ký hiệu là *, còn tập mọi từkhác rỗng trên bảng chữ cái được ký hiệu là + Như vậy + = * \ {a, b, c,} và
* = + {a, b, c,} Dễ thấy rằng các tập * và + là vô hạn.
Trang 10Về 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ứng minh được rằngcác tập * và + là vô hạn đếm được.
Thí dụ 1.2:
Ta có , 0, 01, 101, 1010, 110011 là các từ trên bảng chữ cái Г = {a, b, c,0,1}.Các xâu , beautiful, happy, holiday là các từ trên bảng chữ cái = {a, b, c,a, b, c, …,z}}
1.1.1.3 Ngôn ngữ
Định nghĩa I.3
Cho bảng chữ cái , mỗt tập con L * được gọi là một ngôn ngữ hìnhthức (hay ngôn ngữ) trên bảng chữ cái
Tập rỗng, ký hiệu , là một ngôn ngữ không gồm một từ nào và được gọi
là ngôn ngữ rỗng Vậy ngôn ngữ rỗng là ngôn ngữ trên mọi bảng chữ cái
Chú ý rằng ngôn ngữ rỗng: L = là khác với ngôn ngữ chỉ gồm một từrỗng: L = {a, b, c,}
L = {a, b, c,a, b, c, aa, ab, ac, abc} là ngôn ngữ trên bảng chữ cái = {a, b, c,a, b, c}
L1 = {a, b, c,, a, b, abb, aab, aaa, bbb, abab}, L2 = {a, b, c,anbn | nN} là hai ngônngữ trên bảng chữ = {a, b, c,a, b}, L1 là ngôn ngữ hữu hạn trong khi L2 là ngônngữ vô hạn Mỗi từ thuộc ngôn ngữ L2 có số chữ cái a bằng số chữ cái b với a
và b không xen kẽ, a nằm ở phía trái và b ở phía phải của từ
1.1.2 Các phép toán trên các từ
1.1.2.1 Phép nhân ghép
Theo tài liệu [5], tác giả: Nguyễn Văn Định, có viết “Tích ghép (hay nhân
ghép) của hai từ α = a1a2…am và từ = b1b2…bn trên bảng chữ cái ,
là từ = a1a2…amb1b2…bn trên bảng chữ cái .
Kí hiệu phép nhân ghép là = α. (hay = α).”
Từ đó ta có Định nghĩa I.4
Định nghĩa I.4
Trang 11Tích ghép (hay nhân ghép) của hai từ α = a1a2…am và từ = b1b2…
bn trên bảng chữ cái , là từ = a1a2…amb1b2…bn trên bảng chữ cái
Kí hiệu phép nhân ghép là = α. (hay = α)
Thí dụ 1.4:
Trên bảng chữ cái W = {a, b, c,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=cthen cd=e else c/d=f
Cho = {a, b, c,a, b, c}, khi đó: Từ = abcbcb chứa 2 vị trí của bcb, đó
là a*bcb*cb và abc*bcb*, φ = bcb là một từ con của Từ chứamột vị trí của ký hiệu a, đó là *a*bcbcb
Từ = 010111001 trên bảng chữ cái {a, b, c,0, 1} có độ dài 9, trong đó 0101 làtiền tố và 11001 là hậu tố của
1.1.2.2 Phép lấy từ ngược
Theo tài liệu [5], tác giả: Nguyễn Văn Định, có viết “Giả sử có từ khác
rỗng = a1a2 …am trên bảng chữ cái , khi đó từ am am-1… a2a1 được gọi là từ ngược (hay từ soi gương) của từ , và được ký hiệu là R , hay ^ Khi = ta quy ước R = .”
Từ đó ta có Định nghĩa I.5
Định nghĩa I.5
Giả sử có từ khác rỗng = a1a2 …am trên bảng chữ cái , khi đó từ
am am-1… a2 a1 được gọi là từ ngược (hay từ soi gương) của từ , và được kýhiệu là R, hay ^
Khi = ta quy ước R =
Thí dụ 1.5:
Cho các từ α = 100110 và = aabb trên bảng chữ cái {a, b, c,0,1,a,b}, theo địnhnghĩa ta có:
αR = 011001 và (αR)R = (011001)R = 100110 = α
R = bbaa và (R)R = (bbaa)R = aabb = .
Cho các từ happy và oto trên bảng chữ cái = {a, b, c,a, b, c, …x, y, z}}, khi đó
ta có: (happy)R = yppah và (oto)R = oto Ngoài ra ta có: | (happy)R | = | yppah|
= | happy | = 3
1.1.2.3 Phép chia từ
Trang 12Là phép toán ngắt bỏ phần đầu hay phần cuối của một từ Ta có cácđịnh nghĩa sau:
Phép chia trái của từ α cho từ (hay thương bên trái của α và ) cho kếtquả là phần còn lại của từ α sau khi ngắt bỏ phần đầu trong từ α, và được kýhiệu là \
Phép chia phải của từ α cho từ (hay thương bên phải của α và )cho kết quả là phần còn lại của từ α sau khi ngắt bỏ phần cuối trong từ α,
và được ký hiệu là α/
1.1.3 Các phép toán trên ngôn ngữ.
Các họ ngôn ngữ cụ thể thường được đặc trưng một cách tiện lợi qua cácphép toán xác định trên ngôn ngữ, họ đó gồm các ngôn ngữ nhận được bằngviệ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ỗingôn ngữ là một tập hợp nên ta có các phép toán đại số tập hợp như là phépgiao, 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ên bảng chữ cái thì ta cũng có các ngôn ngữ mới sauđây trên bảng chữ cái : L1 L2, L1 L2, L1.L2, * \ L1
1.1.3.1 Phép hợp
Theo tài liệu [9], tác giả: Nguyễn Quốc Thắng – Nguyễn Lâm Tùng, có
viết “Tập các từ {x | xL1 hoặc xL2 } được gọi là hợp của hai ngôn ngữ
1
Trang 13n i i
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ớiphép giao: Ta có: L2 L3 = , do đó: L1(L2 L3) = ,
Mặt khác, ta có L1L2 = {a, b, c,001, 010, 0101, 0110} và L1L3 = {a, b, c,00, 010}, dođó: (L1L2) (L1L3) = {a, b, c,010} Vậy L1(L2 L3) (L1L2) (L1L3), tức làphép nhân ghép không có tính phân phối đối với phép giao
Trang 14Kiểm tra tính phân phối của phép hợp, phép giao đối với phép nhân ghép:
Ta có: L2L3 = {a, b, c,010, 100}, do đó: L1 (L2L3) = {a, b, c,0, 01, 010, 100},
Mặt khác ta cũng có L1 L2 = {a, b, c,0, 01, 10} và L1 L3 = {a, b, c,0, 01}, do đó:(L1 L2)(L1 L3) = {a, b, c,00, 001, 010, 0101, 100, 1001} Vậy L1 (L2L3)
(L1 L2)(L1 L3), tức là phép hợp không có tính phân phối đối vớiphép nhân ghép Tương tự, đối với phép giao, ta có: L2L3 = {a, b, c,010, 100}, do đó:L1 (L2L3) =
Mặt khác L1 L2 = {a, b, c,01}, L1 L3 = {a, b, c,0}, do đó: (L1 L2)(L1 L3)
= {a, b, c,010} Vậy L1 (L2L3) (L1 L2)(L1 L3) Tức là phép giao không
có tính phân phối đối với phép nhân ghép Vì phép ghép ngôn ngữ có tính kếthợp nên ký hiệu Ln được dùng với mọi ngôn ngữ L và số tự nhiên n theo nghĩaquen thuộc sau:
1
0, 1, 1.
n n
+ Xét ngôn ngữ L = {a, b, c,0, 1} trên bảng chữ = {a, b, c,0, 1} Ta có:
L2 = {a, b, c,00, 01, 10, 11}, tập hợp các xâu nhị phân độ dài 2;
L3 = {a, b, c,000, 001, 010, 011, 100, 101, 110, 111}, tập hợp các xâu nhị phân
độ dài 3 Tương tự, Ln là tập hợp các xâu nhị phân độ dài n Vì vậy, L* là tậphợp tất cả các xâu nhị phân
Trang 15+ Xét hai ngôn ngữ trên bảng chữ = {a, b, c,a}:
L1 = {a, b, c,a2n | n 1},L2 = {a, b, c,a5n+3 | n 0}
Khi đó, ta có L1 = {a, b, c,a2}+, L2 = {a, b, c,a5}*{a, b, c,a3}
1.1.3.6 Phép lấy ngôn ngữ ngược
Y \ X = {a, b, c,z} * / x X, y Y mà x = yz}}
Cho ngôn ngữ X và Y trên bảng chữ cái , khi đó thương bên phải của ngônngữ X cho ngôn ngữ Y là một ngôn ngữ trên , được ký hiệu là X /Y, là tập từ:
X / Y = {a, b, c,z} * / x X, y Y mà x = z}y}
1.2 Văn phạm và ngôn ngữ sinh bởi văn phạm
Ta có thể hình dung một văn phạm như một “thiết bị tự động” mà nó cókhả năng sinh ra một tập hợp các từ trên một bảng chữ cái 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ăn phạm.Việc xác định một ngôn ngữ trên bảng chữ cái cho trước có thể được thựchiệ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ột quy
cách hoạt động của “thiết bị tự động” để sau một số hữu hạn bước làm việc nódừng và sinh ra chính từ đó
Trang 16 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 ba cáchthức trên là tương đương nhau hay văn phạm làm việc theo các cách trên làtương đương nhau Vì vậy, ở đây ta quan tâm đến cách thứ nhất, tức là ta xétvăn phạm như là một “thiết bị tự động” sinh ra các từ Vì lẽ đó mà người ta còngọi các “thiết bị tự động” đó là văn phạm sinh
là một bảng chữ cái, gọi là bảng chữ cái cơ bản (hay bảng chữ cái kếtthú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ữ cái, = , gọi là bảng ký hiệu phụ (haybáng chữ cái không kết thúc), mỗi phần tử của nó được gọi là một ký hiệukhông kết thú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 = {a, b, c,| = α’AAα’A’A, với A Δ, α’A, α’A’A, ()* }
Chẳng hạn, với = {a, b, c,0,1}, = {a, b, c,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ái luô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ácquy tắc không hợp lệ
Thí dụ 1.10:
Các bộ bốn sau là các văn phạm:
G1 = <{a, b, c,0,1},{a, b, c,S},S,{a, b, c,S0S1,S}>,
G2 = <{a, b, c,a, b}, {a, b, c,S, A}, S, {a, b, c,SAb, AaAb, A}>,
G3 = <{a, b, c,a, b, c}, {a, b, c,S, A, B, C}, S, {a, b, c,SABC, AaA, BbB, CcC, Aa,Bb, Cc}>
Trang 17Chú ý: Nếu các quy tắc có vế trái giống nhau có thể viết gọn lại: hai quy
tắc , có thể được viết là | Chẳng hạn, như trong vănphạm G1 ở thí dụ 1.10, ta có thể viết hai quy tắc của nó dưới dạng S0S1 |
1.2.2 Ngôn ngữ sinh bởi văn phạm
Định nghĩa I.14
Cho văn phạm G = < , , S, P > và , ()* Ta nói đượcsuy dẫn trực tiếp từ trong G, ký hiệu ├G hay ngắn gọn là ├ (nếukhông sợ nhầm lẫn), nếu tồn tại quy tắc P và , ()* sao cho
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 Dgọi là dẫn xuất đầy đủ
Nế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
Cho văn phạm G = < , , S, P > Từ * được gọi là sinh bởi vănphạm G nếu tồn tại suy dẫn S╞ Ngôn ngữ sinh bởi văn phạm G, ký hiệuL(G), là tập hợp tất cả các từ sinh bởi văn phạm G:
L(G) = {a, b, c,* | S ╞G }
Hai văn phạm G1 = < 1, 1, S1, P1 > và G2 = < 2, 2, S2,P2 >được gọi là tương đương nếu L(G1) = L(G2)
Thí dụ 1.11:
Xét văn phạm G1 trong thí dụ 1.11 Từ = 00001111 được suy dẫn từ Sbằ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 Do đó L(G1) = {a, b, c,0n1n | n 0}
Xét văn phạm G2 trong thí dụ 1.10 Sử dụng quy tắc 1, rồi n lần (n 0)
Trang 18quy tắc 2, sau đó quy tắc 3 để kết thúc, ta có: S├ Ab╞ anAbnb├ anbn+1.
Do đó L(G2) = {a, b, c,anbn+1 | n 0}
Dễ dàng thấy rằng: L(G4) = {a, b, c,tôi ăn cơm, anh ăn cơm, chị ăn cơm, tôi ănphở, anh ăn phở, chị ăn phở, tôi uống sữa, anh uống sữa, chị uống sữa, tôiuống café, anh uống café, chị uống café}
Ta có thể biểu diễn việc dẫn xuất từ <câu> đến một từ trong L(G4), chẳnghạn “tôi ăn cơm” bằng một cây gọi là cây dẫn xuất hay cây phân tích cú phápnhư dưới đây Tất nhiên, theo quan điểm phân tích cú pháp thực tế, việc xemxét các quy tắc theo hướng ngược lại là từ phải qua trái Điều đó có nghĩa làcây dưới đây được xử lý từ dưới lên trên chứ không phải là từ trên xuốngdưới (Hình 1.1)
Hình 1.1 Cây dẫn xuất cho ví dụ
1.2.3 Phân loại văn phạm theo Chomsky
Theo tài liệu [8], tác giả: Trần Văn Ban, có viết “Trong định nghĩa của văn
phạm G = (V N , , P, S); V N là tập các biến, là tập chữ cái và S V N Để tiện lợi cho việc nghiên cứu và khảo sát các ngôn ngữ được sinh ra bởi văn phạm, chúng ta tìm cách phân loại chúng Muốn phân loại được các ngôn ngữ, chúng
ta phải dựa vào các dạng khác nhau của các qui tắc dẫn xuất Chomsky đã chia các qui tắc dẫn xuất của văn phạm G thành bốn loại …”
Dựa vào đặc điểm của tập quy tắc mà người ta chia các văn phạm thànhcác nhóm khác nhau Noam Chomsky (Institute Professor, MassachusettsInstitute of Technology Born December 7, 1928 Philadelphia, Pennsylvania,USA) đã 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ăn phạmtổ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,
Trang 19Như vậy, các quy tắc trong văn phạm nhóm 0 có dạng: , với =α’AAα’A’A, A Δ, α’A, α’A’A, ()*.Các quy tắc của văn phạm nhó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.
Văn phạm G = < , , S, P > mà các quy tắc của nó đều có dạng:
, với = α’AAα’A’A, A Δ, α’A, α’A’A, ()*, và | | ≤ | |, đượcgọi là văn phạm nhóm 1hay văn phạm cảm ngữ cảnh
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ôn ngữ 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 chứathêm quy tắc rỗng S, cũng được xếp vào lớp văn phạm nhóm 1
S├ 1A ├ 11B ├ 111A ├ … ╞ 1(12n-2)A ├ 1(12n-2)1 = 12n
Trang 201.3 Một số tính chất của ngôn ngữ
1.3.1 Một số tính chất của văn phạm và dẫn xuất
Định lý I.1
Với mọi văn phạm G = < , , S, P >, luôn tồn tại một văn phạm G’A =
< ’A, ’A, S’A, P’A > tương đương với văn phạm G, tức là L(G) = L(G’A)
Chứng minh:
Giả sử có văn phạm G = < , , S, P >, ta xây dựng văn phạm G’A = <
’A, ’A, S’A, P’A >, trong đó:
’A = , và với mỗi a , ta bổ xung một ký hiệu a vàgọi là đối ngẫu của a, đặt Г = {a, b, c, a | a }
’A = Г
S’A = S
P’A = P1 P2, với P1 = {a, b, c, a a | a }, P2 = {a, b, c,|
P}, và là các xâu và đã được thay các ký hiệu thuộc
bằng các ký hiệu đối ngẫu của nó Dễ thấy rằng L(G) = L(G’A), thật vậy ta sẽchứng minh hai bao hàm thức:
a./ Chứng minh L(G) L(G’A): Lấy bất kỳ L(G), khi đó ta có
S╞G, tức là ta có một dãy suy dẫn trực tiếp trong G: S = 0├G 1├G …
├G k = , với dãy suy dẫn này, ta thay mọi quy tắc trong các suy dẫn i
├G i+1, ( 0 ≤ i ≤ k-1), bởi các quy tắc tương ứng trong P1 và P2, ta nhậnđược dãy các suy dẫn trong G’A: S = ’A0├G’A ’A1 ├G’A… ├G’A ’Am = , do
đó ta có S╞G’A, tức là L(G’A) Vậy L(G) L(G’A)
b./ Chứng minh L(G’A) L(G): Lấy bất kỳ L(G’A), khi đó ta có
S╞G’A, tức là ta có một dãy suy dẫn trong G’A: S = ’A0├G’A ’A1 ├G’A … ├G’A
’Ak = , trong các suy dẫn i├G’A i+1, ( 0 ≤ i ≤ k-1), ta thay mọi kí hiệu a
Г bởi các ký hiệu tương ứng a 1, khi đó mọi quy tắc đều thuộc P, tanhận được dãy các suy dẫn trưc tiếp trong G: S = 0├G 1├G … ├G k = ,
Trang 211.3.2 Tính đóng của lớp ngôn ngữ sinh bởi văn phạm
Xây dựng văn phạm G sinh ra ngôn ngữ L1L2 như sau: G = <, ,
a./ Chứng minh L(G) L1L2: Giả sử L(G), khi đó tồn tại một
suy dẫn trong văn phạm G: S ╞G , trong đó * = (12)* Do cáchxây dựng tập quy tắc P, nên trong suy dẫn S╞ , có hai khả năng:
hoặc S├G S1╞G1 , vậy là kết quả của suy dẫn S1╞ trong G1, do
đó L(G1) (a)
hoặc S├G S2╞G2 , vậy là kết quả của suy dẫn S2╞ trong G2, do
đó L(G2) (b)
Từ (a) và (b), ta thấy L1L2, hay L(G) L1L2
b./ Chứng minh L1L2 L(G): Giả sử L1L2, khi đó ta cũng có
hai khả năng: L1 hoặc L2 :
Nếu L1 = L(G1), khi đó ta có suy dẫn S1╞G1 trong G1, do đó
ta cũng có suy dẫn S ├G S1 ╞G1 là một suy dẫn trong G (vì theo cách xâydựng G, mọi quy tắc và mọi ký hiệu trong G1 cũng đều thuộc G), như vậy
L(G)
Trang 22 Nếu L2 = L(G2), khi đó ta có suy dẫn S2╞G2 trong G2, do đó
ta cũng có suy dẫn S ├G S2 ╞G2 là một suy dẫn trong G (vì theo cách xâydựng G, mọi quy tắc và mọi ký hiệu trong G2 cũng đều thuộc G), như vậy
Trong đó p1 là tập hợp các quy tắc nhận được từ P1, mà mọi ký hiệu a 1
đều được thay đổi bởi ký hiệu đối ngẫu tương ứng của nó a 1 ,P2
Trang 23CHƯƠNG 2 VĂN PHẠM PHI NGỮ CẢNH 2.1 Suy dẫn phi ngữ cảnh
2.1.1 Các thí dụ về văn phạm phi ngữ cảnh
Theo tài liệu [4], tác giả: Nguyễn Thị Trúc Viên, có viết:
“Một văn phạm G = (V, T, S, P) đượ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 ∈ V còn x ∈ (V ∪T)*.”
Từ đó ta có Định nghĩa II.1
Định nghĩa II.1
Văn phạm phi ngữ cảnh là một văn phạm G = (∑, ∆, P, S) mà mọi sản xuất
(hay quy tắc) của nó đều có dạng:
A→α, trong đóα, trong đó A∈∆ và α∈(∑∪∆)*
Trước hết ta hãy xem một số thí dụ về văn phạm phi ngữ cảnh
Trang 24Mèo nằm
Trong các quy luật trên thì các từ gạch dưới đơn như chủ ngữ, động từ làcác phạm trù cú pháp biểu diễn cho một cấu trúc con của một câu Còn các từ
gạch dưới kép như tôi, mèo là các từ Việt (hay ký hiệu) trực tiếp có mặt trong
các câu Nếu ta biểu diễn một cách ngắn gọn các phạm trù cú pháp câu, chủ ngữ,
vị ngữ, danh từ, đại từ, động từ lần lượt là U, C, V, D, Đ, G thì ta có thể trìnhbày lại các quy tắc trên một cách súc tích hơn như sau:
Và đó chính là các sản xuất trong văn phạm phi ngữ cảnh, trong đó U, C,
V, D, Đ, G là các ký hiệu không kết thúc, còn “mèo”, “bò”, “tôi”, “nó”, “ăn”,
“nằm”, “uống” là các ký hiệu kết thúc
Thí dụ 2.2:
Trong các ngôn ngữ lập trình, với ký pháp BNF (backus-nuaur form), ta có
thể định nghĩa một định danh sau:
<định danh> ::= <chữ cái> │<định danh> <chữ cái>│<định danh> <consố>
<chữ cái>::= A │B│C│ │Z
<con số>::=0│1│2│3│4│5│6│7│8│9
Đó cũng chính là các quy tắc phi ngữ cảnh, trong đó ::= có nghĩa như →α, trong đó,các kí hiệu không kết thúc là <định danh>, <chữ cái>, <con số> và các kí hiệukết thúc là A,B,C, Z,1,2, ,9
Thí dụ 2.3:
Trong Chương II ta đã chứng minh rằng ngôn ngữ L = {a, b, c,a n b n │n≥0} là
không chính quy Ngôn ngữ đó có thể được sản sinh bởi một văn phạm phi ngữ
cảnh G=(∑, ∆, P, S) trong đó:
∑={a, b, c,a,b}, ∆={a, b, c,S} và
Trang 25Vậy ngôn ngữ này cũng là ngôn ngữ phi ngữ cảnh.
2.1.2 Tính chất cơ bản (phân rã các suy dẫn phi ngữ cảnh)
Định lý I.2 ở chương I nói rằng ta có thể hợp thành các suy dẫn của một hệ
viết lại thành một suy dẫn Ph dẫn phát biểu ngược lại là không đúng với mọi hệ
viết lại nói chung, song lại đúng với các văn phạm phi ngữ cảnh: ta có thể phân
rã một suy dẫn phi ngữ cảnh thành các suy dẫn con độc lập với nhau Tính chất
cơ bản này của các suy dẫn phi ngữ cảnh là rất hay được vẫn dụng trong cácchứng minh sau này
Theo tài liệu [1], tác giả: nguyễn Văn Ba, có viết:
“Cho G=(∑,∆,P,S) là một văn phạm phi ngữ cảnh và đặc V= ∑∪∆ Cho
một suy dẫn trong G u 1 u n k v, trong đó u 1 ∈ V* với mọi i=1, ,n và v∈V* thế thì với mọi i=1, ,n tồn tại v i ∈V* và k i∈N sao cho:
Với mọi i=1, ,n: u i k
với mọi i=1, ,n tồn tại v i ∈V* và k i∈N sao cho:
Với mọi i=1, ,n: ui k
Trường hợp n=2 Ta chứng minh định lý bằng quy nạp trên k.
Nếu k=0: hiển nhiên.
Nếu k=1: u 1 u 2 1 v Bởi định nghĩa của suy dẫn trực tiếp ta có
u 1 u 2 =u’AAu”, v=u’Aβu’’ và u’A’A và A→β∈P.
Hai trường hợp có thể là:
+ Trường hợp │u’│ │u 1 │ta có u’=u 1 t và u 2 =tAu’’
Đặt v 1 =u 1 và v 2 = tβu’’
Trang 26Theo tài liệu [4], tác giả Nguyễn Thị Trúc Viên, có viết “Cho G = (V,
T, S, P) là một VPPNC Một cây có thứ tự là một cây dẫn xuất cho G nếu và chỉ nếu…”
Từ đó ta có Định nghĩa II.2
Định nghĩa II.2
Một cây suy dẫn trong một văn phạm phi ngữ cảnh G=(∑,∆,P,S) là một
cây mà mỗi đỉnh được gắn một nhãn là một phần tử thuộc tập ∑∪∆∪{a, b, c,ε} vàthoản mãn các điều kiện sau:
Nhãn của gốc là ký kiệu đầu S.
Nhãn của mỗi đỉnh trong là một ký hiệu không kết thúc (một phần tử của
∆) Nhãn của mỗi lá là một ký hiệu kết thúc (một phần tử của ∑) hoặc là ε (xâurỗng)
Trang 27Với mỗi đỉnh trong, nếu nó có nhãn là A và các con của nó là các đỉnh
n 1 ,n 2 ,n k lần lượt có nhãn là X 1 ,X 2 , ,X k , thì A→X 1 X 2 X k phải làmột sản xuất của
con có nhãn là A, thì cây con đó được gọi là một A-cây.
Ta gọi biến (hay kết quả) của một cây các suy dẫn hay của một A-cây là
xâu tạo thành bằng cách ghép tiếp các lá của cây theo trật tự từ trái qua phải
Thí dụ 2.7:
Cho G=({a, b, c,a,b},{a, b, c,S,A},P,S) là một văn phạm phi ngữ cảnh, trong đó P gồm
các quy tắc sau:
S→aAS│a A→SbA│SS│ba
Một cây suy dẫn có biên là xâu aabbaa được cho trong Hình 2.1, trong đó
ta chỉ ra cách đi (men theo các cành) từ trái qua phải, cho phép nhặt lần lượt các
lá để thành lập ra xâu đó
Hình 2.1 Một cây suy dẫn
Hình 2.2 cho một cây con của cây suy dẫn trên
Hình 2.2 Một A-cây
Trang 28Với mọi ký hiệu không kết thúc A, A *
G u khi và chỉ khi tồn tại một A-cây
có biên u
Phép chứng minh được thực hiện theo hai chiều (khi,chỉ khi)
Trước hết ta giả thiết u là biên của một A-cây và ta chứng minh rằng
A * G u, bằng quy nạp trên số m các đỉnh trong của cây.
+ m=1: Cây có dạng như trong Hình 2.3.
Hình 2.3 Một A-cây có một đỉnh trong
Như thế thì u=X 1 X 2 X k và A→u∈P Vậy A * u.
+ m>1: Giả thiết rằng kết luận là đúng với mọi cây có không quá m-1 đỉnh
trong và xét một A-cây có m đỉnh trong Giả sử X 1 ,X 2 , ,X k là các hậu duệ trực
tiếp (con) của gốc A Chúng đều là gốc của các X i -cây,1≤i≤k, mà số các đỉnh trong là ít hơn m Bởi giả thiết quy nạp, ta có X i * u i , trong đó ui là biên của X i-
cây (u i =X i nếu X i∈∑) Từ Định lý I.2 (hợp thành các suy dẫn ) ta có:
A= G X 1 X 2 X k G * u 1 u 2 u k (Hình 2.4) Mặt khác, nếu i<j thì X i và mọi hậu duệ
của nó luôn luôn ở bên trái X j cùng với các hậu duệ của nó Vậy u=u 1 u 2 u k là
biên của A-cây, cho nên ta có A *
G u.
Trang 29Hình 2.4 Một A-cây và các cây con của nó
Bây giờ ta giả thiết A *
G u và ta sẽ chứng minh, bằng quy nạp trên độ dài
n của dây dẫn, rằng tồn tại một A-cây có biên là u.
n=1: Bấy giờ A→α, trong đóu∈P và ta có một A-cây như trên Hình 2.3 với biên là
u=X 1 X 2 X k
n>1: Giả thiết rằng với mọi ký hiệu không kết thúc A, nếu ta có một suy
dẫn A *u mà độ dài là nhỏ thua n, thì ta có môt A-cây có biên giới là u Hãy xét
một suy dẫn A * u có độ dài n Giả sử A→ X 1 X 2 X k là sản xuất được dùng trong
bước thứ nhất của suy dẫn, nghĩa là A G X 1 X 2 X k G*u Từ Định lý II.1
(Phân rã các suy dẫn phi ngữ cảnh) ta có u= u 1 u 2 u k và X i G*u i , 1≤i≤k Vì rằng độ dài của mỗi suy dẫn X i G*u i , 1≤i≤k là nhỏ thua n, cho nên tồn tại một
X i -cây, 1≤i≤k có biên là ui Từ đó ta có thể thành lập một A-cây như trong Hình 2.4 bằng cách nối gốc A với gốc của mỗi một X i -cây, 1≤i≤k A-cây đó có biên là
xâu u= u 1 u 2 u k
2.1.4 Suy dẫn trái, suy dẫn phải và tính nhập nhằng
Như đã thấy ở trên, một cây suy dẫn mà kết qủa là u tương ứng với nhiều
suy dẫn S * u Trong số các suy dẫn này, ta chú ý đặc biệt tới hai suy dẫn sau:
Suy dẫn trái, đó là suy dẫn mà trong đó, ở mỗi bước, ký hiệu được thaythế luôn luôn là ký hiệu không kết thúc nằm bên trái nhất trong dạng câu
Suy dẫn phải, đó là suy dẫn mà trong đó, ở mỗi bước, ký hiệu được thaythế luôn luôn là ký hiệu không kết thúc nằm bên phải nhất trong dạng câu
Dễ dàng chứng tỏ rằng có một song ánh giữa các cây suy dẫn của một văn
phạm G với các suy dẫn trái(hay phải).
Một văn phạm phi ngữ cảnh G = (∑, ∆, P, S) là nhập nhằng nếu tồn tại một xâu w∈(∑∪∆)* cùng là kết quả của hai cây suy dẫn khác nhau
Cùng một ngôn ngữ có thế được sinh ra từ vô hạn các văn phạm khác nhau,trong đó có văn phạm là nhập nhằng, có văn phạm là không nhập nhằng Mộtngôn ngữ phi ngữ cảnh được nói là nhập nhằng cố hữu, hay nói gọn là nhập
Trang 30nhằng, nếu tất cả các văn phạm sinh ra nó đều nhập nhằng Người ta chứng minhrằng tồn tại những ngôn ngữ như vậy.
Hình 2.5 Một cây suy dẫn trong G 0
Các câu suy dẫn cho trên Hình 2.5 có kết quả là a+a*a.
Suy trái tương ứng với cây đó là:
E E*E E+E*E a+E*E a+a*E a+a*a
Suy dẫn phải tương ứng với cây đó là:
E E*E E*a E+E*a E+a*a a+a*a
Tuy nhiên ta lại còn có một cây khác có cùng kết quả là a+a*a, như trên
Hình 2.6
Trang 31Hình 2.6 Một cây suy dẫn khác của G 0
Như vậy văn phạm G 0 là nhập nhằng Điều đó có nghĩa là trong văn phạm
G 0 biểu thức a+a*a được hiểu theo hai cách: cộng trước hay nhân trước.
Để loại trừ nhập nhằng ta đưa thêm một quy ước phù trợ:
Hoặc là ta luôn luôn thực hiện các phép toán (cộng và nhân) theo thứ tự từtrái qua phải khi các phép toán đó không bị ngăn cách bởi vòng đơn Yêu cầu
này dẫn tới một văn phạm G 1 , tương đương với văn phạm G 0, nhưng không nhậpnhằng, và có các quy tắc sau:
E→E+T│E*T│T T→(E)│a
Hoặc là ta luôn luôn thực hiện phép nhân trước phép cộng khi chúngkhông bị ngăn cách bởi vòng đơn (ưu tiên phép nhân so với phép cộng) Yêu cầu
này dẫn tới một văn phạm khác G 2 , tương đương với G 0, cũng không nhậpnhằng, và có các quy tắc sau:
E→E+T│T T→T*F│F F→(E)│a
Trong G 2 các phép toán cùng mức ưu tiên mà đứng cạnh nhau thì đượcthực hiện theo thứ tự từ trái qua phải
Các cây suy dẫn cho xâu a+a*a trong các văn phạm G 1 +G 2 được cho lầnlượt trên các Hình 2.7 và 2.8
Trang 32Hình 2.7 Một cây suy dẫn của G 1
Hình 2.8 Một cây suy dẫn của G 1
2.2 Biến đổi các văn phạm phi ngữ cảnh
Thông thường thì một văn phạm còn chứa đựng nhiều yếu tố vô ích, chẳnghạn các ký hiệu không tham gia vào suy dẫn ra các xâu của ngôn ngữ, hay là các
sản xuất có dạng A→B(A,B∈∆) làm kéo dài cac suy dẫn một cách không thực sự
là cần thiết Bởi vậy nhiều khi ta cần biến đổi các văn phạm thành các văn phạmtương đương mà không còn các yếu tố vô ích nữa
2.2.1 Loại bỏ các ký hiệu vô ích
Trang 33Cho một văn phạm phi ngữ cảnh G = (∑, ∆, P, S) và đặt V=∑∪∆ Một ký hiệu X∈V là có ích nếu tồn tại một suy dẫn S *αXβu’’ và *w, trong đó α,βu’’ và ∈V* và
w∈∑*, nếu không nó là vô ích
Như vậy một ký hiệu có ích X phải là:
1) một ký hiệu hữu sinh, nghĩa là tồn xâu x∈∑* mà X * x.
2) một ký hiệu đến được, nghĩa là tồn tại hai xâu α,βu’’ và ∈V* để cho S *αXβu’’ và
Bổ đề II.1 (Loại bỏ các ký hiệu vô sinh)
Tồn tại mọt thuật toán cho phép, với mọi văn phạm phi ngữ cảnh G mà
L(G)≠, thành lập một văn phạm phi ngữ cảnh tương đương G’ chỉ có các ký
hiệu hữu sinh
Các tập W i lớn dần (W i W i+1) nhưng lại luôn phải nằm trong tập hữu hạn
V Vậy dãy các W i sẽ phải dừng Vì thế ta chỉ cần tính các W i liên tiếp khi chúngcòn thực sự tăng trưởng, và ngừng lại khi chúng ngừng tăng, nghĩa là khi có
W k =W k+1 Bấy giờ ta cũng sẽ có W k+1 =W k+2 ,v.v và như thế thì W=W k Ta sẽ
chứng minh rằng W∩∆ chính là tập hợp các ký hiệu không kết thúc hữu sinh a) Cho A∈∆ là một ký hiệu không kết thúc hữu sinh, nghĩa là tồn tại một
suy dẫn:
A=α0 α1 αk=u trong đó u∈∑*, k≥1
Ta có u ∈ ∑* = W 0 * , và bước tiếp bước, căn cứ vào định nghĩa của các W i ta
chứng tỏ được rằng với mọi i, α k-i∈W t * , và cuối cùng thì A ∈ W t * Vậy thì
A∈W∩∆.
b) Cho A ∈ W ∩ ∆ Thế thì tồn tại một số nguyên i để cho A ∈ W i ∩ ∆.Ta
sẽ chứng minh bằng quy nạp trên i rằng A là hữu sinh.
+ Nếu i = 1, bởi định nghĩa của W 1 , ∃u∈W 0 * để cho A→α, trong đóu∈P, vậy ta có
A * u và A là hữu sinh.
+ Giả sử với mọi số nguyên k<i, nếu A∈W k∩∆ thì A là hữu sinh
Ta có A∈W i ∩ ∆ = (W i-1 ∩∆) ∪ {a, b, c,A∈∆│∃α∈W i-1*:A→α, trong đóα∈P}.
Nếu A∈W i-1 thì nó là hữu sinh bởi giả thiết quy nạp Nếu không ta có
A→α∈P với α∈W i-1 * Bởi giả thiết quy nạp thì mỗi ký hiệu không kết thúc trong
Trang 34α, đều suy dẫn được một xâu trên ∑ Cho nên suy ra A cũng vậy, nói cách khác
Ngược lại, giả sử rằng x∈L(G) và x L(G’A) Như mọi suy dẫn của x trong
G có sử dụng ít nhất một ký hiệu không kết thúc trong ∆-∆’A hoặc một sản xuất
trong P-P’ (và như vậy vẫn phải sử dụng một ký hiệu không kết thúc trong
∆-∆’A) Như thế thì đã có một ký hiệu không kết thúc trong ∆-∆’A là hữu sinh Mâu
thuẫn này cho phép ta kết luận rằng L(G) L(G’A) Từ đó L(G)=L(G’).
Vậy thì: W 0 = {a, b, c,a,b}
W 1 =W 0∪{a, b, c,A,C} (bởi các quy tắc A→a và C→a)
W 2 =W 1∪{a, b, c,S} (bởi quy tắc S→aA)
Cho một văn phạm phi ngữ cảnh G Bài toán L(G)= là giải được
Quả vậy, L(G)= khi và chỉ khi S W, và ta đã có cách để tính tập W.
Bổ đề II.2 (Loại bỏ các ký hiệu không đến được)
Trang 35Tồn tại một thuật toán cho phép với mọi văn phạm phi ngữ cảnh G thành lập một văn phạm phi ngữ cảnh tương đương G’ chỉ có các ký hiệu đến được.
Chứng minh
Thành lập tập hợp các ký hiệu đến được
Ta đặt: W 0 ={S}, U 0 =
Với i>0: W i =W i-1∪{a, b, c,A∈∆│∃B∈Wi-1 , ∃u 1 u 2∈(∑∪∆)*: B→ u1 Au 2∈P}
U i =U i-1∪{a, b, c,a∈∑│∃BWi-1 ,∃u 1 ,u 2∈(∑∪∆)*: B→u1 au 2∈P}
Và cuối cùng đặt: W=¿i≥ 0¿ ❑W i , U=¿i≥ 0¿ ❑U i
Tiếp theo ta chứng minh rằng:
+ Có thể tính các tập W và U một cách hữu hiệu ; điều này được suy ra từ
sự kiện nếu W i+1 =W i thì k>1 : W i+k =W i+1 =W và U i+k =U i+1 =U.
+ W là tập các ký hiệu không kết thúc đến được, và U là tập các ký hiệu kết
thúc đến được Điều này được chứng minh tương tự như ở Bổ đề II.1, xinchuyển đến độc giả như là một bài tập
Thành lập văn phạm G’
Tiếp đến ta thành lập văn phạm G’=(U,W,P’,S)
trong đó: P’={a, b, c,A→α, trong đóu∈P│A∈W và u∈(U∪W)*}
và văn phạm tương đương với G’ chỉ gồm các ký hiệu đến được là:
G”=({a, b, c,a,b},{a, b, c,S,A},P”,S)
trong đó: P’’={a, b, c,S→α, trong đóaA│abAS, A→bA│a}.
Trang 36có các ký hiệu đến được.
Rõ ràng rằng L(G’’)=L(G’)=L(G)=L
Ta hãy chứng minh rằng G” chỉ có các ký hiệu có ích.
Giả sử trong G” có một ký hiệu vô ích X Từ bổ đề II.2, X là đến được,
nghĩa là:
∃α,β : S G” *αXβ
Vì G’ bao gồm tất cả các ký hiệu và tất cả các sản xuất G”, và G’ chỉ có
các ký hiệu hữu sinh, vậy ta có:
Áp dụng Bổ đề II.1, B bị loại cùng với sản xuất S→AB, và văn phạm thu
được là:
S→a A→a
Áp dụng Bổ đề II.2, A bị loại vì không đến được, và ta chỉ còn:
Trang 37vẫn còn có ký hiệu vô ích là A.
2.2.2 Loại bỏ các ε-sản xuấtsản xuất
Các ε-sản xuất (tức là sản xuất có dạng A→α, trong đóε) không phải là vô ích hoàntoàn, bởi vì khi xâu ε là thuộc ngôn ngữ, thì nhất thiết văn phạm phải chứa ítnhất một ε-sản xuất (thường là S→α, trong đóε) Nhưng ngoại trừ trường hợp đó thì các ε-sản xuất là thừa, và có thể loại bỏ
Thành lập tập hợp các ký hiệu không kết thúc sinh ra xâu rỗng
Ta đặt: E0={a, b, c,A│A→α, trong đóε∈P}
với i>0: E i =E i-1∪{a, b, c,A│∃u∈Ei-1 * : A→α, trong đóu∈P}
Ta thành lập P’ căn cứ trên P theo hai bước:
+ Với mỗi sản xuất A→X 1 X 2 X n∈P ta đưa vào P’A tất cả các sản xuất có
dạng A→α 1 α 2 α n trong đó:
1) Nếu X i E thì α i =X i
2) Nếu X i∈E thì α i =X i hoặc α i =ε
Trang 38- Tính chất này đúng với i=0.
- Ta chứng minh nó cũng đúng với i+1 với giả thiết rằng nó đã đúng với mọi suy dẫn có độ dài cho tới i.
Do định nghĩa của P’A, có các xâu α1, ,αp,αp+1 của E* sao cho:
A→α 1 Y 1 α p Y p α p+1 là một sản xuất trong văn phạm G (2-3)
Bởi định nghĩa của E ta có:
jG x j với j=1, ,p trong đó n j <i và x=x 1 x p (2-6)
Cho k 1 , ,k q là dãy tăng của các chỉ số của các xâu x j không rỗng, tức là:
Với j từ 1 đến q, x kj là không rỗng và x=x k1 x kq (2-7)
Bởi định nghĩa của P’A và của dãy kj, ta có:
A→X k1 X kq là một sản xuất của P’A (2-8)
Từ (2-6),(2-7) và gỉa thiết quy nạp ta có: