Лаб3

You might also like

You are on page 1of 11

Лабораторна робота №3

СКІНЧЕННИЙ АВТОМАТ З ВИХОДОМ.

Мета роботи: ознайомитись зі скінченними автоматами з виходом як


способом представлення та розпізнавання формальних мов.

Теоретичні відомості
Скінченним автоматом з виходом називають систему
M = (S , I , O, f , g , s 0 ) , яка складається з:
▪ скінченної множини станів S ;
▪ скінченного вхідного алфавіту I ;
▪ скінченного вихідного алфавіту O ;
▪ функції переходів f : S  I → S ;
▪ функції виходів g : S  I → O ;
▪ початкового стану s 0 .
Елементи вхідного алфавіту називають вхідними символами, або входами, а
вихідного – вихідними символами, або виходами. Рівність f(si, x)=sj означає, що в
разі входу x автомат, який перебуває у стані si, переходить у стан sj, а рівність
g(si, x)=y, – що в цьому разі на виході з’являється y; тут si, sjS, xI, yO.
Скінченний автомат з виходом може бути заданий двома способами:
1. За допомогою таблиці станів, яка містить значення функції переходів
f та функції виходів g для всіх пар (s, i ) , де s  S , i  I .
2. За допомогою діаграми станів, яка є орієнтованим графом з
поміченими дугами. Кожна вершина графа відповідає стану. Дуга позначається
вхідним і вихідним сигналами, які відповідають заданому цією дугою переходу
з одного стану в інший, якщо f(si, x) = sj та g(si, x) = y (тут xI, yO), то з вершини
si у вершину sj веде дуга з позначкою x, y.
Розглянемо скінченний автомат з виходом M. Кожному вхідному ланцюжку
 поставимо у відповідність вихідний ланцюжок . Нехай вхідний ланцюжок 
= x1x2xk. Тоді під час читання цього ланцюжка автомат спочатку переходить зі
стану s0 у стан s1, де s1 = f(s0, x1), потім у стан s2, де s2 = f(s1, x2), і цей процес
триває до досягнення стану sk = f(sk–1, xk). Зазначимо, що тут xk – останній символ
вхідного ланцюжка. Ця послідовність переходів у нові стани формує вихідний
ланцюжок  = y1y2...yk, де y1 = g(s0, x1) – вихідний символ, який відповідає
переходу з s0 в s1, y2 = g(s1, x2) – вихідний символ, що відповідає переходу з s1 в
s2, і так до отримання вихідного символа yk = g(sk–1, xk). Загалом yj = g(sj–1, xj) для
j = 1, 2, …, k.
Відповідність, яка відображає вхідні ланцюжки у вихідні, називають
автоматним відображенням, а також автоматною (або обмежено
детермінованою) функцією, яка реалізується автоматом M . Якщо результат
застосування цього відображення до ланцюжка  – вихідний ланцюжок , то це
позначають M()=. Кількість символів у ланцюжку , як завжди, називають
довжиною  та позначають  чи l().
Автоматне відображення має дві властивості.
1. Ланцюжки  та  = M() мають однакову довжину: = (властивість
збереження довжини).
2. Якщо =12 і M(12)=12, де 1=1, то M(1)=1, тобто образ
відрізка довжиною l дорівнює відрізку образу з такою самою довжиною.
Властивість 2 означає, що автоматні відображення – це відображення без
випередження, тобто такі, котрі, переробляючи ланцюжок зліва направо, „не
підглядають уперед”: i-та літера вихідного ланцюжка залежить тільки від
перших i літер вхідного ланцюжка. Приклад відображення з випередженням –
те, яке ланцюжку =x1x2...xk ставить у відповідність ланцюжок  = xk...x2x1;
перша літера вихідного ланцюжка тут дорівнює останній літері вхідного
ланцюжка. Зазначимо, що ці дві властивості – це не достатні умови автоматності
відображення: існують відображення, які задовольняють умови 1 і 2, але не
реалізуються у скінченному автоматі. Розглянемо деякі корисні приклади
скінченних автоматів. Ці приклади свідчать, що стани скінченного автомата
дають змогу використовувати їх як скінченну пам’ять. Стани можна
використовувати для запам’ятовування ситуацій або символів, які читає автомат.
Проте через скінченну множину станів скінченні автомати не можна
використовувати в деяких важливих застосуваннях.
Автомати, які ми розглянули, називаються автоматами Мілі (G.H. Mealy).
Вперше введені у 1955 році.
Існує також інший тип автоматів з виходом, так звані автомати Мура (E.F.
Moore), які запроваджені у 1956 році. У цих автоматах вихід визначається лише
станом, тобто не залежить від вхідного сигналу.
Автомат Мілі може бути використаний для розпізнавання мови. Проте з
цією метою звичайно використовують інший тип автоматів – скінченні автомати
без виходу. Такі автомати мають множину кінцевих станів і розпізнають
ланцюжок тоді і тільки тоді, коли цей ланцюжок переводить автомат без виходу
із початкового стану у кінцевий стан.

