Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Преобразование НКА в ДКА

Алгоритм моделирования ДКА

Вход. ДКА A; входная строка, завершаемая символом конца файла eof.

Выход. «Да», если ДКА A допускает , «Нет» в противном случае.

Метод.

move(S, C) - функция переходов, возвращает состояние, в которое происходит переход из состояния при входном символе .

nextchar – функция, которая возвращает очередной символ входной строки .

 

 

Пример. Граф переходов ДКА, допускающий тот же язык , что и ранее приведенный НКА.

 


Алгоритм, который мы рассмотрим, называется построением подмножества.

Предварительные замечания.

В таблице переходов НКА каждая клеточка представляет собой некоторое подмножество состояний, в ДКА – единственное состояние. Общая идея преобразования НКА в ДКА состоит в том, что каждое состояние ДКА моделирует некоторое подмножество состояний НКА. ДКА использует свои состояния для отслеживания всех возможных состояний, в которых НКА может находиться после прочтения очередного входного символа. Таким образом, после чтения входной строки ДКА находится в состоянии, которое моделирует подмножество состояний НКА, достижимых из начального состояния НКА по путям, отмеченным .

Количество состояний ДКА может оказаться экспоненциально зависящим от количества состояний НКА. Это наихудший случай. На практике встречается редко.

 

Для отслеживания подмножества состояний НКА нам понадобятся некоторые вспомогательные операции.

Пусть состояние НКА, подмножество состояний НКА.

1. замыкание состояния: обозначение замыкания

подмножество состояний НКА, достижимых из состояния только по переходам. Само включено в .

2. замыкание подмножества . Обозначение .

подмножество состояний НКА, достижимых из какого-либо состояния из только по переходам. Само включено в .

3. подмножество состояний НКА, в которые имеется переход из какого-либо состояния из по входному символу .

 

Вычисление является типичным процессом поиска в графе тех узлов, которые достижимы из заданного подмножества узлов. В этом случае состояния подмножества представляют заданное подмножество узлов, а граф состоит только из дуг НКА, помеченных .

 

Алгоритм построения ДКА из НКА («ленивое» вычисление подмножеств)

Изначально таблица переходов ДКА содержит только одно состояние - . Это состояние объявляется текущим подмножеством .

Для текущего состояния по каждому символу из входного алфавита строим подмножество .

Тем самым происходит заполнение текущей строки в таблице переходов ДКА. Если при этом образуются новые подмножества, те, которые еще не включены в эту таблицу, то дописываем их в новую строку как еще одно состояние ДКА.

Процесс останавливается после заполнения всей таблицы. В построенной таблице строка, соответствующая , объявляется начальным состоянием для ДКА.

Заключительными объявляются те из полученных подмножеств, в состав которых входит хотя бы одно из заключительных состояний исходного НКА.

 


Пример.

НКА, допускающий язык, строки которого оканчиваются на 011 и соответствующий ДКА.

 

 

 
 

 

             
→ 01247       → A B C
        B B D
        C B C
    124567,10   D B E
124567,10       * E B C

 

 

<== предыдущая лекция | следующая лекция ==>
Конечные автоматы | Теорема
Поделиться с друзьями:


Дата добавления: 2013-12-14; Просмотров: 4827; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.