1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

41 1,4K 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 915,65 KB

Nội dung

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 = {aibi | i = 0, 1, 2…} Ví dụ 2: Ngôn ngữ L được định nghĩa là tập tất cả cá

Trang 1

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 v0 =  , v1 = v, v2 = vv, nói chung vi = v vi-1 với i > 0

Đảo ngược của một xâu u, ký hiệu uR, là xâu u viết theo thứ tự ngược lại, nghĩa là nếu u = a1a2…an thì uR = anan-1…a1 Đả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+

Trang 2

Đố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ụ: L1 = { }; L2 = {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ụ: L3 = {ai | i là số nguyên tố}

L4 = {aibj | i  j  0}

L5 = {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 = {aibi | 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

Trang 3

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à vw

Ta nói xâu x trên V suy dẫn trực tiếp xâu y, và viết là xWy 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à vw là một sản xuất trong P Nói cách khác đó là sự áp dụng sản xuất vw

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 ykhi hệ W

đã rõ, khi và chỉ khi tồn tại một dãy các xâu trên V x0, x1, …, xk với k0 sao cho x0 = x,

xk = y và xi suy dẫn trực tiếp xi+1 với 0  i k 1 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

Trang 4

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à  V* V* 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 G1 và G2 (sản sinh hay đoán nhận) là tương đương khi và chỉ khi L(G1) = L(G2)

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:

G1=({a,b}, {X}, {X, X→ aXb}, X) và được đoán nhận bởi văn phạm:

G2=({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’)

- Đúng với k=1, theo định nghĩa G và G’ ta có: a0G a1 khi và chỉ khi a1G' a0

- Giả sử đúng với k, k1 Bởi sự đối ngẫu ta lại có a kG a k1 khi và chỉ khi

1 '

a  a Vậy ta có

Trang 5

0 G 1 G G k G k 1

aa   aa khi và chỉ khi a k1G' a kG' a0

Vậy đúng với k+1, kết hợp với sự suy dẫn ra chính nó, ta có:

*w

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}

Trang 6

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)

q

Trang 7

- 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 q0, 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 = {q0, q1, q2, q3 }, F = {q0 } Hàm ∂ cho bởi ma trận 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:

Trang 8

Đị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

Ngôn ngữ được đoán nhận bởi ÔHĐ M = (, , ,Qq F0, ) nếu ∂ (q0, 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:

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 = {q0, q1, q2, q3}, F = {q2} Hàm chuyển được cho như sau:

Trang 9

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ệ

Ngôn ngữ đoán nhận bởi M là: L(M)= {w | w∑* và ∂ (q0, 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}, {q0, q1, q2, q3, q4}, ∂, q0, {q2, q4}) Với hàm chuyển ∂ cho như sau:

Đâ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:

q001001  q01001 q0001 q001 q01 q0

q31001 q1001 q301 q31 q1

q41q4Vậ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

Trang 10

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, ∂, q0, F) là ÔHK đoán nhận L, thành lập ÔHĐ M’=(∑, Q’, ∂’,

q0’, F’) trong đó:

Q’ = 2Q; 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 [q1, q2,…, qn], với q1, q2, , qn  Q Trạng thái đầu q0’ = [q0] Hàm chuyển của M được thành lập theo công thức:

lớp các ngôn ngữ chính quy (viết tắt là lớp NNCQ)

Ví dụ: Cho M = ({0,1}, {q0, q1}, ∂, q0, {q1}) là một ÔHK trong đó:

∂(q0, 0) = {q0, q1}; ∂(q0, 1) = {q1}; ∂(q1, 0) = ; ∂(q1, 1) = {q0, q1}

Ta có thể lập ÔHĐ M’ = ({0, 1}, Q’, ∂’, [q0], F’) thừa nhận L(M) như sau: Q’ gồm mọi tập con của {q0, q1}, ký hiệu các phần tử của Q’ bởi , [q0], [q1], [q0, q1] F’ = {[q0], [q0, q1]}

= {q0, q1} Tập trạng thái cuối của M’ là F’ = {[q1], [q0, q1]} Các biểu đồ chuyển của M

và M’ được cho dưới đây:

Trang 11

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, b, c}

- Tìm L1 L2 = {a, b, c } {a, bc} = {a, b, c, bc}

- Tìm L1L2 = {a, b, c} {a, bc} = {aa, abc, ba, bbc, ca, cbc}

- Tìm L2+ = {a, bc} {a, bc} {a, bc} {a, bc} {a, bc} {a, bc}…

= {a, bc} {aa, abc, bca, bcbc}{aaa, aabc, abca, abcbc, bcaa, bcabc, bcbca, bcbcbc)…

- Còn với L* = L+ { }

Định 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 ∑

Trang 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 quy

2.2 Các tính chất đóng của lớp các NNCQ

Lớp các ngôn ngữ đoán nhận bởi các ÔHĐ và lớp các ngôn ngữ được đoán nhận bởi các ÔHK, gọi đó là lớp các ngôn ngữ chính quy

Định nghĩa: Một ÔHĐ là không xuất phát lại nếu không tồn tại cặp (q, a) để cho

∂(q, a) = q0 với q0 là trạng thái đầu

Bổ đề: Có giải thuật cho phép biến đổi một ÔHĐ M đã cho thành ÔHĐ không

xuất phát lại M’ sao cho L(M’) = L(M)

Chứng minh: Từ bổ đề trên ta có thể giả thiết rằng, L và L’ được đoán nhận bởi

hai ÔHĐ không xuất phát lại

M = (∑, Q, ∂, q0, F) và M’ = (∑, Q’, ∂’, q0’, F’) Giả sử thêm QQ’=(nếu không chỉ việc thay đổi các ký hiệu trỏ các trạng thái) Lập ÔHK M” = (∑, Q”, ∂”, q0”, F”) như sau:

Trang 13

Định lý 2 Nếu L ∑* là một NNCQ, thì ∑* - L cũng là NNCQ

Định lý 3 Nếu L và L’ là các NNCQ, thì LL’ cũng là NNCQ

Định lý 4 Nếu L và L’ là các NNCQ thì LL’ cũng là NNCQ

(Chứng minh các định lý trên xem trong tài liệu)

Ví dụ: Cho một ÔHĐ M=({0,1}, {q0, q1}, ∂, q0, {q1}) với hàm chuyển được biểu diễn như sau:

Biến đổi ÔHĐ M trên thành ÔHĐ M’= ({0, 1}, {q0, q1}{q2}, ∂’, q0, F’} không xuất phát lại, trong đó:

∂’(q0,0) = q2; ∂’(q0, 1) = q1; ∂’(q1, 0) = q1; ∂’(q1, 1) = q2; ∂’(q2, 0) = q2; ∂’(q2, 1) = q1 F’ = {q1} Vậy sơ đồ hàm chuyển của M’ như sau:

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à s là các biểu thức chính quy, lần lượt chỉ định các tập R và S, thì (r+s), (rs) và (r*) là các biểu thức chính quy và lần lượt chỉ định các tập RS, RS và R*

Trong khi viết BTCQ ta có thể bỏ bớt các dấu ngoặc đơn với lưu ý thứ tự ưu tiên của các phép toán là (theo mức giảm dần): *, ghép tiếp rồi đến hợp(+) Ví dụ: ((0(1*))+0)

có thể viết thành 01*+0 Ta cũng thường viết tắt biểu thức rr* hay r*r thành r+ Tập hợp được chỉ định bởi một BTCQ r được ký hiệu bởi L(r)

Trang 14

Ví dụ: Một số BTCQ ký hiệu cho các ngôn ngữ

Định lý: Một ngôn ngữ L được chỉ định bởi một BTCQ khi và chỉ khi nó được đoán

nhận bởi một ôtômát hữu hạn

Nói cách khác, lớp các ngôn ngữ do BTCQ chỉ định và lớp các ngôn ngữ do ôtômát hữu hạn đoán nhận là một Đó là lớp các ngôn ngữ chính quy

Thuật toán Thompson: Thuật toán xây dựng các ôtômát hữu hạn từ một BTCQ

trên bảng ký hiệu Σ Gồm các bước sau:

1) BTCQ  được đoán nhận bởi M: q0 L(M) = 

