Однією з найкращих, найбільш ретельних сучасних і високооптимізованих безкоштовних бібліотек FSM, доступних в Інтернеті, є бібліотека AT&T FSM . Він реалізує "fsmdifference" саме так, як ви описуєте, вимагаючи визначити FSM, що не визначає епсилон. Одна ідея полягає в тому, щоб мінімізувати одну або обидві FSM, перш ніж робити різницю, що може допомогти в деяких випадках. (тобто визначення не є таким, як мінімізація.) Цей пакет також має "приблизну" або "жадібну" мінімізацію, яка може бути швидшою, ніж повне мінімізація.
Однак, вивчаючи подібні проблеми, я вважаю, що в літературі не з’являється деяке узагальнення або побудова FSM, які можуть допомогти вирішити цю проблему, уникаючи етапу визначення, тобто в основному інвертуючи NFA без створення додаткової визначеної FSM. Ідея полягає в тому, щоб перетинати краї NFA «паралельно» і відслідковувати набір вузлів, що входять до складу поточної «наддержави» (набору станів), як і за допомогою стандартного алгоритму визначення. Тоді доповнення NFA приймає тоді і тільки тоді, коли набір поточних наддержавних вузлів "неприйнятний" (на відміну від визначальної конструкції, яка приймає iff "будь-яку акцепту").
Однак я ще не бачив цього написаного раніше і не бачу його за допомогою швидкого пошуку в Інтернеті. Існує багато посилань, які підказують або натякають на те, що єдиним способом роботи з доповненням NFA є визначення її.
Ось два посилання «поблизу», які можуть бути корисними для деяких ідей. Мені було б цікаво почути будь-кого / інших, хто «ближче». Ви згадуєте, що працюєте над верифікацією програми, яка може бути полем, яке має більш прямі дослідження проблеми.
[1] Побудова перетину недетермінованих кінцевих автоматів за допомогою позначення Z Назір Ахмад Зафар, Набіл Сабір та Амір Алі
[2] Конструкції щодо доповнення для недетермінованих автоматів на нескінченних словах Орна Купферман та Моше Варді