1. Trang chủ
  2. » Giáo án - Bài giảng

TÍNH CHẤT của NGÔN NGỮ PHI NGỮ CẢNH

12 795 1

Đ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 12
Dung lượng 275 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 8 TÍNH CHẤT CỦA NGÔN NGỮ PHI NGỮ CẢNH Họ ngôn ngữ phi ngữ cảnh ở vị trí trung tâm trong ngôn ngữ hình thức.. 8.1 HAI BỔ ĐỀ BƠM Pumping Bổ đề bơm đã cho trong chương 4 là một côn

Trang 1

Chương 8

TÍNH CHẤT CỦA NGÔN NGỮ PHI NGỮ CẢNH

Họ ngôn ngữ phi ngữ cảnh ở vị trí trung tâm trong ngôn ngữ hình thức Ngôn ngữ này bao gồm nhiều họ ngôn ngữ quan trọng Ta chỉ xét đến ngôn ngữ phi ngữ cảnh đơn định và ngôn ngữ phi ngữ cảnh chính qui

8.1 HAI BỔ ĐỀ BƠM (Pumping)

Bổ đề bơm đã cho trong chương 4 là một công cụ hữu hiệu để biết được ngôn ngữ nào đó có là ngôn ngữ chính qui hay không Tương tự bổ đề cũng được biết đến cho những họ ngôn ngữ khác Trong chương này ta bàn đến hai kết qủa Một, là cho ngôn ngữ phi ngữ cảnh trong tổng quát Hai, một loại ngôn ngữ phi ngữ cảnh đã được giới hạn

Bổ đề Bơm cho ngôn ngữ phi ngữ cảnh

Định lý 8.1

Cho L là một ngôn ngữ phi ngữ cảnh vô hạn, thì tồn tại một số nguyên dương m sao cho bất kỳ một chuỗi w  L với |w|  m có thể được

phân rã thành

w = uvxyz (8.1)

với |vxy|  m (8.2)

|vy|  1 (8.3)

sao cho

uv i xy i z  L (8.4)

với mọi i = 0,1,2,3,

-Chứng minh

Xem xét ngôn ngữ L – {} và văn phạm G không có luật sinh  và đơn vị chấp nhận nó Vì chiều dài vế phải của luật sinh bị giới hạn, gọi là k, chiều dài của dẫn xuất của chuỗi bất kỳ w  L ít nhất là |w|/k Vì L vô hạn, nên có

những dẫn xuất dài tùy ý

Trang 2

Hãy coi một dẫn xuất trái nhất, vì không có giới hạn số biến của G, nhưng chiều dài của dẫn xuất thì không, ít nhất có một biến, gọi là A, phải ở vị

trí trái nhất Do vậy, ta có một dẫn xuất

S uAy1 uvAy2y1 uvxy 2 y1 (8.5)

Với u, v, x trong T* và y1, y2  (V  T)*

Vì G không có luật sinh  hay đơn vị, mỗi bước trong dẫn xuất hoặc là tạo lập

một tận, hay tăng chiều dài của hình thức câu Điều này suy ra rằng

| vy2|  1

dạng (8.5) cho ta

A vAy2

và A x

là có thể Điều này chỉ ra những dẫn xuất

S uxy1

và S uvixyi

2 y1, i = 1,2 (8.6)

là có thể

Cuối cùng, dạng câu (8.5) phải giảm đến chuỗi tận w, vì vậy ta có

y2 y

y1 z

với y, z  T* Do thế w = uvxyz và (8.6) suy ra rằng uvixyiz ở trong L

bởi vì |vy2|  1, thỏa (8.3) Để thỏa (8.2) Ta lấy A để mà A x không có biến lặp lại ở vị trí trái nhất Do vậy |x| bị giới hạn không phụ thuộc vào w,

thỏa (8.2)

Ví dụ 8.1

Chỉ ra rằng ngôn ngữ L = {a n b n c n : n  0} là không phi ngữ cảnh

Một khi đối phương đã chọn m, ta lấy một chuỗi a m b m c m trong L Bấy giờ đối phương có một số cách chọn Nếu họ chọn vxy chỉ chứa toàn kí hiệu a thì chuỗi được bơm hiển nhiên là không ở trong L Nên họ chọn một chuỗi có số

