<< Chapter < Page Chapter >> Page >

S * yA0z * ywA0xz * yw2A0x2z * ... * ywiA0xiz * ywivwiz.

Vì | wx |>0, nên chuỗi ywivwiz không thể bằng ywjvwjz nếu i  j. Vậy văn phạm sinh ngôn ngữ vô hạn.

Ngược lại, giả sử đồ thị không có chu trình. Ta gọi hạng của biến A là độ dài lớn nhất của đường đi bắt đầu từ A. Vì không có chu trình nên A sẽ có hạng hữu hạn. Nếu A  BC là một luật sinh thì hạng của B và C phải nhỏ hơn hạng của A. Ta chứng minh quy nạp theo r (hạng của A) rằng không có chuỗi ký hiệu kết thúc nào có độ dài lớn hơn 2r

Với r = 0: hạng của A bằng 0, vậy không có cạnh từ A. Do đó, tất cả các A - luật sinh đều có dạng A  a, hay A dẫn ra chuỗi có độ dài l = 20.

Xét r>0: nếu ta dùng luật sinh A  a thì dẫn ra chuỗi chỉ có độ dài 1, nếu dùng luật sinh A  BC thì vì B, C có hạng í hơn hoặc bằng r -1 nên theo giả thiết quy nạp B, C dẫn ra chuỗi có độ dài ngắn hơn 2r -1 . Vậy BC không thể dẫn ra chuỗi có độ dài lớn hơn 2r. Giả sử S có hạng là r0 thì các chuỗi do S sinh ra có độ dài không quá 2r0 . Vì thế suy ra ngôn ngữ là hữu hạn.

Thí dụ 5.16 : Xét văn phạm G chứa các luật sinh sau :

S ® AB

A ® BC | a

B ® CC | b

C ® a

Ta thấy văn phạm G có các luật sinh đã thỏa dạng chuẩn Chomsky.

. Để kiểm tra tính rỗng của văn phạm, ta áp dụng Bổ đề 5.1 lên tập biến V để tìm tập biến mới mới V­1 chỉ chứa các biến có khả năng dẫn ra chuỗi ký hiệu kết thúc trong văn phạm :

Ta có : V­1 = { A, B, C, S } vì A ® a , B ® b, C ® a và S ® AB

Hay S  V­1 có nghĩa là S có thể sinh ra các chuỗi ký hiệu kết thúc. Vậy ngôn ngữ sinh bởi văn phạm G : L(G) không rỗng.

. Để kiểm tra tính hữu hạn của văn phạm, ta vẽ đồ thị có hướng tương ứng với các luật sinh trong văn phạm như sau :

Hình 5.6 - Đồ thị có hướng tương ứng

Rõ ràng, ta thấy đồ thị không có chu trình. Hạng của S, A, B, C lần lượt là 3, 2, 1 và 0. Chẳng hạn, một đường đi dài nhất từ S là S  A  B  C. Vậy văn phạm này là hữu hạn, nó sinh ra hữu hạn chuỗi và độ dài các chuỗi không lớn hơn 23 = 8.

Thực tế, chuỗi dài nhất dẫn xuất được từ S là :

S  AB  BCB  CCCB  CCCCC * aaaaa ,với độ dài chuỗi là 5.

Nếu ta thêm vào văn phạm một luật sinh mới : C  AB, thì đồ thị có hướng tương ứng lúc đó có dạng như sau :

Hình 5.7 - Đồ thị có hướng tương ứng văn phạm bổ sung

Đồ thị mới này có nhiều chu trình, chẳng hạn A  B  C  A. Vậy ta phải tìm được một dẫn xuất dạng A * 3A3 , cụ thể là A  BC  CCC  CABC, trong đó 3 = C và 3 = BC. Vì C * a và BC * ba nên A * aAba.

Mặt khác, S * Ab và A * a, suy ra : S * aia(ba)ib, i. Vậy ngôn ngữ sinh từ văn phạm mới là vô hạn.

Giải thuật thành viên (membership)

ĐỊNH LÝ 5.10 : Tồn tại giải thuật để xác định với một CFL nào đó sinh ra từ CFG G(V, T, P, S) và một chuỗi x bất kỳ thì x có thuộc L(G) hay không ?

Chứng minh

Có một vài giải thuật được đề nghị cho bài toán thành viên này. Sau đây trình bày một giải thuật theo vòng lặp đơn giản, ta gọi là giải thuật CYK (Cocke-Younger-Kasami) với thời gian tỷ lệ với  x 3.

Giả sử văn phạm G (V, T, P, S) đã có dạng chuẩn Chomsky và  x  = n  1. Trước hết, ta phải xác định với mỗi i, j và mỗi biến A, phải chăng A * xij , trong đó xij là một chuỗi con của chuỗi x tính từ vị trí thứ i và có độ dài j.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Giáo trình tin học lý thuyết. OpenStax CNX. Jul 30, 2009 Download for free at http://cnx.org/content/col10826/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Giáo trình tin học lý thuyết' conversation and receive update notifications?

Ask