Trang 15

2) BTCQ {ε} được đoán nhận bởi M: L(M) = {ε}

4) Giả sử A, BΣ* là hai BTCQ được đoán nhận tương ứng bởi hai ôtômát sau:

M1:

M2: a) A B được đoán nhận bởi ôtômát M có dạng: (L(M) = L(M1)L(M2)

b) AB được đoán nhận bởi M (L(M) = L(M1)L(M2)

c) A* được đoán nhận bởi M: (L(M) = A* =

Trang 16

Ví dụ: 1) Cho biểu đồ chuyển sau: Tìm BTCQ tương ứng

Biểu thức chính quy tương ứng với sơ đồ chuyển trên là: 0*11*(01)* 1*00 + ε 2) Lập ôtômát hữu hạn tương đương với BTCQ sau: a*a(bc)*a + a*b + ε

Bài tập:

1 Hãy mô tả các ngôn ngữ đoán nhận bởi các ôtômát hữu hạn với biểu đồ chuyển trạng thái cho như sau:

2 Tìm các ÔHĐ và ÔHK đoán nhận các ngôn ngữ sau:

a) Tập các xâu trên {0, 1} có chứa một số chẵn các con số 0 và một số lẻ các con

số 1

b) Tập các xâu trong ∑* có độ dài chia đúng cho 3