kí hiệu a và b bằng nhau thì chuỗi được bơm akbkcm với k = m có thể được sinh ra, và một lần nữa ta phải sinh ra một chuỗi không ở trong L Sự thực đối phương chỉ có một cách có thể chặn không cho ta thắng được là lấy chuỗi vxy sao cho vy có cùng số ký hiệu a,b và c Nhưng điều này không thể do giới hạn bởi (8.2) Vì vậy L là không phi ngữ cảnh.

Trang 3

Ví dụ 8.2

Xem xét ngôn ngữ

L = {ww : w  {a, b}*}

Ngôn ngữ này thì gần giống như ngôn ngữ phi ngữ cảnh trong ví dụ 5.1 Nhưng nó không phi ngữ cảnh

Xem xét chuỗi a m b m a m b m

Hình 8.1

Dễ thấy, đối phương không có thể chọn vxy, ta luôn có mâu thuẫn với bổ đề bơm Cách chọn như hình 8.1, ta chọn i = 0, được chuỗi có dạng.

a k b j a m b m , k  m hay j  m không thuộc L Cho đối phương cách chọn khác, lý luận tương tự, ta

kết luận L không phi ngữ cảnh.

Ví dụ 8.3

Chỉ ra ngôn ngữ

L = {an!: n  0) là không phi ngữ cảnh

Trong ví dụ 4.11 ta đã chỉ ra ngôn ngữ này không chính qui Tuy nhiên, một ngôn ngữ trên bộ chữ cái với ký tự đơn, có một chút khác giữa định lý 8.1 và bổ đề bơm cho ngôn ngữ chính qui Chuỗi được bơm gồm một ký tự đơn, chuỗi mới có thể được sinh ra do định lý 8.1 hay

định lý 4.8 Do vậy, ta có thể lý luận tương tự 4.11 để chỉ ra L là không

phi ngữ cảnh

Ví dụ 8.4

Chỉ ra ngôn ngữ

L = { a n b j : n = j 2 }

Không phi ngữ cảnh

Cho trước m trong định lý 8.1 ta chọn chuỗi am2 bm Đối phương có một

số cách chọn Xem hình 8.2 Bơm i lần, ta được một chuỗi mới có

a a b b a a b b

Trang 4

m2 + (i – 1)k1 ký tự a và m + (i –1)k2 kí tự b

Nếu đối phương chọn k1  0, k2  0, ta chọn i = 0

Ta có

( m - k2)2  ( m – 1) 2

= m2 – 2m + 1

 m2 – k1

Kết qủa là không ở trong L

Nếu đối phương chọn k1 = 0, k2  0 hay k1  0, k2 = 0, thì, một lần nữa với

i = 0, chuỗi được bơm không có trong L Ta kết luận L không phi ngữ cảnh.

Hình 8.2

Bổ đề pumping cho ngôn ngữ tuyến tính

Trước đây chúng ta đã phân biệt giữa văn phạm phi ngữ cảnh tuyến tính và không tuyến tính Bây giờ chúng ta thực hiện sự phân biệt tương tự giữa những ngôn ngữ

Định nghĩa 8.1

Ngôn ngữ phi ngữ cảnh L là tuyến tính nếu tồn tại một văn phạm phi cảnh tuyến tính G sao cho L = L(G).

Rõ ràng ngôn ngữ tuyến tính là phi ngữ cảnh nhưng ngược lại thì chưa chắc đúng

Ví dụ 8.5

Xem ngôn ngữ L = {w : n a (w) = n b (w)}

Văn phạm sau đây sinh ra nó, thuộc loại văn phạm không tuyến tính

S -> SS

S -> 

S -> aSb

S -> bSa

Do vậy, ngôn ngữ này không nhất thiết phải tuyến tính

Trang 5

Dĩ nhiên , một văn phạm không tuyến tính thì không suy ra được ngôn ngữ sinh ra bởi văn phạm ấy là không tuyến tính Nếu chúng ta muốn chứng minh một ngôn ngữ không tuyến tính, thì phải chỉ ra rằng không tồn tại một văn phạm tuyến tính tương đương cho nó Một cách thông thường, để chứng minh một ngôn ngữ không tuyến tính là thiết lập các tính chất cho ngôn ngữ đó, rồi chỉ ra một ngôn ngữ phi ngữ cảnh nào đó không có đòi hỏi tính chất này

