Là một ngôn ngữ đơn phương thường xuyên iff số mũ của nó là một hàm tuyến tính?


13

Trong khi thực hiện bài tập hiện tại cho các ngôn ngữ chính thức và khóa học automata của tôi, tôi đã bị mắc kẹt trong các bài tập liên quan đến ngôn ngữ đơn nhất (tôi hy vọng đó là thuật ngữ đúng), tức là các ngôn ngữ xây dựng trên một chữ cái. Mặc dù vậy, tôi không muốn hỏi về các bài tập cụ thể, mà là về một phỏng đoán tổng quát hơn nhiều mà tôi đã đưa ra:

Đặt và . Phỏng đoán của tôi là:Σ= ={một}L={af(n)Σ:nN0}

L is regularx,yN0:f(n)=xn+y

Câu hỏi này đã thấy bất kỳ điều trị khoa học trước đây? Có phải "rõ ràng" đúng / sai?

Đối với tôi, rõ ràng hướng " " là đúng bởi vì người ta chỉ có thể xây dựng một DFA với các trạng thái vòng qua các trạng thái sau khi đọc qua trạng thái và chấp nhận nếu nó ở trạng thái .x + y x y yx+yxyy


Làm tốt lắm, thực hiện quan sát này là điều tôi không mong đợi ở những học sinh trung bình!
Raphael

Đã đồng ý. Đây là một quan sát rất tốt đẹp.
Rick Decker

Không rõ ràng từ tiêu đề, nhưng chúng tôi đã có câu hỏi này trước đây, cho đến một bổ đề tương đương nhỏ: các tập hợp độ dài từ có thể có trong một ngôn ngữ thông thường là gì?
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


9

Tuyến tính gần, nhưng thuật ngữ kỹ thuật bạn đang tìm kiếm là semilinear : , nghĩa là một tập hợp hữu hạn của các tập tuyến tính.

Một nửa bằng chứng về điều này là một hệ quả của Định lý Parikh , nói rằng bất kỳ ngôn ngữ không ngữ cảnh nào cũng có bản đồ Parikh bán tuyến tính (nghĩa là tập hợp các vectơ chứa sự xuất hiện của mỗi chữ cái trong bảng chữ cái).

Đối với một ngôn ngữ đơn nhất, bản đồ parikh của ngôn ngữ là ngôn ngữ của chính nó (tức là mỗi từ được xác định duy nhất bằng bao nhiêu chữ cái), vì vậy mọi ngôn ngữ thông thường đơn nhất là bán tuyến tính.

Nửa còn lại của bằng chứng cho thấy rằng bạn có thể xây dựng một ngôn ngữ thông thường chứa mọi tập hợp bán tuyến tính đơn phương. Điều này cần một chút công việc, nhưng sẽ không quá khó nếu bạn sử dụng các biểu thức thông thường:

  • nhận ra ngôn ngữ { k }mộtk{k}
  • nhận { x(mộtk)*{xk|xN0}
  • nhận ra S 1 + S 2 nếu R 1 nhận ra S 1 R 2R1R2S1+S2R1S1R2 nhận ra , trong đó + ở đây là bổ sung phần tửS2+
  • nhận S 1S 2 nếu R 1 nhận S 1 R 2 nhậnR1|R2S1S2R1S1R2 , trong đó | đây là liên minh biểu thức chính quy.S2|

6

L= ={mộtk|k= =3n+1 hoặc là k= =7n+4}
L= ={mộtk|k= =4n+2 hoặc là k= =13}
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.