Недетермінований скінченний автомат
Недетермінований автомат — абстрактний автомат, який при даному вхідному символі і внутрішньому стані може переходити в декілька різних внутрішніх станів.
Формально, недетермінований автомат — це п'ятірка <X, Y, Q, Φ, Ψ>, така, що відображення Ψ: X × Q → Q не є однозначним.
За аналогією з теорією детермінованих автоматів можна ввести поняття представлення (породження) множин для недетермінованих автоматів. Якщо два скінченних автомати, які представляють ту саму множину, вважати еквівалентними, то існує алгоритм, який дозволяє за кожним скінченним недетермінованим автоматом побудувати еквівалентний йому скінченний детермінований автомат. При цьому зрозуміло, що детермінований автомат має більшу кількість станів, ніж недетермінований автомат. Загалом для довільних автоматів це твердження не є правильним. Наприклад, клас множин, які породжуються недетермінованими автоматами зі стековою пам'яттю, ширший, ніж клас множин, які породжуються такими ж детермінованими автоматами.
Недетермінований скінченний автомат формально представляє п'ятірка, (Q, Σ, Δ, q0, F), в якій
- скінченна множина станів Q
- скінченна множина вхідних символів Σ
- функція переходу Δ : Q × Σ → P(Q).[1]
- початковий стан q0 ∈ Q
- набір станів F позначених як допустимі (або кінцеві) стани F ⊆ Q.
Тут, P(Q) позначає множину всіх підмножин 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, і така мова позначається L(M).
Також можна визначити L(M) в термінах Δ*: Q × Σ* → P(Q) так, що:
- Δ*(r, ε)= {r} де ε це порожній рядок, і
- якщо x ∈ Σ*, a ∈ Σ, і Δ*(r, x)={r1, r2,…, rk}, тоді Δ*(r, xa)= Δ(r1, a)∪…∪Δ(rk, a).
Тепер L(M) = {w | Δ*(q0, w) ∩ F ≠ ∅}.
Зауважте, що наявність лише одного початкового стану не є обов'язковою умовою. Іноді недетермінований скінченний автомат має набір початкових станів. Існує простий метод, що переводить недетермінований скінченний автомат із багатьма початковими станами в недетермінований скінченний автомат із одним початковим станом.
НСА і ДСА тотожні в сенсі, що якщо мову розпізнає НСА, то її також розпізнає деякий ДСА і навпаки. Встановлення такої тотожності є важливим і корисним. Це корисно, бо часто побудува НСА для певної мови значно легша задача, ніж побудува ДСА для цієї ж мови. Це важливо, бо НСА можна використати для зменшення складності математичних обчислень, необхідних для встановлення багатьох важливих властивостей у теорії алгоритмів. Наприклад, властивості замкненості регулярної мови значно легше довести із використанням НСА ніж ДСА.
- Об'єднання двох регулярних мов є регулярною мовою.
- Конкатенація двох регулярних мов є регулярною мовою.
- Зірочка Кліні регулярної мови є регулярною мовою.
- ↑ У випадку ДСА маємо таку функцію переходу δ : Q × Σ → Q.
- Українською
- Гаврилків В. М. Формальні мови та алгоритмічні моделі. — І.-Ф. : Голіней, 2023. — 180 с.(укр.)
- Енциклопедія кібернетики, Кратко М. І., т. 1, с. 23.
- Іншими мовами
- Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2001). Вступ до теорії автоматів, мов і обчислень (вид. 2nd). Addison–Wesley. с. 521.
{{cite book}}: Зовнішнє посилання в(довідка)(англ.)|edition= - Роджерс Х.. Теория рекурсивных функций и эффективная вычислимость. — М. : Мир, 1972. — 416 с.(рос.)
| Це незавершена стаття про алгоритми. Ви можете допомогти проєкту, виправивши або дописавши її. |