- •2.3. Арифметичні операції в різних системах числення.
- •3.8. Розв'язати системи рівнянь з регулярними коефіцієнтами.
- •Має два виводи
- •1.4. Скінченний автомат а заданий графом:
- •4.2. Приклад. Побудувати дса, еквівалентний до нса
- •Лекція 5. Скінченні автомати і регулярні мови. Лема про роздування.
- •6.3. Приклад. Побудувати мп-автомат, який розпізнає мову
- •(Д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (р, Ьа, Ьа) ь (р, а, а) ь (р, е, е); (д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (д, а, ьЬа) ь (р, а, ьЬа);
- •Зліва записуються всі стани, крім кінцевого ду, з множини станів
- •Проаналізуйте роботу мт на наступних вхідних словах:
- •3.7. Приклад. Побудуємо машину Тюрінґа, яка переводить натуральні числа з унарної системи числення в десяткову.
- •Лекція 4. Частково рекурсивні та примітивно рекурсивні функції
- •Приклад. Застосувати кожну з підстановок з попереднього прикладу до слова аЬЬасЬа максимальну можливу кількісить разів.
- •5.3. Приклад. Застосувати кожен з нам
- •8.7. Оцінити часову та ємнісну складність мт, заданої графом:
Нехай X = {а,Ь,с}, У = {*,*, о}. Побудувати детермінований скінченний автомат, який реалізує алгоритм шифрування вхідного слова шифром простої заміни, міняючи букву а на *, Ь на * і с на о.
Нехай X = У = {а,Ь, с, д}. Побудувати скінченний автомат, який шифрує букви вхідного слова, які знаходяться на парних позиціях шифром зсуву на дві букви праворуч, а на непарних - на три букви.
Нехай X = У = {0,1, 2}. Побудувати скінченний автомат, який шифрує вхідне слово, замінюючи цифру х на позиції 3п + к, де п > 0, к Є {0,1, 2}, остачею від ділення х + к на 3.
Побудувати "дешифрувальні автомати" для автоматів з двох попередніх прикладів.
1.4. Скінченний автомат а заданий графом:
Побудувати скінченний автомат з виходом, у якого вхідний алфавіт X = {0,1, а} і вихідний У = {0,1,р, п}. Вихідна послідовність з 0 та 1 збігається з вхідною, а на кожний символ запиту а друкується р - якщо кількість 0 від початку роботи парна, і п - якщо непарна.
Нехай X = У = {а, Ь}. Побудувати скінченний автомат, який дає на виході слово, яке складається виключно з букв а, тоді і лише тоді, коли вхідне слово містить префікс аЬ.
Нехай X = У = {а, Ь}. Побудувати скінченний автомат, який дає на виході слово, яке закінчується буквою Ь, тоді і лише тоді, коли вхідне слово не містить суфікса ЬЬЬ.
Лекція 2. Детерміновані скінченні автомати без виходу
В цьому параграфі ми на прикладах розглянемо різні методи побудови детермінованих скінченних автоматів (ДСА) без виходу. Зокрема, покажемо, що клас формальних мов, які розпізнаються детермінованими скінченними автоматами, замкнений відносно об'єднання, перетину, доповнення, різниці, симетричної різниці.
2.1. Приклад. Побудуємо граф ДСА А = ,Р) і знайдемо
мову, яка розпізнається А, якщо ^ = {д0, д1, д2, Яз}, X = {0,1}, Р = {д1 ,д2}, а функція переходів 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.
і
о
о,і
Даний граф не є графом ДСА, оскільки в графі ДСА з кожної вершини д має виходити єдина стрілка з позначкою а для кожної пари (д, а) Є ^ х X. Щоб виконати цю умову, побудуємо додаткову тупикову виршину д3 і стрілки до ^ д3 і ді ^ д3 з позначками 1 і 0 відповідно. Шуканий граф ДСА має вигляд:
о,і
і
2.4. Приклад. Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які містять підслово 00.
Спершу відмітимо, що з регулярного виразу (0+ 1)*00(0 + 1)* не можна визначити перше входження пари 00 в вхідному слові. З другого боку, шуканий ДСА мусить виявляти 00 вже при першому його входженні у вхідне слово. Проаналізуємо дану проблему детальніше.
о,і
о
о
о
о,і
з кінцевою вершиною д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 і 5(д1, 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
Звернему увагу на два важливі факти, пов'язані з автоматом А. По-перше, оскільки стани (д0 ,д1), (д1 ,д0) та (д1 ,д2) є недосяжними з початкового стану (д0 ,д0), то ми опускаємо їх. По-друге, стани (д2, ), (д2, д0) та (д2, д2) можуть бути об'єднані в єдиний стан, оскільки всі вони є кінцевими і немає шляху їх покинути, якщо автомат перейшов хоча б в один із них.
Приклад. Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які містять підслово 00 і закінчуються на 01.
Дана мова є перетином двох мов (0 + 1)*00(0 + 1)* і (0 + 1)*01. В прикладі 2.8 ми побудували добуток автоматів, який розпізнає об'єднання заданих двох мов. Тут ми розглянемо той самий добуток ДСА, в якому лише поміняємо множину кінцевих станів, поклавши Р = Р1 х Р2. Граф шуканого автомата такий же як і автомата з прикладу 2.8 з тією різницею, що множина Р кінцевих станів містить тільки стан (д2,д2).
Приклад. Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які містять підслово 00 і не закінчуються на 01 .
Дана мова є різницею мови (0 + 1)*00(0 + 1)* і мови (0 + 1)*01. Тому ми можемо використати той самий добуток автоматів, що і в прикладах 2.8 та 2.9, включивши в множину кінцевих станів ті пари, перша компонента яких є кінцевим станом першого ДСА, а друга компонента не є кінцевим станом другого автомата, тобто поклавши Р = Р1 х (^2 \ Р2). Граф шуканого автомата такий же як і автомата з прикладу 2.8 з тією різницею, що множина Р кінцевих станів містить стани (д2 ,д0) і (д2 ,Я1).
Частковим випадком різниці формальних мов є доповнення: Ь = X* \ Р. В цьому випадку використовуємо наступну конструкцію. Відмітимо, що в ДСА X, до, Р) вхідне слово ш Є Р(А) тоді і тільки тоді, коли , ш) Є Р. Рівносильно ш Є Р(А), тоді і лише тоді, коли £(д0, ш) Є Р. Звідси випливає, що ДСА (^,Х, д0, ^ \ Р) розпізнає доповнення мови Р(А).
Таким чином, ми довели наступну теорему.
2.11. теорема. Клас формальних мов, які розпізнаються детермінованими скінченними автоматами, замкнений відносно скінченних об'єднань, перетинів, доповнення, різниці і симетричної різниці.
Вправи до лекції 2.
2.1. Визначити, який з бітових рядків
а) 1110,
б) 101010,
в) 110001010010,
г) 000000000111,
розпізнається детермінованим скінченним автоматом без виходу А, що заданий графом:
0
і
Серед слів регулярної мови (10)* визначити ті, які належать мові Р(А) ДСА без виходу А з попереднього прикладу.
Нехай т, ^ Є N. Розглянемо ДСА без виходу Ат,^ = X, д0, Р), де Я = {Я0, Яі,..., Ят-і}, X = {0,1,..., ^ - 1}, Р = {ді} і , к) = ^{а,і+к)тоа т. Побудуват граф автомата А7,2 і визначити, який з бітових рядків розпізнається ДСА:
а) 0101,
б) 11010,
в) 1101101010,
г) 11110000.
2.4. Знайти мову, що розпізнається ДСА без виходу: а)
^(оо)-^ (дз
і
о
і
б)
о,і і
нНЯо) ©
і
в
нИЯо
нИЯі
о
о,і
нИЯо
/-к о М і
о
і
о
і ^ і /
о о,і о,і
а) {0,1};
б) {10,101};
в) {0П | п = 2,3,...};
г) {0П 1т | п,т Є М}.
Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які містять підслово 100101.
Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які мають префікс 010.
-ЧЯо
Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які закінчуються на 101.
Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які починаються на 010 або закінчуються на 101.
Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті X = {0,1}, які містять підслово 11 і не закінчуються на 101.
Побудувати ДСА, який розпізнає всі слова в бінарному алфавіті 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(д, а) = {р1 ,р2,... ,рк}, то ми відкладаємо к стрілок з вершини д до кожної з вершин р1 ,р2,... ,рк і всі стрілки помічені буквою а. Наприклад, граф розглянутого вище автомата А1 має вигляд (вважаємо, що Р = {д2}):
110
е
На вхідному слові ш НСА може мати більше ніж один обчислювальний шлях. Наприклад, для вхідного слова ш = 01 існує три обчислювальні шляхи:
е 0 е 1 40 ^ 41 ^ 42 ^ 41 ^ 41,
е 0 е 1 40 ^ 41 ^ 42 ^ 41 ^ 42,
40 —41 —42 —41 —42 —41.
В загальному випадку, обчислювальні шляхи для вхідного слова ш утворюють дерево виводу, оскільки всі вони виходять з однієї і тієї ж вершини д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) = {д1 ,д2} і 5({^1 ,д2}, 1) = {#1 ,Я2}. Таким чином, 5({#0},01) = {д1 ,д2}. Відмітимо, що 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 як ми це робили для ДСА. Справді, достатньо просто покласти 5(д1, 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
Використаємо е-переходи щоб об'єднати три простіших НСА в один. В результаті отримаємо:
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 ,Х, 51 ,д0 ,Р1). Побудуємо автомат А, додавши новий початковий стан 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.
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}*.
Граф еквівалентного до НСА ДСА має вигляд:
о