Một số bài toán quyết định đối với các NNPNC

Một phần của tài liệu BÁO CÁO THỰC TẬP-NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ (Trang 31)

Có nhiều câu hỏi mà câu trả lời là CÓ hay KHÔNG có thể đặt ra đối với các NNPNC. Với mỗi câu hỏi như thế, vấn đề không phải là tìm cách giải cho một vài trường hợp cụ thể mà là tìm giải thuật chung cho phép giải trong mọi trường hợp. Bài toán như thế gọi là bài toán quyết định. Có những bài toán quyết định về NNPNC là không giải

được (không tồn tại giải thuật), chẳng hạn bài toán phải chăng hai NNPNC cho biết nào đó là tương đương hay bài toán phải chăng một NNPNC cho biết là nhập nhằng. Ta xét một số bài toán quyết định giải được đối với các NNPNC.

5.1. Tính hữu hạn

Định lý 1: Tồn tại giải thuật để xác định phải chăng một NNPNC cho biết bất kỳ là:

a) Rỗng b) Hữu hạn c) Vô hạn

Qua bổ đề loại bỏ các ký hiệu vô sinh, đã cho giải thuật để xác định phải chăng một biến có sinh ra một xâu các ký hiệu cuối hay không. Vậy giải thuật đó sẽ cho biết ký hiệu đầu S có sinh ra các xâu ký hiệu cuối hay không, tức là cho biết L(G) là rỗng hay không.

Để xác định tình hữu hạn của L(G) ta xác định được VPPNC G’ = (Σ, ∆’, P’, S) ở dạng chuẩn Chomsky và không chứa các ký hiệu vô ích, mà L(G’) = L(G) - {ε}, L(G) là hữu hạn khi và chỉ khi L(G’) là hữu hạn. Để kiểm chứng tính hữu hạn của G’, ta lập một đồ thị có hướng với mỗi đỉnh là một biến, nếu A → BC thì có một cung từ A đến B và có một cung từ A đến C. Ta chứng minh được rằng, L(G’) là hữu hạn khi và chỉ khi đồ thị đó không có chu trình. Nếu tồn tại chu trình trên đồ thị đó thì ngôn ngữ là vô hạn (sinh ra một số vô hạn các xâu). (chứng minh chi tiết tham khảo trong giáo trình).

Ví dụ: Xét văn phạm S → AB A → BC | a B → CC | b C → a

Đồ thị được lập như sau:

Đồ thị trên không có chu trình. Đường đi dài nhất từ S là SABC. Vậy văn phạm này sản sinh hữu hạn xâu, và các xâu này có độ dài không lớn hơn 23 = 8. Thực ra xâu dài nhất suy dẫn từ S là: SABBCBCCCBCCCCC* aaaaa.

Nếu ta thêm vào văn phạm một sản xuất nữa: C → AB, thì ta được đồ thị mới như sau:

S

A B

Đồ thị này nhiều chu trình, chẳng hạn ABCA. Vậy ta phải tìm được một suy dẫn ABCCCCCABC, với C*a và BC*ba, ta có A* aAba. Mặt khác

S*Ab và A*a, suy ra A*aia(ba)ib với mọi i. Vậy ngôn ngữ là vô hạn.

5.2. Bài toán thành viên

Định lý 2: Tồn tại giải thuật để xác định, với một VPPNC bất kỳ G = (Σ, ∆, P, S)

và một xâu bất kỳ xΣ*, phải chăng xL(G)?

Chứng minh:

Người ta đề xuất nhiều giải thuật cho bài toán thành viên này. Sau đây là một giải thuật gọi là giải thuật CYK với thời gian tỷ lệ với |x|3.

Giả sử G đã ở dạng chuẩn Chomsky và |x| = n1. Trước hết chứng tỏ rằng có cách xác định với mỗi i, j và mỗi biến A, phải chăng A*xij, trong đó xij là xâu con của x kể từ vị trí i và có độ dài j.

Quy nạp theo j:

- Với j = 1, A* xij khi và chỉ khi A → xij là một sản xuất.

- Với j>1, thì A* xij khi và chỉ khi có một sản xuất A→BC và k, 1k<j, sao cho B suy dẫn k ký hiệu đầu của xij và C suy dẫn j-k ký hiệu cuối cùng của xij. Tức là:

B* xik và C* xi+k, j-k

Vì k và j-k cả hai đều bé thua j, theo giả thiết quy nạp, ta đã xác định được phải chăng hai suy dẫn này tồn tại hay không? Vậy thì cũng xác định được A*xij hay không. Với cách đó, ta sẽ xác định được phải chăng S*x1n. Nhưng x1n = x. Vậy xL(G) khi và chỉ khi S*x1n Bài tập : 1. Cho văn phạm S → aB | bA A → a | aS | bAA B → b | bS | aBB

Với xâu aaabbabbba hãy tìm : a) Suy dẫn bên trái nhất b) Suy dẫn bên phải nhất c) Cây suy dẫn

d) Văn phạm này có nhập nhằng không S

A B

2. Tìm các văn phạm chính quy sinh ra các ngôn ngữ : a) {a, b} {a, b, 0, 1}*

b) {ambn | m, n > 0} (adsbygoogle = window.adsbygoogle || []).push({});

3. Lập các ÔH và VPTTP (sai khác ε) cho ngôn ngữ : (aa + bb*a + abb*a)*

4. Tìm BTCQ chỉ định ngôn ngữ sinh ra bởi văn phạm sau : S0 → abS1 | aS2

S1 → aaS0 | bS1 S2 → aS1 | b

5. Tìm văn phạm không chứa ký hiệu vô ích, ε - sản xuất và sản xuất đơn tương đương với văn phạm sau :

A → A | B A → A | D B → D | E C → S | a | ε D → S | b E → S | c | ε

6. Chuyển về dạng chuẩn Chomsky các văn phạm sau : a) S → aAB | BA, A → BBB | a, B → AS | b b) S → 0S1 | 01

c) S → #S | [SS] | p | q

( các ký hiệu cuối là p, q, #, [,] và )

ÔTÔMÁT ĐẨY XUỐNG

Một phần của tài liệu BÁO CÁO THỰC TẬP-NGÔN NGỮ VÀ BIỂU DIỄN NGÔN NGỮ (Trang 31)