Có một thuật toán / thủ tục hệ thống để kiểm tra xem một ngôn ngữ có thường xuyên không?
Nói cách khác, cho một ngôn ngữ cụ thể dưới hình thức đại số (nghĩ về một cái gì đó giống như ), kiểm tra xem ngôn ngữ có thường xuyên 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ọ; người dùng chỉ định ngôn ngữ và dịch vụ web phản hồi bằng "thông thường", "không thường xuyên" hoặc "Tôi không biết". (Chúng tôi muốn dịch vụ web trả lời "Tôi không biết" càng ít càng tốt.) Có cách tiếp cận tốt nào để tự động hóa việc này không? Đây có phải là dễ kéo? Có thể quyết định được không (nghĩa là có thể đảm bảo rằng chúng ta không bao giờ cần phải trả lời "Tôi không biết")? Có các thuật toán hợp lý hiệu quả để giải quyết vấn đề này và có thể cung cấp câu trả lời khác ngoài "không biết" cho nhiều / hầu hết các ngôn ngữ có khả năng phát sinh trong thực tế không?
Phương pháp cổ điển để chứng minh rằng một ngôn ngữ không thường xuyên là bổ đề bơm. Tuy nhiên, có vẻ như yêu cầu thông tin chi tiết thủ công tại một số điểm (ví dụ: để chọn từ để bơm), vì vậy tôi không rõ liệu điều này có thể được biến thành một thuật toán hay không.
Một phương pháp cổ điển để chứng minh rằng một ngôn ngữ là thường xuyên sẽ là sử dụng định lý Nerode Myhill để lấy ra một máy tự động trạng thái hữu hạn. Đây có vẻ là một cách tiếp cận đầy hứa hẹn, nhưng nó đòi hỏi khả năng thực hiện các thao tác cơ bản trên các ngôn ngữ ở dạng đại số. Tôi không rõ liệu có một cách có hệ thống để thực hiện một cách tượng trưng tất cả các hoạt động có thể cần thiết, trên các ngôn ngữ ở dạng đại số.
Để 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 đẳng thức 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. (Chúng đại diện cho các biến có thể nhận bất kỳ từ nào trong Σ ∗ .)
Mỗi là một từ thể hiện. (Ở đây x r đại diện cho mặt trái của chuỗi x .)
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ừ.
Mỗi là một chiều dài biến. (Chúng đại diện cho các biến có thể lấy bất kỳ số tự nhiên nào.)
Mỗi là một biến chiều dài. (Chúng đại diện cho độ dài của một từ tương ứng.)
Điều này dường như đủ 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 có đề xuất tốt hơn.