Các bộ Trước và Sau cho các ngữ pháp không ngữ cảnh có luôn không có ngữ cảnh không?


14

Đặt là một ngữ pháp không ngữ cảnh. Một chuỗi các thiết bị đầu cuối và không thuộc đầu cuối của được cho là một hình thức sentential của nếu bạn có thể lấy nó bằng cách áp dụng tác phẩm của zero hoặc thời gian hơn để các biểu tượng bắt đầu của . Hãy là tập hợp các hình thức sentential của .GGGGSSF(G)G

Đặt và để là một chuỗi con của - chúng tôi gọi là một đoạn của . Bây giờ hãy đểαSF(G)βαβSF(G)

Before(β)={γ | δ.γβδSF(G)}

After(β)={δ | γ.γβδSF(G)} .

Có phải và ngữ cảnh không? Nếu không rõ ràng thì sao? Nếu không rõ ràng, và cũng có thể được mô tả bằng ngôn ngữ không ngữ cảnh rõ ràng?Sau ( β ) G G Trước ( β ) Sau ( β )Before(β)After(β)GGBefore(β)After(β)

Đây là phần tiếp theo cho câu hỏi trước đó của tôi , sau một nỗ lực trước đó để làm cho câu hỏi của tôi dễ trả lời hơn. Một câu trả lời tiêu cực sẽ làm cho câu hỏi bao quát tôi đang làm việc rất khó trả lời.

Câu trả lời:


8

Trước tiên, chúng ta hãy cảm nhận về và . Hãy xem xét một cây phái sinh có chứa ; "chứa" ở đây có nghĩa là bạn có thể cắt bỏ các cây con để là một từ phụ của mặt trước của cây. Sau đó, tập hợp trước (sau) là tất cả các mặt trước tiềm năng của phần cây bên trái (phải) của :Sau ( β ) β β βBefore(β)After(β)βββ

cây với bộ trước và sau
[ nguồn ]

Vì vậy, chúng ta phải xây dựng một ngữ pháp cho phần được xếp theo chiều ngang (lót theo chiều dọc) của cây. Điều đó dường như đủ dễ dàng vì chúng ta đã có một ngữ pháp cho toàn bộ cây; chúng ta chỉ cần đảm bảo tất cả các hình thức cảm tính là các từ (thay đổi bảng chữ cái), lọc đi những dạng không chứa (đó là một thuộc tính thông thường vì được sửa) và cắt bỏ mọi thứ sau (trước) , bao gồm . Việc cắt này cũng nên có thể.beta beta betaββββ


Bây giờ đến một bằng chứng chính thức. Chúng tôi sẽ chuyển đổi ngữ pháp như được phác thảo và sử dụng các thuộc tính đóng của để thực hiện lọc và cắt, tức là chúng tôi thực hiện một bằng chứng không mang tính xây dựng.CFL

Đặt một ngữ pháp không ngữ cảnh. Dễ dàng thấy rằng có ngữ cảnh; xây dựng như thế này:SF ( G ) G = ( N , T , δ , N S )G=(N,T,δ,S)SF(G)G=(N,T,δ,NS)

  • N={NAAN}
  • T=NT
  • δ={α(A)α(β)Aβδ}{NAAAN}

với cho tất cả các và cho tất cả . Rõ ràng là ; do đó, đóng tiền tố tương ứng và đóng hậu tố cũng không có ngữ cảnh.t T α ( A ) = N A a N L ( G ) = SF ( G ) Pref ( SF ( G ) ) Suff ( SF ( G ) )α(t)=ttTα(A)=NAaNL(G)=SF(G)Pref(SF(G))Suff(SF(G))

Bây giờ, với mọi là và ngôn ngữ thông thường. Vì được đóng dưới giao lộ và thương số phải / trái với các ngôn ngữ thông thường, chúng tôi nhận đượcL ( β ( N T ) * ) L ( ( N T ) * β ) C F Lβ(NT)L(β(NT))L((NT)β)CFL

Before(β)=(Pref(SF(G))  L((NT)β))/βCFL

After(β)=(Suff(SF(G))  L(β(NT)))βCFL .


¹ được đóng dưới thương số phải (và trái) ; và tương tự cho mang lại tiền tố tương ứng. đóng hậu tố.CFLPref(L)=L/ΣSuff


Tôi bắt đầu viết một câu trả lời sau đó nhận ra bằng chứng của mình giống như của bạn. Tôi muốn có đặt nó theo cách này (nén để phù hợp ở đây): tạo thành một ngữ pháp bằng cách thêm một nhà ga mới Một (một metavariable) cho mỗi phi terminal Một và sản xuất Một Một . Thì các dạng G của chúng là các từ được G nhận ra bao gồm các biến thái. Đây là giao điểm của CFG với ngôn ngữ thông thường và do đó là thường xuyên. Bộ tiền tố của CFG là CFG (lấy một chiếc PDA và làm cho mọi trạng thái cuối cùng). B e f o r e ( γ ) =GA^AAA^GG một lần nữa là một CFG. Before(γ)={γγβL(Prefix(G^))}
Gilles 'SO- ngừng trở thành ác quỷ'

