Детермінований скінченний автомат
В теорії алгоритмів і теорії автоматів, детермінований скінченний автомат (ДСА) — скінченний автомат, який приймає скінченний рядок символів. Для кожного стану існує стрілка переходу в наступний стан для кожного символу. Після зчитування символу ДСА перестрибує детерміновано з одного стану в інший за відповідною стрілкою. Детермінованість означає наявність лише одного результату (тобто переходу в наступний стан для кожного символу (S0 -> Si) або повернення в той самий стан (S0 -> S0)). ДСА має початковий стан (позначений графічно стрілкою нізвідки), звідки починаються обчислення, і набір допустимих станів (позначених графічно двійними колами), які допомагають визначити успішність обчислень.
ДСА саме розпізнає набір регулярних мов, що є, між іншим, корисним для проведення лексичного аналізу і зіставляння зі взірцем. [1] ДСА можна використати або в режимі приймача для перевірки належності вхідного рядка до мови, або в режимі генерації для створення списку всіх рядків у мові.
ДСА визначається як абстрактна математична концепція, але через свою детермінованість він може бути виконаним на апаратному або програмному рівні для розв'язання різних особливих задач. Наприклад, програмний автомат, який визначає чи є введений рядок правильним телефонним номером або електронною адресою. [2] Іншим прикладом на апаратному рівні є мікросхема, що керує автоматичними дверима, використовуючи вхідні дані від сенсорів руху або кнопок для визначення моменту, коли треба виконувати переходи між станами.
Детермінований скінченний автомат M це п'ятірка, (Q, Σ, δ, q0, F), де
- скінченний набір станів станів (Q)
- скінченний набір вхідних символів, абетка (Σ)
- функція переходу (δ : Q × Σ → Q)
- початковий стан (q0 ∈ Q)
- набір допустимих станів (F ⊆ Q)
Нехай w = a1a2 … an - рядок над абеткою Σ. Автомат M приймає рядок w, якщо послідовність станів, r0,r1, …, rn в Q, відповідає таким умовам:
- r0 = q0
- ri+1 = δ(ri, ai+1), for i = 0, …, n−1
- rn ∈ F.
Словами, перша умова каже, що автомат починає з початкового стану q0. Друга умова каже, що з кожним наступним символом з w автомат переходить зі стану в стан до функції переходу δ. Остання умова каже, що автомат приймає w, якщо останній символ з w спричиняє перехід автомата в один з допустимих станів. Інакше, кажуть, що автомат відхилив рядок. Набір допустимих рядків M - це мова , що розпізнається автоматом M, і така мова позначається L(M).
Детермінований скінченний автомат без допустимих станів і без початкового стану відомий як модель станів і переходів або напівавтомат.
Нижче наведено приклад ДСА М з двійковою абеткою, який розпізнає рядки з парною кількістю 0.
M = (Q, Σ, δ, q0, F), де
- Q = {S1, S2},
- Σ = {0, 1},
- q0 = S1,
- F = {S1}, і
- δ визначена такою таблицею переходів:
S1 | S2 | S1 |
S2 | S1 | S2 |
Стан S1 показує, що серед вхідних даних, наразі опрацьованих , трапилася парна кількість 0, тоді як S2 вказує на непарну кількість. 1 на вході не змінює стану автомата. Після завершення введення даних стан буде вказувати, чи трапилась парна кількість 0. Якщо так дійсно сталося, M опиниться в стані S1, що є допустимим станом, тож поданий на вхід рядок буде розпізнаний.
Мова, що розпізнається M, - це регулярна мова, задана регулярним виразом
де «*» - це зірка Кліні, тобто 1* позначає будь-яку кількість (можливо нуль) символів «1».
Незмінні машини Тюринга з рухом праворуч це різновид машин Тюринга яка рухається лише вправо. Вони майже цілком еквівалентні ДСкА. [3]
Визначається як кортеж з 7 елементів:
де
- скінченна множина станів;
- скінченна множина символів стрічки;
- - порожній символ (єдиний символ який зустрічається на стрічці нескінченну кількість разів);
- , підмножина що не включає b, множина вхідних символів;
- це функція яка називається фукнцією переходів, R це рух вправо;
- - початковий стан;
- множина фінальних або допустимих станів.
Така машина завжди приймає регулярну мову. Повинен існувати хоча б один елемент множини F (стан HALT) для того аби мова була не порожньою.
В стані A | В стані B | В стані C | |||||||
символ на стрічці | Записати символ | Переміщення | Наступний стан | Записати символ | Переміщення | Наступний стан | Записати символ | Переміщення | Наступний стан |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | R | B | 1 | R | A | 1 | R | B |
1 | 1 | R | C | 1 | R | B | 1 | N | HALT |
- , "порожній";
- , порожня множина;
- див таблицю станів вище;
- , початковий стан;
- одноелемента множина кінцевих станів: .
ДСА — одна з найпрактичніших моделей обчислення через свій лінійний час, сталу потребу в пам'яті, можливість обробки за допомогою послідовного алгоритму. Для даних двох ДСА існують дієві алгоритми для знаходження ДСА, що розпізнає:
- об'єднання двох ДСА;
- перетин двох ДСА;
- комплементарну мову до розпізнаваної ДСА.
Завдяки можливості зведення ДСА до канонічної форми (найменшого ДСА), існують дієві алгоритми для визначення:
- чи приймає ДСА будь-який рядок;
- чи приймає ДСА всі рядки;
- чи розпізнають два ДСА ту саму мову;
- ДСА з найменшою кількістю станів для окремої мови.
ДСА тотожний за силою обчислення до недетермінованого скінченного автомата.
З іншого боку, ДСА сильно обмежений в мовах, які він може розпізнати; багато простих мов з урахуванням будь-якої задачі, яка вимагає непостійного місця в пам'яті для розв'язання, не можуть бути розпізнані за допомогою ДСА. Класичний приклад просто описаної мови, яку не може розпізнати ДСА, - це мова дужок мови, що містить правильні дужкові послідовності, такі як (()()). Більш формально, мову утворену рядками типу anbn—деяка скінченна кількість a, услід за рівною кількістю b. Якщо немає обмеження на рекурсію (тобто ви можете завжди вставити іншу пару дужок усередину), то буде потрібна нескінченна кількість станів для розпізнавання.
- ↑ Fegaras, Leonidas. Converting a Regular Expression into a Deterministic Finite Automaton. Архів оригіналу за 19 травня 2011. Процитовано 17 лютого 2011.
- ↑ Gouda, Prabhakar, Application of Finite automata
{{citation}}
:|access-date=
вимагає|url=
(довідка) - ↑ Davis, Martin; Ron Sigal; Elaine J. Weyuker (1994). Second Edition: Computability, Complexity, and Languages and Logic: Fundamentals of Theoretical Computer Science (вид. 2nd). San Diego: Academic Press, Harcourt, Brace & Company. ISBN 0-12-206382-1.
- Гаврилків В. М. Формальні мови та алгоритмічні моделі. — І.-Ф. : Голіней, 2023. — 180 с.
- Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2001). Вступ до теорії автоматів, мов і обчислень (вид. 2nd). Addison–Wesley. с. 521.(англ.)
- Роджерс Х. . Теория рекурсивных функций и эффективная вычислимость. — М. : Мир, 1972. — 416 с.(рос.)