Máy Turing có thể quyết định xem NFA có chấp nhận chuỗi độ dài nguyên tố không?


14

Tôi muốn biết nếu vấn đề sau là có thể quyết định:

Sơ thẩm: Một NFA A với n trạng thái

Câu hỏi: Có tồn tại một số số nguyên tố p sao cho A chấp nhận một số chuỗi có độ dài p.

Tôi tin rằng vấn đề này là không thể giải quyết được, nhưng tôi không thể chứng minh được. Người quyết định có thể dễ dàng có một thuật toán để tìm hiểu xem một số cụ thể có phải là số nguyên tố hay không, nhưng tôi không thấy làm thế nào nó có thể phân tích NFA đủ chi tiết để biết chính xác độ dài của nó có thể tạo ra. Nó có thể bắt đầu thử nghiệm các chuỗi với NFA, nhưng đối với một ngôn ngữ vô hạn, nó có thể không bao giờ dừng lại (và do đó không phải là một người quyết định).

Tất nhiên, NFA có thể dễ dàng được thay đổi thành DFA hoặc biểu thức chính quy nếu giải pháp cần nó, tất nhiên.

Câu hỏi này là điều mà tôi đã suy nghĩ như một câu hỏi chuẩn bị tự làm cho một trận chung kết tôi sẽ đến sau 2 tuần nữa.


Tôi không chắc đây có phải là cấp dưới không, vì vậy đừng lo lắng về việc xóa nó. Nó có thể trở thành một vấn đề khó khăn, xem ví dụ: terrytao.wordpress.com/2007/05/25/ Khăn

Vâng, tôi đã làm nó lên, vì vậy nó có thể khó khăn. Tôi đã không tìm thấy bất kỳ bằng chứng nào về các vấn đề không thể giải quyết được liên quan đến NFA / DFA, đó là lý do tại sao tôi nghĩ rằng nó có thể thú vị để thử một vấn đề.

Tôi tin rằng những gì bạn liên kết đến là một vấn đề khác (dễ dàng hơn). Nó có thể trả lời "NFA chấp nhận bao nhiêu chuỗi độ dài?". Sử dụng công thức được cung cấp, chúng tôi sẽ phải kiểm tra vô cùng nhiều trường hợp để xem nếu có tồn tại một chuỗi các NFA chấp nhận rằng là số nguyên tố trong chiều dài. Tôi không hỏi về một nguyên tố cụ thể, tôi đang hỏi về tất cả chúng. sL(n)

Câu trả lời:


17

Độ dài của các chuỗi được DFA chấp nhận tạo thành một tập bán nguyệt (như trong định lý của Parikh cho các ngôn ngữ không có ngữ cảnh), mô tả về các chuỗi không quá khó để thực hiện (về cơ bản là ghép tất cả các chu kỳ có thể của máy tự động) và Định lý Dirichlet bất kỳ sự tiến triển số học nào có dạng với gcd ( a , b ) = 1 chứa vô số các số nguyên tố.a+bkgcd(a,b)=1

Việc kết hợp các yếu tố trên lại với nhau sẽ đưa ra một thuật toán để kiểm tra xem ngôn ngữ thông thường (hoặc thậm chí không có ngữ cảnh) của bạn có chứa các chuỗi có độ dài chính hay không. Chắc chắn không phải là một câu hỏi đơn giản, IMVHO ...


Tôi đánh giá cao một số trợ giúp để hiểu định lý của Parikh trong trường hợp này. Rõ ràng chúng ta có thể biến NFA thành một PDA bằng cách không sử dụng ngăn xếp trong PDA. Các tập con tuyến tính chỉ định các chu kỳ? Nếu vậy, làm thế nào mà làm việc?
Chill

1
@Chill, Hãy xem xét bất kỳ con đường nào thông qua DFA. Nó có thể đi thẳng từ trạng thái bắt đầu đến trạng thái cuối cùng, hoặc nó có thể lặp lại. Độ dài có thể của chuỗi được xác định bởi "phần thẳng" + tổng số lần "độ dài của một vòng lặp có thể" cho k s tùy ý . Chỉ cần vẽ một số rối của DFA và theo dõi các đường dẫn qua nó. Bạn sẽ thấy độ dài có thể rơi vào các họ của chuỗi số học được xác định bởi các chu kỳ, nghĩa là chúng tạo thành một tập hợp bán nguyệt. Không cần phải đi bối cảnh miễn phí (chỉ cần một phần thưởng miễn phí tốt đẹp). kk
vonbrand

1
Tôi nghĩ rằng câu trả lời cho câu hỏi của tôi. Tôi sẽ cố gắng đọc thêm về định lý của Parikh. Tôi hiểu ý tưởng của nó và làm thế nào nó có thể chỉ định chu kỳ trong trường hợp này. Những gì tôi muốn tìm ra là một giải pháp "thực hành" hơn, nơi tôi thực hiện một thuật toán thực tế để giải quyết vấn đề này.
Chill

@Chill, chỉ cần nhìn vào bình luận trước đây của tôi. Không quá khó để đưa ra một mô tả về độ dài có thể bằng cách chỉ xóa các ký hiệu trên DFA dưới dạng biểu đồ và kiểm tra các bước đi giữa trạng thái bắt đầu và trạng thái cuối. Khó chính thức hóa, dễ dàng tìm ra bằng tay cho bất kỳ ví dụ nào.
vonbrand

3
mộtmộtmộtmột(mộtmột)*
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.