c) Tập các xâu trên {0, 1} không chứa xâu con nào là 101 cả

3 Lập các ÔHĐ tương đương với các ÔHK

Trang 17

Q {r} {r} q {r} {q, r}

4 Tìm các BTCQ chỉ định chỉ định ngôn ngữ trên {0, 1} sau đây:

a) Tập mọi xâu trong đó mọi cặp 0 liên tiếp đều xuất hiện trước mọi cặp 1 liên tiếp

b) Tập mọi xâu chứa nhiều nhất một cặp 0 liên tiếp và nhiều nhất và nhiều nhất một cặp 1 liên tiếp

5 Lập các ôtômát hữu hạn tương đương với các BTCQ sau:

mô tả ngôn ngữ chính quy thông qua cơ chế sản sinh ngôn ngữ - đó là văn phạm chính quy

Định nghĩa văn phạm chính quy

- Một VPPNC được gọi là một văn phạm chính quy phải nếu các sản xuất của nó chỉ có hai dạng:

A → aB hay A → a, với a Σ và A, BΔ

- Một VPPCN được gọi là một văn phạm chính quy trái nếu các sản xuất của nó chỉ có hai dạng:

A → Ba hay A → a, với a Σ và A, BΔ Các văn phạm chính quy phải và trái được gọi chung là văn phạm chính quy (viết tắt là VPCQ)

Ví dụ: Các văn phạm sau đây là văn phạm chính quy :

B

A

Cđầu

Trang 18

S → aS | a

là văn phạm chính quy phải

- Văn phạm G2({S, A, B}, {a, b}, P2, S) với các luật sinh được cho như sau :

S → Ab

A → Ab | B

B → a

là văn phạm chính quy trái

Người ta dùng từ chính quy để đặt tên cho các văn phạm trên vì chúng sản sinh ra các ngôn ngữ chính quy (sai khác xâu ε), tức là các ngôn ngữ được đoán nhận bởi các ôtômát hữu hạn, hay được chỉ định bởi các BTCQ

Định lý 1: Cho L là một NNCQ, thì có một văn phạm chính quy phải cho G sao

cho: L - {ε} = L(G)

Chứng minh:

Giả sử L = L(M) với M = (Σ, Q, ∂, q0, F) là ÔHĐ Ta thành lập văn phạm G = (Σ,

Δ, P, q0), trong đó Δ = Q và P gồm các sản xuất như sau:

1) q → ap nếu ∂(q, a) = p

2) q → a nếu ∂(q, a) F

Với mọi a Σ và p, qQ

Như vậy, G là VPCQ phải, ta chứng minh rằng L(G) = L - {ε}

- Trước hết xét w L, wε Giả sử w = a1a2…an, n 1 Vậy thì

∂(q0, a1) = p1, ∂(p1, a2) = p2, …, ∂(pn-1, an) F (1) Vậy trong G lại có các sản xuất: q0 → a1p1, p1 → a2p2, …, pn-1 → an (2)

Suy ra trong G có suy dẫn:

Giả sử G = (Σ, Δ, P, S) Ta thành lập một ÔHK M đoán nhận L(G) như sau :

M = (Σ, Δ{D}, ∂, S, {D}) trong đó D không thuộc ΔΣ và hàm chuyển ∂ được thành lập như sau :

Gọi ∂1(A, a) = {B | A → aB là một sản xuất trong G}

∂2(A, a) = {D} nếu A → a là một sản xuất trong G

=  nếu khác Vậy thì, ∂(A, a) = ∂1(A, a)  ∂2(A, a) với mọi aΣ và A, BΔ

- Giả sử w = a1a2…an L(G), n1 Có một suy dẫn:

Trang 19

S a1A1 a1a2A2 …  a1a2…An-1  a1a2…an (1) Như vậy, trong G phải có các sản xuất:

S → a1A1, A1 → a2A2, …, An-1 → an (2)

Từ đó suy ra trong M:

A1∂(S, a1), A2∂(A1, a2), …, An-1∂(An-2, an-1), D∂(An-1, an) (3)

Có nghĩa là đã có các bước chuyển trạng thái từ trạng thái đầu S đến trạng thái

BF trong ÔH M, khi nó đọc xong xâu w Vậy wL(M)

- Ngược lại, nếu xâu w = a1a2…an được đoán nhận bởi M thì có một dãy các bước chuyển như ở (3) Suy ra có các sản xuất như (2) ở trong G, cho ta suy dẫn (1) Vậy

wL(G)

Kết hợp định lý 1 và 2 ở trên ta có:

Định lý 3: Một ngôn ngữ L là chính quy khi và chỉ khi có một văn phạm chính

quy phải G sao cho L - {ε} = L(G)

Chú ý rằng mọi VPCQ phải đều là VPPNC, vậy ta có:

Bổ đề 1: Mọi NNCQ đều là NNPNC (mệnh đề đảo ngược là không đúng vì có

những NNPNC mà không phải là NNCQ)

Định nghĩa văn phạm chính quy đối ngẫu:

Hai VPCQ trái và phải, G và G’, được gọi là các VPCQ đối ngẫu nếu:

- Một sản xuất dạng A → Ba thuộc G khi và chỉ khi A → aB thuộc G’

- Một sản xuất dạng A → a thuộc G khi và chỉ khi A → a thuộc G’

Dễ thấy rằng, nếu ký hiệu LR là ngôn ngữ đảo ngược của L, tức là tập các xâu đảo ngược của mọi xâu trong L, ta sẽ có:

Bổ đề 2: Nếu L = L(G) và L’ = L(G’) với G, G’ là hai văn phạm chính quy đối

ngẫu, thì L’ = LR

Định lý 4 Một ngôn ngữ L là chính quy khi và chỉ khi có một VPCQ trái G sao

cho L - {ε} = L(G)

Định nghĩa: Văn phạm tuyến tính

- Một VPPNC được gọi là văn phạm tuyến tính phải (VPTT phải) nếu mỗi sản xuất của nó ở một trong hai dạng sau:

Trang 20

- Thay mỗi sản xuất của G dạng A → a1a2…anB, n >1 bởi các sản xuất :

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:

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ữ lập trình cấp cao (như ALGOL, PASCAL ) Trong dạng thức của văn phạm BNF, ký hiệu ::= được dùng thay cho ký hiệu → Chẳng

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

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w