Приклади розв’язування задач

Приклад 3.1. Задати графічно та таблично довільний скінченний автомат з


виходом. Автомат повинен мати 4 стани, вхідний та вихідний алфавіт –
І=О={0,1}.

Розв’язування. Побудуємо таблицю станів для автомата з алфавітом


І=О={0,1} і множиною станів S={s0, s1, s2, s3}
Таблиця 3.1
Таблиця станів автомата
Стан f g
вхід вхід
0 1 0 1
s0 s1 s0 1 0
s1 s3 s0 1 1
s2 s1 s2 0 1
s3 s2 s1 0 0

Представимо той самий автомат з допомогою діаграми станів, яка є


орієнтованим графом з поміченими дугами. У вершинах графа записуємо стани
s0, s1, s2, s3. Кожна дуга позначається вхідним і вихідним елементом, які
відповідають заданому цією дугою переходу з одного стану в інший.

1,0 0,1 s1 1,0

Початок
s0 1,1 0,1 s3
0,0

s2 0,0

1,1
Рис. 3.1. Діаграма станів для автомата, заданого табл. 3.1

Приклад 3.2. Знайдемо вихідний ланцюжок, який видає скінченний автомат,


діаграму якого зображено на рис. 1, якщо вхідний ланцюжок – 101001.
Розв’язування. За допомогою діаграми станів виписуємо послідовності
станів і вихідних символів, їх наведено в табл. 2. Отже, автомат видає на виході
ланцюжок 011110.

Таблиця 3.2
Послідовності станів і вихідних символів
Вхід 1 0 1 0 0 1
Стан s0 s0 s1 s0 s1 s3
Вихід 0 1 1 1 1 0
Новий стан s0 s1 s0 s1 s3 s1

Приклад 3.3. Важливий елемент багатьох пристроїв – автомат одиничної


затримки. Він видає на виході вхідний ланцюжок, затриманий на одиницю часу.
Отже, якщо на вході подано двійковий ланцюжок x1x2...xk, то на виході буде
ланцюжок 0x1x2...xk–1.
Розв’язування. У такого автомата має бути два вхідні символи (нехай 0 і 1) і
він має „пам’ятати”, який із двох символів 0 або 1 був на вході у попередній
момент. Отже, крім початкового стану s0, потрібні ще два стани: нехай автомат
перебуває у стані s1, якщо попереднім вхідним символом була 1, і у стані s2 –
якщо 0. На виході у початковому стані завжди 0 незалежно від входу. Кожний
перехід зі стану s1 дає на виході 1, а зі стану s2 – 0. Діаграму станів цього автомата
зображено на рис. 3.2

Рис. 3.2 Діаграма станів автомата з прикладу 3.3

Приклад 3.4. Побудувати скінченний автомат для додавання двох цілих


додатних чисел у двійковій системі.
Розв’язування. Нехай додаємо числа (xnx1x0)2 та (yny1y0)2. Спочатку
додаємо розряди x0 та y0, отримаємо розряд суми z0 та біт перенесення c1, який
дорівнює 0 чи 1. Потім додаємо розряди x1 та y1 і біт перенесення c1. Одержимо
розряд суми z1 і біт перенесення c2. Процедуру продовжуємо до стадії
підсумовування розрядів xn, yn і попереднього біта перенесення cn; отримаємо
розряд суми zn і біт перенесення cn+1, який дорівнює розряду суми zn+1.
Вхідний алфавіт складається з чотирьох символів: I = 00, 01, 10, 11. Це
необхідно для зображення можливих значень x i та y i – значень i -го розряду
обох доданків. Вихідний алфавіт: O = 0, 1. Множина станів S = s0 , s1 . Стан s0
відповідає відсутності переносу з попереднього розряду, цей же стан
початковий. Стан s1 відповідає наявності 1 переносу з попереднього розряду.
Розв’язок подано у табл. 3.3 і на рис. 3.3.

