Thuật toán của Brzozowski để giảm thiểu DFA


15

Thuật toán tối thiểu hóa DFA của Brzozowski xây dựng một DFA tối thiểu cho DFA bằng cách:G

  1. đảo ngược tất cả các cạnh trong , làm cho trạng thái ban đầu thành trạng thái chấp nhận và trạng thái chấp nhận ban đầu, để có NFA cho ngôn ngữ đảo ngược,GN'
  2. sử dụng cấu trúc powerset để lấy cho ngôn ngữ ngược lại,G'
  3. đảo ngược các cạnh (và trao đổi chấp nhận ban đầu) trong để có NFA cho ngôn ngữ gốc vàG'N
  4. thực hiện xây dựng powerset để có .Gtối thiểu

Tất nhiên, vì một số DFA có DFA ngược lớn theo cấp số nhân, thuật toán này chạy theo thời gian theo cấp số nhân trong trường hợp xấu nhất về kích thước của đầu vào, vì vậy hãy theo dõi kích thước của DFA ngược.

Nếu N là kích thước của DFA đầu vào, n là kích thước của DFA tối thiểu và m là kích thước của DFA ngược tối thiểu, thì thời gian chạy thuật toán của Brzozowski theo N , nm bao nhiêu?

Cụ thể, theo mối quan hệ giữa nm , thuật toán của Brzozowski có vượt trội hơn thuật toán của Hopcroft hay Moore không?

Tôi đã nghe nói rằng trên các ví dụ điển hình trong thực tiễn / ứng dụng , thuật toán của Brzozowski vượt trội so với các thuật toán khác. Không chính thức, những ví dụ điển hình như thế nào?


Sẽ rất hữu ích nếu bạn bao gồm các ước tính O (f (n)) của các thuật toán này. tất cả chúng có phải là O (n log (n)) trong trường hợp "trung bình" không? nếu vậy thì cuộc tranh luận về hiệu suất tương đối của chúng có thể chủ yếu là một thử nghiệm được áp dụng tùy thuộc vào đặc điểm / cấu trúc thống kê của đầu vào ... có vẻ như Brzozowski chạy nhanh khi NFA ngược "không lớn" ...?
vzn

Hãy cẩn thận với việc thực hiện thuật toán, bạn có thể muốn giới thiệu trạng thái bắt đầu ảo khi thực hiện 1. và 3., điều này sẽ dẫn đến kết quả không chính xác - xem tại đây . (Nó không sai trong câu hỏi, bạn chỉ cần cẩn thận để không hiểu sai.)
A.Schulz

Câu trả lời:


5

Đây là câu trả lời một phần liên quan đến câu hỏi thứ ba của bạn. Trên thực tế, có lẽ thuật toán của Brzozowski thực sự không vượt trội hơn tất cả các thuật toán khác rất rõ ràng trong việc giảm thiểu DFA.

Trong [1], các tác giả điều tra hiệu suất thực tế của các thuật toán tối thiểu hóa DFA / NFA. Các thuật toán là của Hopcroft, Brzozowski và hai biến thể của Watson. Họ kết luận rằng không có người chiến thắng rõ ràng, nhưng thuật toán của Hopcroft hoạt động tốt hơn cho các DFA với bảng chữ cái nhỏ. Đối với NFA, Brzozowski rõ ràng là người nhanh nhất.

Bản thân bài viết khá ngắn và được viết rõ ràng. Ngoài ra còn có các cuộc thảo luận và tài liệu tham khảo bổ sung có thể hữu ích.


[1] Almeida M., Moreira N. và Reis R. Về việc thực hiện các thuật toán tối thiểu hóa tự động, Hội nghị lần thứ tư về khả năng tính toán ở châu Âu, tháng 6 năm 2008.


Cảm ơn bạn, tôi sẽ xem bài báo và xem liệu tôi có thể sử dụng tài liệu tham khảo để tìm câu trả lời hoàn chỉnh không.
Artem Kaznatcheev

5

Hầu hết những điều dưới đây là từ Lý thuyết phân tích cú pháp của Sippu và Soisalon-Soininen.

