Минимизация NFA без детерминации

Хорошо известно, как перейти от НКА для обычного языка к минимальному ДКА. Однако DFA может иметь экспоненциально большее количество состояний.

Что мне нужно, так это способ уменьшить NFA, дав снова NFA, но с меньшим числом состояний. Т.и. Мне не нужна детерминированность результата, но хотелось бы, чтобы он был как можно меньше при сохранении распознаваемого языка (возможно, не совсем оптимально, но чем меньше, тем лучше).

Каковы лучшие алгоритмы для этой задачи? Или, может быть, не «лучший», а, по крайней мере, «самый простой в реализации с неужасной эффективностью»? Или проблема имеет известное название, чтобы я мог сам найти хорошие источники информации?


person jkff    schedule 31.07.2010    source источник


Ответы (2)


Я считаю, что проблема также известна как минимизация NFA. Я считаю, что в целом это NP-сложно.

Одним из плодотворных подходов может быть минимизация бисимуляции [Paige, Tarjan 1987] и последующие производные.

Эта презентация содержит некоторые примечания о разрешимости проблемы, поскольку а также ссылки на некоторые подходы с изложением их относительных достоинств.

person Gian    schedule 31.07.2010
comment
Спасибо, мне удалось найти весьма актуальный материал по ссылкам из статьи, которую вы упомянули. - person jkff; 31.07.2010
comment
Проблема не только в NP-hart, но и в PSPACE-сложности! - person jmite; 03.10.2015
comment
Можете ли вы дать название презентации, чтобы его можно было найти по поиску? Ссылка в настоящее время возвращает PDF-файл с нулевой страницей. - person toolforger; 01.12.2018

Здесь есть реализация алгоритма Камеды-Вайнера для минимизации NFA: https://github.com/coder0xff/parlex_legacy/blob/132e4a23a599140d22b18ead832626f0c607340f/Automata/NFA.cs#L641

person Brent    schedule 24.08.2013