Tại sao quyết định tính đều đặn của một ngôn ngữ không ngữ cảnh là không thể giải quyết được?


8

Như tôi đã nghiên cứu, việc quyết định tính đều đặn của các ngôn ngữ không ngữ cảnh là không thể giải quyết được.

Tuy nhiên, chúng ta có thể kiểm tra tính đều đặn bằng cách sử dụng định lý Myode của Nerode cung cấp một điều kiện cần và đủ. Vì vậy, vấn đề nên được quyết định.

Lỗi của tôi ở đâu?


3
Làm thế nào để bạn đề xuất cho biết liệu mối quan hệ Myhill-Nerode có số lượng các lớp tương đương hữu hạn không? Bạn nghĩ tài sản nào của ngôn ngữ không ngữ cảnh cho phép bạn làm điều đó?
David Richerby

2
Vui lòng kiểm tra định nghĩa về khả năng tính toán: bạn cần đưa ra một máy Turing (hay nói chung hơn là thuật toán) để giải quyết vấn đề (luôn luôn). Myhill-Nerode, không phải là một thuật toán, chỉ là một đặc tính. Là tài sản được cung cấp có thể quyết định? Bạn đã thử chuyển đổi định lý thành một thuật toán như vậy chưa?
Raphael

2
@Jiya Ý bạn là gì khi "quyết định tính đều đặn"? Lúc đầu, có vẻ như điều đó có nghĩa rõ ràng nhưng nó thực sự tinh tế hơn. Một thủ tục quyết định (thuật toán) phải có một đầu vào hữu hạn, vậy làm thế nào bạn sẽ cung cấp một ngôn ngữ vô hạn làm đầu vào? Có thể bạn muốn sử dụng các biểu thức, chẳng hạn như . OK, nhưng những biểu hiện nào bạn sẽ cho phép? ? ? { một n b m | các  m thứ Turing tạm dừng máy trên đầu vào  m } { một n b k n | k  là một trong số ưa thích của David Richerby của }{mộtnbn|n0}{anbmthe mth Turing machine halts on input m}{anbknk is one of David Richerby's favourite numbers}
David Richerby

1
@Jiya Hoàn toàn có, có. Nhưng bạn phải chọn tập hợp các biểu thức bạn muốn chấp nhận và viết một đặc tả chính thức của các biểu thức đó. Sau đó, máy Turing của bạn sẽ phải phân tích các biểu thức và quyết định xem chúng có tương ứng với các ngôn ngữ thông thường hay không.
David Richerby

1
@Jiya Nếu các ngôn ngữ duy nhất bạn xem là ngôn ngữ có dạng trong đó , và là hằng số, thì ngôn ngữ kết quả là chính quy nếu và chỉ khi, hai hoặc ba của , và bằng không. Vì vậy, đối với các ngôn ngữ được xác định theo cách đó, vấn đề xác định liệu ngôn ngữ kết quả có thường xuyên hay không là có thể quyết định. Nhưng, nếu bạn cho phép các mối quan hệ phức tạp hơn giữa các số của s, s và s, thì có thể không chắc chắn liệu một ngôn ngữ có đều đặn hay không. Đây là lý do tại sao nó rất quan trọng làm thế nào các ngôn ngữ được chỉ định.{mộtkxbxcmx|x0}m k m a b ckmkmmộtbc
David Richerby

Câu trả lời:


9

MyhillTHER Nerode thực sự cung cấp một đặc tính của các ngôn ngữ thông thường nhưng điều đó không đủ để cho thấy vấn đề là có thể giải quyết được. "Có thể quyết định" có nghĩa là có một thuật toán (chính thức hơn là máy Turing) chấm dứt cho mọi đầu vào và, tất nhiên, luôn đưa ra câu trả lời đúng. Vì vậy, trong trường hợp này, bạn sẽ cần đưa ra một thuật toán, được đưa ra một ngôn ngữ làm đầu vào, xác định xem mối quan hệ Myode của Nerode có số lượng các lớp tương đương hữu hạn hay không. Nó chỉ ra rằng điều này không thể được thực hiện cho các ngôn ngữ không ngữ cảnh; chi tiết trong sách giáo khoa ngôn ngữ chính thức yêu thích của bạn.

Nếu bạn muốn quyết định xem một ngôn ngữ chung có thường xuyên hay không, một điều tinh tế hơn nữa là bạn phải cẩn thận về đầu vào của thuật toán của bạn. Đầu vào phải là một chuỗi hữu hạn - nếu không, thậm chí chỉ cần đọc đầu vào sẽ là một thuật toán không kết thúc. Trong trường hợp ngôn ngữ không ngữ cảnh, bạn có thể sử dụng ngữ pháp như một đại diện hữu hạn của ngôn ngữ vô hạn. Đối với các ngôn ngữ chung hơn, bạn sẽ cần ... tốt, một cái gì đó tổng quát hơn. Cuối cùng, mặc dù, nếu bạn muốn đối phó với tất cả các ngôn ngữ, bạn sẽ phải chịu số phận. Trong bất kỳ bảng chữ cái hữu hạn nào, có vô số ngôn ngữ nhưng chỉ có vô số chuỗi hữu hạn. Điều đó có nghĩa là bạn không thể mô tả tất cả các ngôn ngữ bằng các chuỗi hữu hạn. 1Do đó, cố gắng viết một thuật toán để xác định xem các ngôn ngữ tùy ý được đưa ra làm đầu vào có thường xuyên thực sự thất bại trước khi nó bắt đầu hay không. Không chỉ là bạn không thể viết thuật toán: bạn thậm chí không thể viết đầu vào!

Lưu ý rằng điều này không có nghĩa là bạn, một con người, không thể sử dụng Myhill Thẻ Nerode để xác định xem ngôn ngữ có thường xuyên không. Điều đó chỉ có nghĩa là bạn không thể viết ra một bộ hướng dẫn chính xác để cho tôi biết cách thực hiện. Tại một số điểm, bất kỳ bộ hướng dẫn nào như vậy sẽ phải nói điều gì đó như "Và sau đó chơi với nó để xem những gì hoạt động" hoặc "Từ đó, bạn phải tự mình tìm ra nó."


  1. Cụ thể, điều này có nghĩa là một số ngôn ngữ phải không thể giải quyết được, vì có nhiều ngôn ngữ hơn thuật toán.

1
Chúng ta có thể tránh được vấn đề với mã hóa đầu vào bằng cách giới hạn bản thân trong tất cả các ngôn ngữ đệ quy, hoặc có thể quyết định hoặc thậm chí không có ngữ cảnh. Sau đó, chúng tôi có mã hóa đầu vào "tự nhiên" (ngữ pháp, máy Turing, ...) nhưng vẫn không thể quyết định tính đều đặn. Vì vậy, rõ ràng, có những điều tinh tế hơn đang diễn ra.
Raphael

Cảm ơn Raphael. Tôi đã chỉnh sửa để làm rõ hơn rằng phần "cam chịu" được gọi là không thể chấp nhận tất cả các ngôn ngữ làm đầu vào.
David Richerby
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.