Định lí 8.2

Coi L là ngôn ngữ tuyến tính vô hạn, tồn tại số nguyên dương m, sao cho bất kỳ chuỗi w  L với {w{ m có thể được phân rã w = uvxyz với

{uvyz{  m (8.7)

{vy{  1 (8.8)

sao cho

uv i xy i z  L (8.9)

với mọi i = 0,1,2

Chú ý : Kết luận của định lí này khác định lí 8.1 chỉ ở (8.7) Chuỗi v và y được

bơm phải nằm bên trong m kí hiệu của bên trái và cuối bên phải của w tương ứng Chuỗi x ở giữa có chiều dài tùy ý.

Chứng minh

Bởi vì, ngôn ngữ là tuyến tính, thì tồn tại một văn phạm tuyến tính G sinh

ra nó Dùng lý luận như định lý 8.1 Ta cũng cần G không chứa luật sinh  hay đơn vị G tuyến tính nên ta phải có u, v, y1, y 2  T* Coi A là một biến đầu tiên,

mà cuối cùng được lặp lại Trong dẫn xuất riêng phần

S uAz

Có thể có ít nhất | V| bước ( vì không có biến chưa được lặp lại), vì vậy u và z

có thể bị giới hạn

Tương tự trong

uAz uvAyz

Có thể có |V| bước, điều này dẫn đến kết luận chuỗi u, v, y bị giới hạn nghiêm

ngặt và thỏa (8.7) Phần lý luận còn lại, tương tự như định lí 8.1

Trang 6

Ví dụ 8.6

Ngôn ngữ L = { w : n a (w) = n b (w) }

Là không tuyến tính

Giả sử , ngôn ngữ đó là tuyến tính, áp dụng định lý 8.2 cho chuỗi

w = a m b 2m a m

bất đẳng thức (8.7) chỉ ra trong trường hợp này chuỗi u, v, y, z toàn là kí tự a.

Nếu bơm chuỗi này, ta được

a m+k b 2m a m+2

Ví dụ này đưa ra câu trả lời tổng cho quát cho quan hệ giữa họ ngôn ngữ

phi ngữ cảnh và tuyến tính Họ ngôn ngữ tuyến tính là tập con đúng của họ ngôn ngữ phi ngữ cảnh

BÀI TẬP

1 Chứng tỏ ngôn ngữ L là phi ngữ cảnh

L = { a n : n là số nguyên tố }

2 Chỉ ra rằng ngôn ngữ trên  = {a, b} là không phi ngữ cảnh

a) L = {a n b j : n  j2 }

b) L = { a n b j : n  (j - 1)3 }

c) L = {a n b j c k : k = jn }

3 Xác định ngôn ngữ L là phi ngữ cảnh hay không

a) L = {an wwRa n n  0, w  {a, b}*}

b) L = {a n b j a n b j : n  0, j  0 }

c) L = {a n b j a j b n : n  0, j  0 }

Trang 7

Tính đóng và giải thuật quyết định

cho ngôn ngữ phi ngữ cảnh

Trong chương 4 ta đã biết tính đóng dưới một số phép toán cho họ ngôn ngữ

chính qui Bây giờ ta đặt vấn đề này cho ngôn ngữ phi ngữ cảnh.Tính đóng cho ngôn ngữ chính qui thì không đúng cho ngôn ngữ phi ngữ cảnh Trong phần này, chúng ta chỉ trình bày một số kết qủa cơ bản

Tính đóng của ngôn ngữ phi ngữ cảnh

Định lý 8.3

Họ ngôn ngữ phi ngữ cảnh thì đóng dưới phép hội, kết nối và bao đóng –sao

-Chứng minh

Coi L1 và L2 là hai ngôn ngữ phi ngữ cảnh sinh bởi văn phạm

G1 = (V1, T1, S1, P1) và G 2 = ( V 2 , T 2 , S 2 , P 2 ) tương ứng, giả sử rằng V1 và V 2 rời

nhau

Coi ngôn ngữ L(G 3 ) sinh bởi văn phạm

G 3 = ( V1  V2  {S3}, T1  T2, S 3 , P 3 }