01,1 01,0
11,0
Початок
s0 s1
00,1
00,0 11,1
10,1 10,0
Рис. 3.3. Діаграма станів автомата з прикладу 3.4
Таблиця 3.3
Таблиця станів автомата
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

Приклад 3.5. Побудувати скінченний автомат, який видає на виході 1 тоді і


тільки тоді, коли на вході останніми трьома символами були 1.
Розв’язування. У цього автомата має бути три стани. Початковий стан s0,
його також використовують для запам’ятовування ситуації, коли попередній
вхідний символ – 0. Стан s1 відповідає ситуації, коли попередній символ на вході
– 1, а символ перед ним – 0. Стан s2 запам’ятовує ситуацію двох поспіль вхідних
1. Отже, якщо автомат перейшов у стан s2, то на вхід подано дві 1 поспіль. Вхід
1 у стані s2 означає, що це була третя поспіль 1, і на виході з’являється 1. У всіх
інших ситуаціях на виході з’являється 0. Діаграму станів цього автомата
наведено на рис. 3.4, таблицю станів у табл. 3.4.
S = s0 , s1 , s2 , I = 0, 1, O = 0, 1,
1,0
Початок 1,0
s0 s1 s2
0,0 1,1
0,0
0,0
Рис. 3.4 Діаграма станів автомата з прикладу 3.5

Таблиця 3.4
Таблиця станів автомата
f g
Стан вхід вхід
0 1 0 1
s0 s0 s1 0 0
s1 s0 s2 0 0
s2 s0 s2 0 1

Автомат із останнього прикладу подає мову, оскільки він видає на виході 1


тоді й тільки тоді, коли вхідний ланцюжок (слово) має спеціальні властивості (у
цьому прикладі мова складається з ланцюжків нулів і одиниць, які закінчуються
трьома 1 поспіль).
Приклад 3.6. Побудувати скінченний автомат, який кожну четверту літеру
"о" замінить на 5
Розв’язування.
I={о, ō} , O={о, ō,5 } , S={s0, s1, s2 ,s3}
• s0 – почат. стан, відповідає ситуації, коли жодної букви о.
• s1 - відповідає ситуації, коли зчитано 1 букву «о»
• s2 - відповідає ситуації, коли зчитано 2 букви «о»
• s3 - відповідає ситуації, коли зчитано 3 букви «о»

Рис. 3.5 Діаграма станів автомата з прикладу 3.6

Приклад 3.7. Побудувати скінчений детермінований автомат, який видає на


виході A тоді, коли першим на вхід було подано рядок 9090; B – якщо вхідна
послідовність починається з 7700, Л – якщо вхідна послідовність починається з
7911 і С – у протилежному випадку
Розв’язування.
I={0,1,7,9} , O={А,В,С,Л } , S={s0, s1,s2 ,s3 , s4, s5 , s6 , s7, s8, s9, s10, s11, s12}
• s0 – почат. стан,
• s1 - відповідає ситуації, коли зчитано одну 9 ….
• s4 - відповідає ситуації, коли зчитано ланцюжок, що починається на 9090
• s6 - відповідає ситуації, коли зчитано одну 7,
• s9 - відповідає ситуації, коли зчитано ланцюжок, що починається на 7700
• s12 - відповідає ситуації, коли зчитано ланцюжок, що починається на 7911
• s5 - відповідає сит., коли не розпізнали ланцюжок
Рис. 3.6 Діаграма станів автомата з прикладу 3.7

1 Контрольні запитання
1. Дайте визначення скінченного автомата з виходом.
2. Які способи задання автомата з виходом ви знаєте?
3. Дайте визначення функції переходів
4. Дайте визначення функції виходів.

Завдання для лабораторної роботи

Перший рівень

1. Задайте графічно та таблично довільний скінченний автомат з виходом.


Автомат повинен мати 5 станів, вхідний та вихідний алфавіт – останні дві букви
вашого імені. Інші параметри задати на власний розсуд.

2. Побудувати скінчений детермінований автомат, який видає на виході


повідомлення про помилку, якщо хоча б одну літеру вашого імені було подано
невірно. У випадку зчитування неправильної букви на виході потрібно записати
номер невірно вказаної літери. Автомат задати з допомогою діаграми станів та
таблиці станів.

