Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
main_ta.doc
Скачиваний:
19
Добавлен:
16.09.2019
Размер:
2.29 Mб
Скачать

4.2. Приклад. Побудувати дса, еквівалентний до нса

А = ({р,д,^}, {0,1},5,р, {^,^}), де функція переходів 5 задана таблицею:

5

0

1

Р

{Р,Я}

{р}

Я

{г}

г


Зобразимо граф даного НСА:

Виконуючи процедуру аналогічно як і в попередньому прикладі, одержимо наступну таблицю функції переходів еквівалентного ДСА:

5'

0

1

Яе = {р}

{р,я}

{р} = ^е

^о = {Р, Я}

{р д} = ^о

{р,г}

Яоі = {р,г}

{р д} = ^о

{р} = ^е


Таким чином, шуканий ДСА задається як п'ятірка

А' = ({{р}, {р, Я, }, {р, г}}, {0,1}, 5', {р}, {{р, д}, {д, г}}), а його граф має вигляд:

1

З вищесказаного випливає, що для кожного НСА існує ДСА, який розпізнає ту ж мову, що і НСА. Крім того, оскільки кожен ДСА є частковим випадком НСА, то ми довели наступну теорему:

  1. теорема. Формальна мова розпізнається НСА тоді і лише то­ді, коли вона розпізнається ДСА.

Теорема 4.3 дає нам простий метод побудови ДСА, який розпі­знає мову Ь: спершу ми будуємо НСА для Ь, а потім перетворюємо його в еквівалентний ДСА. Розглянемо наступний приклад.

  1. 0,1

    Приклад. Нехай А = ({р, д, г, з}, {0,1}, 5,р, {д, з}), - НСА, де

5

0

і

р

и,з}

{«}

Я

{г}

{д,г}

г

{з}

{р}

з

{р}


Побудувати НСА, який розпізнає мову Ь(А).

Побудувати шуканий НСА А' по заданому НСА А важко, оскіль­ки раніше розглянутий для ДСА метод заміни некінцевих станів ав­томата А на кінцеві стани А', а кінцевих станів А на некінцеві в да­ному випадку незастосовний. Дійсно, можливий випадок, коли для деякого слова ш, Яш П Р = 0 і Яш П \ Р) = 0, а, отже, слово ш бу­де розпізнаватися обома автоматами А та А'. (Наприклад, в даному випадку ^оі = {р, Я, г} і Р = {^,5}, а тому слово 01 розпізнається як А так і А'.) Таким чином, А' не розпізнає мови Ь(А).

Замість цього, ми можемо застосувати конструкцію підмножин для побудови шуканого НСА. Спершу знаходимо ДСА Ар, еквіва­лентний А, а потім замінюємо кінцеві стани Ар на некінцеві стани і некінцеві стани Ар на кінцеві стани нового автомата А'. Зрозуміло, що А' є детермінованим скінченним автоматом.

На першому кроці ми отримуємо, що Ар =в, {0,1},5в, {р}, Рв), де множина станів Яв і функція переходів 5в задані в таблицею:

0

1

^е = {р}

и,з}

М

Яо = и,8}

{г}

{р,ч,г}

Яі = м

{г}

{Ч,г}

Яоо = {г}

{з}

{р}

Я оі = {р,Я,г}

{Ч,г,з}

{р,д,г}

Яіі = {Ч,г}

{г, з}

{р,Я,г}

Яооо = {«}

0

{р}

^ою = и,г,з}

{г, з}

{р,ч,г}

Яііо = {г, з}

{з}

{р}

^оооо = 0

0

0


Множина Рв кінцевих станів має вигляд:

Рв = {А с {р,д,т,з} | А П{д,з} = 0} = {и}, ^^ 4, ^}, {^, з}, {Р, ^ ^}, {(Ь Г з}}.

Таким чином, ДСА

А' = (Яв, {0,1},5в, {р},Яв \ Рв) розпізнає мову Ь(А), де Яв \ Рв = {{р}, {г}, 0}.

В параграфі 3 для регулярного виразу було означено його поміче­ний граф С(т), таким чином, що для кожного слова ш, ш Є Ь(г) тоді і лише тоді, коли існує шлях в С(т) з початкової вершини в кінцеву вершину, позначки якого утворюють слово ш. Кожна стрілка графу С(т) помічена однією буквою з множини {е} ЦІ X. Легко бачити, що С(т) є графом НСА, з початковою вершиною, яка позначає поча­тковий стан і кіцевою вершиною, що позначає кінцевий стан. Таким чином, одержуємо твердження:

  1. твердження. Кожна регулярна мова розпізнається деяким недетермінованим скінченним автоматом.

Розглянемо деякі приклади.

  1. Приклад. Побудувати ДСА, який розпізнає регулярну мову, задану регулярним виразом 10 + (0 + 11)0* 1.

Спершу, побудуємо НСА, який розпізнає дану мову, використо­вуючи метод описаний в парагафі 3:

Далі, перетворимо даний НСА в ДСА, використовуючи констру­кцію підмножин. Граф шуканого ДСА має вигляд:

0,1

0,1

>

■СО

4.7. Приклад. Побудувати НСА, який розпізнає всі слова непарної довжини в бінарному алфавіті X = {0,1}, які містять підслово 00.

Слово ш, що містить підслово 00 може бути записане як ш = а00в для деяких слів а, в Є {0,1}*. Дане слово ш має непарну довжину, в тому випадку, коли довжина а є парною і довжина в непарною, або, коли |а| є непарною, а |в| - парною. Таким чином, Ь запишеться наступним регулярним виразом:

((0+1)(0+1))* 00((0+1)(0+1))* (0+1)+(0+1)((0+1)(0+1))* 00((0+1)(0+1))*.

Використовуючи метод, описаний в парагафі 3, побудуємо граф шуканого НСА:

>

Вправи до лекції 4.

4.1. Для кожного регулярного виразу г побудувати ДСА, який роз­пізнає регулярну мову £(г):

а) (0+10)*(1+01)*;

б) (0+1)*0(0+ 1)(0+1)0(0+1); в) 0(0+1)*0+1(0+1)* 1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]