mà S3  V1  V 2 Luật sinh của G3 là tất cả các luật sinh của G1 và G2

P3 = P1  P 2  {S 3 -> S1 | S 2}

Hiển nhiên G3 là văn phạm phi ngữ cảnh, nên L(G3 ) phi ngữ cảnh,

dễ thấy

L(G 3 ) = L1  L 2

Giả sử w  L1

thì S3 => S1 w

là một dẫn xuất có thể trong văn phạm G3 Một lý luận tương tự

Ta có, w thuộc L2, cũng vậy, nếu w thuộc L(G 3 ) thì

hoặc S3 => S1 hoặc S3 => S2 (8.10)

Vì dạng câu dược dẫn từ S1 , có biến trong V1, và V1 và V2 rời nhau nên dẫn xuất

S1 w

có thể gồm những luật sinh trong P1 Do vậy w phải thuộc L1

Trang 8

Chọn theo (8.10) thì w phải thuộc L2 và L(G3) là L1  L2

tiếp theo, xem xét

G4 = ( V1  V2  {S4}, T1  T2, S4, P4)

Lần nữa S4 là biến mới và

P4 = P1  P2  { S4 -> S1S2 }

khi đó

L(G4 ) = L(G1)L(G 2 )

Cuối cùng, xem xét L(G5 ) với

G 5 = ( V1  {S5}, T1, S 5 , P 5)

mà S 5 là biến mới và

P5 = P1  {S5 -> S1S 5 | }

khi đó

L(G 5 ) = L(G1)*

Do đó, họ ngôn ngữ phi ngữ cảnh là đóng dưới phép hội, phép kết nối và

bao đóng_sao

Định lý 8.4

Họ ngôn ngữ phi ngữ cảnh thì không đóng dưới phép giao và phép lấy phần bù

-Chứng minh

Hãy coi hai ngôn ngữ

L1 = { a n b n c n : n  0, m  0 }

L 2 = {a n b m c m : n  0, m  0 }

có một số cách để chỉ ra L1 và L2 là phi ngữ cảnh.

Ví dụ chẳng hạn, một văn phạm cho L1 là

S -> S1S 2

S1 -> aS1b | 

S 2 -> cS 2 |

Theo cách chọn, ta chú ý rằng L1 là kết nối của hai ngôn ngữ phi ngữ cảnh, vì thế nó là phi ngữ cảnh theo định lý 8.3 Nhưng

Trang 9

L1  L2 = { a n b n c n : n  0}

Là không phi ngữ cảnh Vì vậy họ ngôn ngữ phi ngữ cảnh không đóng dưới phép giao

Phần thứ hai của định lý, theo định lý 8.3 và xem biểu thức

Nếu họ ngôn ngữ phi ngữ cảnh là đóng dưới phép lấy phần bù, thì vế phải của

biểu thức trên phải là ngôn ngữ phi ngữ cảnh cho L1 và L 2 bất kỳ Nhưng ngược lại giao của hai ngôn ngữ phi ngữ cảnh không nhất thiết là phi ngữ cảnh Do vậy, họ ngôn ngữ phi ngữ cảnh không đóng dưới phép lấy phần bù

Trong khi phép giao của hai ngôn ngữ phi ngữ cảnh có thể sinh ra một ngôn ngữ không phi ngữ cảnh Tính đóng là đúng, khi một trong hai ngôn ngữ là chính qui

Định lý 8.5

Cho L1 là ngôn ngữ phi ngữ cảnh và L2 là ngôn ngữ chính qui

Thì L1  L2 là ngôn ngữ chính qui Ta nói rằng họ ngôn ngữ phi ngữ cảnh là

đóng dưới phép giao chính qui (regular intersection)

-

Chứng minh

Coi M1 = (Q, , ,  1, q 0 , z, F1 ) là npda chấp nhận L1

và M2 = (Q, , ,  2, p 0 , z, F2 ) là dfa chấp nhận L2

Ta xây dựng một automat đẩy xuống

mô phỏng hoạt động của M1 và M2

Mỗi khi một ký hiệu được đọc từ chuỗi nhập,

mô phỏng những dịch chuyển của M1 và M2

Ta có :

= Q x P

