Автоматная (регулярная) грамматика и конечный автомат

Автоматная грамматика AG =〈A, V, P, S0, где A – основной алфавит; P – правила вида vi→ajvj,,vi,vj∈ V, aj∈ A, s0 аксиома.

Конечный автомат AK =〈A,S,P,s0,sk, где A – основной алфавит; S – алфавит состояний; s0 – начальное состояние; sk – конечное состояние; P – правила вида si,ai→sj,si,sj∈ S, aj∈A.

Пример. Для языка L1 заданы:

1. •AG = 〈A,V,P,S0

• A = {a, b, c}∪{ Δ }

• V = {S0, S1}

2. • KA = 〈A, V, P, S0, Sk

•A = {a, b, c}∪ { Δ }

• V = {S0, S1, Sk}

Δ – маркер конца слова.

AG – правила порождения:

1. S0 →aS0

2. S0 →cS1

3. S1 →bS1

4. S1 Δ

KA – правила перехода:

1. S0,a→S0

2. S0,c → S1

3. S1,b → S1

4. S1, Δ →Sk

AG порождает слова языка L1. KA распознаёт слова языка L 1. Если заданы правила AG, то правила KA получаются формальными переносами символов A из правой части правил в левую (см. пример). Если заданы правила KA, то правила AG переносом символов A в правую часть правил.

KA задается графом переходов и, по сути, является машиной состояний (SM). См. рис. 6.

Рис. 6. Граф переходов

Рис. 7. Граф переходов 1

Кроме того, автоматный язык задается регулярным выражением (формулой из букв A, знаков операций: • –конкатенация, * – итерация, ∨ – разделённое «или»). Для примера выше регулярное выражение для L1 = ((a)* · c(b)* Δ).

Пример. Пусть для языка L2 на рисунке задан граф KA и слово w1 = a · a · c · b· c Δ, говорят, что w1 распознаётся KA, если находясь в S0 под действием w1 попадает в Sk. Слово w2 = a · c · b· b· a Δ не распознаётся KA; KA из S0 под действием w2 останется в S1, т. к. нет правила выводящего из S1 под действием какого-либо символа кроме b и Δ. См. рис. 7.

Регулярное выражение для языка L2 =(a)*· (b∨c)· Δ,слова которого распознаются КА.

Пример. Вывод некоторого слова в AG из примера 1. Рис. 8. Вывод слова aaacbbb. В кружочках отмечены номера правил.

Рис. 8. Граф переходов 2


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: