Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
main_ta.doc
Скачиваний:
19
Добавлен:
16.09.2019
Размер:
2.29 Mб
Скачать
  1. Нехай X = {а,Ь,с}, У = {*,*, о}. Побудувати детермінований скінченний автомат, який реалізує алгоритм шифрування вхідного слова шифром простої заміни, міняючи букву а на *, Ь на * і с на о.

  2. Нехай X = У = {а,Ь, с, д}. Побудувати скінченний автомат, який шифрує букви вхідного слова, які знаходяться на парних пози­ціях шифром зсуву на дві букви праворуч, а на непарних - на три букви.

  3. Нехай X = У = {0,1, 2}. Побудувати скінченний автомат, який шифрує вхідне слово, замінюючи цифру х на позиції 3п + к, де п > 0, к Є {0,1, 2}, остачею від ділення х + к на 3.

  4. Побудувати "дешифрувальні автомати" для автоматів з двох попередніх прикладів.

  5. 1.4. Скінченний автомат а заданий графом:

    Побудувати скінченний автомат з виходом, у якого вхідний ал­фавіт X = {0,1, а} і вихідний У = {0,1,р, п}. Вихідна послідовність з 0 та 1 збігається з вхідною, а на кожний символ запиту а друкується р - якщо кількість 0 від початку роботи парна, і п - якщо непарна.

  1. Нехай X = У = {а, Ь}. Побудувати скінченний автомат, який дає на виході слово, яке складається виключно з букв а, тоді і лише тоді, коли вхідне слово містить префікс аЬ.

  2. Нехай X = У = {а, Ь}. Побудувати скінченний автомат, який дає на виході слово, яке закінчується буквою Ь, тоді і лише тоді, коли вхідне слово не містить суфікса ЬЬЬ.

Лекція 2. Детерміновані скінченні автомати без виходу

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

2.1. Приклад. Побудуємо граф ДСА А =) і знайдемо

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

5

0

1

Яо

Яі

Яз

Яі

42

Яз

32

32

Яз

Яз

Зз


Помічений граф автомата А має вигляд:

0

1

Знайдемо мову Ь(А), яка розпізнається автоматом А.

Нагадаємо, що слово ш Є Ь(А), якщо автомат А зупиняє аналіз ш в одному з кінцевих станів множини Р. З графа ДСА видно, що якщо автомат переходить в стан дз при аналізі слова ш, то він залишається в ньому до кінця роботи і ш Є £(А). З другого боку, перейшовши

в кінцевий стан д2, автомат ніколи не покине даного стану, і такі слова розпізнаються ДСА. З вищесказаного випливає, що мова Ь(Л) містить слово 0 (аналіз якого зупиняється в стані ді) і всі слова, які мають префікс 00. Таким чином, регулярний вираз мови Ь(Л) має вигляд 0 + 00(0+1)*.

2.2. Приклад. Знайдемо мову, яка розпізнається ДСА А = X, 5, до), заданого поміченим графом:

і

о,і

Аналогічно як у прикладі 3.2, якщо при аналізі слова ш автомат переходить в стан , то дане слово не розпізнається А і, навпаки, перейшовши в кінцевий стан д3, автомат розпізнає слово ш. Отже, нам потрібно проаналізувати як зі стану д0 можна перейти в стан д3. Всього є три типи шляхів з д0 в д3:

(яо, Яі, Я2,..., Я2, Яз); (до, Яі, Яб,..., Яб, Яз); (яо, Яа , Яб ,..., Яб, Яз).

Вони відповідають словам, префікси яких належать регулярним мо­вам 011*0, 000* 1 і 100* 1 відповідно. Таким чином,

Ь(А) = (011* 0 + 000* 1 + 100* 1)(0 + 1)*.

2.3. Приклад. Побудувати ДСА, який розпізнає всі слова в бінар­ному алфавіті X = {0,1}, які мають префікс 01.

і

Легко бачити, що регулярний вираз шуканої формальної мови має вигляд 01(0 + 1)*. Побудуємо граф цього регулярного виразу:

о

о,і

Даний граф не є графом ДСА, оскільки в графі ДСА з кожної вершини д має виходити єдина стрілка з позначкою а для кожної пари (д, а) Є ^ х X. Щоб виконати цю умову, побудуємо додаткову тупикову виршину д3 і стрілки до ^ д3 і ді ^ д3 з позначками 1 і 0 відповідно. Шуканий граф ДСА має вигляд:

о,і

і

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

