
3.5 Магазинні автомати
Магазинний автомат – це власне кажучи ε-НСА з додаванням магазина
Рисунок 3.5 - Схема магазинного автомата
Магазин може читатися, до його вершини можуть додаватися символи, і вони ж можуть зніматися з вершини. Магазинний автомат може робити перехід на основі поточного стану, вхідного символа і символа на вершині магазина.
За один перехід автомат робить дії:
- читає і пропускає символ вхідного ланцюжка (якщо ε - символ не пропускається);
- переходить у новий стан, який може і не відрізнятися від поточного;
- заміняє символ на вершині магазина деяким ланцюжком.
Варіанти роботи магазина.
- Ланцюжок дорівнює ε, це відповідає зняттю з вершини магазина.
- Ланцюжок дорівнює символові, що був на вершині. Магазин не змінюється.
- Ланцюжок дорівнює довільному символові. Замінюється символ на вершині магазина.
- Ланцюжок дорівнює декільком символам, це відповідає поміщенню в магазин декількох символів.
Приклад 3.1 Мова, утворена паліндромами парної довжини з 0 і 1 ,
L
= {w wR
| w
( 0 | 1)
},
де wR позначає обернений ланцюжок.
Стан
q
відповідає припущенню, що не досягнута
середина слова. Символи читаються, а їх
копії записуються в магазин.
Припущення
про те, що досягнуто середину слова,
викликає спонтанний перехід у q
.
У цьому стані вхідні символи порівнюються
із символами на вершині магазина. При
збігу магазинний символ віддаляється.
При
спустошенні магазина виконується
перехід у завершальний стан q
.
Формальне визначення МП – автомата.
Запис містить 7 компонентів:
P = (Q, Σ, Г, δ, q , Z , F).
Тут
Q – множина станів;
Σ – множина вхідних символів;
Г – магазинний алфавіт;
(q,
a, x)
– функція переходів: q
– стан;
а
– вхідний символ або ε
;
Х
– магазинний символ з Г.
Вихід функції – пари (p,
γ),
де p
– новий стан;
γ
–
ланцюжок, що заміняє x;
q – початковий стан;
Z – початковий магазинний символ, “маркер дна”;
F – множина завершальних станів.
Повернемося до прикладу 3.1. Автомат P можна описати набором компонент
P =( {q , q , q }, {0, 1},{ 0, 1, Z }, δ, q , Z , { q } ),
де функція переходів має вигляд:
δ ( q , 0, Z ) = (q , 0Z );
δ ( q , 1, Z ) = (q , 1Z ) – перехід за першим символом;
δ ( q , 0, 0) = (q , 00), δ ( q , 0, 1) = (q , 01),
δ ( q , 1, 0) = (q , 10), δ ( q , 1, 1) = (q , 11) – поміщення в магазин;
δ ( q , ε, Z ) = (q , Z ), δ ( q , ε ,0) = (q ,0),
δ ( q , ε , 1) = (q , 1) – спонтанний перехід;
δ ( q , 0, 0) = (q , ε), δ ( q , 1, 1) = (q , ε) – виштовхування з магазина;
δ ( q , ε, Z ) = (q , Z ) – перехід у завершальний стан.
Діаграма цього МП-автомата наведена на рис. 3.6.
Рисунок 3.6 - Діаграма переходів МП-автомата з прикладу 3.1
Наведемо приклад його роботи на ланцюжку 1111 (рис. 3.7).
Ми розглядали МП-автомати, що завершували роботу мовою L по досягненні завершального стану. Можна побудувати автомат, що завершує роботу при спустошенні магазина.
Якщо для деякої мови існує МП-автомат, що закінчує роботу по досягненні завершального стану, то існує і МП-автомат автомат для цієї мови, що завершує роботу при спустошенні магазина.
Справедливо і зворотне.
Клас контекстовільних мов відповідає класові мов, що допускаються МП-автоматами.
Становлять інтерес детерміновані МП-автомати (ДМП-автомати).
МП-автомат є детермінованим, якщо функція переходів має тільки одну пару значень для кожної трійки аргументів (при цьому, якщо значення δ (q, a, X) не порожнє, значення δ (q, ε , X) повинне бути порожнім).
Рисунок 3.7 - Робота МП-автомата на ланцюжку 1111
Якщо мова регулярна, вона є припустимою для деякого ДМП-автомата.
Мови ДМП-автоматів містять у собі всі регулярні мови (рис. 3.7).
Рисунок 3.8 - Співвідношення регулярних мов,
ДМП-мов і КВ-мов
Класи мов, що допускаються ДМП-автоматами по досягненні завершального стану і при спустошенні магазина, не збігаються.
Мови ДМП-автоматів мають однозначну граматику.
У той самий час існують мови з однозначною граматикою, що не є ДМП-мовами.
Наведемо деякі властивості контекстовільних мов.
Теорема (без доведення). Кожна контекстовільна мова породжується граматикою, усі продукції якої мають форму А → ВР або А → а, де А, В, P – змінні; а – термінал.
Ця форма називається нормальною формою Хомського.
Лема про розширення для контекстно-вільних мов. Нехай L – контекстовільна мова. Тоді існує така константа n, що якщо z – довільний ланцюжок довжини не менше n, то її можна подати у вигляді z = uvwxy, де
1) | vwx | ≤ n ;
2) vx ≠ ε ;
3) uviwxiy L для всіх і ≥ 0.
Лема про розширення часто використовується при доведенні того, що мова не є контекстовільною.
Контекстовільні мови замкнені щодо операцій об'єднання, конкатенації, замикання і суперпозиції.
Завдання до розділу 3
1 Написати граматику, яка для алфавіту {0,1} генерує всі рядки, включаючи порожній.
2 Є граматика з продукціями
PROGRAM → begin DECS ; STATS end
DECS → D ; DECS | D
STATS → S ; STATS | S .
Написати ліве породження для
begin D ; D ; S ; S end
3 Побудувати контекстовільну граматику, що генерує множину ланцюжків { 0n1n | n ≥ 1}.
4 Подана граматика породжує мову регулярного вирзу { 0*1(0|1)* }:
S → A1B , A → 0A | ε , B → 0B | 1B | ε.
Записати ліве породження для ланцюжка 00101.
5 Подана граматика породжує мову регулярного виразу {0*1(0|1)* }:
S → A1B , A → 0A | ε , B → 0B | 1B | ε.
Записати праве породження для ланцюжка 1001.
6 Подана граматика породжує мову регулярного виразу {0*1(0|1)* }:
S → A1B , A → 0A | ε , B → 0B | 1B | ε.
Записати ліве і праве породження для ланцюжка 00011.
7 Подана граматика породжує мову регулярного виразу {0*1(0|1)* }:
S → A1B , A → 0A| ε , B → 0B|1B| ε.
Записати ліве і праве породження для ланцюжка 00010.