Bạn đã thử thuật toán của Brzozowski chưa? Đó là thời gian chạy tệ nhất là theo cấp số nhân, nhưng tôi thấy một số tài liệu tham khảo cho thấy rằng nó thường hoạt động rất tốt, đặc biệt là khi bắt đầu với NFA mà bạn muốn chuyển đổi thành DFA và giảm thiểu.
Bài viết sau đây có vẻ phù hợp:
Nó đánh giá một số thuật toán khác nhau để giảm thiểu DFA, bao gồm cả ứng dụng của chúng vào tình huống của bạn khi chúng tôi bắt đầu với NFA và muốn chuyển đổi nó thành DFA và giảm thiểu nó.
Sự phân tách các thành phần được kết nối mạnh (SCC) của NFA của bạn (coi nó như một biểu đồ có hướng) trông như thế nào? Liệu nó có nhiều thành phần, trong đó không có thành phần nào quá lớn? Nếu vậy, tôi tự hỏi liệu có thể đưa ra thuật toán phân chia và chinh phục, trong đó bạn lấy một thành phần duy nhất, chuyển đổi nó từ NFA sang DFA và sau đó thu nhỏ nó, sau đó thay thế bản gốc bằng phiên bản xác định mới. Điều này nên có thể cho các thành phần nhập đơn (trong đó tất cả các cạnh vào thành phần đó dẫn đến một đỉnh duy nhất, đỉnh nhập). Tôi không ngay lập tức xem liệu có thể làm điều gì đó như thế này cho các NFA tùy ý hay không, nhưng nếu bạn kiểm tra cấu trúc của SCC trông như thế nào, thì bạn có thể xác định liệu hướng này có đáng để khám phá hay không .