Tại sao không xác định (tự động đẩy xuống) cần thiết?


9

Tôi muốn biết lý do tại sao để nhận dạng các ngôn ngữ không ngữ cảnh, chỉ có automata đẩy xuống không xác định (DPA = NPDA) hoạt động. Tại sao automata đẩy xuống xác định (DPDA) không nhận ra các ngôn ngữ như vậy?


10
Một ngôn ngữ có thể được nhận ra bởi một automata đẩy xuống xác định nếu có tồn tại một số ngữ pháp LR (1) cho ngôn ngữ đó. Vì có các ngôn ngữ không có ngữ cảnh không có bất kỳ ngữ pháp LR (1) nào mô tả chúng, NPDA! = DPDA. Vì những kết quả này rất nổi tiếng và thường sẽ được xử lý trong một khóa học về trình biên dịch, tôi không chắc liệu điều đó có trả lời câu hỏi của bạn không: có lẽ bạn đang tìm kiếm trực giác đằng sau sự thật này?
Alex ten Brink

nó thực sự hơi phản khoa học khi có những mô hình quan trọng khác trong đó chủ nghĩa không điều kiện làm cho không có sự khác biệt về ngôn ngữ được chấp nhận-- FSM và TM.
vzn

Câu trả lời:


25

Tôi không chắc chắn hương vị của "tại sao" bạn đang tìm kiếm. Một lý do cho sự gia tăng sức mạnh khi cho phép thuyết không điều kiện có thể được nhìn thấy trong ví dụ sau:

Đặt là tập hợp các palindromes w ˉ w trên một số bảng chữ cái (có ít nhất hai ký hiệu), trong đó ˉ w là mặt trái của w . Một NPDA cho ngôn ngữ này chỉ có thể tiếp tục đẩy các biểu tượng lên ngăn xếp của nó, và sau đó tại một số điểm đoán rằng nó đã đạt đến giữa đầu vào và dần dần làm trống ngăn xếp. Lưu ý rằng điều kiện chấp nhận hoàn toàn mang tính tồn tại - đủ để có một dự đoán chính xác cho từ được chấp nhận.Lww¯w¯w

Một PDA xác định sẽ phải chọn vị trí mà nó xem là giữa theo một cách nào đó chỉ phụ thuộc vào tiền tố hiện tại. Giả sử là DPDA như vậy. Với mọi k N , cho u k = a b 2 k a ; Đặt v 0 là từ trống và v k + 1 = v k u k v k . Đây là một chuỗi các palindromes, mỗi tiền tố của tiếp theo, do đó A phải ở trạng thái chấp nhận q k , với ngăn xếp trống, sau khi đọc vMộtkNbạnk= =mộtb2kmộtv0vk+1= =vkbạnkvkMộtqk . Theo nguyên tắc lỗ chim bồ câu, phải có một số k , l sao cho k l q k = q l (có một số trạng thái hữu hạn, và vì vậy một số phải được 'tái sử dụng' vì có vô số k s ). Nhưng sau đó A không thể phân biệt v k u k v k , đó là một palindrom, với v l u k v k , không.vkk,tôiktôiqk= =qtôikMộtvkbạnkvkvtôibạnkvk


0

FA xác định hoặc không xác định chấp nhận cùng một ngôn ngữ (ví dụ: Lang thường xuyên).

Nhưng trong trường hợp của PDA , nếu chúng tôi hạn chế nó hành xử một cách xác định thì nó sẽ không chấp nhận một số CFL (CFL không có thuộc tính tiền tố (trừ RL)).

Tại sao như vậy?

Hãy xem xét một ví dụ về CFL không có thuộc tính tiền tố (Thuộc tính tiền tố của một lang: không có chuỗi nào là tiền tố thích hợp của một chuỗi khác trong lang).

L = viết

ví dụ. chuỗi 000000 . (00 là tiền tố thích hợp của 0000 do đó wwr không có thuộc tính pref.).

Khi xảy ra 00 DPDA sẽ chuyển sang trạng thái cuối cùng. Bây giờ vì DPDA không có lựa chọn giữa chấp nhận và liên tục , nên nó không thể chấp nhận 0000 sau khi chấp nhận 00 . Đây là nơi mà PDA yêu cầu không xác định .

Quan sát : Trong trường hợp FA, lang (RL) không có pref. thuộc tính có thể được chấp nhận một cách xác định (ví dụ: chuỗi bắt đầu bằng 0). Điều này cho thấy tác động của thuộc tính tiền tố của RL và CFL là khác nhau . Sự khác biệt giữa tính xác định và tính không xác định đối với PDA tạo ra một họ lang mới. được DPDA chấp nhận. Lang này được gọi là DCFL .

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.