Спершу відмітимо, що з регулярного виразу (0+ 1)*00(0 + 1)* не можна визначити перше входження пари 00 в вхідному слові. З дру­гого боку, шуканий ДСА мусить виявляти 00 вже при першому його входженні у вхідне слово. Проаналізуємо дану проблему детальніше.

о,і

Припустимо, що на стрічці записане слово ш = хіх2 .. .хп, де Хі Є {0,1}. Ми маємо перевіряти кожне підслово хіх22х3,... хп-іхп і як тільки виявиться, що якась пара рівна 00, робити висновок, що слово ш розпізнається ДСА. Звідси випливає наступний алгоритм побудови ДСА.

о

о

Крок 1. Будуємо граф

о

о,і

з кінцевою вершиною д2, з допомогою якої розпізнаються слова, що містять 00. Зокрема, якщо хіх2 = 00, то слово ш розпізнається. Крок 2. Якщо хі = 1, то ми залишаємо підслово хі х2 і переходимо до перевірки х2х3. Таким чином, автомату потрібно перейти в стан до, тобто 5(до, 1) = до.

і

о

о,і

Крок 3. Якщо хі =0 і х2 = 1, то ні підслово Х\_х2, ні х2х3 не дорівнюють 00. Отже, керуючий пристрій ДСА має перейти в стан

НЯоІГ И о,і

о

2.5. Приклад. Побудувати ДСА, який розпізнає всі слова в бінар­ному алфавіті X = {0,1}, які містять підслово 00101.

Аналогічно, як і в попередньому прикладі, крок за кроком буду­ємо шуканий ДСА:

—©-^ ©-^ ©-^ (®Т> о,і

2.6. Приклад. Побудувати ДСА, який розпізнає всі слова в бінар­ному алфавіті X = {0,1}, які мають суфікс 01. Спершу, побудуємо наступний граф:

Оо) о » (о1

Стани д0 та д1 вказують, що "не знайдено префікса слова 01"та "знайдений префікс 0 слова 01"відповідно. Аналогічно, як і в по­передньому прикладі, покладемо 5(д0, 1) = д0 і 51, 0) = . Якщо перейшовши в стан д2 автомат не закінчив аналіз вхідного слова, то необхідно покласти 5(д2, 0) = д1 і 5(д2, 1) = д0. Таким чином, шуканий граф ДСА має вигляд:

10

2.7. Приклад. Побудувати ДСА, який розпізнає всі двійкові нату­ральні числа, які конгруентні нулю за модулем 5.

Ідея побудови даного ДСА подібна до ідеї побудови автоматів з попередніх двох прикладів. Побудуємо п'ять станів д0, д1,... ,д4 і вважаємо, що кожен стан ді має значення "префікс у вхідного сло­ва має властивість у = і(тод 5)". Тобто, нам потрібно визначити 5(д0, х1 х2 ... хк) = ді, якщо х1 х2 .. .хк = і(тод 5).

Як же побудувати стрілки між станами автомата, використову­ючи цю ідею? Нагадаємо, що функція переходів 5 задовольняє на­ступну рівність:

5(5(д0, х), а) = 5(д0,ха),

для будь-якого бінарного слова х і довільного а Є {0,1}. Припустимо, що 5(д0, х) = ді і 5(д0 ,ха) = . Тоді, мають виконуватися конгруенції: х = і(тюд 5) і ха = і(тод 5). Таким чином,

І = ха(тод 5) = 2 • х + а(тод 5) = 2 • і + а(тод 5).

Отже, покладемо 5(ді, а) = д^, якщо і = 2 • і + а(тод 5). Напри­клад, 5(д2, 0) = д4 і 5(д2, 1) = д0. Крім того, стан д0 є єдиним кінцевим станом, оскільки 5(д0,х) = д0 означає, що х = 0(тод 5).

Наостанок, відмітимо, що двійковий запис натурального числа завжди починається з 1 . Таким чином, потрібно додати новий поча­тковий стан і тупиковий стан як показано на графі:

2.8. Приклад. Побудувати ДСА, який розпізнає всі слова в бінар­ному алфавіті X = {0,1}, які містять підслово 00 або закінчуються на 01 .

Шукана мова є об'єднанням двох мов (0+1)*00(0+1)* і (0+1)*01. В прикладах 3.6 та 3.7 ми побудували ДСА, які розпізнають ці дві мови. Для перевірки того, чи вхідне слово ш належить об'єднанню цих мов, можна аналізувати слово ш двома автоматами паралель­но. Наприклад, нехай ш = 0101. На першому ДСА обчислюваль­ний шлях для слова ш має вигляд (до, , до, , до), а на другому (до, , д2, ді , д2). Оскільки аналіз ш на другому ДСА закінчується в кінцевому стані, то слово належить об'єднанню мов.

