Построение по НКА эквивалентного ДКА, алгоритм Томпсона
Содержание
Алгоритм систем подмножеств
Смысл алгоритма состоит в замене множества из состояний НКА, множеством из подмножеств его состояний.
Алгоритм
Генерируем все подмножества множества состояний НКА — это состояния ДКА. Далее для всевозможных — пар состояний ДКА и символов — добавляем переход из в по , если для каждого состояния НКА из есть переход по в состояние из и, наоборот, в каждое состояние НКА из есть переход из состояния из по
Алгоритм Томпсона
Данный алгоритм используется для преобразования НКА в ДКА. Смысл этого алгоритма, как и предыдущего, состоит в замене множества из состояний НКА, множеством из подмножеств его состояний. Но не все из состояний будут присутствовать в ДКА, ввиду недостижимости многих из них, поэтому в алгоритме используется обход в ширину.
Алгоритм
Вначале в очередь помещается множество, состоящее только из стартового состояния НКА .
Затем из очереди изымается очередное множество — новое состояние ДКА. Если в есть допускающие состояния, то оно допускающее. Функция перехода строится по следующему правилу: .
В результате задаст новое состояние автомата. Если еще нет в ДКА, тогда мы помещаем в очередь.
Так как - конечна, а , то алгоритм завершится за конечное число шагов. Отсюда же получается верхняя оценка на время работы алгоритма — в худшем случае это .
Корректность
| Утверждение: |
Построенный автомат принимает тот же язык |
|
Применим индукцию по длине слова .
|