Đặt là tập hợp các trạng thái của DFA. Đặt là bảng chữ cái đầu vào. Đặt là kích thước của máy. Bài tập 3.40 đưa ra thuật toán để giảm thiểu trạng thái. Như Wikipedia mô tả , thuật toán của Hopcroft có thời gian chạy là và thuật toán của Moore có thời gian chạy là .T | M | = O ( | T || Q | ) O ( | T || Q | 2 ) O ( | T || Q |log | T | ) O ( | T | 2| Q | )QT|M|= =Ôi(|T||Q|)Ôi(|T||Q|2)Ôi(|T||Q|đăng nhập|T|)Ôi(|T|2|Q|)

Định lý 3.30 nói rằng việc xây dựng tập hợp con có thể được thực hiện trong mang lại một máy tự động có kích thước (trên thực tế, nếu máy tự động kết quả có trạng thái , thời gian chạy là ). Do đó, hai sự đảo ngược và xác định thứ hai là không quan trọng trong thời gian chạy, do đó thời gian chạy không có triệu chứng của thuật toán Brzozowski giống như khi xây dựng tập hợp con.O ( 2 | T | + log | Q | ) | T | ( | T ' | + | T || M | ) | Q |Ôi(2|T|+đăng nhập|T|+đăng nhập|Q|)Ôi(2|T|+đăng nhập|Q|)|T'|(|T'|+|T||M|)|Q|

Điều này có nghĩa là trong trường hợp xấu nhất, thuật toán của Brzozowski chậm hơn theo cấp số nhân so với ba thuật toán còn lại. Lưu ý rằng trường hợp xấu nhất thực sự xảy ra: ví dụ kinh điển về NFA cho ngôn ngữ có trạng thái và DFA tối thiểu tương ứng của nó có trạng thái , trong khi ngược lại của NFA mang tính quyết định, do đó, việc chạy thuật toán của Brzozowski trên NFA bị đảo ngược này sẽ kích hoạt hành vi trong trường hợp xấu nhất. k + 1 O ( 2 k )(một|b)*mộtkk+1Ôi(2k)

Tuy nhiên, nếu cấu trúc tập hợp con mang lại một automata có kích thước , thì thời gian chạy của nó cũng là , thường là như vậy trên đầu vào thực tế. Hơn nữa, nếu được chăm sóc đúng cách khi tính toán việc đóng trạng thái, thì điều này có thể được thực hiện nhanh hơn nhiều trong hầu hết các trường hợp (nghĩa là, trường hợp đóng cửa nhỏ), tiết kiệm được một yếu tốtrong thực tế (về cơ bản cùng một lý do là việc đóng cửa bắc cầu có thể được tính toán khá nhanh trên các ví dụ trong thế giới thực). Hơn nữa, nếu các máy tự động đầu vào và trung gian thưa thớt, điều đó có nghĩa là các trạng thái có ít chuyển đổi, thì một yếu tốđược lưu, cung cấp thời gian chạy trên các đầu vào 'tốt'.|T'|= =Ôi(|T|)Ôi(|T|2|Q|2)|T||Q|Ôi(|T||Q|)

Thật không may, tôi không đủ quen thuộc với các thuật toán của Hopcroft hoặc Moore để đưa ra phân tích về thời gian chạy của chúng trong các trường hợp điển hình. Wikipedia nói về thời gian chạy trong một số trường hợp, điều này sẽ làm cho ba thuật toán có thể so sánh được.Ôi(|T|đăng nhậpđăng nhập|T|)


1

De Felice và Nicaud cho thấy các thuật toán của Brzozowski là siêu đa thức bất đối xứng. David đã chỉ ra rằng, đối với một số bản phân phối ở các trạng thái cuối cùng, thuật toán của Hopcroft chậm hơn thuật toán của Moore.

Người giới thiệu

S. De Felice và C. Nicaud, "Thuật toán Brzozowski là siêu đa thức cho tự động xác định". Trong Kỷ yếu Hội thảo quốc tế về phát triển lý thuyết ngôn ngữ lần thứ 17 (DLT 2013) , Ghi chú bài giảng Khoa học máy tính, trang 170 mật190, 2013. ( PDF )

J. David, "Độ phức tạp trung bình của thuật toán của Moore và Hopcroft". Khoa học máy tính lý thuyết , 417: 50 Ném65, 2012. ( Khoa học trực tiếp )

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.