- •Розділ 7 Основи теорії кодування План викладення матеріалу
- •7.1. Алфавітне й рівномірне кодування
- •7.2. Достатні умови однозначності декодування. Властивості роздільних кодів
- •7.3. Оптимальне кодування
- •7.4. Коди, стійкі до перешкод. Коди Хемінга
- •8.2. Алгебри булевих функцій
- •8.3. Спеціальні форми зображення булевих функцій в алгебрах Буля і Жегалкіна
- •8.3.1. Диз'юнктивні нормальні форми
- •8.3.2. Кон'юнктивні нормальні форми
- •8.3.3. Поліном Жегалкіна
- •8.4. Повнота і замкненість
- •8.4.1. Функціонально повні системи
- •8.4.2. Замкнені класи
- •8.4.4. Послаблена функціональна повнота
- •8.4.5. Передповні класи
- •8.5. Мінімізація булевих функцій
- •8.5.1. Основні результати
- •8.5.2. Методи побудови скороченої днф
- •8.5.3. Побудова тупикових днф
- •8.5.4. Властивості скороченої днф
- •8.5.5.Метод карт Карно побудови мінімальних днф
- •8.6. Реалізація булевих функцій схемами з функціональних елементів
- •Комп'ютерні проекти
- •Література
- •9.2. Формальні породжувальні граматики
- •9.3. Типи граматик (ієрархія Хомські)
- •9.4. Дерева виведення
- •9.5. Форми Бекуса-Наура
- •9.6. Скінченні автомати з виходом
- •9.7. Скінченні автомати без виходу
- •9.8. Подання мов
- •Комп'ютерні проекти
- •Література
- •Розділ 10
- •План викладення матеріалу
- •10.1. Основні вимоги до алгоритмів
- •10.2. Машини Тьюрінга
- •10.3. Обчислення числових функцій на машинах Тьюрінга
9.5. Форми Бекуса-Наура
Для граматик типу 2 (контекстно вільних), окрім звичайного, є ще інший спосіб подання - форми Бекуса-Наура.
Продукції граматик типу 2 мають у лівій частині один символ (нетермінальний). Замість того, щоб виписувати окремо всі продукції, можна об'єднати в один вираз продукції з однаковими символами у лівій частині. У такому разі замість символу →у продукціях використовують символ ::=. Усі нетермінали в цьому випадку беруть у трикутні дужки . Праві частини продукцій в одному виразі відокремлюють одну від одної символом |.
Приклад 9.16. Три продукціїА→Аа, А→а та А→АВ можна зобразити таким одним виразом у формі Бекуса-Наура:
.▲
Приклад 9.17. Знайдемо продукції граматики, якщо у формі Бекуса-Наура вони записані так:
.
Р ис. 9.5
Зобразимо дерево виведення у цій граматиці для ланцюжка (х*у)+х.
Для зручності використаємо позначення Е для (це буде й початковий символ) та Vдля .Тоді правилами перетворення (продукціями граматики) будуть E→(E), Е→Е+Е, E→E*EтаE→Vз першого виразу, а такожV→х таV→у з другого виразу. Дерево виведення для ланцюжка (x*y)+xзображено на рис. 9.5.▲
9.6. Скінченні автомати з виходом
Скінченні автомати і такі тісно пов'язані з ними конструкції, як, наприклад, регулярні граматики та регулярні вирази, належать до найважливіших понять інформатики. Різні варіанти скінченних автоматів використовують для опису й аналізу технічних пристроїв, різних систем і процесів, програм і алгоритмів. На ґрунті теорії скінченних автоматів сформовано багато складних концепцій теоретичної інформатики. Теорія скінченних автоматів має чимало застосувань у технічній інформатиці і є важливою частиною теоретичної інформатики.
Розглядатимемо скінченні автомати як абстрактні моделі найпростіших пристроїв опрацювання даних. Спосіб викладення орієнтований, передусім, на теорію формальних мов.
Скінченним автоматом називають системуM=(S, I, O,f, g, s0), у якійS, І, О - скінченні множини, af:S×I→Sтаg: S×I→O- функції, визначені на декартовому добуткуS×l.МножинуSназивають множиною станів, І- вхідним алфавітом, О-вихідним алфавітом,f- функцією переходів, g-функцією виходів, виділений елементs0∈S- початковим станом.
Елементи вхідного алфавіту називають вхідними символами (входами), а вихідного - вихідними символами (виходами).
Рівністьf(si, x)=s.означає, що у разі входу х автомат, який перебуває в станіsi,переходить у стан sj,а рівністьg(si,х)=y, - щов цьому разі на виході з'являєтьсяy; тутssssi,sj∈S, х∈I, y∈О.
Оскільки функціїfтаgвизначені на скінченних множинах, то їх можна задавати таблицями. Звичайно дві таблиці зводять в одну і називають таблицею станів, або автоматною таблицею. Цятаблиця містить значення функції переходів f та функції виходів g для всіх пар (s, х), деs∈S, х ∈I.
Таблиця 9.2
-
Стан
F
G
Вхід
Вхід
0 1
0
1
s0
s1
s2
s3
s1s0
s3s0
s1s2
s2s1
1 0
1 1
0 1
0 0
Приклад 9.18. Табл. 9.2 задає функції переходів і виходів для автомата з множиною станівS={s0, s1, s2, s3}та вхідним і вихіднималфавітамиI={0,1}, O={0,1}.▲
Ще один поширений і наочний спосіб задання автоматам орієнтований мультиграф, який називають діаграмою станів. Вершини графа відповідають станам; якщоf(si, xj)=skта g(si, xj)=yr, та то із вершини si. у вершину sk веде дуга, на якій записані через кому хj та yr. Тут xj∈I,yr∈О. Кратні дуги не обов'язкові; якщо є дві кратні дуги, то їх можна замінити однією, на якій написати обидві пари вхідний символ-вихідний символ.
Приклад 9.19. Діаграму станів для автомата, заданого табл. 9.2, зображено на рис. 9.6. ▲
Рис. 9.6
Для заданого скінченного автомата М його функція виходів g може бути визначена не тільки на множині I всіх вхідних символів (букв), а й на множині I* всіх вхідних ланцюжків (слів). Нехай вхідний ланцюжокα=x1x2…хk. Тоді під час читання цього ланцюжкаавтомат спочатку переходить зі стануs0 у станs1 деs1=f(s0, x1)після цього у станs2 деs2=f(s1, x2), і цей процес триває до досягнення стануsk=f(sk-1, xk). Звернемо увагу, що тут xk-останній символ вхідного ланцюжка. Ця послідовність переходів у нові стани формує вихідний ланцюжок ω=y1y2…ykде y1=g(s0, x1) вихідним символом, який відповідає переходузs1 в s2,y2=g(s1, x2) - вихідним символом, який відповідає переходу зs1 в s2і цей процес триває до отримання вихідного символу yk=g(sk-1, xk). У загальномуyj=g(sj-1, xj)дляj=1, 2,.., k.. Отже, ми можемо розширити означення функції виходів на вхідні ланцюжки так, щоg(α)=ω, де вихідний ланцюжок со відповідає вхідному ланцюжку α.
Приклад 9.20. Знайдемо вихідний ланцюжок, який видасть скінченний автомат з рис. 9.6, якщо вхідний ланцюжок 101001.
Автомат на виході видасть ланцюжок 011110. Послідовність станів і вихідних символів наведено у табл. 9.3. ▲
Таблиця 9.3
-
Вхід
101001 -
Стан
Вихід
s0s0 s1 s0 s1 s3 s1
0 1 1 1 1 0 -
Нехай М- скінченний автомат. Кожному вхідному ланцюжку α поставимо описаним вище способом у відповідність вихідний ланцюжок ω. Цю відповідність, яка відображає вхідні ланцюжки у вихідні ланцюжки, називаютьавтоматним відображенням, а такожавтоматним (абообмежено детермінованим) оператором,який реалізується автоматом М.Іноді говорять коротко - операторМ; якщо результатом застосування цього оператора до ланцюжка α є вихідний ланцюжок ω, то це позначають М(α)=ω. Кількість символів у ланцюжку α, як завжди, називають довжиною α і позначають |α| або l(α).
Автоматне відображення має дві властивості: 1) ланцюжки α та ω=М(α)мають однакову довжину: |α|=|ω| (властивість збереження довжини); 2) якщо α =α 1α2 і M(α1 α2)=ω1ω2 де |α1|=|ω1|, то М(α1)=ω1, тобто образ відрізка довжини l дорівнює відрізку образу такої ж довжини. Властивість 2 відображає той факт, що автоматні оператори - це оператори без випередження, тобто оператори, які, переробляючи ланцюжок зліва направо, "не підглядають вперед": i-та буква вихідного ланцюжка залежить тільки від перших і букв вхідного ланцюжка. Приклад оператора з випередженням - оператор, який ланцюжку α=х1х2..хk ставить у відповідність ланцюжок хk…х2х1; перша буква вихідного ланцюжка тут дорівнює останній букві вхідного ланцюжка. Зазначимо, що ці дві властивості не є достатніми умовами автоматності відображення: існують відображення, які задовольняють умови 1та 2, але не реалізуються в скінченному автоматі.
Рис. 9.7
Розглянемо деякі корисні приклади скінченних автоматів. Ці приклади свідчать, що стани скінченного автомата дають змогу використовувати їх як скінченну пам'ять. Стани можна використовувати для запам'ятовування ситуацій або символів, якіподаються на вхід. Та оскільки є лише скінченна множина станів, то скінченні автомати не можуть бути використані у деяких важливих призначеннях.
Приклад 9.21. Важливим елементом у багатьох пристроях є автомат одиничної затримки. Він видає на виході вхідний ланцюжок, затриманий на одиницю часу. Отже, якщо на вхід подано двійковий ланцюжокx1x2..xk, то на виході буде ланцюжок0x1x2..xk-1
Такий автомат повинен мати два вхідні символи (нехай це будуть 0 та 1), початковий станs0 і пам'ятати, який з двох символів 0 або 1 був на вході у попередній момент. Отже, потрібно ще два стани: нехай автомат буде в стані s1, якщо попереднім вхідним символом була 1, і в стані s2, - якщо 0. На виході за початкового стану завжди буде 0 незалежно від входу. Кожний перехід зі стану s1дає на виході 1, а зі стану s2- 0. Діаграма станів цього автомата зображена на рис. 9.7. ▲
Приклад 9.22. Побудуємо скінченний автомат для додавання двох цілих додатних чисел у двійковій системі.
Нехай додаємо числа(хп…х1х0)2 та(уп…y1y0)2. Спочатку додаємо розряди х0 та у0, у результаті отримуємо розряд сумиz0 та біт перенесення с0. Цей біт дорівнює 0 або 1. Далі розряди х1 та у1 додаємо разом з бітом перенесення c0. Це дає розряд суми z1 і біт перенесення с1. Процедуру продовжуємо до стадії підсумовування розрядівxn, ynта попереднього біта перенесеннясп-1;отримаємо розряд сумиzп і біт перенесеннясп, який дорівнює розряду сумиzп+1.
Таблиця 9.4
Стан |
F |
g |
|||||||
Вхід |
Вихід |
||||||||
00 |
01 |
10 |
11 |
00 |
01 |
10 |
11 |
||
s0 |
s0 |
s0 |
s0 |
s1 |
0 |
1 |
1 |
0 |
|
s1 |
s0 |
s1 |
s1 |
s1 |
1 |
0 |
0 |
1 |
Рис. 9.8
Вхідний алфавіт автомата складається з чотирьох символів: I={00,01,10,11}. Це необхідно для зображення можливих значень хi та уi - значень i-го розряду обох доданків. Вихідний алфавіт: O={0,1}. Множина станівS={s0,s1}. Станs0відповідає відсутності 1 перенесення з попереднього розряду, цей же стан початковий. Стан Sjвідповідає наявності 1 перенесення з попереднього розряду. Розв'язок наведено у вигляді таблиці станів (табл. 9.4) і діаграми станів (рис. 9.8). ▲
Приклад 9.23. Побудуємо скінченний автомат, який видає на виході 1 тоді й лише тоді, коли на вході останніми трьома символами були 1.
Цей автомат повинен мати три стани. Початковий станs0, цей же стан використовують для запам'ятовування випадку, коли попередній вхідний символ 0. Стан s1відповідає випадку, коли попередній символ на вході 1, але символ перед ним - 0. Станs2запам'ятовує випадок двох поспіль вхідних 1. Отже, якщо автомат перейшов зі стануs1у станs2,то на вхід подано дві 1 поспіль. Вхід 1 у стані s2 означає, що це була третя поспіль 1, і на виході видається 1. У всіх інших випадках на виході видається 0. Діаграма станів цього автомата зображена на рис. 9.9. ▲
Автомат з прикладу 9.23 подає мову, оскільки він видає на виході 1 тоді й лише тоді, коли вхідний ланцюжок (слово) має спеціальні властивості (в цьому прикладі мова складається з ланцюжків нулів та одиниць, які закінчуються трьома 1 поспіль).
Подання мов є одним з найважливіших застосувань скінченних автоматів.
Рис. 9.9
Автомати, які ми розглянули, називають автоматами Мілі (G. Mealy).Вперше їх уведено 1955 р. Є також інший тип автоматів з виходом, так звані автомати Мура (Е. Moore), запроваджені 1956 р. У цих автоматах вихід визначається лише станом, тобто не залежить від вхідного сигналу.
У прикладі 9.23 описано, як автомат Мілі можна використати для задання мови. Проте з цією метою звичайно застосовують інший тип автоматів - скінченні автомати без виходу. Такі автомати мають множину заключних (або приймаючих) станів і допускають ланцюжок тоді й лише тоді, коли цей ланцюжок переводить автомат без виходу із початкового стану у заключний стан.