- •2.3. Арифметичні операції в різних системах числення.
- •3.8. Розв'язати системи рівнянь з регулярними коефіцієнтами.
- •Має два виводи
- •1.4. Скінченний автомат а заданий графом:
- •4.2. Приклад. Побудувати дса, еквівалентний до нса
- •Лекція 5. Скінченні автомати і регулярні мови. Лема про роздування.
- •6.3. Приклад. Побудувати мп-автомат, який розпізнає мову
- •(Д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (р, Ьа, Ьа) ь (р, а, а) ь (р, е, е); (д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (д, а, ьЬа) ь (р, а, ьЬа);
- •Зліва записуються всі стани, крім кінцевого ду, з множини станів
- •Проаналізуйте роботу мт на наступних вхідних словах:
- •3.7. Приклад. Побудуємо машину Тюрінґа, яка переводить натуральні числа з унарної системи числення в десяткову.
- •Лекція 4. Частково рекурсивні та примітивно рекурсивні функції
- •Приклад. Застосувати кожну з підстановок з попереднього прикладу до слова аЬЬасЬа максимальну можливу кількісить разів.
- •5.3. Приклад. Застосувати кожен з нам
- •8.7. Оцінити часову та ємнісну складність мт, заданої графом:
Має два виводи
іґ 6 іЬеп (іґ 6 іЬеп а) еІзе а та
іґ 6 іЬеп (іґ 6 іЬеп а еІзе а), яким відповідають два різних дерева виведення.
Визначена нами неоднозначність - це властивість граматики, а не мови. Для деяких неоднозначних граматик можна побудувати рівносильні їм однозначні граматики.
Приклад. Розглянемо граматику і мову з попереднього прикладу. Граматика О неоднозначна, бо еІзе можна асоціювати з двома різними іЬеп. З тієї ж причини мови програмування, в яких дозволяються як оператори виду іґ — іЬеп, так і оператори виду
ІГ — іЬеп — еІ8в, можуть бути неоднозначними. Невизначеність можна виправити, якщо домовитися, що еІзе повинно асоціюватися з останнім з записаних перед ним іЬеп.
Можна поправити граматику з попереднього прикладу, ввівши два нетермінали 81 і 82 і вимагаючи, щоб 82 породжував оператори виду ІГ — іЬеп — еІ8е, тоді як 81 може породжувати оператори обох видів. Продукції нової граматики є такими:
81 ^ ІГ 6 іЬеп 81 | ІГ 6 іЬеп 82 еІзе 81 | а
82 ^ ІГ 6 іЬеп 82 еІзе 82 | а.
Той факт, що перед буквою еІзе знаходиться тільки 82, гарантує появу всередині конструкції іЬеп — еІзе або букви а, або іншого еІзе. Таким чином, структура ІГ 6 іЬеп (ІГ 6 іЬеп а) еІзе а не виникає.
Вправи до лекції 4.
Нехай N = {8, А, В}, Т = {а, 6}. Визначити мову, породжену граматикою О = (^ Т, 8, Р) з вказаною множиною продукцій Р:
а) Р = {8 ^ АВ | аА, А ^ а, В ^ 6а};
б) Р = {8 ^ АВ | АА, А ^ аВ | а6, В ^ 6};
в) Р = {8 ^ АА | В, А ^ ааА | аа, В ^ 6В | 6};
г) Р = {8 ^ а8 | 86 | а};
д) Р = {8 ^ 88 | а | 6};
е) Р = {8 ^ 88 | а86 | е}; є) Р = {8 ^ е | а8 | а868};
ж) Р = {е | а868 | 68а8}.
Нехай задана граматика О = (^ Т, 8, Р), де N = {8, А}, Т = {0, 1}, множина продукцій
Р = {8 ^ 08 | 1А | 1 | е, А ^ 1А | 1}.
а) Побудувати вивід для слова 0316;
б) Показати, що дана граматика породжує мову {0т 1п | т,п = 0,1, 2,...}.
Довести, що жодне слово мови £(О) не містить підслова 6а, де контекстно-вільна граматика О задана продукціями:
8 ^ а8 | 6А | а, А ^ 6А | 6.
Показати, що кожне слово мови £(С) містить більше букв а ніж букв Ь, де контекстно-вільна граматика С задана продукціями:
5 ^ 5а | Ь55 | 55Ь | 5Ь5 | а.
Показати, що наступна граматика не породжує мову
{ш Є {0,1}* | ш містить одинакову кількість букв 0 та 1 } : 5 ^ 051 | 015 | 150 | 105 | 501 | 510 | е.
Довести, що наступна граматика породжує мову
{ш Є {0,1}* | ш містить одинакову кількість букв 0 та 1 } :
5 ^ 55 | 051 | 150 | е.
З'ясувати до яких типів за класифікацією Хомскі належить граматика С з множиною продукцій Р.
а) Р = {5 ^ 5АВ, 5А ^ а, В ^ Ь};
б) Р = {5 ^ АВ5, АВ ^ аЬ, 5 ^ с};
в) Р = {5 ^ аАВ, А ^ ВЬ, В ^ е};
г) Р = {5 ^ аА, А ^ ЬВ, В ^ Ь | е};
д) Р = {5 ^ А, А ^ В, В ^ е}.
Побудувати граматики з фразовою структурою, які породжують вказані мови:
а) {012п | п = 0,1,...};
б) {0зп 1П} | п = 0,1,...};
в) {0П 1т0П | т,п = 0,1,...}.
Нехай С - граматика з N = {5}, Т = {а, Ь, с}, початковий символ 5 і множина продукцій
Р = {5 ^ аЬ5 | Ьс5 | ЬЬ5 | а | сЬ}.
Побудувати дерево виводу для слів:
а) ЬЬЬсЬЬа
б) ЬсаЬЬЬЬЬсЬ.
Розділ II
Скінченні автомати
Лекція 1. Автомати. їх типи та задання
Існує багато різноманітних методів перетворення інформації. Для їх опису потрібна формальна мова. Така мова розробляється в теорії алгоритмів і теорії інформації. Стосовно перетворювачів інформації алгоритм можна інтуїтивно визначити як деяку сукупність правил, за якими даний пристрій перетворює вхідну інформацію у вихідну.
Щоб перейти до формальних методів опису процесу перетворення інформації з допомогою автоматів, розглянемо деякий пристрій, який має п входів і т виходів. Будемо вважати, що на входи інформація подається в дискретні моменти часу і0, І1,..., іп. Інтервал часу іі+1 — іі називається тактом. Аналогічно і з виходів інформація одержується дискретно в часі. На кожному із входів (виходів) сигнал може приймати дискретні значення з деякого набору п0, п1,..., пд-1. Сукупність значень вхідних сигналів в момент часу іі називатимемо вхідною буквою, а послідовність вхідних букв - вхідним словом. Множину всіх вхідних букв назвемо вхідним алфавітом. Аналогічні означення відносяться і до вихідних сигналів.
Давши це означення, можна уявляти будь-який перетворювач інформації як пристрій з одним входом, на який надходять слова, складені з букв вхідного алфавіту, і з одним виходом, на якому одержуються слова в вихідному алфавіті. Процес перетворення інформації в такому пристрої зводиться до встановлення деякої відповідності між словами вхідного та вихідного алфавітів.
Автоматом називають перетворювач алфавітної інформації, який має один вхід і один вихід. Для задання умов функціонування автомата фіксуються три множини, елементами яких є букви трьох алфавтів: вхідного X = {х1, ...,хт}, вихідного У = {у1 ,...,уі} і множина внутрішніх станів автомата ^ = {д0,..., дп}.
Автомат складається з трьох частин - стрічки, головки і керуючого пристрою. Стрічка використовується для запису вхідних даних (вхідного слова). Вона поділена на скінченну кількість комірок.
Головка переглядає стрічку, читає букву з неї і передає одержану інформацію керуючому пристрою. Кожного разу головка переглядає тільки одну комірку стрічки, читає записану в ній букву і переходить до наступної комірки праворуч. Керуючий пристрій складається з станів з множини станів
Автомат функціонує в дискретні моменти часу, які прийнято позначати цілими невід'ємними числами і = 0,1,... ,к. В початковий момент часу і = 0 керуючий пристрій завжди знаходиться в початковому стані = #(0), в якому автомат починає роботу над вхідним словом. Потім, за активним станом і зчитаною головкою буквою, він визначає в який стан потрібно перейти і яку букву треба написати на місці прочитаної вхідної букви. На згаданих вище множинах задаються дві функції: функція переходів 5, яка визначає стан автомата д(і +1) Є ^ в момент часу і +1 в залежності від стану автомата д(і) Є ^ і значення вхідного сигналу х(і) Є X в момент часу і: д(і + 1) = 5(д(і), х(і)). Більш строго, зміна станів визначається за допомогою функції двох змінних 5 : ^ х X ^ Функція виходів / : ^ х X ^ У визначає значення вихідного сигналу у (і) Є У в залежності від стану автомата д(і) Є ^ і значення вхідного сигналу х(і) Є X в момент часу і. Таким чином, якщо керуючий пристрій перебуває в стані д Є ^ і головка зчитує з стрічки букву а Є X, то керуючий пристрій переходить в новий стан р = 5(д,а) і на місці букви а записується буква Ь = /(д, а).
Коли на вхід автомата подавати слово (послідовність вхідних символів), на виході також з'являється слово (послідовність вихідних символів). У цьому випадку автомат А можна розглядати як алфавітний перетворювач інформації, який перетворює слова вільної напівгрупи Р(X) в слова вільної напівгрупи Р(У).
Для повного опису автомата, нам потрібно виділити множину Р С ^ кінцевих станів, в яких він підтверджує, що вхідне слово належить шуканій мові. Таким чином, ми приходимо до такого визначення автомата.
Семірка А = ^^,У,5, /,д0,Р) називається автоматом Мілі, якщо вона складається із множини станів автомата Ц, множини вхідних символів X, множини вихідних символів У, функції переходів 5 : Ц х X ^ Ц, функції виходів / : ^ х X ^ У, початкового стану д0 та множини кінцевих станів Р. Множини X і У називають відповідно вхідним і вихідним алфавітами автомата. Якщо 5(а,х) = о!, то кажуть, що автомат ^ під дією вхідного сигналу х Є X переходить в стан а/, або сигнал х переводить автомат ^ із стану а в стан а/. Якщо, /(а, х) = у, то кажуть, що автомат ^ перетворює в стані а вхідний сигнал х Є X у вихідний сигнал у Є У.
Автомат А = ^^,У,5, /,д0,Р) називається скінченним, якщо всі три множини - Ц, X і У - скінченні, і нескінченним, якщо хоч одна з них нескінченна.
Автомат називається повним або повністю визначеним, якщо функції переходів і виходів повністю визначені, і частковим, якщо хоч одна з них часткова.
Інколи трапляються автомати, в яких компонент 5 - не функція, а деяке відношення, тобто в таких автоматах не виконується умова однозначності переходу. Автомати такого типу називаються неде- термінованими. Якщо ж відношення 5 є функцією, то автомат називається детермінованим. Отже, для детермінованого автомата ^ з початковим станом а однозначно знаходиться стан Ь, в який автомат перейде під дією слова ш Є Р(X). А в недетермінованому автоматі
таких станів може бути не один, а декілька. Ясно, що клас детермінованих автоматів є підкласом класу недетермінованих автоматів.
Крім класів детермінованих і недетермінованих автоматів, існують і інші спеціальні класи. Серед них виділяються деякі вироджені класи автоматів, в яких одна з множин X або У) одноелементна. У таких випадках розглядаються спрощені моделі автоматів. Наведемо деякі приклади.
Автомат без пам'яті - це трійка (X, У, /), де / : X ^ У. Цей автомат виконує посимвольну трансформацію символів вхідного алфавіту X в символи вихідного алфавіту У, при якому на один і той же вхідний символ х Є X він реагує одним і тим же вихідним символом у Є У. Поняття автомат без пам'яті - основне в теорії перемикальних схем, яка вивчає способи подання таких автоматів мережами із логічних елементів.
Автономний автомат - це четвірка (^,У,5,/) де 5 : ^ ^ Ц, / : ^ ^ У. Для такого автомата поданням початкового стану визначається весь подальший процес його функціонування.
Автомат без виходів, або X-автомат-це п'ятірка (^, X, 5, , Р), де Р - деяка підмножина станів автомата, елементи якої називаються кінцевими або представляючими станами, а Є ^ - початковий стан автомата.
Із перелічених класів автоматів тільки X-автомати, з точки зору теорії, викликають інтерес, оскільки в двох попередніх випадках поведінка автомата наперед визначена.
Автомати Мура є окремим випадком автоматів Мілі. Автомат А = (^, X,У,8, /) називається автоматом Мура, якщо його функція виходів /(а,х) виражається функцією переходів 5(а,х) за допомогою рівняння / (а, х) = Н(5 (а, х)), де Н : ^ ^ У .В автоматі Мура вихідний сигнал в момент часу і однозначно визначається станом автомата в той же момент часу, тобто у (і) = д(д(і)). Функція Н називається функцією відміток автомата, а її значення Н(а) на стані а - відміткою цього стану.
Хоча автомати Мура і є окремим випадком автоматів Мілі, в теорії автоматів вони заслуговують на особливу увагу, оскільки в ряді випадків їх специфічні властивості дають можливість будувати більш змістовну і глибоку теорію, ніж теорія автоматів Мілі.
Як саме працює скінченний автомат? На початку роботи, керуючий пристрій перебуває в початковому стані , на стрічні записане
вхідне слово і головка зчитує букву з першої зліва комірки. Потім атомат працює, крок за кроком, відповідно до функцій переходів 5 та виходів /. Автомат зупиняє роботу тоді, коли головка прочитає букву, записану в останній справа комірці стрічки. Коли робота автомата над вхідним словом зупинилася, то, кажуть, що автомат розпізнає вхідне слово, якщо він зупиняється в одному з кінцевих станів множини Р. В протилежному випадку, кажуть, що вхідне слово не розпізнається автоматом. Якщо ж множина Р кінцевих станів не задана, то вважається, що автомат розпізнає всі слова вхідного алфавіту. Формальна мова всіх слів вхідного алфавіту X, які розпізнаються автоматом А позначається Ь(А). В цьому випадку кажуть, що мова Ь(А) розпізнається автоматом А. Множина всіх вихідних слів автомата А, які є результатом роботи атомата на мові Ь(А), називається мовою, що породжується автоматом А.
Перейдемо до розгляду скінченних автоматів і способів їх зада-
ння.
У загальному випадку для задання скінченних автоматів користуються двома стандартними способами, які називаються універсальними - це таблиці переходів і виходів та графи переходів і виходів.
Таблиці переходів і виходів автомата - це дві матриці однакової розмірності, стовпчики яких відмічені різними символами вхідного алфавіту, а рядки - різними символами станів автомата. Для функції переходів (перша матриця) на перетині і-го рядка, відміченого відміченого станом а Є ^ і і-го стовпчика, відміченого символом х Є X, знаходиться значення 5(а,х) = Ь. Аналогічно для функції виходів (друга матриця) - на перетині і-го рядка і і-го стовпчика знаходиться значення /(а,х) = у Є У. Вважають, що початковий стан автомата відмічає перший стовпчик як в таблиці переходів, так і в таблиці виходів.
1.1. Приклад. Автомат А = ({до, , #2, Яз}, X = {а, Ь}, У = {0,1}, 5, /, ^0) задається такими таблицями переходів і виходів:
5 |
а |
Ь |
|
/ |
а |
Ь |
Яо |
Я2 |
Яі |
|
Яо |
0 |
1 |
Ці |
Яз |
Яо |
|
Яі |
0 |
1 |
Я2 |
Яо |
Яз |
|
Я2 |
0 |
1 |
Яз |
Яі |
Я2 |
|
Яз |
0 |
1 |
Наведений автомат переписує будь-яке слово в алфавіті {а, Ь} в слово в алфавіті {0,1}. Автомат А не є автоматом Мура, оскільки перебуваючи в стані д0 він замінює букву а на 0, а букву Ь - на 1.
Граф переходів і виходів скінченного автомата А є альтернативним шляхом для зображення А. Він являє собою помічений орієнтований граф, вершини якого взаємно однозначно відповідають станам автомата. Стрілки графа відмічені парами символів: перший - символом вхідного алфавіту, другий - символом вихідною алфавіту. У цьому разі відповідність між графом переходів і виходів і функціями переходу 5 і виходу / така, що коли 5(а,х) = о! і /(а,х) = у, то в графі з вершини а у вершину о! веде стрілка, відмічена парою (х/у), і навпаки, коли в графі переходів і виходів автомата існує стрілка (о,, о!), відмічена парою (х/у), то для функцій переходу 5 і виходу / виконуються рівності 5(а,х) = а/ і /(а,х) = у. Крім того, щоб підкреслити початковий стан д0, малюється стрілка без початкової вершини, кінцевою вершиною, якої є стан . Кінцевий стан позначається двома концентричними колами.
1.2. Приклад. Граф переходів і виходів для автомата з прикладу 1.1 має вигляд:
З наведеної відповідності графа автомата до його функцій переходу і виходу випливає, що не кожен граф, стрілки якого відмічені парами символів із деяких алфавітів X і У, буде являти собою граф переходів і виходів автомата. Для того щоб відмічений граф був графом детермінованого автомата, необхідно і достатньо, щоб виконувались дві умови, які називаються умовами автоматності графа.
1)не існує двох стрілок з однаковими вхідними відмітками, що виходять з однієї і тієї ж вершини (умова однозначності);
2)для будь-якої вершини і вхідного символу існує стрілка, що виходить із цієї вершини і відмічена цим вхідним символом (умова повноти).
Отже, для недетермінованих атоматів не виконується умова 1), а для часткових автоматів - умова 2). Але, незважаючи на це, таблиці переходів як недетермінованих, так і часткових автоматів теж зображують графами.
5 |
0 |
1 |
до |
Яі |
Яі |
Яі |
Яо |
Яо |
/ |
0 |
1 |
Яо |
а |
а |
Яі |
Ь |
Ь |
1.4. Приклад. Нехай X = У = {0,1}. Побудуємо детермінований скінченний автомат, який "шифрує" всі бітові рядки з 0 та 1, замінюючи всі біти, які стоять на позиціях, кратних 3, на протилежні.
Граф переходів і виходів шуканого автомата А має вигляд:
1.3. Приклад. Побудувати детермінований скінченний автомат Мура, який всі букви бінарного слова ш Є {0,1}*, які стоять на непарних позиціях замінює на букву а, а на парних - на букву Ь.Граф переходів і виходів шуканого автомата А має вигляд:
0,
і/а
0,і/Ь
Перебуваючи в стані д0, даний автомат замінює кожну букву вхідного слова на букву а, а в стані ді - на букву Ь.
Таким чином шуканий автомат А задається як шестірка
А =(£,Х,У,5,/,до),
де Я = {яо, Яі.}, X = {0,1}, У = {а, Ь}, а функції переходів 5 і виходів / задані таблицями:
Відмітимо, що якщо "зашифровану" послідовність (вихідне слово) з 0 та 1 подати на вхід цього автомата, то одержимо початкову послідовність (вхідне слово), тобто цей автомат одночасно буде й "дешифрувальним пристроєм".
Функції переходів і виходів можна поширити на вхідну і вихідну напівгрупи: Р(X) і Р(У). Для цього необхідно покласти
5(#, е) = 5(#, аш) = 5(5(д, а), ш), / е) = е, / аш) = / а)/і;5^ а) ш).
Використовуючи індукцію за довжиною слова ш, неважко довести таке співвідношення:
5(#, аш) = 5(5(д, а), ш),
/ (3,аш) = / (3,а)/(5(^,а),ш).
Дійсно, якщо ш = х, тобто 1(ш) = 1, то база індукції має місце за означенням.
Якщо ж ш = і для V співвідношення асоціативності виконується, то
5(#, аш) = 5(5(д, аV), ж) = 5(5(д, а), /(д, а^) = /(д, аш)/(5(д, аV), ж) =
= / а)/(5(^ а), а)/(5(^ ^^ ж) = / а)/(5(^ а),
Домовимося надалі вважати, що автомат А переходить із стану р в стан д під дією слова ш, або що слово ш переводить автомат А із стану р в стан д, якщо 5(р, ш) = д.
Стан д називається досяжним із стану р (р ^ д), коли існує таке вхідне слово ш, яке переводить автомат А із стану р в стан д. Для того щоб встановити досяжність д з р, достатньо в графі переходів і виходів знайти шлях із вершини р в вершину д. Очевидно, що коли такий шлях існує, то послідовність перших компонентів відміток стрілок цього шляху і буде складати слово ш.
Зауважимо, що для встановлення досяжності д з р достатньо розглядати лише такі шляхи в графі автомата (вони називаються простими), які не проходять двічі через одну і ту ж вершину графа. Це зауваження дає можливість обмежити пошук необхідного вхідного слова лише такими словами, довжина яких не перевищує загального числа станів автомата. Ясно, що у випадку скінченних автоматів перевірка істинності відношення р ^ д завжди можлива.
Вправи до лекції 1.
1.1. Побудувати граф скінченного автомата А = (^, X,У, 5, /, д0), де Я = {до, Яі ,Я2}, X = {0,1, 2}, У = {а,Ь,с}, а функції переходів 5 і виходів / задані таблицями:
5 |
0 |
1 |
2 |
Яо |
Яі |
Яі |
32 |
Яі |
Яі |
42 |
Яо |
Я2 |
Яі |
Яо |
Я2 |
/ |
0 |
1 |
2 |
Яо |
а |
Ь |
а |
Яі |
Ь |
с |
Ь |
Я2 |
с |
а |
Ь |
Визначте в яке слово перетворює А кожне з наступних вхідних слів:
а) 012; в) 100000;
б) 001022; г) 000111222.
/ |
00 |
01 |
10 |
11 |
Яо |
0 |
1 |
1 |
0 |
Яі |
1 |
0 |
0 |
1 |
5 |
00 |
01 |
10 |
11 |
Яо |
Яо |
Яо |
Яо |
Яі |
Яі |
Яо |
Яі |
Яі |
Яі |
В чому полягає робота даного автомата?
1.2. Побудувати граф скінченного автомата А = (Я^^У^, /,д0), де Я = {ц0, Ц1}, X = {00, 01,10,11}, У = {0,1}, а функції переходів 5 і виходів / задані таблицями:
1.3. В чому полягає робота автомата А = (^, X,У, 5, /, д0), де ^ = {д0, д1}, X = {0,1, *}, У = {0,1, +, —}, а функції переходів 5 і виходів / задані таблицями:
5 |
0 |
1 |
* |
Я0 |
Я0 |
Я1 |
Я0 |
41 |
41 |
Я0 |
Я0 |
/ |
0 |
1 |
* |
Я0 |
0 |
1 |
+ |
41 |
0 |
1 |
— |
?
Задати його як шестірку А = ^^,У,5, /,д0) і з'ясувати у чому полягає робота автомата.