Tôi đã cố gắng thực hiện thuật toán của Brzozowski nhưng tôi mới phát hiện ra rằng nó tạo ra tự động dưới mức tối ưu cho một loại đầu vào nhất định, có thêm một trạng thái so với những gì thực sự cần thiết trong kết quả. Tôi có thể hiển thị nó trên một máy tự động tầm thường:
a b a b a b a b a b
>0 0 1 rev *0 0,2 - det >0 - 1 rev *0 - - det >0 1 2
1 1 2 --> 1 1 0 --> 1 2 5 --> 1 - 0,4 --> 1 1 2
*2 0 2 >2 - 1,2 2 2 3 2 1,2 - 2 2 3
*3 4 - 3 - 2 *3 1 3
*4 4 1 4 3,4 -
*5 5 5 5 5 1,5
>6 3,4,5 1,2,5
Ở đây rev là phần đảo ngược cạnh, trong đó tôi đã loại bỏ các chuyển đổi trên epsilon và det là sự xác định thông qua việc xây dựng sức mạnh, tạo ra các trạng thái mới ngay khi phát hiện ra chúng, theo cách đệ quy.
Vấn đề ở đây là: một khi tôi thêm trạng thái bổ sung để bù cho ba trạng thái bắt đầu khác nhau sau khi xây dựng đảo ngược cạnh đầu tiên và xây dựng sức mạnh, không có gì trở lại trạng thái đó và do đó tôi không thể loại bỏ nó sau này vì tương đương đến trạng thái bắt đầu ban đầu.
Có điều gì đó sai với cách tôi đang làm điều đó? Tui bỏ lỡ điều gì vậy?