Другий рівень
3. Задано тип ідентифікатора – це ланцюжок довжини 6, який може
складатися з цифр, великих або малих літер українського алфавіту. Побудувати
скінченний автомат з виходом, що розпізнає ланцюжок заданого типу, і лише
його, з певними обмеженнями (вказані як номер завдання). Автомат задати з
допомогою діаграми станів та таблиці станів.
1. 1, 5, 6 символ – приголосна.
2. 1-й і 3-й символи – великі не голосні.
3. Починається з букви і закінчується цифрою.
4. Закінчується не великою літерою.
5. Непарні символи – букви.
6. 4-й, 6-й символ – цифра або велика голосна.
7. Останній та передостанній символ – не маленька літера і не цифра.
8. 1, 2, 6 символ – голосна або цифра
9. Всі, крім останніх двох символів – не цифри.
10. Всі парні символи – маленькі літери або цифри.
11. 1-й, 2-й, 5-й символ – цифри.
12. Парні символи – великі літери або цифри.
13. 1-й символ – велика літера, 6-й – цифра.
14. 1-й, 2-й, 3-й символи – цифри або малі приголосні.
15. Перший і останній символ – не приголосна.
16. Останні 3 символи – не цифри.
17. Перший символ – велика літера, всі інші – цифри.
18. Всі символи – великі літери або цифри.
19. У послідовності заборонено використовувати малі літери.
20. Всі символи – малі або великі приголосні.
21. Два перших символи – 38.
22. Останні 2 символи – А або М
23. Другий символ – велика літера, 1–й – цифра або маленька літера.
24. Перший символ – голосна, два останніх – цифри.
25. Символи з парними номерами – цифри.
26. Перший та останній символ – не цифри.
27. Третій символ – не А, останній не В.
28. Перших два символи – не 09.

4. Побудувати скінченний автомат з виходом, що реалізує такі схеми


шифрування інформації:
1. Кожну приголосну літеру замінити на .
2. Кожну другу літеру замінити на .
3. Кожну третю літеру замінити на .
4. У кожному другому слові приголосні замінити на @.
5. Кожну непарну приголосну замінити на .
6. Кожну третю літеру "а" замінити на "xyz".
7.Кожну голосну літеру замінити на .
8.Кожну приголосну літеру замінити на .
9. Кожну другу голосну замінити на .
10.Кожну другу приголосну замінити на .
11.Кожну третю приголосну замінити на .
12.Кожну цифру замінити на Ц.
13.Кожну другу літеру "о" замінити на **.
14.У кожному другому слові всі символи замінити на .
15. У кожному третьому слові символи замінити на ⊥.
16. Кожну четверту голосну замінити на #.
17. Після кожної другої літери вставити $.
18. У кожному третьому слові голосні замінити на символ &.
19. Після кожної другої літери вставити послідовність %%.
20. Усі голосні замінити на .
21. Кожну парну приголосну замінити на .
22. Кожну цифру замінити її літереним еквівалентом.
23. Кожну другу літеру "к" замінити на 45.
24. Після кожної другої цифри вставити послідовність ##.
25. Після кожної великої літери вставити %.
26. Після літеросполучення "на" вставити "під".
27. Префікс "пере" замінити на "недо".
28. Після подвоєння літер вставляти знак оклику.

Третій рівень

5. Побудувати детермінований скінченний автомат з виходом. Задати його


діаграмою станів і таблицею.

1. Побудувати скінчений детермінований автомат, який видає на виході