= (q0, p0)

= F1 x F2

và định nghĩa sao cho

(( qk, pl ), x)  ((qi, pj), a, b)

nếu và chỉ nếu

(qk, x)   1(qi, a, b)

và  2 (p j , a) = pl

Ta cũng cần rằng, nếu a =  thì pj = pl Phát biểu , trạng thái của được

Trang 10

đánh nhãn là cặp ( qi, pj), biểu thị cho những trạng thái tương ứng của

M1 và M2 sau khi đọc một số ký hiệu nhập Dùng qui nạp ta được

((q0 , p 0 ), w, z) (qr, ps), x) Với qr  F1 và Ps  F2 nếu và chỉ nếu

(q0, w, s) M1(qs, x) và *(p0, w) = ps

Do đó, chuỗi chấp nhận bởi nếu và chỉ nếu nó được chấp nhận bởi M1

và M2 , đó là, nếu nó thuộc vào L(M1)  L(M2) = L1  L2

Ví dụ 8.7

Chỉ ra rằng ngôn ngữ

L = { an bn : n  0, n  100 }

là phi ngữ cảnh

Ta có thể xây dựng một pda hay một văn phạm phi ngữ cảnh cho L Dùng

lý luận như định lý 8.5 Chú ý rằng

L = { an bn : n  0 }  L1

Mà L1 là ngôn ngữ chính qui gồm những chuỗi trong L(a*b*) trừ chuỗi

a100 b100 Do vậy L là phi ngữ cảnh.

Ví dụ 8.8

Chỉ ra rằng ngôn ngữ

L = { w  {a, b, c} : na(w) = nb(w) = nc(w) }

là không phi ngữ cảnh Bổ đề bơm có thể sử dụng cho ví dụ này, nhưng ta có thể lý luận ngắn

hơn, bằng cách dùng tính đóng dưới phép giao chính qui Giả sử rằng L là

phi ngữ cảnh, khi đó

L  L( a* b* c*) = {a n b n c n : n  0}

cũng là phi ngữ cảnh, nhưng điều này không đúng Ta kết luận

L không phi ngữ cảnh.

Một số những tính chất có thể quyết định

Trang 11

của ngôn ngữ phi ngữ cảnh

Kết hợp định lý 5.2 và 6.6 ta đã thiết lập sự tồn tại của giải thuật thành viên cho ngôn ngữ phi ngữ cảnh Dĩ nhiên, đây là một tính chất thiết thực cho bất kỳ họ ngôn ngữ nào hữu dụng trong thực tế Một số tính chất đơn giản khác cũng đưa ra ở đây Ta giả sử rằng ngôn ngữ được mô tả bằng văn phạm

Định lý 8.6

Cho một văn phạm phi ngữ cảnh G = ( V, T, S, P) , tồn tại một giải

thuật để quyết định L(G) có rỗng hay không.

Chứng minh

Giả sử rằng   L(G) ta dùng giải thuật để khử những ký hiệu và luật sinh vô dụng Nếu S là vô dụng thì L(G) là rỗng Nếu không, thì L(G) chứa ít

nhất là một phần tử

Định lý 8.7

Cho một văn phạm phi ngữ cảnh G = (V, T, S, P), tồn tại một giải thuật

để xác định L(G) có vô hạn hay không.

-Chứng minh

Giả sử G không chứa luật sinh  , đơn vị, không có kí hiệu vô dụng và văn phạm có một biến lặp lại, trong trường hợp này, tồn tại A  V, để có dẫn

xuất

A xAy

Vì G không có luật sinh  và đơn vị, và x,y không thể cùng rỗng một lúc Vì A

không rỗng và cũng không vô dụng, ta có

S uAv w

A z

nhưng, khi đó

S => uAv => ux n Ay n v => ux n zy n v

là có thể với mọi n, vì vậy L là vô hạn.

Trang 12

BÀI TẬP

1 Cho L trong định lý 8.4 chứng tỏ L là tuyến tính

2 Chứng tỏ rằng L là phi ngữ cảnh

a) L = { a n b n : n  0 , n không chia hết cho 5}

b) L = { w  {a, b}* : na(w) = nb(w), w không chứa chuỗi con aab }

Ngày đăng: 11/03/2015, 11:34

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w