Лаб4

You might also like

You are on page 1of 10

Лабораторна робота 4.

СКІНЧЕННІ НЕДЕТЕРМІНОВНІ ТА ДЕТЕРМІНОВНІ АВТОМАТИ.

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


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

Теоретичні відомості
Одне з найважливіших застосувань скінченних автоматів – розпізнавання
(подання) мов, яке має фундаментальне значення в дослідженні й побудові
компіляторів для мов програмування. У прикладі попередньої лабораторної
описано, як скінченний автомат із виходом може розпізнати мову: він видає на
виході 1, якщо вхідний ланцюжок належить мові, і 0 – у протилежному випадку.
Проте є інший тип скінченних автоматів, спеціально призначений для
розпізнавання мов. Замість виходу ці автомати мають множину заключних
станів. Ланцюжок допускається автоматом, якщо він переводить автомат із
початкового стану в один із заключних станів.

2.1. Недетерміновані скінченні автомати (без виходу)

Скінченний автомат (без виходу, недетермінований) - це п’ятірка


M = Q, , , I , F  , де
 - скінченний вхідний алфавіт (або просто алфавіт) скінченного
автомату,
𝑄 - скінченна множина станів автомату,
 - скінченна множини команд (переходів) автомату,   Q  *  Q ,
I – скінченна множина початкових станів автомату I  Q ,
F – скінченна множина заключних або допускаючих станів F  Q . Якщо
 p, x, q   , то  p, x, q називається переходом з p в q, а слово 𝑥 ∈ 𝛴 ∗ - міткою
цього переходу.
Інколи функцію переходів представляють як команду автомату 𝑝𝑥 → 𝑞 -
автомат переходить зі стану 𝑝 в стан 𝑞 по дузі з міткою 𝑥 . Для позначення всіх
станів, в які може перейти автомат зі стану 𝑝 по дузі з міткою 𝑥 використовують
функцію 𝛿 (𝑝, 𝑥).
Скінченні автомати можна зображати у вигляді діаграм станів (іноді їх
називають діаграмами переходів). На діаграмі кожний стан позначається
кружком, а перехід - стрілкою. Стрілка з p в q, помічена словом x, показує, що
< 𝑝, 𝑥, 𝑞 > являється переходом даного скінченного автомату. Кожний
початковий стан розпізнається по вхідній в нього короткій стрілці. Кожний
заключний стан відмічається на діаграмі подвійним кружком.
Також скінченні автомати без виходу можна зображати у вигляді таблиці
станів. Вона містить значення функції переходів f для всіх пар (q, x), де qQ, x
. Початковий стан будемо позначати стрілочкою, заключний – зірочкою.
Якщо в скінченому автоматі є декілька переходів з спільним початком і
спільним кінцем, то такі переходи називаються паралельними. Іноді на діаграмі
станів скінченого автомату паралельні переходи зображуються одною стрілкою.
При цьому мітки переходів перераховують через кому.
Шлях скінченого автомату - це кортеж < 𝑞0 , 𝑑1 , 𝑞1 , 𝑑2 , … , 𝑞𝑛 > , де 𝑛 ≥
0 і 𝑑𝑖 = < 𝑞𝑖−1 , 𝑤𝑖 , 𝑞𝑖 > ∈ ∆ для кожного i. При цьому 𝑞0 – початок шляху 𝑞𝑛 -
кінець шляху, 𝑛 - довжина шляху, 𝑤1 , 𝑤2 , … , 𝑤𝑛 - мітка шляху.
Для будь-якого стану 𝑞 ∈ 𝑄 існує шлях < 𝑞 >. Його мітка – Ɛ (інколи ще
позначають λ), початок і кінець співпадають.
Шлях називається успішним, якщо його початок належить I, а кінець
належить F.
Слово w допускається скінченим автоматом M, якщо воно являється
міткою деякого успішного шляху.
Мова, що розпізнається скінченим автоматом M, - це мова L(M), яка
складається з міток усіх успішних шляхів (тобто з усіх слів, що допускаються
даним автоматом). Будемо також говорити, що автомат M розпізнає мову L(M).
Два скінченних автомати еквівалентні, якщо вони розпізнають одну і ту ж
мову.
Мова L називається автоматною, якщо існує скінченний автомат, що
розпізнає цю мову.
Кожна скінченна мова являється автоматною.
Дамо декілька важливих визначень спеціальних видів автоматів.
Автомат M = Q, , , I , F  називається всюди визначеним, якщо для
кожного стану і для кожного символу вхідного алфавіту автомату існує перехід
в інший стан, тобто з кожного стану повинні виходити дуги, позначені по черзі
всіма буквами алфавіту ( кількість таких дуг дорівнює потужності алфавіту |Σ|).
Іншими словами автомат M = Q, , , I , F  всюди визначений, якщо

