Построение по НКА эквивалентного ДКА, алгоритм Томпсона — различия между версиями
(→Алгоритм систем подмножеств) |
(→Алгоритм систем подмножеств) |
||
Строка 1: | Строка 1: | ||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
− | == | + | == Построение эквивалентного ДКА по НКА == |
− | + | НКА: <tex>\langle \Sigma , Q, s \in Q, T \subset Q, \delta : Q \times \Sigma \to P(Q) \rangle</tex>. | |
− | НКА | + | ДКА, описанный в следующих строках является эквивалентным НКА. |
ДКА: <tex>\langle \Sigma , Q_d, \{s\} \in Q_d, T_d \subset Q_d, \delta_d : Q_d \times \Sigma \to Q_d \rangle</tex>, где: | ДКА: <tex>\langle \Sigma , Q_d, \{s\} \in Q_d, T_d \subset Q_d, \delta_d : Q_d \times \Sigma \to Q_d \rangle</tex>, где: |
Версия 21:58, 21 октября 2011
Содержание
Построение эквивалентного ДКА по НКА
НКА:
.ДКА, описанный в следующих строках является эквивалентным НКА.
ДКА:
, где:- .
- .
- при условии, что .
Алгоритм
Задание состояний:
Состояние нашего ДКА будет соответствовать подмножеству состояний НКА - то есть их будет ровно
.Задание переходов:
Возьмём состояние нашего ДКА
, соответствующее подмножеству состояний НКА — , и символ . Тогда , где p - состояние ДКА, соответствующее подмножеству состояний НКА - , где — функция перехода в ДКА, а — функция перехода в НКА.Задание стартового состояния:
Стартовое состояние - состояние ДКА, соответствующее множеству из одного стартового состояния НКА.
Задание терминальных вершин:
Если в подмножестве состояний НКА есть хотя бы одна терминальная вершина, то вершина ДКА, соответствующая этому подмножеству, будет терминальной.
Терминология:
- состояние НКА.
- состояние ДКА.
- функция перехода в НКА.
- функция перехода в ДКА.
- принадлежит , если множество состояний НКА, соответствующее состоянию , содержит состояние .
Доказательство эквивалентности
Теорема: |
Построенный ДКА эквивалентен данному НКА. |
Доказательство: |
Докажем, что любое слово, которое принимает НКА, будет принято построенным ДКА. Сделаем наблюдение, что если и символ перехода - , то : .Рассмотрим последовательность состояний НКА, когда принимали слово - - и последовательность состояний ДКА, когда принимали слово - .Мы знаем, что - терминальная, так как НКА принимает слово. Надо доказать, что - терминальная.Заметим, что - так как это стартовые состояния, а, значит, по нашему наблюдению и так далее. Получается, что . Мы знаем, что - терминальная вершина, а, значит, по определению терминальной вершины в нашем ДКА, что - тоже терминальная.Докажем, что любое слово, которое принимает построенный ДКА, принимает и НКА. Рассмотрим последовательность состояний ДКА, когда принимали слово - .Сделаем наблюдение, что если , соответствует множеству из одного элемента - , и мы из него достигли по строке какого-то состояния , то : существует путь из в в НКА по строке .А так как - стартовое состояние, соответствует множеству из одного элемента - - стартовое состояние. Мы из достигли , возьмём любое терминальное состояние - по нашему наблюдению, в НКА есть путь из в по нужной строке, а, значит, что НКА принимает это слово.Получается, что мы доказали, что если НКА принимает слово, равносильно тому, что ДКА его тоже принимает. А это означает, что автоматы эквивалентны. |
Алгоритм Томпсона
Данный алгоритм преобразовывает НКА в эквивалентный ДКА. Мы будем использовать предыдущий алгоритм построения с одним дополнением - нам не нужны состояния недостижимые из стартового.
Поэтому в алгоритме используется обход в ширину.
Алгоритм
- очередь состояний, соответствующих множествам, состоящих из состояний НКА. - стартовое состояние НКА.
1:2: 3: 4: 5: 6: 7: 8: ) 9: 10: 11:
Верхняя оценка на работу алгоритмы -
- так как количество подмножеств множества состояний НКА не более, чем , а каждое подмножество мы обрабатываем за и ровно один раз.