NFA nhỏ nhất chấp nhận nối hai từ có độ dài khác nhau ở tất cả các vị trí


7

ChokN

Tôi đang tìm một bản dựng NFA nhỏ cho ngôn ngữ ghép hai từ có độ dài khác nhau về chỉ số, nghĩa làk

Lk={uvΣ:|u|=|v|=ki,uivi}

Lưu ý rằng vì là cố định, và là ngôn ngữ hữu hạn.k|Lk|=(|Σ|(|Σ|1))k

DFA tầm thường cho ngôn ngữ chứa | \ Sigma | \ chọn k trạng thái +1 và chỉ "ghi nhớ" những chữ cái đã thấy trong các chữ cái k đầu tiên , tuy nhiên nếu k = o (| \ Sigma |) , chúng ta có thể tạo NFA nhỏ hơn đáng kể.k(|Σ|k)+1kk=o(|Σ|)

Một NFA "đơn giản" cho nó sẽ có kích thước O(22k) (chính xác hơn là O(k2log|Σ|22k+O(log2k)) )

  1. Lấy một tập hợp (nghĩa là một tập các vectơ sao cho với mọi vectơ và chỉ số, tồn tại một vectơ sao cho , tức là nếu chúng ta chỉ nhìn vào các chỉ số này trong chúng ta tìm thấy ). Những họ có kích thước được biết đến.(|Σ|,2k)V{0,1}|Σ|u{0,1}2k2kvVv|I=ukvuO(22k)

    Chúng tôi nghĩ rằng mỗi vectơ là một hàm , trong đó .vΣ{0,1}v(σi)=1vi=1

  1. Tạo một NFA như sau:

    1. Từ trạng thái bắt đầu tạo -transition đến một trạng thái mới cho bất kỳ . trạng thái này bằng .q0ϵvVqv

    2. Từ mỗi xây dựng một đường dẫn các trạng thái chấp nhận tất cả các từ có chữ đầu tiên được ánh xạ bởi thành 0 và các chữ cái sau được ánh xạ từ đến 1.qvkvkv

Về cơ bản, ý tưởng là tập hợp phổ quát cho phép chúng ta phân vùng các chữ cái được phép xuất hiện trong các ký hiệu đầu tiên từ phần còn lại và chúng ta nhận được mọi từ trong ngôn ngữ vì phải có một vectơ tương ứng phân vùng nó đúng.kvV

Vì vậy, các câu hỏi là:

Kích thước của NFA nhỏ nhất cho gì?L

Là xây dựng này tối ưu?

Những gì ràng buộc thấp hơn chúng ta có thể chứng minh cho kích thước tự động như vậy?



1
Cảm ơn @vzn. Thật vậy, nếu tối thiểu hóa có thể giải quyết được nhiều lần, câu hỏi này trở nên vô dụng. Thật không may, vì đã hoàn tất PSPACE, chúng tôi phải nỗ lực xây dựng các NFA nhỏ cho các ngôn ngữ thú vị. DFANFA
RB

Tại sao bạn nói nó "vô dụng" nếu nó ở trong PTime? với tôi điều đó chỉ có nghĩa là có một thuật toán hiệu quả cho nó. dù sao điều này có vẻ khá trừu tượng / lý thuyết (tập trung vào nghiên cứu / Khoa học máy tính lý thuyết ), liệu nó có nhiều bkg / động lực / ứng dụng?
vzn

@vzn - ngôn ngữ này là trường hợp đặc biệt của ngôn ngữ tôi sử dụng để phát triển các thuật toán tham số hóa cho một gia đình có vấn đề về đóng gói. Nó sử dụng một máy tự động cho ngôn ngữ, ngoài các ràng buộc từ đầu vào và kiểm tra xem ngôn ngữ của nó có trống không. Tôi không thể mở rộng quá nhiều về việc sử dụng (vì đây vẫn là một công việc đang tiến hành), nhưng về cơ bản, sự khác biệt về chữ cái đảm bảo rằng mọi mặt hàng không được đóng gói "quá nhiều lần". Tôi đã đơn giản hóa ngôn ngữ càng nhiều càng tốt, nhưng tôi tin rằng bất kỳ kỹ thuật nào được sử dụng để xây dựng NFA cho sẽ giúp tôi cải thiện việc xây dựng ngôn ngữ thực tế mà tôi đang sử dụng. L
RB

Câu trả lời:


4

Cập nhật: điều này không trả lời câu hỏi mà người đăng ban đầu đang tìm kiếm và không giúp ích gì cho trường hợp chung trong đó , vì vậy câu hỏi vẫn mở.|Σ|>2


Đây là một cấu trúc đơn giản hơn, cho thấy rằng trong trường hợp , đủ và thực tế bạn có thể nhận ra ngôn ngữ có DFA với điều đó nhiều tiểu bang.Σ={0,1}O(k22k)

Hãy bắt đầu bằng cách nhìn vào ngôn ngữ bổ sung:

Lk¯={uvΣ:|u|=|v|=k,i.ui=vi}.

Lưu ý rằng điều này có thể được nhận ra bởi một NFA vớiNhững trạng thái. Đầu tiên NFA đoán và ký hiệu , sau đó chấp nhận tất cả các chuỗi trong đó .2k2|Σ|ixuvui=vi=x

Chuyển đổi nó thành DFA bằng cách sử dụng cấu trúc tập hợp con tiêu chuẩn. Chúng tôi nhận được một DFA với trạng thái. Bây giờ chúng ta có thể tính toán phần bù của nó, đó là một DFA khác có cùng số trạng thái nhận ra . Vì nó là DFA, nên nó cũng tự động là NFA.2|Σ|k+1kLk

Điều này đánh bại công trình của bạn trong trường hợp , nhưng nếu không thì dẫn đến một NFA lớn hơn sơ đồ của bạn. Tuy nhiên, tôi nghĩ rằng nó có thể được quan tâm, bởi vì nó rất đơn giản và trên thực tế nó cung cấp một DFA (không chỉ là NFA) để nhận ra ngôn ngữ của bạn .|Σ|=2Lk


Cảm ơn @DW đã trả lời. Đây là một công trình đẹp, nhưng trong ứng dụng của tôi. k<<|Σ|
RB

@RB, OK, không vấn đề gì! Công trình của bạn đẹp hơn Bạn có thể muốn chỉnh sửa câu hỏi của mình để đề cập rằng trong ứng dụng của bạn. k|Σ|
DW
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.