BÁO CÁO LIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN

31 486 0
BÁO CÁO LIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

NỘI DUNG BÁO CÁO PHẦN 1 LÝ THUYẾT Câu 2: Chapter 6. ContextFree Grammar. Section 6.1. Definition of ContextFree Grammar. Section 6.2. More exemples… 1 p163171. PHẦN 2 BÀI TẬP Câu 8: Viết chương trình RAM chuẩn và RAM thô sơ kiểm tra điều kiện các số a, b, c cho trước một cách ngẫu nhiên lần lượt là các cạnh và đường chéo của một hình chữ nhật. PHẦN 1 – LÝ THUYẾT Chương 6: VĂN PHẠM PHI NGỮ CẢNH (CONTEXTFREE GRAMMARS) 6.1 Các định nghĩa và các ví dụ: Nhiều ngôn ngữ mà chúng ta từng biết, cả ngôn ngữ có qui tắc lẫn ngôn ngữ bất qui tắc, có thể được mô tả bằng các định nghĩa đệ quy. Trong ví dụ đầu tiên, bao hàm một ngôn ngữ qui tắc rất đơn giản, việc định dạng sơ sài của định nghĩa đệ quy dẫn đến ý tưởng của văn phạm phi ngữ cảnh. Dạng văn phạm này và nhiều văn phạm tổng quát khác mà chúng ta sẽ học tạo thành các công cụ mạnh mẽ hỗ trợ mô tả và phân tích các ngôn ngữ. Ví dụ 1: Sử dụng các qui tắc văn phạm để mô tả ngôn ngữ. Cho rằng ngôn ngữ L = {a,b} của tất cả các chuỗi trên bảng chữ cái {a, b}. Trong ví dụ 2.15, chúng ta đã thấy định nghĩa đệ quy của L được biễu diễn như sau: 1. A  L 2. Cho bất cứ S  L, Sa  L. 3. Cho bất cứ S  L, Sb  L. 4. Không có các chuỗi khác thuộc L. Cho rằng S ở đây là một biến, biễu diễn cho 1 phần tử bất kỳ của L, mà giá trị của phần tử tồn tại bởi một vài kết nối của các qui tắc từ 1 đến 3. Qui tắc 1có dạng khi chúng ta ghi S  A, chỉ định cách cho S một giá trị để A thay thế. Qui tắc 2 và 3 có thể được viết S  Sa và S  Sb. Điều này có nghĩa S cũng có thể được thay thể bởi Sa hoặc Sb; ngoài ra phải tồn tại giá trị cuối bằng cách tiếp tục sử dụng các qui tắc gán giá trị cho S mới. Biểu tượng  được sử dụng cho từng qui tắc khi một biến được thay thế bởi một chuỗi. Cho 2 chuỗi  và , khi ký hiệu    có nghĩa là  có thể tồn tại bằng cách cung cấp một trong những qui tắc đến một biến đơn trong xâu chuỗi . Sử dụng ký hiệu này trong ví dụ, chúng ta có thể viết: S  Sa  Sba  Sbba  Abba = bba. để mô tả thứ tự từng bước (ứng dụng của các qui tắc 2,3,3, và 1) được dùng để tồn tại hoặc chuyển hóa, xâu chuỗi bba. Sự chuyển hóa kết thúc tại điểm thay thế S bằng một xâu chuỗi thực của các ký hiệu bảng chữ cái (trong trường hợp A này); mỗi bước tương tự trước khi gọi qui nạp, kể từu khi thay thế xâu chuỗi S bằng 1 xâu chuỗi vẫn còn chứa 1 biến. Thậm chí, có thể chú thích một cách đơn giản cho các ký hiệu | nghĩa là “hoặc” và ghi 3 qui tắc đầu tiên như:

Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO LIỂU LUẬN BÁO CÁO LIỂU LUẬN MÔN : LÝ THUYẾT TÍNH TOÁN Giảng viên Giảng viên : : GS. TS. Phan Huy Khánh GS. TS. Phan Huy Khánh Nhóm thực hiện: Nhóm thực hiện: Huỳnh Kim Tân Huỳnh Kim Tân Nguyễn Thị Hồng Thuý Nguyễn Thị Hồng Thuý Vũ Thị Diệu Thư Vũ Thị Diệu Thư Lớp: Lớp: KHMT K12 KHMT K12 KHMTK12 - Nhóm 7 1 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 NỘI DUNG BÁO CÁO PHẦN 1 - LÝ THUYẾT Câu 2: Chapter 6. Context-Free Grammar. - Section 6.1. Definition of Context-Free Grammar. - Section 6.2. More exemples… [1] p163-171. PHẦN 2 - BÀI TẬP Câu 8: Viết chương trình RAM chuẩn và RAM thô sơ kiểm tra điều kiện các số a, b, c cho trước một cách ngẫu nhiên lần lượt là các cạnh và đường chéo của một hình chữ nhật. KHMTK12 - Nhóm 7 2 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 PHẦN 1 – LÝ THUYẾT Chương 6: VĂN PHẠM PHI NGỮ CẢNH (CONTEXT-FREE GRAMMARS) 6.1 Các định nghĩa và các ví dụ: Nhiều ngôn ngữ mà chúng ta từng biết, cả ngôn ngữ có qui tắc lẫn ngôn ngữ bất qui tắc, có thể được mô tả bằng các định nghĩa đệ quy. Trong ví dụ đầu tiên, bao hàm một ngôn ngữ qui tắc rất đơn giản, việc định dạng sơ sài của định nghĩa đệ quy dẫn đến ý tưởng của văn phạm phi ngữ cảnh. Dạng văn phạm này và nhiều văn phạm tổng quát khác mà chúng ta sẽ học tạo thành các công cụ mạnh mẽ hỗ trợ mô tả và phân tích các ngôn ngữ. Ví dụ 1: Sử dụng các qui tắc văn phạm để mô tả ngôn ngữ. Cho rằng ngôn ngữ L = {a,b}* của tất cả các chuỗi trên bảng chữ cái {a, b}. Trong ví dụ 2.15, chúng ta đã thấy định nghĩa đệ quy của L được biễu diễn như sau: 1. A ∈ L 2. Cho bất cứ S ∈ L, Sa ∈ L. 3. Cho bất cứ S ∈ L, Sb ∈ L. 4. Không có các chuỗi khác thuộc L. Cho rằng S ở đây là một biến, biễu diễn cho 1 phần tử bất kỳ của L, mà giá trị của phần tử tồn tại bởi một vài kết nối của các qui tắc từ 1 đến 3. Qui tắc 1có dạng khi chúng ta ghi S → A, chỉ định cách cho S một giá trị để A thay thế. Qui tắc 2 và 3 có thể được viết S → Sa và S → Sb. Điều này có nghĩa S cũng có thể được thay thể bởi Sa hoặc Sb; ngoài ra phải tồn tại giá trị cuối bằng cách tiếp tục sử dụng các qui tắc gán giá trị cho S mới. Biểu tượng → được sử dụng cho từng qui tắc khi một biến được thay thế bởi một chuỗi. Cho 2 chuỗi α và β, khi ký hiệu α ⇒ β có nghĩa là β có thể tồn tại bằng cách cung cấp một trong những qui tắc đến một biến đơn trong xâu chuỗi α. Sử dụng ký hiệu này trong ví dụ, chúng ta có thể viết: S ⇒ Sa ⇒ Sba ⇒ Sbba ⇒ Abba = bba. để mô tả thứ tự từng bước (ứng dụng của các qui tắc 2,3,3, và 1) được dùng để tồn tại hoặc chuyển hóa, xâu chuỗi bba. Sự chuyển hóa kết thúc tại điểm thay thế S bằng một xâu chuỗi thực của các ký hiệu bảng chữ cái (trong trường hợp A này); mỗi bước tương tự trước khi gọi qui nạp, kể từu khi thay thế xâu chuỗi S bằng 1 xâu chuỗi vẫn còn chứa 1 biến. Thậm chí, có thể chú thích một cách đơn giản cho các ký hiệu | nghĩa là “hoặc” và ghi 3 qui tắc đầu tiên như: S → A | Sa | Sb KHMTK12 - Nhóm 7 3 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 (Trong các chú thích mới, bỏ qua cách viết qui tắc 4, mặc dù kết quả vẫn không tường minh ). Chúng ta lưu ý về các tham chiếu mới trong một biểu thức như là Sa | Sb, hai khả năng là Sa và Sb, không là a và S- trong các từ khác, việc nối các xâu chuỗi có quyền ưu tiên trên quá trình hoạt động. Trong ví dụ 2.15, chó thấy rằng khả năng của L: 1. A ∈ L. 2. a ∈ L. 3. b ∈ L. 4. Cho mỗi x và y trong L, x,y ∈ L. 5. Không có xâu chuỗi khác trong L. Sử dụng chú thích mới, chúng ta sẽ tổng quát hóa ‘các qui tắc văn phạm’ được viết : S → A | a | b| SS Với cách thức đó, có nhiều cách để chứa xâu chuỗi bba. Hai dẫn xuất được hiển thị như sau : S ⇒ SS ⇒ bS ⇒ bSS ⇒ bbS ⇒ bba S ⇒ SS ⇒ Sa ⇒ Ssa ⇒ bSa ⇒ bba Năm bước trong dòng đầu phù hợp với các qui tắc 4, 3, 4, 3, và 2, và trong dòng thứ 2 phù hợp với các qui tắc 4, 2, 4, 3, và 3. Trong cả 2 trường hợp trong ví dụ 6.1, các định dạng được sử dụng trong định nghĩa đệ quy có thể được giải thích như các qui tắc văn phạm trong văn phạm phi ngữ cảnh. Trước khi đưa ra định nghĩa chính thức của văn phạm, chúng ta nên xem thêm 2 ví dụ. Trong ví dụ 6.2, mặc dù văn phạm tương đối đơn giản hơn trong ví dụ 6.1, ngôn ngữ tương ứng thuộc loại bất qui tắc. Trong ví dụ 6.3 thì tiêu biểu hơn cho kiểu văn phạm chứa nhiều hơn 1 biến. Ví dụ 6.2: Ngôn ngữ {a n b n | n ≥ 0} Các qui tắc văn phạm S → aSb | A Là một cách khác để mô tả ngôn ngữ L được định nghĩa như sau: 1. A ∈ L. 2. Cho mỗi x ∈ L, axb ∈ L. 3. Không có gì nữa trong L. Ngôn ngữ L đơn giản được xem là ngôn ngữ bất qui tắc {a n b n | n ≥ 0}. Các qui tắc văn phạm trong phần đầu của ví dụ 6.1, cho ngôn ngữ {a,b}*, cho phép a’s và b’s được thêm vào một cách độc lập lẫn nhau. Ở đây, theo hướng xử lý khác, mỗi lần một ký hiệu được thêm vào cuối mỗi xâu chuỗi bởi ứng dụng của qui tắc văn phạm S KHMTK12 - Nhóm 7 4 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 → aSb, ký hiệu ngược lại đồng thời được thêm vào cuối xâu chuỗi khác. Như vậy, ràng buộc không chỉ một mà còn có thể sư dụng bởi bất cứ biểu thức qui tắc. Ví dụ 6.3: Tính đối xứng. Xem xét cả 2 ngôn ngữ pal của tính chất đối xứng trên bảng chữ cái {a, b} và phần bổ sung N, tập hợp các thành phần không đối xúng trên {a, b}. Từ ví dụ 2.16, chúng ta có định nghĩa qui nạp của pal : 1. A, a, b ∈ pal 2. Cho bất cứ S ∈ pal, aSa và bSb tồn tại trong pal. 3. Không có các xâu chuỗi khác trong pal. Vì vậy, có thể mô tả pal trong văn phạm phi ngữ cảnh với các qui tắc văn phạm: S → A| a | b | aSa | bSb Ngôn ngữ N cũng tuân theo qui tắc 2: Cho bất cứ x không đối xứng, cả hai axa và bxb sẽ không đối xứng. Tuy nhiên, định nghĩa qui nạp của N không thể đơn giản như định nghĩa của pal, bởi vì không có tập hợp vô hạn của các xâu chuỗi mà có thể phân phối như các phần tử cơ bản trong định nghĩa. Tồn tại tập vô hạn N 0 để mỗi thành phần không đối xứng có thể vẫn tồn tại từ 1 phần tử của N 0 bởi các ứng dụng của qui tắc 2 (Bài tập 6.42). Cho 1 chuỗi không đối xứng : abbaaba Nếu bắt đầu tại các điểm cuối và làm việc theo cách thử kết hợp các ký hiệu tại điểm đầu với các ký hiệu tại điểm kết thúc, xâu chuỗi này xem như một chuỗi đối xứng cho 2 bước đầu tiên. Để biến nó thành xâu chuỗi không đối xứng tại phần chính giữa baa, phần bắt đầu với 1 ký hiệu và kết thúc với 1 ký hiệu ngược lại; xâu chuỗi ở giữa hai có thể bất cứ kiểu gì. Một chuỗi không đối xứng nếu và chỉ nếu nó có phần giữa thuộc kiểu này. Có các xâu chuỗi không đối xứng “cơ bản”, và vì vậy có thể đưa ra định nghĩa của N: 1. Cho bất cứ A {a, b}*, aAb và bAa tồn tại trong N. 2. Cho bất cứ S N, aSa và bSb tồn tại trong N. 3. Không tồn tại các xâu chuỗi khác trong N. Để tồn tại văn phạm phi ngữ cảnh mô tả N, bây giờ có thể giới thiệu một cách đơn giản một biên A thứ 2, biễu diễn cho một phần tử bất kỳ của {a, b}*, và kết hợp các qui tắc văn phạm cho ngôn ngữ này từ ví dụ 6.1: S → aAb | bAa | aSa | bSb A → A | Aa | Ab Một dẫn xuất của chuỗi không đối xứng abbaaba, ví dụ như sau: S ⇒ aSa ⇒ abSba ⇒ abbAaba ⇒ abbAaaba ⇒ abbAaaba = abbaaba KHMTK12 - Nhóm 7 5 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 Nói chung và thường cần thiết nên bao gồm một vài biến trong văn phạm phi ngữ cảnh mô tả ngôn ngữ L. Sẽ vẫn có một biến đặc biệt để biễu diễn một chuỗi tùy ý trong L, và thông thường để chứng tỏ một chuỗi S (biến bắt đầu). Sau đó, các biến khác có thể xem như các chuỗi đặc trưng trong các ngôn ngữ hỗ trợ chắc chắn bao hàm trong định nghĩa của L. (Chúng ta có thể vẫn giải thích văn phạm như định nghĩa qui nạp của L, nếu mở rộng khái niệm qui nạp một cách không đáng kể bao hàm cả ý tưởng của qui nạp lẫn nhau: đúng hơn một đối tượng được định nghĩa trong các thời kỳ của chính nó, một vài đối tượng được định nghĩa trong các thời kỳ lẫn nhau.) Một định nghĩa tổng quát đưa ra từ các ví dụ này: Giả sử G = (V, ∑, P, S) là một CFG. Như trong 3 ví dụ đầu, chúng ta sẽ duy trì ký hiệu → cho các dẫn xuất riêng biệt trong P. Sử dụng ký hiệu ⇒ cho các bước trong một dẫn xuất như trong ví dụ 6.1 và 6.3. Trong 1 vài trường hợp, nó hữu ích để chỉ định rõ ràng dẫn xuất chi tiết tới văn phạm G, và trong trường hợp này, ghi là ⇒ G . α ⇒ G β nghĩa là xâu chuỗi β có thể chứa trong xâu chuỗi α bằng cách thay thế một vài biến xuất hiện trên phần bên trái của một dẫn xuất trong G bởi phần bên phải tương ứng, hoặc là: α = α 1 Aα 2 β = α 1 ϒα 2 Và một trong các dẫn xuất trong G là A → ϒ. (Bây giờ có thể hiểu rõ hơn về phần phi ngữ cảnh. Nếu tại một vài điểm trong một dẫn xuất, chúng ta đã duy trì một xâu chuỗi α chứa biến A, thì có lẽ tiếp tục bằng cách thay thế ϒ cho A, không vấn đề gì cho các xâu chuỗi α 1 và α 2 không phụ thuộc vào ngữ cảnh.) Trong trường hợp này, chúng ta sẽ nói rằng α dẫn xuất β, hoặc β được dẫn xuất từ α, trong từng bước. Tổng quát là: α ⇒ * G β (và có thể ngắn gọn hơn α ⇒ * β nếu không bao hàm văn phạm) nếu α dẫn xuất β trong các bước hoặc không bước nào; hoặc α = β, hoặc thoát khỏi 1 số nguyên k ≥ 1 KHMTK12 - Nhóm 7 6 Định nghĩa 6.1: Định nghĩa của văn phạm phi ngữ cảnh Một văn phạm phi ngữ cảnh (CFG) là 1 bộ G =(V, ∑, P, S), mà trong đó: V và ∑ là các tập hữu hạn tách rời nhau, S là một phần tử của V, và P là một tập hữu hạn của các cách thức theo dạng A → α, mà A ∈ V và α ∈ (V ∪ ∑)*. Các phần tử của V được gọi là biến, hoặc ký hiệu không chưa kết thúc, và các phần tử của bảng chữ cái ∑ được gọi là ký hiệu kết thúc, hoặc điểm kết thúc. S được gọi là ký hiệu bắt đầu; và các phần tử của P gọi là các qui tắc văn phạm, hoặc các dẫn xuất. Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 và các xâu chuỗi α 0 , α 1 , …, α k , với α 0 = α và α k = β, đến nỗi α i ⇒ G α i+1 cho mỗi i với 0 ≤ i ≤ k -1. Ví dụ 6.4: Ngôn ngữ của các biểu thức đại số. Một ngôn ngữ quan trọng trong khoa học máy tính là ngôn ngữ của các biểu thức đại số hợp lệ. Đơn giản, chúng ta hạn chế một vài biểu thức đơn mà có thể định dạng cho 4 toán tử hai ngôi +, -, *, /, dấu ngoặc đơn trái và phải, và định danh đơn a. Một vài tính năng bỏ quên, vì vậy các toán tử một ngôi, bất cứ các toán tử hai ngôi khác ngoài 4 toán tử trên, số nguyên mẫu như là 3.0 hoặc …, các biểu thức bao gồm chú thích mang tính chức năng, và nhiều định danh chung hơn. Hầu hết các chức năng có thể được xử lý đủ đơn giản; ví dụ như, ngôn ngữ của các định danh bất kỳ có thể được “thêm vào” các chức năng này bằng cách sử dụng biến A mặc dù ký hiệu kết thúc a và mô tả dẫn xuất cho phép bất cứ định danh được dẫn xuất từ A (Xem ví dụ 3.5 và 3.6.) Một định nghĩa qui nạp của ngôn ngữ được dựa trên sự theo dõi mà các biểu thức hợp lệ có thể được định dạng bằng cách nối 2 biểu thức hợp lệ sử dụng một trong bốn toán tử hoặc bằng cách đóng biểu thức hợp lệ với dấu ngoặc đơn, và 2 tài khoản điều hành này cho tất cả các biểu thức hợp lệ ngoại trừ định danh đơn a. Cách dễ hiểu nhất cho văn phạm phi ngữ cảnh, vì vậy, có lẽ là dùng các dẫn xuất S → S + S | S – S | S * S | S/S | (S)| a Xâu chuỗi a + (a * a)/a – a có thể bao hàm từ dẫn xuất S ⇒ S – S ⇒ S + S –S ⇒ a + S – S ⇒ a + S/S – S ⇒ a + (S)/S – S ⇒ a + (S * S)/S – S ⇒ a + (a * S)/S – S ⇒ a + (a * a)/S – S ⇒ a + (a * a)/a – S ⇒ a + (a * a )/a – a Dễ dàng nhìn thấy có nhiều dẫn xuất khác cũng tốt. Ví dụ: S ⇒ S/S ⇒ S + S/S ⇒ a + S/S ⇒ a + (S)/S ⇒ a + (S * S)/S ⇒ a + (a * S)/S ⇒ a + (a * a)/S ⇒ a + (a * a )/S - S ⇒ a + (a * a)/a – S ⇒ a + (a * a)/a –a Lần đầu dẫn xuất thường nguyên mẫu hơn lần thứ 2. Các bắt đầu lần đầu với dẫn xuất: S → S – S KHMTK12 - Nhóm 7 7 Định nghĩa 6.2: Ngôn ngữ được phát sinh từ một CFG Cho G =(V, ∑, P, S) là 1 CFG. Ngôn ngữ được phát sinh bởi G là L(G) = {x ∈ ∑* | S ⇒ * G x} Một ngôn ngữ L là ngôn ngữ phi ngữ cảnh (CFL) nếu có một CFG G mà L = L(G). Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 và vì vậy chỉ định làm sáng tỏ các biểu thức nguyên mẫu, sự khác nhau giữa nó với các biểu thức khác. Điều này dường như đúng bới biểu thức thường được đánh giá như sau: 1. Đánh giá a * a, và gọi nó có giá trị A. 2. Đánh giá A/a, và gọi nó có giá trị B. 3. Đánh giá a + B, và gọi nó có giá trị C. 4. Đánh giá C – a. Biểu thức “là” khác với biểu thức con với giá trị C và biểu thức con a. Dẫn xuất thứ 2, trái ngược hoàn toàn, làm sáng tỏ biểu thức như kết quả phép chia. Mặc dù không cò gì trong văn phạm ảnh hưởng đến dẫn xuất này, nó không phản ánh cách nhìn nhận về cấu trúc đúng của biểu thức. Phần kết thúc có thể tồn tại trong văn phạm phi ngữ cảnh dành cho ngôn ngữ có lẽ không là thích hợp nhất. Nó không kết hợp chặt chẽ theo bất cứ cách qui ước chuẩn, phải thực hiện với quyền ưu tiên của các toán tử và theo thứ tự tính toán từ trái qua phải, được áp dụng tính toán biểu thức.(Quyền ưu tiên của các toán tử được áp dụng trong biểu thức a + b * c, phép nhân được thực hiện trước phép cộng; và biểu thức a – b + c có nghĩa (a - b) + c), không phải a- (b + c). Tuy nhiên, việc chọn giữa hai dẫn xuất của một xâu chuỗi, nó thường mong đợi chọn lựa, nếu có thể, một CFG cho một xâu chuỗi có thể chỉ có một dẫn xuất (ngoại trừ sự khác nhau không đáng kể giữa thứ tự hai biến trong một vài chuỗi trung gian được chọn để thay thế). Chúng ta sẽ gặp lại câu hỏi này trong phần 6.4, khi thảo luận về sự nhập nhằng trong văn phạm phi ngữ cảnh. Ví dụ 6.5: Cú pháp của ngôn ngữ lập trình Ngôn ngữ trong các ví dụ trước và ngôn ngữ giống như ví dụ 3.5 và 3.6 là các thành phần đơn giản có liên quan với nhau của ngôn ngữ lập trình như C và Pascal. Để mở rộng hơn, văn phạm phi ngữ cảnh có thể được dùng đê mô tả cú pháp tổng thể của ngôn ngữ. Trong C, việc thử định dạng các qui tắc văn phạm để chỉ rõ cú pháp của câu lệnh hợp lệ. (Như ngoại lệ, một chỉ định hoàn thành cũng bao gồm.). Hai kiểu của câu lệnh trong C là câu lện if và câu lệnh for; nếu biễu diễn câu lệnh bất kỳ với các biến (câu lệnh), kết quả câu lện giống như: (câu lệnh) → … | (câu lệnh if) | (câu lệnh for ) | Cú pháp của 2 kiểu câu lệnh này có thể được mô tả bởi các qui tắc: (câu lệnh if) → if ({biểu thức}) {câu lệnh} (câu lệnh for) → for({biểu thức}; (biểu thức)) {câu lệnh} Mà {biểu thức}là biến khác, kết quả cũng khó khăn để mô tả một cách hoàn thành. KHMTK12 - Nhóm 7 8 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 Mặc dù trong cả hai trường hợp, phần cuối trên phần bên phải chỉ rõ câu lệnh đơn, tính logic của chương trình thường yêu cầu nhiều hơn một. Vì vậy, thật cần thiết cho định nghĩa của {câu lệnh }cho phép một câu lện kép, đơn giản là thứ tự của nhiều câu lệnh hoặc không được đóng bởi {}. Có thể dễ dàng viết định nghĩa cho {câu lệnh kép}cho trường hợp này. Mô hình cú pháp như sự trình bày thiết lập cho cùng loại. {câu lệnh } Một phần thông qua mô hình bắt đầu với {, kết thúc với}, và có thể vượt qua vòng lặp nhiều lần hoặc không lần nào. Ví dụ 6.6: Các qui tắc văn phạm cho tiếng Anh. Ưu điểm của việc sử dụng ngôn ngữ lập trình bậc cao giống như C và Pascal mà cho phép chúng để viết các câu lệnh giống như tiếng Anh. Nếu có thể sử dụng văn phạm phi ngữ cảnh để nắm bắt nhiều qui tắc của các ngôn ngữ lập trình, mà về chính tiếng Anh, tuân theo “các qui tắc văn phạm” hay không ? Các câu tiếng Anh mà đơn giản đầy đủ có thể được mô tả bởi CFGs. Nhiều câu phức tạp có thể phân tích bởi tính dẫn xuất {câu tường thuật} → {mệnh đề chủ ngữ}{mệnh đề động từ} {bổ ngữ}| {mệnh đề chủ ngữ}{mệnh đề động từ} Nếu cung cấp các lý do cho mỗi phần của ba biến ở phần bên phải. Tạo các lý do khác nhau, các câu tiếng Anh có nhiều thành ngữ với văn phạm phi ngữ cảnh, thậm chí văn phạm phi ngữ cảnh với kích thước giới hạn, thì không khó; cái khó là làm điều này và tại cùng thời điểm không cho phép câu nói sai ngữ pháp. Thậm chí khó hơn là các câu không tuân theo cú pháp tiếng Anh nhưng với người nói tiếng Anh gốc có lẽ sẽ không bao giờ nói, bởi vì họ không phát âm đúng. Ví dụ đơn giản này có lẽ minh họa cho điểm. Xem xét các dẫn xuất: {câu tường thuật}→ {chủ ngữ}{động từ}{bổ ngữ} {chủ ngữ} → {danh từ thích hợp} {danh từ thích hợp} → John | Jane {động từ} → nhớ {bổ ngữ} → {danh từ thích hợp} | {đại từ phản thân} {đại từ phản thân} → himself | herself Nhiều hơn một câu lệnh tuân theo văn phạm này không hoàn toàn làm việc, ví dụ: “John nhớ chính cô ấy” và “Jane nhớ chính cậu ấy”. Điều này có thể được lọa KHMTK12 - Nhóm 7 9 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 trừ trong cách thức dễ hiểu (bao gồm sự phức tạp của văn phạm ) bằng cách đưa ra dẫn xuất giống như: {câu tường thuật} → {danh từ giống đực}{động từ}{đại từ phản thân giống đực} Rõ ràng hơn nhiều vấn đề tinh tế là “Jane nhớ Jane”. Bình thường, chúng ta không nói như vậy, trừ khi có 2 người khác nhau nhưng trùng tên, nhưng không có cách rành mạch để ngăn cấm điều đó và cũng không ngăn cấm “Jane nhớ John”. (Ít nhất, không có cách rõ ràng thật sự cần thiết sử dụng một dẫn xuất khác nhau cho mỗi câu). Tùy chọn không đáng kể này có sẵn, kể từ khi ngôn ngữ có ngôi. Để phân biệt “Jane nhớ John,” là một câu tiếng Anh tốt một cách hoàn hảo, từ “Jane nhớ Jane” yêu cầu sử dụng ngữ cảnh và một cách chính xác điều này văn phạm phi ngữ cảnh không cho phép. 6.2 Các ví dụ mở rộng. Nói chung, để trình bày một ngôn ngũ CFG tổng quát, chúng ta phải trình bày hai điều: thứ nhất mỗi xâu chuỗi trong ngôn ngữ có thể được dẫn xuất từ văn phạm, và thứ hai, không xâu chuỗi nào khác có thể. Trong một vài ví dụ trong phần này, ít nhất một trong hai câu này ít rõ ràng hơn. Ví dụ 6.7: Một CFG cho {x | n 0 (x) = n 1 (x)} Xem xét ngôn ngữ L = {x ∈ {0,1}* | n 0 (x) = n 1 (x)} mà n i (x) là số của i’s trong xâu chuỗi x. Như trong ví dụ 6.1 – 6.3, chúng ta có thể bắt đầu nghĩ về một định nghĩa qui nạp của L, và một lần tìm thấy một. Chúng ta có thể dễ dàng chuyển nó về văn phạm phi ngữ cảnh. Một cách rõ ràng, A ∈ L. Cho xâu chuỗi x trong L, sẽ tạo 1 xâu chuỗi dài hơn trong L bằng cách thêm một số 0 và một số 1. (Ngược lại, bất cứ xâu rỗng trong L có thể được dùng theo cách này). Một cách để thêm một ký hiệu vào điểm cuối, thực hiện hoặc 0x1 hoặc 1x0. Nó gợi ý cho dẫn xuất : S → A | 0S1 | 1S0 Không có xâu chuỗi nào trong L có thể chứa trong các dẫn xuất này, bởi vì các phần tử của L bắt đầu và kết thúc với cùng ký hiệu ; các xâu chuỗi 0110, 10001101, và 0010111100 là ví dụ. Nếu tìm kiếm các cách thức nhấn mạnh mỗi phần này trong các đọan của các phần tử đơn giản của L, chú ý mỗi phần tử trong sự kết hợp hai phần tử không rỗng của L (ví dụ, xâu chuỗi thứ ba là sự kết hợp của 001011 và 1100). Nhận xét này gợi ý dẫn xuất S → SS. Lý do rõ ràng nếu G là một CFG chứa các dẫn xuất thì S → A | 0S1 | 1S0 | SS sau đó sự dẫn xuất trong G tạo duy nhất xâu chuỗi trong L. Sẽ xác nhận ngược lại, rằng L ⊆ L (G) KHMTK12 - Nhóm 7 10 [...]... 21 Báo cáo tiểu luận môn Lý thuyết tính toán Dòng 1 2 3 4 5 6 7 8 4 5 6 7 8 4 5 6 7 9 4 9 10 11 12 13 14 10 11 12 13 14 10 11 12 13 14 10 15 16 17 10 11 12 13 14 10 11 12 R1 R2 R3 R4 R5 Lý thuyết: câu 2 + Bài tập: câu 8 R6 R7 R8 Nhảy tới 0 0 0 5 2 1 1 4 5 1 2 2 4 5 0 3 3 4 9 3 0 11 2 1 1 10 11 1 2 2 10 11 0 3 3 10 15 3 0 2 10 11 2 4 1 10 11 1 KHMTK12 - Nhóm 7 5 22 Báo cáo tiểu luận môn Lý thuyết tính. . .Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 Sẽ hỗ trợ khi giới thiệu : d(x) = n0(x) – n1(x) Vì vậy, cho bất cứ xâu chuỗi x với d(x) = 0, x ∈ L(G) Chứng minh tính toán học trên |x| Trong bước cơ bản của chứng minh, chúng ta phải trình bày rằng nếu |x| = 0 và d(x) = 0 (tất nhiên, giả thuyết thứ 2 là thừa), sau đó x ∈ L(G) Điều... 20 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 51: J (52,44) nếu R8=0 thì nhảy đến nhãn 52, ngược lại nhảy đến nhãn 44, đã …………………… tính được c*c, gio tinh R6-R4 52: J (56,53) nếu R4=0 thì nhảy đến nhãn 56, ngược lại nhảy đến nhãn 53 53: D giảm R4 54: D giảm R6 55: J (52,52) nếu R6=0 thì nhảy đến 52, ngược lại nhảy đến 52 56: J (60,57) giờ tính. .. R4 la ket qua a*a) R7:=0 (R7 đếm số lần lặp để tính a*a) 19 Báo cáo tiểu luận môn Lý thuyết tính toán 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: Lý thuyết: câu 2 + Bài tập: câu 8 Z R8 :=0 (R8 đếm số lần lặp để tính a*a) J (9,5) nếu R1=0 thì nhảy đến nhãn... giữa: x = 0i 1i 1m 1k 0k (với mọi m > 0) Định dạng đúng cho L là L = L1L2L3, trong đó L1 = {0i 1i | i ≥ 0} L2 = {1m | m > 0} KHMTK12 - Nhóm 7 16 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 L3 = {1k 0k | k ≥ 0} Phần 2 của Định lý 6.1, cung cấp 2 lần, giảm độ phức tạp tìm kiếm CFG cho 3 ngôn ngữ này L1 ngôn ngữ cơ bản trong ví dụ 6.2, L 3 cùng với các ký hiệu 0 và 1 được... từ S sử dụng kết quả S → 0 | 0S; vì vậy x chứa ít nhất một xâu 1 Kết quả biễu diễn x có dạng x = w1z cho vài w và z với d(w) > 0 và d(z) >0 KHMTK12 - Nhóm 7 15 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 Giả thuyết ban đầu, cả hai w và z có thể được dẫn xuất từ S, sao cho có thể dẫn xuất x với dẫn xuất ban đầu: S → S1S Biễu diễn x có định dạng trên, x chứa n xâu chuỗi... trong L1 hoặc trong L2, thì Su ⇒* x trong văn phạm Gu, bởi có thể bắt đầu dẫn xuất với Su → S1 hoặc Su → S2 và tiếp tục với dẫn xuất của x trong G1 hoặc G2 Do đó KHMTK12 - Nhóm 7 12 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 L = L1 ∪ L2 ⊆ L(Gu) Mặt khác, nếu x là dẫn xuất từ Su trong Gn, bước đầu tiên trong bất cứ dẫn xuất phải là Su ⇒ S1 hoặc Su ⇒ S2 Trong trường hợp đầu,... → 0A1 | A B → 1B | 1 C → 1C0 | A } Cho ví dụ, dẫn xuất của 01402 = (01)(1)(1202) là: S ⇒ ABC ⇒ 0A1BC ⇒ 0A1BC ⇒ 011C ⇒ 0111C0 ⇒ 01111C00 ⇒ 01111A00 = 0111100 KHMTK12 - Nhóm 7 17 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 PHẦN 2 – BÀI TẬP Câu 8: Viết chương trình RAM chuẩn và RAM thô sơ kiểm tra điều kiện các số a, b, c cho trước một cách ngẫu nhiên lần lượt là các cạnh... ngược lại thì nhảy đến NO B: load 2 jgtz C jmp NO ACC  ; ACC=b nếu >= 0 nhảy đến C ; b>=0 ngược lại thì nhảy đến NO C: load 3 ACC  ; ACC=c KHMTK12 - Nhóm 7 18 Báo cáo tiểu luận môn Lý thuyết tính toán Lý thuyết: câu 2 + Bài tập: câu 8 jgtz T jmp NO ACC  ; ACC=b ACC  * ; ACC=b*b R2  ; R2=a*a ACC  ; ACC=c ACC  * ; ACC=c*c sub 1 sub 2 OK: KT:... G1, bao gồm cả x ∈ L(G1)k ⊆ L(G1)* Chú ý: Thật sự cần thiết cho 2 phần đầu của chứng minh đảm bảo V 1 ∩ V2 = ∅ Cho CFG có các kết quả: S1 → XA X→c A→a và KHMTK12 - Nhóm 7 13 Báo cáo tiểu luận môn Lý thuyết tính toán S1 → XB X→d Lý thuyết: câu 2 + Bài tập: câu 8 B→b riêng biệt Nếu chúng ta cung cấp cấu trúc cho phần đầu của chứng minh không đặt nhãn lại cho biến, kết quả văn phạm cho phép dẫn xuất S ⇒ . R7=R8=b 27: J <2> (32,28) nếu R2 =0 thì nhảy đến 32, ngược lại nhảy đến 28 28: D <2> giảm R2 đi 1 29: I <5> tăng R5 lên 1 30: I < ;7& gt; tăng R7 lên 1 31: J < ;7& gt; ( 27, 27) . R7=0 thì nhảy đến 27, ngược lại nhảy đến 27 32: S <2 ,7& gt; sau khi đổi thì R2=b, R7=0 33: D <8> R8 =b – số lần đã lặp 34: J <8> (35, 27) nếu R8=0 thì nhảy đến 35, ngược lại là 27 35:. <4> tăng R4 lên 1 13: I < ;7& gt; tăng R7 lên 1 14: J < ;7& gt; (10,10) nếu R7=0 thì nháy đến 10, ngược lại nhảy đến 10 15: S <1 ,7& gt; sau khi hoán đổi thì R1=a, R7=0 16: D <8> giảm R8

Ngày đăng: 11/11/2014, 15:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan