Làm thế nào nhanh chóng chúng ta có thể quyết định liệu một DFA nhất định là tối thiểu?


11

Giảm thiểu tự động hữu hạn xác định (DFA) là một vấn đề đã được nghiên cứu kỹ lưỡng trong tài liệu và một số thuật toán đã được đề xuất để giải quyết vấn đề sau: Đưa ra một DFA , tính toán một DFA tối thiểu tương ứng chấp nhận cùng ngôn ngữ như . Hầu hết các thuật toán này chạy trong thời gian đa thức.AA

Tuy nhiên, tôi tự hỏi liệu biến thể quyết định của vấn đề này - "được đưa ra một DFA , là tối thiểu?" - có thể được giải quyết hiệu quả hơn so với thực tế tính toán máy tự động tối thiểu. Rõ ràng, điều này cũng có thể được thực hiện một cách hiệu quả bằng cách chạy ví dụ thuật toán sàng lọc phân vùng của Hopcroft và sau đó quyết định xem tất cả các phân vùng có chứa chính xác một trạng thái hay không.AA

Như Yuval Filmus gợi ý trong câu trả lời của mình , biến thể có thể quyết định có thể được giải quyết nhanh hơn, có thể bằng cách sử dụng các thuật toán tiêu chuẩn. Thật không may, tôi không thể thấy làm thế nào (tôi hy vọng tôi không thiếu một điểm rõ ràng ở đây).

Yuval chỉ ra trong các ý kiến ​​ở đây rằng các thuật toán được biết đến nhiều nhất (như thuật toán ở trên) chạy theo thời gian cho các bảng chữ cái có kích thước không đổi. Do đó, tôi không chỉ quan tâm đến lợi ích không có triệu chứng trong thời gian chạy, vì những điều này dường như không thể xảy ra. Điều làm tôi bực mình nhất là tôi không thể tưởng tượng được bất kỳ "phím tắt" nào có thể được rút ra từ thực tế là chúng tôi chỉ quan tâm đến câu trả lời có - không - thậm chí không phải là một phím tắt cho phép tiết kiệm một lượng thời gian không đáng kể. Tôi cảm thấy rằng mọi thuật toán hợp lý quyết định mức tối thiểu của DFA sẽ phải thực sự giảm thiểu DFA và xem có gì thay đổi trong quá trình này không.O(nlogn)


Thuật toán của Hopcroft đã chạy trong thời gian chuẩn bị, vì vậy không có nhiều cơ hội để cải thiện.
Yuval Filmus

Có, tôi đã chỉnh sửa câu hỏi của mình để nó phản ánh sự thật này, @YuvalFilmus
Cornelius Brand

1
Tôi tin rằng thuật toán tối thiểu hóa DFA được biết đến nhanh nhất vẫn là thuật toán này . Nó nhanh hơn bất kỳ thuật toán nào được xuất bản trước năm 2008 chạy trong thời gian , trong đó là số lần chuyển đổi. O(n+mlogn)m
Juho

Đối với tôi, vấn đề quyết định dường như không phức tạp đối với vấn đề tối thiểu hóa, vấn đề trước đây có vẻ khó hơn vì nó liên quan đến việc kiểm tra tính tương đương DFA không phải là không cần thiết. do đó, có vẻ như sự phức tạp của vấn đề quyết định là tối đa của "thử nghiệm tối thiểu hóa hoặc tương đương". và sự phức tạp của kiểm tra tương đương là gì?
vzn

@vzn Giả sử bạn có nghĩa là "[...] không cần thiết": Không nhất thiết phải như vậy, ví dụ như quy trình tôi đưa ra trong câu hỏi của mình tránh việc kiểm tra tính tương đương. Tuy nhiên, tôi cũng nghĩ rằng vấn đề không dễ hơn là giảm thiểu.
Cornelius Brand

Câu trả lời:


5

Đây có thể không chính xác là loại câu trả lời bạn đang tìm kiếm, nhưng vì bạn đã hỏi về các vấn đề quyết định, tôi nghĩ bạn có thể quan tâm đến sự phức tạp của vấn đề. Đó là .NL

Bây giờ, ý nghĩa của một DFA là tối thiểu là gì? Có hai thuộc tính:

  1. Mọi trạng thái đều có thể truy cập: sao cho chúng ta có thể đạt từ trạng thái bắt đầu bằng cách làm theo ; trong các ký hiệu: .qQwΣqswswq

  2. Mọi cặp trạng thái đều có thể phân biệt: với sao cho và và (chỉ một trong số là trạng thái chấp nhận).q,rQqr wΣqwsrwt|{s,t}F|=1s,t

Chú ý rằng có thể được tính trong log-không gian (ví dụ , chỉ cần theo dõi vị trí hiện tại của bạn như bạn làm theo một ký tự tại một thời điểm). Hơn nữa, chỉ có một số lượng xen kẽ hữu hạn giữa và do hậu quả của định lý Immerman-Szelepcsenyi , chúng ta có vấn đề nằm ở .xwyLwNL

Cách đơn giản nhất để thấy rằng thật khó cho là để thông báo rằng tài sản 1 phá được - đạo unreachability, đó là vấn đề khó khăn nguyên mẫu. Nhưng ngay cả khi bạn chỉ xem xét các DFA có thể tiếp cận, vấn đề vẫn còn khó khăn (tức là thuộc tính 2 là -hard) và bạn có thể tìm thấy một bằng chứng tương đối đơn giản trong Bổ đề 2.2 của Cho & Huynh (1992) .NLstNL

Tất nhiên, tôi đã sử dụng tính không xác định, do đó, nó hơi khó hiểu theo cách khác với thuật toán của Hopcroft. Nhưng chúng ta biết rằng , vì vậy bạn có thể sử dụng những công trình xây dựng để có được cho mình một thuật toán không gian hiệu quả hơn Hopcroft (mà theo bản chất của nó có để theo dõi nhiều phân vùng ).NLL2n


Điều này dường như để cải thiện không gian nhưng không phức tạp thời gian?
vzn

Tôi đồng ý với vzn. Mặc dù tôi thích câu trả lời này, tôi vẫn quan tâm đến những hiểu biết có liên quan chặt chẽ hơn với câu hỏi ban đầu.
Cornelius Brand

@ C.Brand Câu trả lời của tôi có nghĩa là tiếp tuyến (do đó từ chối trách nhiệm khi bắt đầu;)) Tôi vừa đưa cho bạn lớp phức tạp thấp nhất mà tôi biết vấn đề cần hoàn thành. Có một kỹ thuật tiêu chuẩn để chuyển đổi thuật toán thành (tức là BFS trên biểu đồ cấu hình ) nhưng tôi không nghĩ rằng việc xây dựng sẽ cung cấp cho bạn thuật toán thời gian nhanh hơn. NLP
Artem Kaznatcheev
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.