∀ 𝑞 ∈ 𝑄, ∀ 𝑎 ∈ 𝛴 , 𝛿 (𝑞, 𝑎) ≠ ∅ .

На перший погляд, таке перетворення виглядає штучним і по меншій мірі


зайвим, проте воно тісно пов’язане з поняттям детермінованості автомату та
використовується для розв’язку цілого класу нетривіальних задач.
Скінченний автомат M = Q, , , I , F  називається детермінованим якщо
1. множина I містить рівно один елемент;
2. для кожного переходу  p, x, q   виконується рівність | x |= 1, тобто
мітки переходів автомату є однобуквеними;
3. автомат не містить дуг з пустими λ мітками;
4. для кожного символу a   і для довільного стану p  Q існує тільки
один стан q  Q такий що  p, a, q   , тобто перехід зі стану p в стан q по дузі з
міткою а повинен бути єдиним для кожної букви алфавіту.
Автомат є квазідетермінованим, якщо виконуються умови 1-3
детермінованості автомату, але не для кожного символу вхідного алфавіту з
кожного стану виходить одна дуга .
Скінченний автомат M = Q, , , I , F  називається квазідетермінованим,
якщо
a. множина I містить рівно один елемент;
b. для кожного переходу  p, x, q   виконується рівність | x |= 1, тобто
мітки переходів автомату є однобуквенними;
c. автомат не містить дуг з пустими λ мітками;
d. для кожного стану і для кожного символу вхідного алфавіту
автомату існує не більше ніж один перехід в інший стан, тобто

∀ 𝑞 ∈ 𝑄, ∀𝑎 ∈𝛴, |𝛿 (𝑞, 𝑎)| ≤ 1


Остання умова означає, що зі стану 𝑞 мітки дуг визначені не для кожної
букви вхідного алфавіту автомату 𝑎 .

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

Приклад 4.1. Побудувати скінченний недетермінований автомат з двома


станами і алфавітом Σ = {𝑎, 𝑏}. Автомат задати з допогою команд, діаграми станів
та таблиці станів. Навести приклад успішного шляху.
Розв’язування. Нехай Q = {q1, q2}, Σ = {𝑎, 𝑏}, I = {q1}, F = {q2},
Δ = {<q1, a, q1>, <q2, b, q1>, <q1, b, q2>, <q1, a, q2>}
Тоді < Q, Σ, ∆ ,I,F > - скінченний автомат.
Побудуємо діаграму станів наведеного скінченний автомат. У нас 2
вершини, стан q1 початковий, тому позначимо його стрілочкою, а стан q2
заключний, тому зобразимо його подвійним кругом.
𝑏

𝑏
q 𝑞2
1

a
a

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

Задамо цей автомат з допомогою таблиці станів


Таблиця 4.1
Таблиця станів
Стан а b

→q1 q1 , q2 q2

*q2 - q1

Шлях <q1, <q1,a,q2>, q2, <q2, b,q1>, q1, <q1,a,q1>, q1, <q1,b,q2>, q2 >, являється
успішним. Його мітка - abab. Довжина цього шляху - 4.

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


алфавітом Σ = {0,1}. Знайти мову даного автомата. Вказати два слова, що ним
розпізнаються, і два слова, що не належать мові автомата.
Розв’язування. Нехай Q = {S0, S1, S2, S3, S4}, Σ = {0,1}, I = {S0}, F = {S4},
Δ = {<S0, 0, S1>, <S0, 1, S4>, <S1, 1, S1>, <S1, 0, S2>, <S2, 1, S3>, <S2, 0, S4>,<S3,
0, S3>, <S3, 0, S3>,<S3, 1, S4>,<S4, 1, S4>,<S4, 0, S4>,}
Тоді < Q, Σ, ∆ ,I,F > - скінченний автомат.

1 0

1
0
0 S2 S3
S0 S1

0
1
1

S4

0,1

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

Напишемо мову автомата.


L(G)= {1x, 01n00x, 01n010m1x | n,m=0,1,…, x – дов. ланц. з 0 і 1}
Ланцюжки 000 і 101 – розпізнаються автоматом.
Ланцюжки 00 і 0111 – не розпізнаються автоматом.

Приклад 4.3. Дано автомат 𝑀 = 〈𝑄, 𝛴, ∆, 𝐼, 𝐹 〉, де Q = {1,2}, 𝛴 = {𝑎, 𝑏}, I =


