Có một thuật toán / thủ tục hệ thống để kiểm tra xem một ngôn ngữ không có ngữ cảnh không?
Nói cách khác, đưa ra một ngôn ngữ được chỉ định ở dạng đại số (nghĩ về một cái gì đó như ), kiểm tra xem ngôn ngữ đó có phải là ngữ cảnh hay không. Hãy tưởng tượng chúng tôi đang viết một dịch vụ web để giúp sinh viên với tất cả các bài tập về nhà của họ; bạn chỉ định ngôn ngữ và dịch vụ web xuất ra "không ngữ cảnh" hoặc "không ngữ cảnh". Có cách tiếp cận tốt nào để tự động hóa điều này?
Tất nhiên có các kỹ thuật để chứng minh thủ công, chẳng hạn như bổ đề bơm, bổ đề của Ogden, bổ đề của Parikh, bổ đề trao đổi, và nhiều hơn nữa ở đây . Tuy nhiên, mỗi cái đều yêu cầu cái nhìn sâu sắc thủ công tại một số điểm, vì vậy không rõ làm thế nào để biến bất kỳ trong số chúng thành một thuật toán.
Tôi thấy Kaveh đã viết ở nơi khác rằng tập hợp các ngôn ngữ không ngữ cảnh không được liệt kê đệ quy, vì vậy dường như không có hy vọng cho bất kỳ thuật toán nào hoạt động trên tất cả các ngôn ngữ có thể. Do đó, tôi cho rằng dịch vụ web sẽ cần có khả năng xuất "không ngữ cảnh", "không ngữ cảnh" hoặc "tôi không thể nói". Có thuật toán nào thường có thể cung cấp câu trả lời ngoài "Tôi không thể nói", trên nhiều ngôn ngữ mà người ta có thể thấy trong sách giáo khoa không? Làm thế nào bạn sẽ xây dựng một dịch vụ web như vậy?
Để làm cho câu hỏi này được đặt ra tốt, chúng ta cần quyết định cách người dùng sẽ chỉ định ngôn ngữ. Tôi mở để đề xuất, nhưng tôi đang nghĩ một cái gì đó như thế này:
Trong đó là một biểu thức từ và S là một hệ bất phương trình tuyến tính trên các biến có độ dài, với các định nghĩa sau:
Mỗi là một từ thể hiện. (Những đại diện cho biến có thể giữ bất kỳ từ trong Σ * .)
Mỗi là một từ thể hiện. (Mặc nhiên, Σ = { một , b , c , ... } , vì vậy một , b , c , ... đại diện cho một biểu tượng duy nhất trong bảng chữ cái cơ bản.)
Mỗi là một từ thể hiện, nếu η là một chiều dài biến.
Sự kết hợp của các biểu thức từ là một biểu thức từ.
Điều này có vẻ đủ rộng để xử lý nhiều trường hợp chúng ta thấy trong các bài tập trong sách giáo khoa. Tất nhiên, bạn có thể thay thế bất kỳ phương pháp văn bản nào khác để chỉ định một ngôn ngữ ở dạng đại số, nếu bạn muốn.