це, мабуть, не дуже добре вивчена проблема в розумінні відомих / доступних алгоритмів, відмінних від оригінальної / давньої стратегії "визначити в DFA / мінімізувати DFA". Ви, схоже, вказуєте, що крок визначення є проблематичним, але це, звичайно, з огляду на те, що він має гірший випадок для експоненціального простору / часу. зауважте, що існує декілька алгоритмів мінімізації DFA, які можуть в середньому значно відрізнятися за продуктивністю.
він також більш неофіційно відомий як "мінімізація NFA без визначення" . відомо, що важко в тому сенсі, що в основному не існує навіть алгоритмів наближення, якщо тільки P = Pspace, як показано в цій статті:
однак у цій роботі розглядається загалом рідко досліджуваний випадок деяких алгоритмів, які не ґрунтуються на знаходженні визначеного коефіцієнта DFA 1- го :
Ми представляємо різні методики зменшення кількості станів і переходів у недетермінованих автоматах. Ці прийоми ґрунтуються на двох передпорядках щодо набору станів, пов’язаних із включенням лівої та правої мов. Оскільки їх точне обчислення є важким для NP, ми зосередимось на поліноміальних наближеннях, які дозволяють все одно зменшити NFA.
зауважте, що загальнодоступний пакет / реалізація, яка може обробляти великі NFA / DFA конверсії / мінімізацію тощо, як правило, максимально ефективно, це бібліотека AT&T FSM .
у неї є стратегія, fsmcompact
яка іноді може бути достатньою:
У випадках, коли перетворювач або зважений акцептор неможливо визначити або зростає дуже великим, може бути корисна інша оптимізація -
fsmcompact
. Ця операція кодує кожну трійку вхідної мітки, вихідної мітки та вартості в одну нову мітку, виконує класичне (не зважене акцептором) визначення та мінімізацію, а потім декодує закодовані мітки назад у їх початкові значення. Це має перевагу в тому, що вона завжди визначена, і те, що вона не переміщує мітки виводу або витрати по трасах. Недоліком є те, що результат не може бути ні детермінованим, ні мінімальним.