Детермінований скінченний автомат

В теорії алгоритмів і теорії автоматів, детермінований скінченний автомат (ДСА) скінченний автомат, який приймає скінченний рядок символів. Для кожного стану існує стрілка переходу в наступний стан для кожного символу. Після зчитування символу ДСА перестрибує детерміновано з одного стану в інший за відповідною стрілкою. Детермінованість означає наявність лише одного результату (тобто переходу в наступний стан для кожного символу (S0 -> Si) або повернення в той самий стан (S0 -> S0)). ДСА має початковий стан (позначений графічно стрілкою нізвідки), звідки починаються обчислення, і набір допустимих станів (позначених графічно двійними колами), які допомагають визначити успішність обчислень.

Приклад детермінованого скінченного автомата, який приймає тільки двійкові числа кратні 3. Стан S0 є одночасно початковим станом і допустимим станом.

ДСА саме розпізнає набір регулярних мов, що є, між іншим, корисним для проведення лексичного аналізу і зіставлення із взірцем. [1] ДСА можна використати або в режимі приймача для перевірки належності вхідного рядка до мови, або в режимі генерації для створення списку всіх рядків у мові.

ДСА визначається як абстрактна математична концепція, але через свою детермінованість він може бути виконаним на апаратному або програмному рівні для розв'язання різних особливих задач. Наприклад, програмний автомат, який визначає чи є введений рядок правильним телефонним номером або електронною адресою. [2] Іншим прикладом на апаратному рівні є мікросхема, що керує автоматичними дверима, використовуючи вхідні дані від сенсорів руху або кнопок для визначення моменту, коли треба виконувати переходи між станами.

Формальне визначення

Детермінований скінченний автомат M це п'ятірка, (Q, Σ, δ, q0, F), де

Нехай w = a1a2 … an - рядок над абеткою Σ. Автомат M приймає рядок w, якщо послідовність станів, r0,r1, …, rn в Q, відповідає таким умовам:

  1. r0 = q0
  2. ri+1 = δ(ri, ai+1), for i = 0, …, n−1
  3. rnF.

Словами, перша умова каже, що автомат починає з початкового стану q0. Друга умова каже, що з кожним наступним символом з w автомат переходить зі стану в стан до функції переходу δ. Остання умова каже, що автомат приймає w, якщо останній символ з w спричиняє перехід автомата в один з допустимих станів. Інакше, кажуть, що автомат відхилив рядок. Набір допустимих рядків M - це мова , що розпізнається автоматом M, і така мова позначається L(M).

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

Приклад

Нижче наведено приклад ДСА М з двійковою абеткою, який розпізнає рядки з парною кількістю 0.

M = (Q, Σ, δ, q0, F), де

  • Q = {S1, S2},
  • Σ = {0, 1},
  • q0 = S1,
  • F = {S1}, і
  • δ визначена такою таблицею переходів:
0
1
S1S2S1
S2S1S2

Стан S1 показує, що серед вхідних даних, наразі опрацьованих , трапилася парна кількість 0, тоді як S2 вказує на непарну кількість. 1 на вході не змінює стану автомата. Після завершення введення даних стан буде вказувати, чи трапилась парна кількість 0. Якщо так дійсно сталося, M опиниться в стані S1, що є допустимим станом, тож поданий на вхід рядок буде розпізнаний.

Мова, що розпізнається M, - це регулярна мова, задана регулярним виразом

де «*» - це зірка Кліні, тобто 1* позначає будь-яку кількість (можливо нуль) символів «1».

Переваги і недоліки

ДСА — одна з найпрактичніших моделей обчислення через свій лінійний час, сталу потребу в пам'яті, можливість обробки за допомогою послідовного алгоритму. Для даних двох ДСА існують дієві алгоритми для знаходження ДСА, що розпізнає:

  • об'єднання двох ДСА;
  • перетин двох ДСА;
  • комплементарну мову до розпізнаваної ДСА.

Завдяки можливості зведення ДСА до канонічної форми (найменшого ДСА), існують дієві алгоритми для визначення:

  • чи приймає ДСА будь-який рядок;
  • чи приймає ДСА всі рядки;
  • чи розпізнають два ДСА ту саму мову;
  • ДСА з найменшою кількістю станів для окремої мови.

ДСА тотожний за силою обчислення до недетермінованого скінченного автомата.

З іншого боку, ДСА сильно обмежений в мовах, які він може розпізнати; багато простих мов з урахуванням будь-якої задачі, яка вимагає непостійного місця в пам'яті для розв'язання, не можуть бути розпізнані за допомогою ДСА. Класичний приклад просто описаної мови, яку не може розпізнати ДСА, - це мова дужок мови, що містить правильні дужкові послідовності, такі як (()()). Більш формально, мову утворену рядками типу anbn—деяка скінченна кількість a, услід за рівною кількістю b. Якщо немає обмеження на рекурсію (тобто ви можете завжди вставити іншу пару дужок усередину), то буде потрібна нескінченна кількість станів для розпізнавання.

Примітки

  1. Fegaras, Leonidas. Converting a Regular Expression into a Deterministic Finite Automaton. Архів оригіналу за 19 травня 2011. Процитовано 17 лютого 2011.
  2. Gouda, Prabhakar. Application of Finite automata.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.