Nếu là không ngữ cảnh và là thường xuyên, thì là không ngữ cảnh?


9

Tôi đang bị mắc kẹt khi giải bài tập tiếp theo:

Lập luận rằng nếu có ngữ cảnh và là thường xuyên, thì (nghĩa là thương số đúng ) không có ngữ cảnh.LRL/R={wxRs.twxL}

Tôi biết rằng có nên tồn tại một PDA chấp nhận và một DFA chấp nhận . Bây giờ tôi đang cố gắng kết hợp các automata này với một thiết bị PDA chấp nhận thương số phù hợp. Nếu tôi có thể xây dựng mà tôi đã chứng minh rằng là không có ngữ cảnh. Nhưng tôi đang bị mắc kẹt khi xây dựng chiếc PDA này.LRL/R

Đây là khoảng cách tôi đã thực hiện:

Trong các kết hợp PDA, các trạng thái là một sản phẩm cartesian của các trạng thái của automata tách biệt. Và các cạnh là các cạnh của DFA, nhưng chỉ các cạnh trong tương lai có thể đạt được trạng thái cuối cùng của PDA gốc L. Nhưng không biết làm thế nào để viết nó chính thức.


Chào mừng bạn Chính xác thì bạn bị mắc kẹt ở đâu, cách tiếp cận của bạn là gì?
Raphael

1
Gợi ý: suy nghĩ về cách sử dụng tốt nhất tính không xác định.
Artem Kaznatcheev

Trong các kết hợp PDA, các trạng thái là một sản phẩm cartesian của các trạng thái của automata tách biệt. Và các cạnh là các cạnh của DFA, nhưng chỉ các cạnh trong tương lai có thể đạt được trạng thái cuối cùng của PDA gốc L. Nhưng không biết làm thế nào để hạ nó xuống một cách chính thức.
Dommicentl

3
Tôi đã sao chép bình luận của bạn vào câu hỏi. Đó là một nơi tốt hơn cho nó.
Dave Clarke

Câu trả lời:


8

Đây là một gợi ý.

Bạn cần máy của mình ban đầu chấp nhận một phần của một từ từ , tiêu thụ băng khi nó đi. Sau đó, không tiêu tốn bất cứ thứ gì, bạn cần tìm một từ nào đó từ sẽ đẩy máy về trạng thái cuối cùng. Từ được chọn từ đóng vai trò của từ đầu vào trong nửa sau của tính toán.LRR

Rõ ràng, tính không xác định sẽ có vai trò, cũng như sản phẩm giữa hai máy. Thủ thuật trong việc chính thức hóa điều này là điều chỉnh sản phẩm để đối phó với thực tế là đầu vào đến từ không phải từ đầu vào.R


6

Tôi không chắc chắn những gì bạn đang nhận được với các sản phẩm cartesian; điều này mô phỏng cả hai automata song song, sẽ cung cấp cho bạn giao điểm. Nhưng bạn muốn nó xác định tất cả các từ trong có hậu tố từ ! Ở mức độ trực quan, đó là.LR

Giả sử đầu vào của chúng tôi là . Rõ ràng, chúng tôi không thể kiểm tra tất cả các phần tiếp theo có thể (đối với tư cách thành viên trong ) mà chỉ có một số lượng hữu hạn trong số chúng. Nhận xét của Artem là hữu ích nhất ở đây; chúng tôi đoán hậu tố sẽ là gì và chạy cả hai automata trên nó.wΣRx

Đặt và các PDA cho và NFA cho , tương ứng. Xây dựng một máy tự động như sau. Trên đầu vào , mô phỏng . Sau khi được tiêu thụ, chuyển sang giao lộ đã sửa đổi của và , giữ trạng thái từ . Bây giờ, quyết định cho mọi chuyển đổi không nhất định về mặt ký hiệu nào tiếp theo trong đầu vào ảo. Chấp nhận khi và chỉ khi cả hai thành phần của đạt đến trạng thái cuối cùng đồng thời, đó là nếuALARLRAwΣALwAL,RALARALwAL,Rwcó một sự tiếp nối để và .xwxLxR

Bạn cũng có thể sử dụng ngữ pháp chính thức. Bạn có thấy làm thế nào bạn có thể rút ra hai ngữ pháp song song không? Nói chung, không rõ làm thế nào để điều chỉnh để bạn có thể xử lý các hậu tố; sử dụng hình thức bình thường Chomsky giúp.GL

Giả sử cả và được đưa ra ở dạng bình thường Chomsky. Sửa đổi sao cho phần không phải cực nhất có thể phân biệt được và biến biểu tượng bắt đầu của nó thành biểu tượng bắt đầu mới. Giới thiệu cho các phiên bản phân biệt của các quy tắc mới khác thường dẫn đến một ngữ pháp xuất phát song song trong và (không phải là thiết bị đầu cuối là cặp không phải thiết bị đầu cuối); nếu cả hai ngữ pháp đồng ý về ký hiệu đầu cuối, hãy xóa tổ hợp không đầu cuối. Bằng cách đó, một hậu tố trong sẽ bị xóa nếu và chỉ nếu nó có thể được bắt nguồn trong và trong , nó vẫn .GLGRGLGLGRGLGLGRwL/R


Lưu ý rằng ngay cả những gì trong khu vực spoiler cũng không nghiêm ngặt hoặc trang trọng. Xin vui lòng cho tôi biết nếu bạn cần thêm chi tiết (sau khi đã tự mình thử).
Raphael

6

Tôi khuyên bạn nên sử dụng câu trả lời của Raphael, dễ hiểu hơn nhiều, nhưng đây là một câu trả lời khác, sử dụng thuộc tính đóng thay vì automata:

Đặt là ngôn ngữ. Chúng tôi muốn đọc một từ , nhưng hỏi xem có trong ngôn ngữ không. Vì vậy, chúng tôi muốn tạo một ngôn ngữ mới từ đã "bị xóa". Chúng ta có thể làm điều đó bằng cách sử dụng phép đồng hình, nhưng nó có thể xóa các chữ cái khỏi . Giải pháp: chia bảng chữ cái thành hai và sử dụng các chữ cái khác nhau cho và .LAwLwxLxwwx

Chính thức hơn:

1) Tạo các từ từ , với mỗi chữ cái được gắn thẻ 0 hoặc 1. 2) Giao tiếp với ngôn ngữ thông thường . Lực lượng này mà tất cả 0 của đi trước khi tất cả 1, và phần thứ hai xuất phát từ . Ý nghĩa chính xác của được để lại cho người đọc. 3) Thay thế và . Các thuộc tính đóng được sử dụng: Hình ảnh đồng hình, tiền đồ, giao điểm với các ngôn ngữ thông thường. Ưu điểm: Bằng chứng này hoạt động cho các gia đình khác (ví dụ: thay thế không ngữ cảnh bằng thông thường). L ( A × 0 ) * ( R × 1 ) R × ( một , 0 ) một ( một , 1 ) εL(A×{0,1})L
(A×0)(R×1)R×
(a,0)a(a,1)ε



1
Đối với những gì nó có giá trị, quá trình xây dựng automata cũng quy mô cho các lớp khác: không có lúc nào chúng ta thực sự sử dụng rằng là một PDA. AL
Raphael

Điểm tốt.
sdcvvc

1
Về mặt kỹ thuật, một lớp như vậy (nơi chứng minh này hoạt động) được gọi là hình nón hoặc bộ ba đầy đủ .
Hendrik ngày 1 thá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.