Изменения

Перейти к: навигация, поиск
Алгоритм
* '''Шаг 2.''' Затем, пока очередь не пуста выполняем следующие действия:
** Достаем из очереди множество, назовем его <tex>q</tex>
** Для каждого всех <tex>c \in \Sigma</tex> построим множество, содержащее состояния, посмотрим в которые какое состояние ведет символ переход по символу <tex>c</tex> из каждого состояния из в <tex>q</tex>. Затем Полученное множество состояний положим построенное множество в очередь <tex>Q</tex> только если оно не лежало там раньше. Каждое такое множество в итоговом ДКА будет отдельной вершиной, в которую будут вести переходы по соответствующим символам.
** Если в множестве <tex>q</tex> хотя бы одна из вершин была терминальной в НКА, то соответствующая данному множеству вершина в ДКА также будет терминальной.
* Конец.
===Алгоритм===
* <tex>Q\mathtt{P}</tex> {{---}} очередь состояний, соответствующих множествам, состоящих из состояний НКА.* <tex>\mathtt{Q_d}</tex> {{---}} массив множеств, соответствующих состояниям ДКА.* <tex>\mathtt{s}</tex> {{---}} стартовое состояние НКА. '''Automaton''' getDFAbyNFA(<tex>\langle \Sigma, Q_0Q, s, T_0T, \delta_0 delta \rangle</tex> : '''Automaton'''): <tex>QP</tex>.push(<tex>\{s\}</tex>) <tex>Q_d</tex> = <tex>\varnothing</tex> '''while''' (<tex>QP</tex> <tex> \neq </tex> <tex>\varnothing </tex>) <tex>QP</tex>.pop(<tex>q_dp_d</tex>) '''for''' (<tex>c</tex> '''\in''' <tex>\Sigma</tex>) <tex>p_dq_d</tex> = <tex>\varnothing</tex> '''for''' (<tex>q</tex> '''p \in''' <tex>q_dp_d</tex>) <tex>p_dq_d</tex> = <tex>p_d q_d \cup \{ \delta_0delta(qp, c) \}</tex> '''if''' ('''not''' visited[ <tex>\delta_d(p_d</tex>], q_d) <tex>Q</tex>.push(= <tex>p_dc</tex>) '''if''' <tex>q_d \delta(q_d, p_d)notin Q_d</tex> = <tex>cP</tex> '''if''' .push(<tex>\exists qq_d</tex> '''in''' ) <tex>q_d: qQ_d</tex> '''in''' .add(<tex>T_0q_d</tex>) <tex>TT_d</tex>.add= <tex>(\{q_d \in Q_d \mid \exists p \in T : p \in q_d)\}</tex> '''return''' <tex>\langle \Sigma, QQ_d, \{s\}, TT_d, \delta delta_d \rangle</tex>
===Асимптотика===
Анонимный участник

Навигация