Изменения

Перейти к: навигация, поиск
Алгоритм
<tex>Q</tex> - очередь состояний, соответствующих множествам, состоящих из состояний НКА.
<tex>s</tex> - стартовое состояние НКА.
<tex>\rightarrow</tex> - положить в очередь.<tex>\leftarrow</tex> - достать из очереди. '''1:''' <tex>Q.push(\{s\} \rightarrow Q)</tex> '''2:''' <tex>while </tex> <tex>not (isEmpty(</tex>Q</tex>(isEmpty(Q)) \{</tex> '''3:''' <tex>Q.pop(q_d \leftarrow Q)</tex> '''4:''' <tex>for </tex> <tex>c \in \Sigma\{</tex> {
'''5:''' <tex>p_d = \o</tex>
'''6:''' <tex>for </tex> <tex>q \in q_d</tex>
'''7:''' <tex>p_d = p_d \cup \delta(q, c)</tex>
'''8:''' <tex>if </tex> <tex>(p_d</tex> <tex>haven't</tex> <tex>been</tex> <tex>p_din</tex> не было в <tex>Q</tex>) '''9:''' <tex>Q.push(p_d \rightarrow Q)</tex> '''10:''' <tex>\}</tex> '''11:''' <tex>\}</tex>
Верхняя оценка на работу алгоритмы - <tex>O(n \cdot 2^n)</tex> - так как количество подмножеств множества состояний НКА не более, чем <tex>2^n</tex>, а каждое подмножество мы обрабатываем за <tex>O(n)</tex> и ровно один раз.
Анонимный участник

Навигация