Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Эквивалентность недетерминированных и детерминированных конечных распознавателей (НКР и ДКР)




Понятие недетерминированного конечного распознавателя (НКР) приобретает практическое значение благодаря следующему факту: Для каждого НКР СУЩЕСТВУЕТ ДКР, который допускает в точности те же входные цепочки, что и недетерминированный.

Рассмотрим, как можно найти эквивалентный детерминированный автомат.

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

Если НДА имеет n состояний, то эквивалентный ему ДА должен иметь 2n состояний – по числу подмножеств. На практике многие из этих подмножеств представляют собой недостижимые состояния.

Будем строить переходы только для тех подмножеств, которые действительно необходимы.

Пусть МН – НДА, а МД – эквивалентный ему ДА, который нужно построить.

1) Пометить первую строку таблицы переходов для МД множеством начальных состояний автомата МН. Применить к этому множеству шаг 2.

2) По данному множеству состояний S, помечающему строку таблицу переходов автомата МД, для которой переходы ещё не вычислены, вычислить те состояния МН, которые могут быть достигнуты из S с помощью каждого входного символа Х, и поместить множества последующих состояний в соответствующие ячейки таблицы МД. Символически это выражается так. Если δ – функция недетерминированных переходов, то функция детерминированных переходов δ' задаётся формулой:

δ'(S, x)= {S|(s принадлежит δ (x, t) для некоторого t из S}.

3) Для каждого нового множества, порождённого переходами на шаге 2, посмотреть, имеется ли уже в МД строка, помеченная этим множеством. Если нет, то создать новую строку и пометить её этим множеством. Если множество уже использовалось как метка, то никаких действий не требуется.

4) Если в таблице автомата МД есть строка, для которой ещё не вычислены переходы, вернуться назад и применить к этой строке шаг 2. Если все переходы вычислены, перейти к шагу 5.

5) Пометить строку как допускающее состояние автомата МД ó, когда она содержит допускающее состояние недетерминированного автомата (НДА). В противном случае - как отвергающее состояние.

Рассмотрим эту процедуру на примере следующего НДА.

       
→А →B С А,В В   С С С,А С С С, А

После шага 1получаем:

  0 1
{A, B}  

 

Применяя шаг 2 к { А, В } обнаруживаем

δ'({А, В}, 0)= {А, В} и δ' ({А, В}, 1)= {С}

     
{A, B}   {A, B} {C}  

 

 

Применяя шаг 3, мы видим, что уже имеется строка { А, В }, но не для { С }.

     
{A, B} {C} {A, B} {C}

 

 

Переходя к шагу 4, обнаруживаем, что нужно применить шаг 2 к { С }. На шаге 3 выясняется, что нужны ещё 2 строки.

     
{A, B} {C} {} {A, C} {A, B} {} {C} {A,C}

 

 

Применение шага 2 для { A, C } и {} дает нам переходы во множества, которые уже являются именами состояний.

     
{A, B} {C} {} {A, C} {A, B} {} {} {A, B} {C} {A,C} {} {A,C}

 

 

Теперь шаг 4 предписываем нам перейти к шагу 5 и отметить состояние {А, В} как допускающее, т.к. содержит допускающее состояние В; состояние {С} и {А, С} отмечаются как допускающие, т.к. содержат допускающее состояние С. { } не содержит допускающих состояний, и поэтому помечаются как отвергающее.

       
→{A, B} {C} {} {A, C} {A, B} {} {} {A, B} {C} {A,C} {} {A,C}  

 

 

Изобразим окончательный вариант ДА ~НДА исходному в более простых обозначениях

       
       

 

В качестве ещё одного примера применим процедуру к автомату.

 

  Н С Л О А Ь  
С0 Л1 А1 С1 С2 Л2 А2 Н Ь   Н     С1 С2     Л1Л2       О     А1     А2       Ь    

 

Получим:

 

 

  Н С Л О А Ь  
0} {Л12} {А1, А2} {С1} {С2} {0} {Н} {Ь} {}     {Н}       {С1} {С2}   1Л2}         {О}       {А1, А2}         {Ь}    

Так как большинство переходов приводимых пустому множеству, мы обозначаем это состояние пусто, чтобы не загромождать автомат.

Состояние, соответствующее пустому множеству, является ошибочным, это отвергающее состояние, которое переходит само в себя для всех входом и имеет место только тогда, когда для данной входной цепочки нет допустимых продолжений.

Теоретически НДА с 10-ю состояниями, может иметь детерминированный вариант с 1024 состояниями: в соответствии с числом подмножеств множества содержащего 10 состояний. Но на самом деле потребовалось только 9 состояний. Это меньше исходного числа. Можно заметить, что не нужно делать различия между ролями Л1 и Л2, а также А1 и А2. Алгоритм позволяет нам не заботиться об этом при создании исходного распознавателя. Хотя процедура гарантирует, что детерминированный автомат не содержит недостижимых состояний, ДА может оказаться не минимальным. В последнем примере состояния { 0 } и { 6 } явно эквивалентны и могут быть объединены.

ЗАДАНИЕ:

Построить КА, который будет распознавать слова GO TO, причём между ними может быть произвольное (включая нулевое) число пробелов.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 548; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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