Ідея побудови ДСА для об'єднання цих мов, полягає в розгля­ді так званого добутку автоматів. Нехай Аі = , X, 5і, до, Рі) і А2 = (^2, X,52, до2) - два автомати (відмітимо, що і мо­жуть мати стани з однаковими назвами, які виконують різні функції в двох ДСА). Визначимо добуток А = Аі х А2 автоматів Аі і А2 наступним чином. Нехай А =, X, 5, до, Р). Покладемо

Я = ^і х ^2 = {(яіз) | Яі Є Яіз Є ^2},

5Яі,Яз),а) = (5і(&, а), 52,а)) і до = (до, Яо).

Наприклад, обчислювальний шлях слова ш = 0101 в добутку ав­томатів А має вигляд: (доо); (діі); (Яо2); (яі, Яі); (Яо2). Нао- станок відмітимо, що якщо ді Є Рі або д^ Є Р2, то ми покладаємо (^, Яі) Є Р, тобто Р = (Рі х Я2) ЦІ х Р2). Очевидно, що даний автомат А розпізнає об'єднання мов, що розпізнаються автоматами А і та А2. Граф шуканого автомата ДСА має вигляд:

1 0

1

Звернему увагу на два важливі факти, пов'язані з автоматом А. По-перше, оскільки стани01),10) та (д12) є недосяжни­ми з початкового стану00), то ми опускаємо їх. По-друге, стани 2, ),2, д0) та2, д2) можуть бути об'єднані в єдиний стан, оскіль­ки всі вони є кінцевими і немає шляху їх покинути, якщо автомат перейшов хоча б в один із них.

  1. Приклад. Побудувати ДСА, який розпізнає всі слова в бінар­ному алфавіті X = {0,1}, які містять підслово 00 і закінчуються на 01.

Дана мова є перетином двох мов (0 + 1)*00(0 + 1)* і (0 + 1)*01. В прикладі 2.8 ми побудували добуток автоматів, який розпізнає об'­єднання заданих двох мов. Тут ми розглянемо той самий добуток ДСА, в якому лише поміняємо множину кінцевих станів, поклавши Р = Р1 х Р2. Граф шуканого автомата такий же як і автомата з при­кладу 2.8 з тією різницею, що множина Р кінцевих станів містить тільки стан22).

  1. Приклад. Побудувати ДСА, який розпізнає всі слова в бінар­ному алфавіті X = {0,1}, які містять підслово 00 і не закінчуються на 01 .

Дана мова є різницею мови (0 + 1)*00(0 + 1)* і мови (0 + 1)*01. Тому ми можемо використати той самий добуток автоматів, що і в прикладах 2.8 та 2.9, включивши в множину кінцевих станів ті пари, перша компонента яких є кінцевим станом першого ДСА, а друга компонента не є кінцевим станом другого автомата, тобто поклавши Р = Р1 х (^2 \ Р2). Граф шуканого автомата такий же як і автомата з прикладу 2.8 з тією різницею, що множина Р кінцевих станів містить стани20) і21).

Частковим випадком різниці формальних мов є доповнення: Ь = X* \ Р. В цьому випадку використовуємо наступну конструкцію. Від­мітимо, що в ДСА X, до, Р) вхідне слово ш Є Р(А) тоді і тільки тоді, коли , ш) Є Р. Рівносильно ш Є Р(А), тоді і лише тоді, коли £(д0, ш) Є Р. Звідси випливає, що ДСА (^,Х, д0, ^ \ Р) розпізнає доповнення мови Р(А).

Таким чином, ми довели наступну теорему.

2.11. теорема. Клас формальних мов, які розпізнаються детермі­нованими скінченними автоматами, замкнений відносно скінчен­них об'єднань, перетинів, доповнення, різниці і симетричної різни­ці.

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

2.1. Визначити, який з бітових рядків

а) 1110,

б) 101010,

в) 110001010010,

г) 000000000111,

розпізнається детермінованим скінченним автоматом без виходу А, що заданий графом:

0

і

  1. Серед слів регулярної мови (10)* визначити ті, які належать мові Р(А) ДСА без виходу А з попереднього прикладу.

  2. Нехай т, ^ Є N. Розглянемо ДСА без виходу Ат,^ = X, д0, Р), де Я = {Я0, Яі,..., Ят-і}, X = {0,1,..., ^ - 1}, Р = {ді} і , к) = ^{а,і+к)тоа т. Побудуват граф автомата А7,2 і визначити, який з біто­вих рядків розпізнається ДСА:

а) 0101,

б) 11010,

в) 1101101010,

г) 11110000.

2.4. Знайти мову, що розпізнається ДСА без виходу: а)

^(оо)-^ (дз

і

о

і

о,і

б)

о,і і

нНЯо) ©

і

^ о ( о і

в

нИЯо

нИЯі

о

о,і

і

нИЯо

/-к о М і

о

і

о,і

о

і ^ і /

о о,і о,і

а) {0,1};

б) {10,101};

2.5. Побудувати ДСА без виходу, які розпізнають формальні мови:

в) {0П | п = 2,3,...};

г) {0П 1т | п,т Є М}.

  1. Побудувати ДСА, який розпізнає всі слова в бінарному алфа­віті X = {0,1}, які містять підслово 100101.

  2. Побудувати ДСА, який розпізнає всі слова в бінарному алфа­віті X = {0,1}, які мають префікс 010.

  3. -ЧЯо

    Побудувати ДСА, який розпізнає всі слова в бінарному алфа­віті X = {0,1}, які закінчуються на 101.

  1. Побудувати ДСА, який розпізнає всі слова в бінарному алфа­віті X = {0,1}, які починаються на 010 або закінчуються на 101.

  2. Побудувати ДСА, який розпізнає всі слова в бінарному ал­фавіті X = {0,1}, які містять підслово 11 і не закінчуються на 101.

  3. Побудувати ДСА, який розпізнає всі слова в бінарному алфа­віті X = {0,1}, які мають префікс 010, суфікс 101 і містять підслово 0000.

Лекція 3. Недетерміновані скінченні автома­ти без виходу

Недетермінований скінченний автомат (НСА) без виходу X, 5, до, Р) визначається так само як і ДСА за винятком того, що в ньому до­зволяються переходи в декілька станів та е-переходи. Це означає, що для кожного стану д і вхідної букви а значення 5(д,а) функції переходів на парі (д, а) є підмножиною множини станів Ц, тобто 5(д,а) = {рі^,р2,...,рк}. Остання рівність означає, що проаналізу­вавши букву а в стані д автомат може перейти в довільний зі станів рі, р2,... або рк. В випадку, коли 5(д, а) = 0 автомат не переходить в жоден стан, "зависає"і вважаємо, що вхідне слово не розпізнається НСА незважаючи на те, що деякі букви слова ще не проаналізова­ні автоматом. Це рівносильно тому, що ДСА перейшов в тупиковий стан. Крім переходів в декілька станів, в НСА дозволяються також е-переходи (е-такти). При е-переході головка автомата нічого не ви­конує (не читає і не рухається), але стан при цьому може змінитися на довільний зі станів рі, р2,... або рк.

Таким чином, функція переходів формально визначається як:

5 : ^ х (X У{е}) ^ 2д,

де через позначається сім'я всіх підмножин множини Прикла­дом функції переходів НСА Аі є:

5

0

1

е

Яо

0

{Яо, Яі}

і}

Яі

2 }

{Яі ,Я2 }

0

Я2

2 }

0

і}


НСА так як і ДСА задаються графами, вершинами яких є ста­ни автомата, а за допомогою стрілок зображаються переходи, тобто

якщо 5(д, а) = {р12,... ,рк}, то ми відкладаємо к стрілок з верши­ни д до кожної з вершин р12,... ,рк і всі стрілки помічені буквою а. Наприклад, граф розглянутого вище автомата А1 має вигляд (вва­жаємо, що Р =2}):

110

е

На вхідному слові ш НСА може мати більше ніж один обчислю­вальний шлях. Наприклад, для вхідного слова ш = 01 існує три об­числювальні шляхи:

е 0 е 1 40 ^ 41 ^ 42 ^ 41 ^ 41,

е 0 е 1 40 ^ 41 ^ 42 ^ 41 ^ 42,

404142414241.

В загальному випадку, обчислювальні шляхи для вхідного слова ш утворюють дерево виводу, оскільки всі вони виходять з однієї і тієї ж вершини д0 і їх гілки не утворюють циклів. Зобразимо дерево ви­воду слова ш = 01 (ми додаємо стрілку д2 е > д2 , щоб наголосити,

що другий шлях закінчується в вершині д2):

41

41

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

Щоб визначити строго, коли НСА розпізнає вхідне слово ш, по­трібно ввести поняття е-замикання. Назвемо е-замиканням підмно- жини Р С ^ множину станів, які досягаються з станів д Є Р е- переходами (включаючи переходи з д в д). Тобто,

сіє(Р) = {р Є ^ | р Є Р або (3^0,.. .,дт)[Я0 Є Р,дт = р,д+ Є 5(ді,е)]}. Наприклад, в попередньому прикладі, сіє({д0}) =0, д1}, сіє({д2}) =

Продовжимо функцію переходів 5 на множину 2^ х (X ЦІ {е}), поклавши

5(Р,а) = сіє ( У 5(д,а)),

ЧЄсІе (Р)

а далі продовжимо її на 2^ х X* наступним чином:

5 (Р, е) = сІе (Р),

5(Р, ша) = 5(5(Р, ш),а), якщо ш Є X* і а Є X.

Так, у вищерозглянутому прикладі маємо, що 5({д0}, 0) = {д12} і 5({^12}, 1) = {#12}. Таким чином, 5({#0},01) =12}. Відміти­мо, що 5({д0},ш) є множиною всіх останніх вершин (листків) обчи­слювальних шляхів слова ш.

Тепер можна строго означити, що НСА (^, X,5,д0) розпізнає слово ш, якщо 5({д0},ш) П Р = 0. Через Ь(А) позначаємо мову, яка розпізнається НСА А, тобто

Ь(А) = {ш Є X* | 5({^0}, ш) П Р = 0}.

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

Будуємо даний автомат аналогічно як ми будували ДСА, за ви­нятком того, що додаємо дві петлі з позначками 0 і 1. Ці дві петлі дозволяють автомату чекати поки він успішно не знайде підслово 010. Маючи ці дві петлі, нам не потрібно покладати 5(д1, 0) = д1 і 5(д2, 1) = д0 як ми це робили для ДСА. Справді, достатньо просто покласти 51, 0) = 5(д2, 1) = 0. Граф НСА має вигляд:

3.2. Приклад. Побудуємо НСА, який розпізнає всі слова в бінарно­му алфавіті X = {0,1}, які починаються з 010 або закінчуються на 110.

Множина всіх бінарних слів, які починаються з 010 розпізнається наступним НСА, заданим графом:

о,і ГЛ

о

і

о

О

О

о

Множина всіх бінарних слів, які закінчуються на 110 розпізнає­ться автоматом:

^О ^О

о,і

Відмітимо, що в цьому автоматі кінцевий стан не має вихідних стрілок, тобто 5(д3, 0) = 5(д3, 1) = 0. Таким чином, якщо обчислю­вальний шлях вхідного слова ш досягає д3 раніше ніж слово ш пов­ністю проаналізується НСА, то цей шлях не є розпізнавальним (але це не означає, що ш не розпізнається НСА).

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

0,1 -О

0

1

0

О

О

1

1

0

О

О

4 .

0,1

3.3. Приклад. Побудуємо НСА, який розпізнає всі слова в бінарно­му алфавіті X = {0,1}, які містять принаймі два входження підслова 01 і закінчуються на 11.

Використаємо е-переходи щоб об'єднати три простіших НСА в один. В результаті отримаємо:

0,1

Відмітимо, що тут є випадок, коли друге входження підслова 01 може перетнутися з суфіксом 11, але це не є проблемою у випадку НСА - ми просто додаємо ще одну е-стрілку.

3.4. Приклад. Нехай А1 і А2 - два НСА. Побудуємо НСА А, для якого £(А) = Р(А1) О £(А2).

Нехай А1 = (^1, X, 51 ,Р1) і А2 = (^2,Х,52,я2,Р2). Побудує­мо автомат А наступним чином. Початковий стан д^ автомата А1 є початковим станом автомата А, а множина Р кінцевих станів А до­рівнює Р2. Також додамо е-стрілки з кожного стану д Є Р1 в старий початковий стан д2 Є А2. Дана конструкція має наступний вигляд:

3.5. Приклад. Нехай А1 - НСА. Побудуємо НСА А, такий, що Ь(А) = ЦА1 )*.

Нехай А1 = (^1 ,Х, 5101). Побудуємо автомат А, додавши новий початковий стан 5 і єдиний кінцевий стан /. Далі, проведемо е-стрілки з стану 5 в початковий стан д0 Є А1 та з кожного ді Є Р1 в новий кінцевий стан /. Також проведемо з кожного стану ді Є Р1 е-стрілку в початковий стан д0 Є А1. Наостанок, додамо е-стрілку з початкового стану 5 в новий кінцевий стан / (при цьому порожнє слово е розпізнається автоматом). Шуканий НСА показано на рисун­кУ:

