Я считаю, что небольшое изменение нормального алгоритма Мура работает. Вот формулировка алгоритма.
Let S be the set of states.
Let P be the set of all unordered pairs drawn from S.
Let M be a subset of P of "marked" pairs.
Initially set M to all pairs where one state is accepting and the other isn't.
Let T(x, c) be the transition function from state x on character c.
Do
For each pair z = <a, b> in P - M
For each character c in the alphabet
If <T(a, c), T(b, c)> is in M
Add z to M and continue with the next z
Until no new additions to M
Финальное множество P - M является попарным описанием отношения эквивалентности на состояниях. Из него вы можете создать минимальный DFA путем объединения состояний и переходов оригинала.
Мне кажется, что все равно, переходы могут быть обработаны, никогда не отмечая (добавляя к M) пары на их основе. То есть мы меняем одну строку:
If T(a, c) != DC and T(b, c) != DC and <T(a, c), T(b, c)> is in M
(На самом деле в реализации не требуется никакого реального изменения алгоритма, если DC является зарезервированным значением типа состояния, которое не является состоянием в исходной FA.)
У меня нет времени сейчас думать о формальном доказательстве, но это имеет для меня интуитивный смысл. Мы пропускаем расщепление классов эквивалентности состояний, основанных на переходах, которые, как мы знаем, никогда не произойдут.
Что мне еще нужно доказать, так это то, является ли множество P - M попарно описанием отношения эквивалентности. Т.е. можем ли мы в итоге получить <a,b>
и <b,c>
, но не <a,c>
? Если так, есть ли исправление?