одиницю тоді, коли першим на вхід було подано рядок 2210; двійку – якщо
вхідна послідовність починається з двох одиниць підряд і нуль – у протилежному
випадку.
2. Побудувати скінчений детермінований автомат, який видає на виході
одиницю тоді, коли першим на вхід було подано рядок 1010; двійку, якщо
першим на вхід було подано рядок 0010; нуль – у протилежному випадку.
3. Побудувати скінчений детермінований автомат, який видає на виході
одиницю тоді, коли першим на вхід було подано рядок 38067; двійку, якщо
першим на вхід було подано рядок 38050; нуль – у протилежному випадку.
4. Побудувати скінчений детермінований автомат, який видає на виході
одиницю тоді, коли першим на вхід було подано рядок 02121; двійку – якщо
вхідна послідовність починається з трьох нулів підряд і нуль – у протилежному
випадку.
5.Побудувати скінченний автомат з вхідним і вихідним алфавітами {0, 1}.
Автомат видає на виході 1, якщо на вхід подано підряд 4 або більше одиниць і
видає 0 у протилежному випадку.
6. Побудувати скінчений детермінований автомат, що реалізує набирання
п’ятизначного телефонного номера.
7. Побудувати скінченний автомат для додавання двох цілих додатних чисел
у трійковій системі. Продемонструвати роботу кількома прикладами.
8. Побудувати скінченний автомат з виходом, у якого вхідний алфавіт {0, 1,
Q} і вихідний {0, 1, P, N}. Вихідна послідовність з 0 та 1 збігається з вхідною, а
на кожний символ запиту Q друкується P - якщо кількість 1 від початку роботи
парна, і N - якщо непарна.
9. Побудувати скінченний автомат для реалізації процедури входу в
систему. Користувач вводить ідентифікаційний номер, а потім – на відповідний
запит – пароль. Якщо ідентифікаційний номер або пароль некоректні, то
видається запит ідентифікаційного номера користувача. Ідентифікаційний номер
і пароль вважати одиночними символами.
10. Побудувати скінчений детермінований автомат, що реалізує перетин
кордону, коли наявність візи перевіряють на виїзді з країни-відправника і на
в’їзді в іншу країну. Врахувати, що повернення в країну-відправника
відбувається при порушеннях, виявлених у будь-який момент перевірки.
11. Побудувати скінчений детермінований автомат, що реалізує принципи
спортивного орієнтування: гравець робить позначки на чотирьох КПП, причому
відмітка не ставиться, якщо гравець не має відмітки з попереднього пункту
12. Побудувати скінчений детермінований автомат, який видає на виході
одиницю тоді, коли першим на вхід було подано рядок 125; двійку, якщо вхідна
послідовність починається з рядка 101; нуль, якщо першими на вхід подано дві
четвірки поспіль і три - в протил. випадку
13. Побудувати скінчений детермінований автомат, який видає на виході
повідомлення про помилку, якщо з’являється послідовність «2021».
14. Побудувати скінчений детермінований автомат, що реалізує принципи
переведення з курсу на курс в університеті. якщо студент успішно склав іспити
за попередній рік, його переводять на наступний курс. Якщо іспити не складено,
студента залишають на другий рік. Після успішного завершення останнього
курсу студент отримує диплом.
15. Побудувати скінчений детермінований автомат, що реалізує процес
виробництва ялинкових прикрас: при відсутності необхідних деталей
виробництво призупиняється до надходження сировини.
16. Побудувати скінчений детермінований автомат, який видає на виході
одиницю тоді, коли першим на вхід було подано рядок іменник, а другим –
дієслово.
17. Побудувати скінчений детермінований автомат, що реалізує процес
здавання лабораторної роботи: щоб отримати максимальний бал за роботу,
необхідно врахувати наявність усіх завдань, правильність виконання,
акуратність реалізації та підготовку студента. Якщо один з аспектів не
виконується, здавання роботи призупиняється до його виконання.
18. Побудувати скінчений детермінований автомат, який видає на виході
повідомлення «Іменник» тоді, коли на вхід було подано іменник, і повідомлення
«Не іменник» – у протилежному випадку.
19. Побудувати скінчений детермінований автомат, що реалізує процес
виробництва дверей: при відсутності необхідних деталей виробництво
призупиняється до надходження сировини.
20. Побудувати скінчений детермінований автомат, що реалізує процес
приготування довільної страви: якщо немає відповідного інгредієнта, страва
псується.
21. Побудувати скінчений детермінований автомат, що реалізує алгоритм
підготовки до весілля: необхідно визначити щонайменше три аспекти, наявність
яких впливає на процес підготовки.
22. Побудувати скінчений детермінований автомат, який дає на виході
одиницю тоді, коли першим на вхід було подано рядок з чотирьох займенників
поспіль.
23. Побудувати скінчений детермінований автомат, що реалізує перевірку
документів для закордонної поїздки з обміну студентами: якщо наявні
український та закордонний паспорти, є віза, дозвіл ВНЗ та згода ВНЗ, що
приймає, – поїздка відбудеться. Відсутність хоча б одного з документів відміняє
подорож.
24. Побудувати скінчений детермінований автомат, що реалізує набирання
семизначного телефонного номера.
25. Побудувати скінчений детермінований автомат, вхідна послідовність
якого співпадає з вихідною, а кожну третю одиницю замінює на 3.
26. Побудувати скінчений детермінований автомат, вхідна та вихідна
послідовність якого складається з 0 і 1 і кожна друга вхідна одиниця замінюється
на 0.
27. Побудувати скінчений детермінований автомат, який видає на виході
повідомлення про помилку, якщо після слова «Program» немає пропуску.
28. Побудувати скінчений детермінований автомат, який видає на виході «І»
тоді, коли першим на вхід було подано рядок «імен», а «П» коли першим на вхід
було подано рядок «Прик» і 0 в протилеж. випадку.

You might also like