Изменения

Перейти к: навигация, поиск

Эквивалентность состояний ДКА

1089 байт добавлено, 08:10, 21 января 2012
Нет описания правки
[[Файл:avtomat2.png|350px]] [[Файл:avtomat3.png|350px]]
Эти два автомата принимают слова из языка слов длины не меньше одного, состоящих из символов алфавита <tex> \lbrace 0, 1\rbrace </tex>. Все Стартовые и все допускающие состояния автоматов эквивалентны между собой.
{{Лемма
for <tex> \delta(e_1, c) = p_1 </tex>
for <tex> \delta(e_2, c) = p_2 </tex>
if neq[<tex>e_1</tex>, <tex>e_2</tex>]
continue
q.push(<tex>e_1</tex>, <tex>e_2</tex>)
neq[<tex>e_1</tex>, <tex>e_2</tex>] = True
</font>
===Время работы алгоритма===
Алгоритм Оценим время работы алгоритма. Заметим, что каждая пара состояния будет добавлена в очередь, не более одного раза. Поэтому цикл ''while'' выполнится не более чем <tex> |Q_1|\cdot |Q_2| </tex> раз. А значит в этом же цикле каждая пара ребер будет просмотрена не более одного раза, потому что для каждой вершины мы просматриваем все входящие ребра. А значит внутренний <font size = 3><tt> if neq[<tex>e_1</tex>, <tex>e_2</tex>] </tt> </font> выполнится порядка <tex> |Q_1||Q_2||\Sigma|^2 </tex>, потому что это верхняя оценка на количество ребер в детерминированном автомате {{---}} <tex> |Q||\Sigma|</tex>.А значит алгоритм будет работать за <tex> O(|Q_1||Q_2||\Sigma|^2)</tex>.
[[Категория: Теория формальных языков]]
[[Категория: Автоматы и регулярные языки]]
38
правок

Навигация