е

З прикладів 3.4 та 3.5 випливає наступна теорема:

3.6. теорема. Клас формальних мов, які розпізнаються недетер- мінованими скінченними автоматами, замкнений відносно конка- тинації та ітерації.

Лекція 4. Перетворення НСА до ДСА

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

Розглянемо НСА А = X, 5, до). Для кожного и Є X* по­значимо через множину станів, які є останніми станами обчи­слювальних шляхів слова и, тобто = 5({до},и), де 5 - функція переходів, визначена на множині х X*. Зокрема, де = сІе({до}). Таким чином, слово и розпізнається НСА тоді і тільки тоді, коли ^ П Р = 0. Отже, ми можемо взяти ці підмножини ^ С ^ в якості станів нового еквівалентного ДСА. Іншими словами, побудуємо ДСА А' = ,x,5і , Р') з наступними компонентами:

$ = {<$и | и Є X*}, Р' = {<$и | ^ П Р = 0},

5', а) = , де и Є X*,а Є X.

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

3.1.

Відмітимо, що кожен стан ^ є підмножиною множини Я і, от­же, Я' є скінченною множиною. Справді, С 2^ і, отже, | < 2^. Далі, якщо = , то = для всіх а Є X. Звідси випливає, що означення функції переходів 5' є коректним. Попередній аналіз показує, що конструкція ДСА є коректною. Дана конструкція нази­вається побудовою ДСА за допомогою підмножин. Розглянемо деякі приклади.

4.1. Приклад. Побудувати ДСА, який розпізнає ту ж формальну мову, що і НСА А = (ф, {0,1},5,до ,Р), де ^ = {д0, ді, ^, Яз ,94, Яб }, Р = {я3, Я4} і функція переходів задана таблицею:

5

0

1

Є

Яо

{Яо }

{Яо ,Я2 }

{Зі}

Яі

{Яб }

{Я2 }

-

Я2

{Яз }

-

-

Яз

-

-

{Я4 }

Я4

Ь}

-

-

Яб

-

{Я4 }

-


Спершу побудуємо граф заданого в умові НСА:

о,і

Побудуємо еквівалентний ДСА наступним чином.

Крок 1 Нехай Яе = с1е({д0}) - початковий стан шуканого ДСА, а Р' = 0 - множина кінцевих станів. Покладемо Я' = {^е}. Якщо П Р = 0, то додаємо стан до множини Р' кінцевих станів шуканого ДСА.

Крок 2 Повторюємо наступні пункти доти, поки значення 5', а) не буде визначене для всіх станів Є Я' і всіх а Є {0,1}:

  • Вибираємо такі Є і а Є {0,1}, що значення 5'(^, а) функції переходів ще не визначене.

  • Покладаємо = 5'(^, а).

  • Якщо ^ша Є Я', то додаємо стан до множини станів , а також додаємо його до множини кінцевих станів Р', якщо

Яша П Р = 0.

Повний процес для цього прикладу поданий в наступній таблиці:

5'

0

1

Яе = {Яо ,Я1}

{Яо ,Я1 ,Яб }

{Яо ,Я1 ,Я2 }

^о = {Яо ,Я1 ,яб }

{Яо ,Я1 ,Яб } = ^о

{Яо ,Я1 ,Я2 ,Я4 }

= {Яо ,Я1 ,Я2 }

{Яо ,Я1 , Яз ,Я4 ,Яб }

{Яо ,Я1 ,Я2 } =

Фо1 =о ,Я1 ,Я2 ,Я4 }

{Яо ,Я1 , Яз ,Я4 ,Яб }

{Яо ,Я1 ,Я2 } =

Яю = {яо ,Я1 ,Яз ,Я4 ,Яб }

{Яо ,Я1 , Яз ,Я4 ,Яб } = Яю

{Яо ,Я1 ,Я2 ,Я4 } = Фо1


Відмітимо, що при виконанні кроку 2, не потрібно розглядати стани ^оо, ^ооо, ^001 і т.д., бо ^оо = ^о, ^ооо = ^оо = ^о і ^001 = ^оі. Аналогічно, оскільки Я11 = Я1, то не потрібно розглядати стани Я11Ш для кожного ш Є {0,1}*.

Граф еквівалентного до НСА ДСА має вигляд:

о

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