BÁO CÁO THỰC TẬP-NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ

41 1.4K 0
BÁO CÁO THỰC TẬP-NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ

Đ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

Ngôn ngữ hình thức 1 2 NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ 1. Khái niệm chung về ngôn ngữ Ngôn ngữ là phương tiện giao tiếp. Sự giao tiếp ở đây có thể là giữa người với nhau hoặc giữa người và máy, hoặc giữa máy và máy. Để xây dựng một ngôn ngữ hình thức cần có một tập hợp hữu hạn khác trống các ký hiệu nào đó gọi là bảng chữ. Dãy hữu hạn các phần tử của bảng chữ cái được gọi là một từ hay xâu trên bảng chữ. Một tập hợp các từ trên bảng chữ được gọi là ngôn ngữ. 1.1. Bảng chữ Cho V là một tập hợp các ký hiệu nào đó mà ta gọi là bảng chữ. Bảng chữ không nhất thiết hữu hạn, nhưng trong các ứng dụng thực tiễn thì các bảng chữ đều hữu hạn. Ví dụ: - Bảng chữ của ngôn ngữ tiếng Việt gồm 29 kí tự V = {a, b, …, y} - Để có các xâu nhị phân ta thường dùng bảng chữ gồm 0 và 1, V = {0, 1} 1.2. Xâu Một xâu là một dãy hữu hạn các ký hiệu xếp liền nhau trên bảng chữ V Ví dụ: - Một xâu 010001 là một xâu trên bảng chữ V= {0, 1} - Information là một xâu trên bảng chữ cái V = {a, b, , y} Độ dài của xâu w ký hiệu bởi |w|, là số các ký tự hợp thành xâu. Ví dụ: Xâu 010001 có độ dài là 6. Xâu rỗng là xâu có độ dài bằng 0, được ký hiệu là  . Xâu v được gọi là xâu con của xâu w nếu v được tạo bởi một dãy các ký hiệu kề nhau trong w. Ví dụ 00 là một xâu con của 010001. Tiền tố của một xâu là một xâu con nằm ở đầu xâu đó. Hậu tố của một xâu là một xâu con nằm ở cuối xâu đó. Ví dụ: Xâu abc có  , a, ab, abc là các tiền tố, các hậu tố là  , c, bc, abc. Ghép tiếp của hai xâu v và w, ký hiệu bởi vw, là một xâu tạo được bằng cách viết v rồi viết w tiếp theo sau. Ví dụ ghép tiếp của ab và cde là abcde. Đơn vị của phép ghép tiếp là xâu rỗng, vì  w = w  = w. Ta thường viết v 0 =  , v 1 = v, v 2 = vv, nói chung v i = v v i-1 với i > 0 Đảo ngược của một xâu u, ký hiệu u R , là xâu u viết theo thứ tự ngược lại, nghĩa là nếu u = a 1 a 2 …a n thì u R = a n a n-1 …a 1 . Đảo ngược của một xâu rỗng  R =  . 1.3. Ngôn ngữ Ta gọi ngôn ngữ là một tập các xâu trên một bộ chữ V nào đó. Chẳng hạn  và {  } là các ngôn ngữ trên mọi bộ chữ V bất kỳ (lưu ý  và {  } là khác nhau). Tập tất cả các xâu kể cả xâu rỗng trên một bộ chữ V ký hiệu là V * . Ví dụ với V = {0,1} thì V * = {  , 0, 1, 00, 01, 10, 11, 000, 001…}. Tập tất cả các xâu trên bộ chữ V, loại trừ xâu rỗng  được ký hiệu là V + . Ngôn ngữ hình thức 1 3 Đối với một ngôn ngữ L  V * , người ta thường quan tâm đến một số vấn đề sau: - Với xâu bất kỳ w trong L, làm thế nào để sinh ra w (vấn đề sinh) - Với một xâu w  V * bất kỳ cho trước, một vấn đề đặt ra là xâu w có thuộc ngôn ngữ L cho trước hay không (vấn đề đoán nhận) Đó là những vấn đề liên quan đến biểu diễn ngôn ngữ. 2. Hệ viết lại và vấn đề biểu diễn ngôn ngữ. Như đã định nghĩa, một ngôn ngữ L trên một bộ chữ V là một tập con của tập V * . Vậy vấn đề đặt ra là, đối với một ngôn ngữ L làm sao có thể chỉ rõ các xâu thuộc L và đó là vấn đề biểu diễn ngôn ngữ. Đối với các ngôn ngữ hữu hạn thì để biểu diễn chúng chỉ cần liệt kê tất cả các xâu. Ví dụ: L 1 = {  }; L 2 = {a, ba, aaba, bbbbb}. Tuy nhiên, đối với các ngôn ngữ vô hạn thì ta không thể liệt kê hết, vậy cần phải tìm một cách biểu diễn hữu hạn cho một ngôn ngữ vô hạn. Đối với những trường hợp không phức tạp lắm, ta có thể xác định các xâu của ngôn ngữ bằng cách chỉ rõ một đặc điểm cốt yếu của mỗi xâu đó. Ví dụ: L 3 = {a i | i là số nguyên tố} L 4 = {a i b j | i  j  0} L 5 = {w  {ab} * | số a trong w = số b trong w} Người ta thường biểu diễn ngôn ngữ nhờ một văn phạm hay nhờ một ôtômat. Văn phạm là cơ chế cho phép sản sinh ra mọi xâu của ngôn ngữ, còn ôtômat lại là một cơ chế cho phép đoán nhận một xâu bất kỳ có thuộc ngôn ngữ hay không. Ví dụ 1: Cho L là một ngôn ngữ trên bộ chữ {a, b}, định nghĩa như sau: 1) L   2) Nếu X L , thì aXb L , 3) Không còn xâu nào khác thuộc L Ban đầu ta có xâu  . Xem đó là X ta lại có a  b tức là xâu ab, tiếp tục (do 2) ta lại có aabb, aaabbb… tiếp tục như vậy ta thu được các xâu của L. Như vậy định nghĩa trên cho một quy tắc viết lại xâu, qua đó ta có thể sản sinh bất cứ xâu nào của ngôn ngữ L = {a i b i | i = 0, 1, 2…} Ví dụ 2: Ngôn ngữ L được định nghĩa là tập tất cả các xâu có thể thu về xâu rỗng  bằng một dãy phép thay thế các xâu con ab bởi  (định nghĩa này cho ta một cách đoán nhận một xâu có thuộc ngôn ngữ hay không). Chẳng hạn đây là một quá trình đoán nhận trong đó xâu thay thế được gạch dưới: aabbab abab ab  Ngôn ngữ hình thức 1 4 Vậy xâu aabbab là thuộc ngôn ngữ L Định nghĩa hệ viết lại: Một hệ viết lại là một bộ đôi W = (V, P), trong đó V là một bộ chữ và P là một tập hữu hạn các cặp xâu trên V. Một phần tử (v, w) của P được gọi là một quy tắc viết lại hay một sản xuất và thường viết là v  w. Ta nói xâu x trên V suy dẫn trực tiếp xâu y, và viết là x W  y hoặc viết gọn là x  y khi hệ W đã rõ, khi và chỉ khi tồn tại các xâu x 1 , v, x 2 và w sao cho x = x 1 vx 2 , y = x 1 wx 2 và v  w là một sản xuất trong P. Nói cách khác đó là sự áp dụng sản xuất v  w lên xâu x để thu được xâu y, bằng cách thay thế xâu con v của x bởi xâu w Ta nói xâu x suy dẫn xâu y, và viết là * W xy , hoặc viết gọn là * x y khi hệ W đã rõ, khi và chỉ khi tồn tại một dãy các xâu trên V. x 0 , x 1 , …, x k với k  0 sao cho x 0 = x, x k = y và x i suy dẫn trực tiếp x i+1 với 01ik   . Dãy trên được gọi là một suy dẫn của xâu y từ xâu x trong W. Số k được gọi là độ dài của suy dẫn. 3. Văn phạm Văn phạm có thể được hình dung 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. Việc xác định một ngôn ngữ trên bảng chữ cái cho trước có thể được thực hiện bằng một trong các cách thức sau: Cách 1: Đối với mỗi xâu 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 xâu đó. Cách 2: “Thiết bị tự động” có khả năng lần lượt sinh ra tất cả các xâu trong ngôn ngữ đã cho. Cách 3: Với 1 xâu w cho trước, “thiết bị tự động” có thể cho biết xâu đó 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 ba cách trên là tương đương nhau. Vì vậy, ở đây cách thứ nhất là ta xét văn phạm như một “thiết bị tự động” sinh ra các từ, người ta còn gọi các “thiết bị tự động đó” là văn phạm sinh. Định nghĩa: Một văn phạm sản sinh là một hệ thống G = (  ,  , P, S) trong đó: 1.  là tập hữu hạn các ký hiệu, gọi là ký hiệu kết thúc (còn gọi là ký hiệu cuối). 2.  là hữu hạn các ký hiệu, gọi là ký hiệu không kết thúc (còn gọi là ký hiệu trung gian hay biến),    . 3. S  gọi là ký hiệu đầu. 4. P là tập hữu hạn các cặp ( , )  , trong đó: * V   và ** VV   với V   Một cặp ( , )   P được gọi là một sản xuất (hay một quy tắc viết lại) và thường được viết là   . Ngôn ngữ hình thức 1 5 Như vậy, mỗi văn phạm sản sinh G tạo thành một hệ viết lại W = (V, P) với tiên đề {S}, trong đó được thiết lập các quan hệ  và *  (suy dẫn trực tiếp và suy dẫn). Từ đó ngôn ngữ sản sinh bởi G được định nghĩa là: L(G) = {w | w  *  và S *  w} Định nghĩa: Một văn phạm đoán nhận là một hệ thống G = (  ,  , P, S) trong đó ∑, ∆, S được cho như trên, còn P là hữu hạn các cặp ( , )  với * V   và ** VV   . Như vậy một văn phạm đoán nhận G cũng tạo thành một hệ viết lại W = (V, P) với tiên đề {S}, trong đó có các quan hệ  và *  đó là ngôn ngữ đoán nhận bởi G được định nghĩa là: L(G) = {w | w *  và w *  S} Trong cả hai trường hợp sản sinh hay đoán nhận, ngôn ngữ được gọi chung là ngôn ngữ xác định bởi G. Hai văn phạm G 1 và G 2 (sản sinh hay đoán nhận) là tương đương khi và chỉ khi L(G 1 ) = L(G 2 ) Ví dụ: Ví dụ 1(ở trên) Cho L là một ngôn ngữ trên bộ chữ {a, b}, định nghĩa như sau: 1) L   2) Nếu X L , thì aXb L , 3) Không còn xâu nào khác thuộc L Ngôn ngữ này được sản sinh bởi văn phạm: G 1 =({a,b}, {X}, {X   , X→ aXb}, X) và được đoán nhận bởi văn phạm: G 2 =({a,b}, {X}, {  → X, aXb → X}, X) Đối với ngôn ngữ trên thì hai văn phạm sản sinh và đoán nhận ngôn ngữ đều có chung các thành phần ∑, ∆, S và điều khác biệtlà ở các sản xuất: Nếu   là sản xuất thuộc văn phạm này, thì   thuộc văn phạm kia. Hai văn phạm như vậy (một sản sinh và một đoán nhận) được gọi là các văn phạm đối ngẫu. Định lý: Nếu G=(∑, ∆, P, S) là văn phạm (sản sinh hay đoán nhận) và G’=(∑, ∆, P’, S) là văn phạm đối ngẫu với nó thì L(G) = L(G’) Chứng minh: Giả sử G là văn phạm sản sinh và G’ là văn phạm đoán nhận (ngược lại lập luận tương tự). Trước hết ta chứng minh rằng: Với mọi k  1 thì: 01 G G G k a a a   khi và chỉ khi ' ' 1 ' 0 k G G G a a a   Chứng minh quy nạp: - Đúng với k=1, theo định nghĩa G và G’ ta có: 01G aa khi và chỉ khi 1 ' 0G aa - Giả sử đúng với k, k  1. Bởi sự đối ngẫu ta lại có 1k G k aa   khi và chỉ khi 1'k G k aa   . Vậy ta có Ngôn ngữ hình thức 1 6 0 1 1 G G G k G k a a a a      khi và chỉ khi 1 ' ' 0 k G k G a a a   Vậy đúng với k+1, kết hợp với sự suy dẫn ra chính nó, ta có: * w G S  khi và chỉ khi * 'G wS . Từ đó ta có: w L(G) khi và chỉ khi w L(G') tức là: L(G) = L(G’) Ví dụ: Xét hai văn phạm G 1 và G 2 với: G 1 = ({a,b}, {X}, {X   , X → aXb, X → XX}, X) G 2 = ({a,b}, {X}, {  → X, aXb → X, XX → X}, X) Bước xuy dẫn Sản xuất được dùng X  XX X → XX  aXbX X → aXb  aaXbbX X → aXb  aabbX X →   aabbaXb X → aXb  aabbab X →  Vậy 1 * aabbab G X  , nghĩa là G 1 đã sản sinh xâu aabbab. Trong G 2 : Bước suy dẫn Sản xuất được dùng aabbab  aabbaXb  → X  aabbX aXb → X  aaXbbX  → X  aXbX aXb → X  XX aXb → X  X XX → X Vậy 2 * G aabbab X , tức là G 2 đã đoán nhận xâu aabbab. Tóm lại 1 aabbab L(G ) và đồng thời cũng có 2 aabbab L(G ) . Ta thấy rằng, khi cho một văn phạm G, bao giờ cũng có văn phạm đối ngẫu với nó và cả hai cùng xác định một ngôn ngữ chung. Sau này ta chỉ cần đề cập đến một trong hai văn phạm đối ngẫu đó, quy ước rằng khi nói văn phạm thì ta hiểu đó là văn phạm sản sinh. Bài tập: 1. Cho A = {0, 1, 2} và R = {(0, 1), (1, 2)}. Tìm R * và R + 2. Hãy cho biết các thứ tự cho phép liệt kê các phần tử của các ngôn ngữ sau: a) {a,b} * b) {a} * {b} * {c} * c) {w | w  {a, b} * và trong w số các a bằng số các b}. Ngôn ngữ hình thức 1 7 3. Một xâu hình tháp có thể định nghĩa là một xâu đọc ngược hay xuôi đều như nhau, hoặc cũng có thể định nghĩa như sau: 1)  là xâu hình tháp 2) Nếu a là một ký hiệu bất kỳ, thì xâu a là xâu hình tháp 3) Nếu a là một ký hiệu bất kỳ và X là một xâu hình tháp, thì aXa là một xâu hình tháp. 4) Không còn xâu hình tháp nào ngoài các xâu cho bởi (1) đến (3) Hãy chứng minh quy nạp rằng hai cách định nghĩa là tương đương. ÔTÔMÁT HỮU HẠN VÀ BIỂU THỨC CHÍNH QUY 1. Ôtômát hữu hạn Ngoài các văn phạm, ta còn sử dụng một phương tiện khác để xác định ngôn ngữ là ôtômát. Ôtômát là là một loại “máy trừu tượng”, gọi là ôtômát hữu hạn, chúng là các công cụ đoán nhận một lớp các ngôn ngữ khá đơn giản gọi là các ngôn ngữ chính quy. 1.1. Ôtômát hữu hạn đơn định Một cách trực quan, ta có thể quan niệm ôtômát hữu hạn như một “máy” đoán nhận xâu, mà các bộ phận và cung cách làm việc của nó như sau: - Có một băng vào, dùng để ghi xâu vào (xâu cần được đoán nhận); mỗi ký hiệu của xâu vào (thuộc một bộ chữ ∑ ) được ghi trên một ô của băng vào. - Có một đầu đọc, ở mỗi thời điểm quan sát một ô trên băng vào. - Có một bộ điều khiển Q gồm một số hữu hạn trạng thái; ở mỗi thời điểm nó có một trạng thái (hình sau). 0 1 1 0 0 1 0 1 Bộ điều khiển Ôtômát hữu hạn làm việc theo từng bước, một bước làm việc của nó thực hiện như sau: Tuỳ theo trạng thái hiện thời của bộ điều khiển và ký hiệu mà đầu đọc quan sát được, mà ôtômát chuyển sang một trạng thái mới, đồng thời đầu đọc dịch sang phải một ô. Quy luật để chuyển sang trạng thái mới đó được cho bởi một hàm, gọi là hàm chuyển ∂: Q  ∑ → Q. Trong đó: Q phân biệt trạng thái q 0 , gọi là trạng thái đầu và một tập F các trạng thái gọi là trạng thái cuối. Với ôtômát hữu hạn đơn định, mỗi ký hiệu vào có đúng một phép chuyển khỏi mỗi trạng thái (có thể chuyển về chính nó). q Ngôn ngữ hình thức 1 8 - Ta nói ôtômát đoán nhận (hay thừa nhận) một xâu v *  nếu ôtômát xuất phát từ trạng thái đầu q 0 , với đầu đọc trỏ vào ký hiệu bên trái nhất của v, sau một số hữu hạn bước làm việc, nó đọc xong xâu v (tức là đầu đọc vượt khỏi nút phải của v) vào một trong các trạng thái cuối - Tập hợp mọi xâu được đoán nhận bởi ôtômát hợp thành ngôn ngữ được đoán nhận bởi ôtômát đó. Ví dụ: Xét ôtômát hữu hạn đơn định M, trong đó: ∑ = {0, 1}, Q = {q 0 , q 1 , q 2 , q 3 }, F = {q 0 }. Hàm ∂ cho bởi ma trận sau: ∂ Ký hiệu vào Trạng thái 0 1 q 0 q 2 q 1 q 1 q 3 q 0 q 2 q 0 q 3 q 3 q 1 q 2 Hoặc ta biểu diễn hàm chuyển dưới dạng đồ thị định hướng, gọi là biểu đồ chuyển như sau: - Mỗi nút tương ứng với một trạng thái, - Nút đầu trỏ bởi mũi tên với chữ “đầu”, - Nút cuối được ký hiệu bởi 2 vòng: - Nếu ∂(q, a) = p thì có một cung đi từ nút q đến nút p, và cung đó mang nhãn a. Biểu đồ chuyển cho ôtômát hữu hạn trên: Cho xâu vào 110101. Quá trình đoán nhận xâu vào đó được diễn tả bằng các bước chuyển như sau: 110101 110101 110101 110101 110101 110101 110101 q 0 q 1 q 0 q 2 q 3 q 1 q 0 Vì q 0  F, vậy xâu vào 110101 được đoán nhận. q 0 q 1 q 2 q 3 Đầu 1 1 1 1 0 0 0 0 Ngôn ngữ hình thức 1 9 Định nghĩa: Một ôtômát hữu hạn đơn định (viết tắt là ÔHĐ) là một hệ thống M= ( 0 , , , ,Q q F ) trong đó: 1) ∑ là một bộ chữ hữu hạn, gọi là bộ chữ vào; 2) Q là một tập hữu hạn các trạng thái, Q   ; 3) ∂: Q  ∑ → Q, được gọi là hàm chuyển; 4) q 0  Q là trạng thái đầu; 5) F  Q là trạng thái cuối. Ngôn ngữ được đoán nhận bởi ÔHĐ M = ( 0 , , , ,Q q F ) nếu ∂ (q 0 , w) = p với p  F. Ngôn ngữ được chấp nhận bởi M, ký hiệu là L(M) là tập hợp: L(M) = {w | w  ∑ * và ∂ (q 0 , w)  F)} Quá trình đoán nhận một xâu w = a 0 a 1 …a n bởi ÔHĐ M là suy dẫn: q 0 a 0 a 1 …a n  q 1 a 1 …a n  …  q n a n  q n+1 . Ví dụ: Với ví dụ trên, quá trình đoán nhận xâu vào 110101 được thực hiện như sau: ∂ (q 0 , 1) = q 1 , ∂ (q 1 , 1) = q 0 , vậy ∂ (q 0 , 11) = ∂ (∂ (q 0 , 1), 1) = ∂ (q 1 , 1) = q 0 tiếp tục ∂ (q 0 , 0) = q 2 , vậy ∂ (q 0 , 110) = ∂ (∂ (q 0 , 11), 0) = q 2 và ∂ (q 2 , 1) = q 3 vậy tương tự ta có ∂ (q 0 , 1101) = ∂ (q 0 , 110),1) = q 3 ∂ (q 0 , 11010) = q 1 ; và cuối cùng ∂ (q 0 , 110101) = q 0  F, (Hoặc viết ∂ (q 0 , 110101) = ∂ (q 1 , 10101) = ∂ (q 0 , 0101) = ∂ (q 2 , 101) = ∂ (q 3 , 01) = ∂ (q 1 , 1) = q 0  F) Quá trình đoán nhận còn có thể viết như sau: q 0 110101  q 1 10101  q 0 0101  q 2 101  q 3 01  q 1 1  q 0  F Vậy xâu 110101 được đoán nhận bởi M hay 110101  L(M). Ví dụ: Cho ÔHĐ M với ∑ = {a, b}, Q = {q 0 , q 1 , q 2 , q 3 }, F = {q 2 }. Hàm chuyển được cho như sau: Một số quá trình đoán nhận: w 1 = aabbb: q 0 aabbb  q 1 abbb  q 1 bbb  q 2 bb  q 2 b  q 2  F w 2 = aaa: q 0 aaa  q 1 aa  q 1 a  q 1  F w 3 = ba: q 0 ba  q 3 a  q 2 Ta có thể thấy rằng ngôn ngữ do ôtô mát M đoán nhận là:L(M) = {a m b n | m, n > 0} ∂ a b q 0 q 1 q 3 q 1 q 1 q 2 q 2 q 3 q 2 q 3 q 3 q 3 q 1 q 0 q 3 q 2 đầu a a a b b b a, b Ngôn ngữ hình thức 1 10 1.2. Ôtômát hữu hạn không đơn định 1.2.1. Định nghĩa: Với ôtômát hữu hạn không đơn định có thể mở rộng từ mô hình ÔHĐ với khả năng có không, một hoặc nhiều hơn một phép chuyển từ một trạng thái trên cùng một ký hiệu vào (tức là có thể chứa các sản xuất có cùng vế trái). Định nghĩa: Ta gọi ôtômát hữu hạn không đơn định, viết tắt là ÔHK, là một hệ thống M = (∑, Q, ∂, q 0 , F) trong đó: 1) ∑ là một bộ chữ hữu hạn, gọi là bộ chữ vào; 2) Q là một tập hữu hạn các trạng thái, Q   ; 3) ∂: Q  ∑ → 2 Q , được gọi là hàm chuyển; 4) q 0  Q là trạng thái đầu; 5) F  Q là trạng thái cuối. Nếu p  ∂ (q, a), thì qa → p là một sản xuất, theo quy tắc đó thì nếu ∂ (q, a) = {p 1 , p 2 ,…, p m } thì ta có sản xuất (gộp) là: qa → p 1 | p 2 | …| p m Ngôn ngữ đoán nhận bởi M là: L(M)= {w | w  ∑ * và ∂ (q 0 , w)  F} (điều khác biệt ở đây so với ÔHĐ là quá trình đoán nhận xâu vào là không đơn định). Ví dụ: Xét ÔHK M = ({0,1}, {q 0 , q 1 , q 2 , q 3 , q 4 }, ∂, q 0 , {q 2 , q 4 }). Với hàm chuyển ∂ cho như sau: ∂ a b q 0 {q 0 , q 3 } {q 0 , q 1 } q 1  {q 2 } q 2 {q 2 } {q 2 } q 3 {q 4 }  q 4 {q 4 } {q 4 } Cho xâu vào 01001, quá trình đoán nhận như sau: q 0 01001  q 0 1001  q 0 001  q 3 01  q 4 1  q 4 Đây chỉ là một quá trình đoán nhận trong nhiều quá trình có thể khác. Nếu xét tất cả các quá trình, ta có một cây như sau: q 0 01001  q 0 1001  q 0 001  q 0 01  q 0 1  q 0 q 3 1001 q 1 001 q 3 01 q 3 1 q 1 q 4 1  q 4 Vậy, xâu 01001 đã được đoán nhận bởi M, vì trong tất cả các quá trình đoán nhận nó, có một quá trình cho phép đọc hết xâu và dẫn ôtômát đến một trạng thái cuối. q 0 q 1 q 2 q 3 q 4 đầu 0,1 0,1 0 0 1 1 0,1 Ngôn ngữ hình thức 1 11 1.2.2. Sự tương đương giữa ÔHĐ và ÔHK Ta sẽ thấy rằng sự mở rộng ÔHĐ thành ÔHK không tăng thêm khả năng đoán nhận ngôn ngữ. Theo định nghĩa, mỗi ÔHĐ cũng là một ÔHK, và với L(ÔHĐ) và L(ÔHK) lần lượt trỏ vào lớp các ngôn ngữ đoán nhận được bởi ÔHĐ và bởi các ÔHK cho nên ta có: L(ÔHĐ)  L(ÔHK) Xét chiều ngược lại với định lý sau (đã được chứng minh): Định lý: Nếu L là một ngôn ngữ được đoán nhận bởi một ÔHK, thì cũng có một ÔHĐ đoán nhận L. Nói cách khác: L(ÔHK)  L(ÔHĐ). Và qua đó ta chứng minh được L(M) = L(M’) với M là ÔHK và M’ là ÔHĐ. Vậy, ta có hệ quả sau: L(ÔHĐ) = L(ÔHK). Giả sử M = (∑, Q, ∂, q 0 , F) là ÔHK đoán nhận L, thành lập ÔHĐ M’=(∑, Q’, ∂’, q 0 ’, F’) trong đó: Q’ = 2 Q ; F’ là tập mọi trạng thái trong Q’ có chứa một trạng thái cuối nào đó của M. Mỗi phần tử trong Q’ được ký hiệu bởi [q 1 , q 2 ,…, q n ], với q 1 , q 2 , , q n  Q. Trạng thái đầu q 0 ’ = [q 0 ]. Hàm chuyển của M được thành lập theo công thức: ∂’([q 1 , q 2 ,…, q k ], a) = 1 k i ∂ (q i , a). Nói cách khác, lớp các ngôn ngữ đoán nhận bởi các ôtômát hữu hạn đơn định và lớp các ngôn ngữ đoán nhận bởi các ôtômát hữu hạn không đơn định là một. Gọi đó là lớp các ngôn ngữ chính quy (viết tắt là lớp NNCQ). Ví dụ: Cho M = ({0,1}, {q 0 , q 1 }, ∂, q 0 , {q 1 }) là một ÔHK trong đó: ∂(q 0 , 0) = {q 0 , q 1 }; ∂(q 0 , 1) = {q 1 }; ∂(q 1 , 0) =  ; ∂(q 1 , 1) = {q 0 , q 1 } Ta có thể lập ÔHĐ M’ = ({0, 1}, Q’, ∂’, [q 0 ], F’) thừa nhận L(M) như sau: Q’ gồm mọi tập con của {q 0 , q 1 }, ký hiệu các phần tử của Q’ bởi  , [q 0 ], [q 1 ], [q 0 , q 1 ]. F’ = {[q 0 ], [q 0 , q 1 ]}. Bởi vì ∂(q 0 , 0) = {q 0 , q 1 }, ta có ∂’([q 0 ], 0) = [q 0 , q 1 ]. Tương tự ta có: ∂’([q 0 ], 1) = [q 1 ]; ∂’([q 1 ], 0) =  ; ∂’([q 1 ], 1) = [q 0 , q 1 ], và ∂’(  , 0) = ∂’(  , 1) =  . Cuối cùng là: ∂’([q 0 , q 1 ], 0) = [q 0 , q 1 ] vì ∂(q 0 , 0)  ∂(q 1 , 0) = {q 0 , q 1 }   = {q 0 , q 1 }. Tương tự ta cũng có: ∂’([q 0 , q 1 ], 1) = [q 0 , q 1 ] vì ∂(q 0 , 1)  ∂(q 1 , 1) = {q 1 }  {q 0 , q 1 } = {q 0 , q 1 }. Tập trạng thái cuối của M’ là F’ = {[q 1 ], [q 0 , q 1 ]}. Các biểu đồ chuyển của M và M’ được cho dưới đây: [...]... nghĩa: a) Các ngôn ngữ sơ cấp trên ∑ được gọi là ngôn ngữ chính quy (NNCQ) trên ∑ b) Nếu E và F là hai ngôn ngữ chính quy trên ∑ thì E  F, EF và E+ cũng là ngôn ngữ chính quy trên ∑ Ngôn ngữ hình thức 1 12 c) Không có ngôn ngữ chính quy nào khác trên ∑ ngoài các ngôn ngữ chính quy được định nghĩa trong hai bước a) và b) trên Thông thường, để diễn đạt các ngôn ngữ chính quy người ta đưa vào biểu thức chính... Chẳng Ngôn ngữ hình thức 1 21 hạn, để định nghĩa một biểu thức số học bao gồm các toán hạng (biểu diễn bằng các ký hiệu db) tham gia vào các phép toán +, * hoặc biểu thức con lồng trong dấu ngoặc đơn , ta viết : ::= + ::= * ::= ( ) ::= db Ví dụ: Biểu thức (db + db) * db được sinh ra bởi quá trình diễn. .. phải và L(G) = L(G’), do đó L(G) cũng là NNCQ Định lý 6 Nếu G là một VPTT trái thì L(G) là một NNCQ VĂN PHẠM PHI NGỮ CẢNH 1 Văn phạm phi ngữ cảnh 1.1 Xuất xứ Xuất xứ đầu tiên của văn phạm phi ngữ cảnh là việc mô tả các ngôn ngữ tự nhiên Ta có quy tắc cú pháp như sau: → → → → → ... hoặc w  E2} b) Phép nhân: Cho hai ngôn ngữ E1, E2 trên ∑, phép nhân E1 với E2 là E1E2 = {  |   E1,   E2} c) Phép lặp: Với ngôn ngữ E trên ∑ ta định nghĩa phép lặp của E là: E+ = E  E2  E3  …=  n 1 En, ở đây En = EE E (n lần) Giả sử ∑ = {a1, a2,…, an}, ngôn ngữ  và ngôn ngữ {ai} (i=1,2, ,n) được gọi là ngôn ngữ sơ cấp Ví dụ: Cho hai ngôn ngữ L1 = {a, b, c} và L2 = {a, bc} trên bảng ∑ = {a,... đây: ( db + * db ) db Việc nghiên cứu các văn phạm phi ngữ cảnh đã tạo nên một cơ sở lý luận vững chắc cho việc biểu diễn các ngôn ngữ lập trình, cho việc tìm kiếm các giải thuật phân tích cú pháp vận dụng trong các chương trinh dịch và cho nhiều ứng dụng khác về xử lý các xâu 1.2 Định nghĩa Định nghĩa: Một văn phạm phi ngữ cảnh,... dạng biểu thức ngắn gọn và súc tích gọi là biểu thức chính quy Định nghĩa: Cho  là một bộ chữ Một biểu thức chính quy (viết tắt là BTCQ) trên Σ và tập hợp do nó chỉ định được định nghĩa một cách đệ quy như sau: 1)  là một biểu thức chính quy, và chỉ định tập rỗng 2) ε là một biểu thức chính quy, và chỉ định tập {ε } 3) Với mỗi a  Σ thì a là một biểu thức chính quy, và chỉ định tập {a} 4) Nếu r và. .. của ngôn ngữ tự nhiên được Tuy nhiên, trong khoa học máy tính, với nhu cầu biểu diễn các ngôn ngữ lập trình, văn phạm phi ngữ cảnh còn được thiết kế thành một dạng tương đương gọi là văn phạm BNF (Backus - Naur Form) Đây cũng là văn phạm phi ngữ cảnh với những thay đổi nhỏ về dạng thức và một số ký hiệu viết tắt mà các nhà khoa học máy tính thường ứng dụng trong việc diễn tả cú pháp của các ngôn ngữ. .. 1 0 0, 1  [q0 , q1] ÔHĐ M’ ÔHK M 0, 1 2 Ngôn ngữ chính quy 2.1 Định nghĩa Giả sử ∑ là bảng chữ hữu hạn không rỗng, tập con E  ∑+ được gọi là một ngôn ngữ trên bảng ∑ Trên tập tất cả các ngôn ngữ ta có thể định nghĩa các phép toán hợp, giao, phần bù, nhân và lặp các ngôn ngữ Trong các phép toán đó, đặc biệt chú ý ba phép toán sau: a) Phép hợp: Cho hai ngôn ngữ E1, E2 trên tập ∑, ta định nghĩa phép... tương ứng với các biểu đồ chuyển sau: A 0 1 0 đầu 1 0 B C 1 6 Văn phạm chính quy Như trong nội dung nghiên cứu trước ta đã biết, lớp ngôn ngữ được chấp nhận bởi ôtômát hữu hạn được gọi là ngôn ngữ chính quy và chúng có thể được ký hiệu một cách đơn giản bằng việc dùng một biểu thức chính quy Phần này giới thiệu một cách khác để mô tả ngôn ngữ chính quy thông qua cơ chế sản sinh ngôn ngữ - đó là văn phạm... A → α với A  Δ và α  (Σ  Δ)* Với các sản xuất trong P, văn phạm G trở nên một hệ viết lại sản sinh (V, P) với bảng chữ V = Σ  Δ và tiên đề S Ta định nghĩa ngôn ngữ sản sinh bởi văn phạm G là: L(G) = {w | w Σ* và S * w} L(G) được gọi là ngôn ngữ phi ngữ cảnh (NNPNC) Ngôn ngữ hình thức 1 22 Hai văn phạm G1, G2 được gọi là các văn phạm tương đương nếu L(G1) = L(G2) Nếu α (Σ  Δ)* và S * α thì α . Ngôn ngữ hình thức 1 2 NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ 1. Khái niệm chung về ngôn ngữ Ngôn ngữ là phương tiện giao tiếp. Sự giao tiếp ở đây. thuộc ngôn ngữ L cho trước hay không (vấn đề đoán nhận) Đó là những vấn đề liên quan đến biểu diễn ngôn ngữ. 2. Hệ viết lại và vấn đề biểu diễn ngôn ngữ. Như đã định nghĩa, một ngôn ngữ L. Vậy vấn đề đặt ra là, đối với một ngôn ngữ L làm sao có thể chỉ rõ các xâu thuộc L và đó là vấn đề biểu diễn ngôn ngữ. Đối với các ngôn ngữ hữu hạn thì để biểu diễn chúng chỉ cần liệt kê tất

Ngày đăng: 02/06/2015, 16:47

Từ khóa liên quan

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

Tài liệu liên quan