<< Chapter < Page Chapter >> Page >

Vậy ta đã chứng minh xong L(G3) = L1  L2, hay L1  L2 là CFL.

. Đối với L1L2 : Xây dựng văn phạm G4 (V1  V2  {S4}, T1  T2, P4, S4) ,

trong đó P4 = P1  P2  {S4  S1S2}.

Chứng minh tương tự như trên ta có L(G4) = L1L2, vậy L1L2 cũng là CFL.

. Đối với L1* : Xây dựng văn phạm G5 (V1  {S5}, T1, P5, S5),

trong đó P5 = P1  { S5  S1S5 | }.

Ta cũng dễ dàng chứng minh được L(G5) = (L(G1))*.

ĐỊNH LÝ 5.8 : CFL không đóng với phép giao

Chứng minh

Ta đã biết ngôn ngữ L1 = {aibici | i  1} không là CFL. Ta có thể chứng minh :

. L2 = {aibicj | i  1 và j  1} là CFL vì L2 được sinh bởi văn phạm :

S ® AB

A ® aAb | ab

B ® cB | c

. L3 = {aibjcj | i  1 và j  1} cũng là CFL vì L3 được sinh từ văn phạm :

S ® CD

C ® aC | a

D ® bDc | bc

Tuy nhiên L2  L3 = L1 không phải là CFL.

Vậy CFL không đóng với phép giao.

Hệ quả: CFL không đóng với phép lấy phần bù.

Chứng minh

Giả sử CFL đóng với phép lấy phần bù, vậy với L1, L2 là hai CFL bất kỳ, theo quy luật DeMorgan ta có L 1 size 12{L rSub { size 8{1} } } {} L 2 size 12{L rSub { size 8{2} } } {} = L 1 ¯ L 2 ¯ ¯ size 12{ {overline { matrix { {overline {L rSub { size 8{1} } }} {} # union {overline {L rSub { size 8{2} } }} {}} }} } {} nên L1  L2 là CFL hay CFL cũng đóng với phép giao. ( Điều này mâu thuẫn với định lý 6.6)

Câu hỏi :

?

Hãy so sánh các tính chất đóng của lớp ngôn ngữ phi ngữ cảnh với lớp ngôn ngữ chính quy ?

Các giải thuật quyết định cfl

Có một vài câu hỏi về CFL mà chúng ta cần phải trả lời. Chẳng hạn, liệu một ngôn ngữ phi ngữ cảnh cho trước là rỗng, hữu hạn hay vô hạn hay một chuỗi nào đó liệu có thuộc ngôn ngữ này không ? Tuy nhiên, cũng có những câu hỏi về CFL mà không có giải thuật nào để có thể trả lời. Chẳng hạn, liệu hai CFG thì có tương đương nhau, hay phần bù của một CFL có là CFL hay không, hoặc một CFG cho trước nào đó có phải là văn phạm mơ hồ ? Trong phần này, chúng ta chỉ đưa ra giải thuật cho một số các câu hỏi có thể trả lời.

Giải thuật xác định ngôn ngữ phi ngữ cảnh

ĐỊNH LÝ 5.9 : Tồn tại giải thuật để xác định CFL là: rỗng, hữu hạn, vô hạn.

Chứng minh

Với văn phạm G (V, T, P, S) :

. Để kiểm tra L(G) có rỗng hay không, ta dùng bổ đề 5. 1: Rõ ràng L(G) không rỗng khi và chỉ khi S sinh ra một chuỗi ký hiệu kết thúc nào đó.

. Để kiểm tra L(G) hữu hạn hay vô hạn, ta dùng định lý 5. 5 để tìm văn phạm tương đương G’ (V’, T, P’, S) có dạng chuẩn CHOMSKY và không có ký hiệu vô ích sinh ra L(G) - {}. L(G) hữu hạn khi và chỉ khi L(G’) hữu hạn.

Để kiểm tra tính hữu hạn của CFG có dạng chuẩn CHOMSKY, ta chỉ cần vẽ đồ thị có hướng với mỗi đỉnh trên đồ thị là một biến thuộc văn phạm và cạnh từ A đến B nếu và chỉ nếu có luật sinh A  BC hoặc A  CB với biến C bất kỳ. Khi đó, ngôn ngữ sinh ra là hữu hạn nếu và chỉ nếu đồ thị không có chu trình. Vì :

Nếu đồ thị có chu trình, giả sử chu trình là A0, A1,... , An, A0 thì sẽ có chuỗi dẫn xuất: A0  1A11  2A22 ...  nAnn  n+1 A0n+1, trong đó i, i là chuỗi các biến và | ii | = i. Vì không có ký hiệu vô ích nên n+1* w và n+1* x với mọi chuỗi w, x là các chuỗi ký hiệu kết thúc và độ dài tổng cộng ít nhất bằng n+1. Vì n  0, nên w và x không thể đồng thời bằng .

Kế tiếp, cũng do văn phạm không có chứa ký hiệu vô ích nên ta có thể tìm được các chuỗi y, z sao cho S * yA0z và chuỗi ký hiệu kết thúc v sao cho A0 * v. Vậy i ta có :

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