1
@Gilles, ba nhận xét về điều đó: 1) các hình thức cảm tính thông thường (đúng) có chứa ngôn ngữ. 2) "làm cho mọi trạng thái cuối cùng" - điều đó sẽ không hiệu quả; bạn cũng sẽ chấp nhận tiền tố của những từ không phải từ. 3) Bước cuối cùng của việc "cắt bỏ" một hậu tố dường như là khó khăn để trở nên nghiêm ngặt. : / Bạn có bằng chứng khắt khe nhưng nhỏ gọn hơn của tôi không?
Raphael

1) không thành vấn đề (thay đổi thành có hoặc không có nội dung cho mỗi thiết bị đầu cuối). 2) Rất tiếc, tôi đã cắt quá nhiều: làm cho mọi trạng thái có thể đạt đến một trạng thái cuối cùng. 3) Thực hiện một thiết bị đầu cuối b tại một thời điểm; trong PDA, đánh dấu các trạng thái mà người ta có thể đạt đến trạng thái cuối cùng bằng cách tiêu thụ b là cuối cùng thay thế. Vâng, sẽ cần mở rộng nhiều hơn để làm cho nghiêm ngặt này. Gbb
Gilles 'SO- ngừng trở thành ác quỷ'

9

Có, After ( β ) là các ngôn ngữ không ngữ cảnh. Đây là cách tôi sẽ chứng minh điều đó. Đầu tiên, một bổ đề (đó là mấu chốt). Nếu L là CF thì:Before(β)After(β)L

Before(L,β)={γ | δ.γβδL}

After(L,β)={γ | δ.δβγL}

là CF.

Bằng chứng? Ví xây dựng một hữu hạn nhà nước không xác định bộ chuyển đổi T β đó quét một chuỗi, xuất ra tất cả các biểu tượng đầu vào nó nhìn thấy và đồng thời tìm kiếm phi deterministically cho β . Bất cứ khi nào T β thấy biểu tượng đầu tiên của β nó Forks không tất định và chấm dứt những biểu tượng xuất ra cho đến khi một trong hai kết thúc nó nhìn thấy β hoặc nó thấy nhìn thấy một biểu tượng mà lệch khỏi β , dừng lại trong cả hai trường hợp. Nếu T β thấy βBefore(L,β)TββTββββTββđầy đủ, nó chấp nhận khi dừng lại, đó là cách duy nhất nó chấp nhận. Nếu nó thấy một sự sai lệch từ , nó từ chối.β

Bổ đề có thể được chết tiệt với các trường hợp xử lý nơi có thể trùng với bản thân (như một b một b - tiếp tục tìm kiếm cho β ngay cả khi ở giữa quét một trước β ) hoặc xuất hiện nhiều lần (trên thực tế, bản gốc không determinisic forking đã xử lý đó). βababββ

Đó là khá rõ ràng rằng , và kể từ khi CFLs được đóng theo truyền hữu hạn nhà nước, Trước ( L , β ) do đó là CF. Tβ(L)=Before(L,β)Before(L,β)

Một lập luận tương tự như vậy với , hoặc nó có thể được thực hiện với đảo chiều chuỗi từ Trước ( L , β ) , CFL cũng bị đóng cửa dưới sự đảo ngược:After(L,β)Before(L,β)

After(L,β)=rev(Before(rev(L),rev(β)))

Trên thực tế, bây giờ mà tôi nhìn thấy đối số đảo ngược, nó sẽ là bắt đầu với dễ dàng hơn , kể từ khi bộ chuyển đổi cho điều đó là đơn giản để mô tả và xác minh - nó ra chuỗi rỗng trong khi tìm kiếm một β . Khi tìm thấy β nó giả mạo không xác định, một ngã ba tiếp tục tìm kiếm các bản sao tiếp theo của β , ngã ba kia sao chép tất cả các ký tự tiếp theo nguyên văn từ đầu vào sang đầu ra, chấp nhận mọi lúc.After(L,β)βββ

Những gì còn lại là làm cho công việc này cho các hình thức cảm tính cũng như CFL. Nhưng điều đó khá đơn giản, vì ngôn ngữ của các hình thức cảm tính của CFG chính là CFL. Bạn có thể thấy rằng bằng cách thay thế mỗi phi terminal suốt G bằng cách nói X ' , tuyên bố X là một thiết bị đầu cuối, và thêm tất cả sản phẩm X 'X đến ngữ pháp.XGXXXX

Tôi sẽ phải suy nghĩ về câu hỏi của bạn về sự không rõ ràng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.