Изменения

Перейти к: навигация, поиск
Нет описания правки
Первый класс состоит из состояния <tex>A</tex>, а второй из эквивалентных состояний <tex>B</tex> и <tex>C</tex>.
= Алгоритм =
Алгоритм итеративно строит Итеративно строим разбиение множества состояний следующим образом.
# Первоначальное разбиение множества состояний {{---}} класс допускающих состояний и класс недопускающих состояний.
# Алгоритм помещает оба эти класса Меньший из них помещается в очередь.
# Из очереди извлекается класс, далее именуемый как сплиттер.
# Перебираются все символы из алфавита <tex>\Sigma</tex>, где <tex>c</tex> {{---}} текущий символ.
<tex>P</tex> {{---}} разбиение множества состояний ДКА.
<tex>R</tex> {{---}} класс состояний ДКА.
if <tex>W |F| \leftarrow le |Q \{ setminus F|</tex> <tex>W</tex>.push(<tex>F, </tex>) else <tex>W</tex>.push(<tex>Q \setminus F \}</tex>)
<tex>P \leftarrow \{ F, Q \setminus F \}</tex>
while not <tex>W</tex>.isEmpty()
if <tex> |R_1| \ne 0</tex> and <tex>|R_2| \ne 0</tex>
replace <tex>R</tex> in <tex>P</tex> with <tex>R_1</tex> and <tex>R_2</tex>
if <tex> |R_1| \le |R_2|R</tex> in <tex>W</tex> replace <tex>R</tex> in <tex>W</tex>.push(with <tex>R_1</tex>)and <tex>R_2</tex>
else
if <tex> |R_1| \le |R_2|</tex> <tex>W</tex>.push(<tex>R_1</tex>) else <tex>W</tex>.push(<tex>R_2</tex>)
==Время работы алгоритма==
Анонимный участник

Навигация