Построение по НКА эквивалентного ДКА, алгоритм Томпсона — различия между версиями
Строка 16: | Строка 16: | ||
* <tex>|\omega|=1</tex>: По построению стартовое состояние ДКА будет <tex>{s}</tex>, где <tex>s</tex> {{---}} стартовое состояние НКА, причем допускать они могут только одновременно. | * <tex>|\omega|=1</tex>: По построению стартовое состояние ДКА будет <tex>{s}</tex>, где <tex>s</tex> {{---}} стартовое состояние НКА, причем допускать они могут только одновременно. | ||
* Пусть для <tex>|\omega|=n</tex> - это верно, докажем, что верно и для <tex>|\omega|=n+1</tex>: | * Пусть для <tex>|\omega|=n</tex> - это верно, докажем, что верно и для <tex>|\omega|=n+1</tex>: | ||
− | Пусть НКА на шаге n мог находиться в состояниях <tex>{q_1...q_k}</tex>, тогда ДКА, по построению, находится в состоянии <tex>Q={q_1...q_k}</tex>. После перехода по <tex>\omega[n+1] = | + | Пусть НКА на шаге n мог находиться в состояниях <tex>{q_1...q_k}</tex>, тогда ДКА, по построению, находится в состоянии <tex>Q={q_1...q_k}</tex>. После перехода по <tex>\omega[n+1] = c</tex> НКА будет находиться в состояниях <tex>{\delta_N(q_1, c)...\delta_N(q_k, c)}</tex>, а ДКА в состоянии <tex>P=\delta_D(Q, c)</tex>, причем, в силу построения, оно будет допускающим, когда одно из <tex>{\delta_N(q_1, c)...\delta_N(q_k, c)}</tex> {{---}} допускающее. Что нам и требовалось. |
}} | }} |
Версия 19:00, 9 октября 2010
Алгоритм Томпсона
Данный алгоритм используется для преобразования НКА в ДКА. Смысл алгоритма состоит в замене множества из
состояний НКА, множеством из подмножеств его состояний. Но не все из состояний будут присутствовать в ДКА, ввиду недостижимости многих из них, поэтому в алгоритме используется обход в ширину.Алгоритм
Вначале в очередь помещается множество состоящее только из стартового состояния НКА
В результате задаст новое состояние автомата. Если еще нет в ДКА, тогда мы помещаем в очередь.
Так как - конечна, а , то алгоритм завершится за конечное число шагов. Отсюда же получается верхняя оценка на время работы алгоритма — в худшем случае это .
Корректность
Утверждение: |
Построенный автомат принимает тот же язык |
Применим индукцию по длине слова .
|