{1}, F = {2}, ∆ = { 〈1, 𝑎, 2〉, 〈2, 𝑏, 1〉}. Знайти мову автомата. Зобразити автомат з
допомогою діаграми станів та таблиці станів.
Розв’язування. Побудуємо діаграму станів
a
1 b 2
Рис. 4.3 Діаграма станів автомата з прикладу 4.3

Побудуємо таблицю станів для цього автомату.


Таблиця 4.2
Таблиця станів
Стан Δ
a b
→1 2 -
*2 - 1

Запишемо мову автомата.


𝐿(𝑀) = { (𝑎𝑏)𝑛 𝑎 | 𝑛 ≥ 0 }

Приклад 4.4. Розглянемо однобуквений алфавіт 𝛴 = {𝑎}. При довільних


фіксованих 𝑘 ∈ 𝑁, 𝑚 ∈ 𝑁 мова { 𝑎𝑘+𝑚𝑛 | 𝑛 ∈ 𝑁 являється автоматною.
Розв’язування. На рисунку нижче зображено автомат для 𝑘 = 2, 𝑚 = 3
𝑎𝑎𝑎

𝑞0 𝑞1 𝑞3
𝑎 𝑎

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

Приклад 4.5. Задано автомат 𝑀 = 〈𝑄 = {𝑞0 , 𝑞1 , 𝑞2 , 𝑞3 }, 𝛴 = {0,1}, ∆, 𝐼 =


{𝑞0 }, 𝐹 = {𝑞3 } 〉 , діаграмою станів
Знайти мову автомата. Чи є автомат всюди визначеним?
1 0 1
𝑞0 𝑞1 𝑞2 𝑞3

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

Розв’язування. Мова автомата L(M) = {101}.


Автомат не є всюди визначеним. Це добре видно по таблиці станів. Тут
багато кліточок не заповнені.
Таблиця 4.3
Таблиця станів
Стан Δ
0 1
→q0 - q1
q1 q2 -
q2 - q3
*q3 - -
Проте він легко перетворюється у всюди визначений автомат шляхом
додавання стану ∅, з якого не має переходу в заключний стан і , відповідно, через
який не йде розпізнавання ланцюжків мови.
1 0 1
𝑞0 𝑞1 𝑞2 𝑞3

0 1 0 1,0

𝑞4

c
Рис. 4.5 Діаграма станів автомата, всюди визначеного

Приклад 4.6. Задати автомат (з допомогою команд, таблично та графічно),


який розпізнає мову L(G ) = {а011, 01m+1 b, m = 0,1,...}
Розв’язування. Проаналізуємо ланцюжки, з яких складається мова.
а011,
m=0 011b=01b
m=1 012b=011b
m=2 013b=0111b
Як бачимо, мова нескінченна, вона складається з ланцюжка а011 і
ланцюжків, що починаються з 01, за яким може бути довільна кількість
одиничок, і в кінці b.
Побудуємо діаграму станів.
𝑀 = 〈𝑄, 𝛴, ∆, 𝐼, 𝐹 〉, ={a,b,0,1}, I={S0},

1
0
а S2 S3
S0 S1

0
1
S5

S6 b S4

1 S7

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


𝑀 = 〈𝑄, 𝛴, ∆, 𝐼, 𝐹 〉, ={a,b,0,1}, I={S0},
Q={S0,S1,S2,S3,S4,S5,S6,S7}, F={S4,S7}, Δ={<S0,а,S1>, <S0,0,S5>, <S1,0,S2>,
<S2,1,S3>,<S3,1,S4>, <S5,1,S6>, <S6,1,S6>,<S6,b,S7> }
Побудуємо таблицю станів
Таблиця 4.4
Таблиця станів
Стан Δ
0 1 а b
→S0 S5 - S1 -
S1 S2 - - -
S2 - S3 - -
S3 - S4 - -
*S4 - - - -
S5 - S6 - -
S6 - S6 - S7
*S7 - - - -

Контрольні запитання
1. Дайте визначення скінченного автомата без виходу.
2. Які способи задання автомата без виходу ви знаєте?
3. Дайте визначення скінченного детермінованого автомата (без виходу).
4. Дайте визначення мови, що розпізнається скінченним автоматом без
виходу.
5. Який шлях називається успішним?
6. Яка мова називається автоматною?

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

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

1. Побудувати довільний скінченний детермінований автомат без


виходу на 3 стани, вхідний алфавіт якого є перші 2 букви вашого імені. Інші
параметри задати самостійно. Подати автомат графічно та таблично.
2. Для автомата з завдання 1 вказати два слова, що ним розпізнаються,
і два слова, що не належать мові, породженій цим автоматом. Визначити мову
цього автомата.

Другий рівень

3. Знайти мову, яку допускає автомат (згідно варіанту завдання).


Автомат задати таблицею станів та з допомогою команд.
1 поч. 1
0,1 14 S1
S0 0,1 1
S1 0
1 1 поч. 1,0
1 S0 S2 S3
S2 0
S3
0,1
0

1
2 поч.
S0 1,0
S1 15 Початок
0,1

1
1 s0 0 s1 s2
0 0
S2
1

3 поч.
S0 0
S1 0
S2 1,0
S3 16 поч.
S0 1,0
S1 1,0
S2

1 0 1 0

4 поч.
S0 1
S1 1,0
S2 1
S3 17 поч.
S0 1
S1 1
S2
0,1
0 0,1
0 S4 0 0 0,1

1
5 поч.
S0 S1 18 1

0,1
0 0 s0 s1 0 s2 0,1 s3
Початок
S2 1
S3
0 0

0
0

6 поч.
1 19 0
0
S0 S1 S2 поч. 0 1
S0 S1 S2
0 1 1
0,1

Початок
7 1
0,1
20 0 0,1
Початок
s0 1 s1 s0 0 s1 s2 0,1 s3
s2
0 1
1
0

8 Початок 21 1
s0 0,1 s1 1 s2
s0 0,1 s1 0 s2
Початок
0 1

9 поч.
S0 0
S1 1
S2 22 поч.
S0 1
S1
0,1
S2

1 1 0 0
10 поч.
S0 1
S1 0
S2 23 Початок 0,1
s0 1 s1 0,1 s2
0 1 0,1
0

11 0 1 24 0,1

поч. 0,1 0 0,1


s0 0 s1 s2 S0 S1 S2 S3
Початок
1
0,1
0

12 0 25 поч.
S0 0
S2 0
S3
поч. 1 1 1,0
S0 S1 S2 S3 1
1 0,1
0 0
0,1 S1

13 поч.
S0
0,1
S1 1
S2 0
S3 26 поч.
S0 1,0
S1 0
S2
1
0 0,1 1
1

27 28

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

4. Задати автомат (з допомогою команд, таблично та графічно), який


допускає мову, і лише її, згідно варіанту завдання.
1. L(G ) = {011a,1m+2 b, m = 0,1,...}
2+ n
2. L(G ) = {ab 2 a0 c, n, m = 0,1,...}
m

3. L(G ) = {2 n aba 1+ m , n, m = 0,1,...}


n +1 3+ m
4. L(G ) = {2 , cc1 , n, m = 2,3,...}
m+ 2
5. L(G ) = {21 ab, m = 0,1,...}
6. L(G ) = {a01+n , ab12+m , n, m = 0,1,...}
7. L(G ) = {a m 00b n+3 , n, m = 0,1,...}
8. L(G ) = {03n +1 b m , n, m = 0,1,...}
m +3
9. L(G ) = {(ab ) 12, m = 0,1,...}
10. L(G ) = {a n+ 2 c(cb) m+ 2 , n, m = 0,1,...}
11. L(G ) = {2 n+10ab, cab, n = 0,1,...}
12. L(G ) = {2 2 n12 m+10, n, m = 0,1,...}
13. L(G ) = {0,112 3+ n1, n = 0,1,...}
14. L(G ) = {2 n+30013+m , n, m = 0,1,...}
15. L(G ) = {02 a,2 n+1 aba , n = 0,1,...}
16. L(G ) = {011,2 n+31, n = 2,3,...}
17. L(G ) = {2 n 0001m+ 2 , n, m = 0,1,...}
18. L(G ) = {b0 n a12 m aa , n, m = 0,1,...}
3+ n
19. L(G ) = {a 11b 12, n = 0,1,...}
m

20. L(G ) = {a n 00b m a, n, m = 0,1,...}


n +1
21. L(G ) = {0 a1b 0, n, m = 0,1,...}
m

22. L(G ) = {a n+1ccb m a, n, m = 0,1,...}


23. L(G ) = {2 n 0a m+2 , n, m = 0,1,...}
24. L(G ) = {2 m+312+ n 0, n, m = 0,1,...}
25. L(G ) = {a 3+n bca , n = 0,1,...}
26. L(G ) = {2 2+m ab 0 n , n, m = 0,1,...}
27. L(G) = {a m 2 2 + n , n, m = 0,1,...}
28. L(G ) = {(2) n+21b, n = 0,1,...}

You might also like