Тема 5: Эквивалентность автоматов регулярных грамматик и конечных Регулярная грамматика это грамматика 3-го типа по Хомскому и определяется как четвёрка G=(VT ,VN , P, S), VN∩VТ=∅. Любое правило в регулярных грамматиках имеет следующий общий вид: A->a или A->bC, где a, bVN; A, CVТ. Определение: Регулярная грамматика G эквивалентна конечному автомату КА, если L(G)=L(КА). Теорема (GF): Для любой регулярной грамматики можно построить эквивалентный конечный автомат. Алгоритм построения: Дана регулярная грамматика G=(VT, VN, P, S). Необходимо построить конечный автомат КА = (Σ, Q, q0, δ, F), на основе данной грамматики. Элементы автомата определяются так: 1) Σ = VT 2) Q = VN{X}, где X новый символ, X VN 3) F = {X} 4) q0 = S 5) δ: Множество переходов создается имея в виду тип правил грамматики: a. для всех правил типа A->bC δ(A, b) = δ(A, b) {C} (в A b C графе будет такой переход ) b. для всех правил типа A->b δ(A, b) = δ(A, b) {X} (в графе A будет такой переход b X X Пример: Дана G=(VT, VN, P, S), VT = {9, ) .}, VN = {S, A, B}, P = {1.S9S, 2.S9, 3.S9A, 4.S.B, 5.A., 6.A9, 7.A9B, 8.B9, 9.B9B}. (9 – это любая цифра) Построить эквивалентный КА = (Σ, Q, q0, δ, F). По алгоритму Σ = VT = {9, .}, Q = VN{X} = {S, A, B, X}, F = {X}, q0 = S. a) Для всех правил типа A->bC создаем следующие переходы: δ(S, 9) = {S} δ(S, 9) = {A} δ(S, .) = {B} δ(A, 9) = {B} δ(B, 9) = {B}. b) Для всех правил типа A->b создаем следующие переходы: δ(S, 9) = {X} δ(A, .) = {X} δ(A, 9) = {X} δ(B, 9) = {X}. Граф автомата выглядит так: . 9 S 9 9 A 9 9 9 . B 9 XX Проверим на эквивалентность грамматику и конечный автомат, то есть проверим проходимость нескольких слов грамматики через КА: 9, 9999, 9., 9.999 Теорема (FG): Для любого конечного автомата можно построить эквивалентную регулярную грамматику. Алгоритм построения: Дан конечный автомат КА = (Σ, Q, q0, δ, F). Необходимо построить регулярную грамматику G=(VT, VN , P, S), на основе данного конечного автомата. Элементы грамматики определяются так: 1) VT = Σ 2) VN = Q 3) S = q0 4) Множество правил создается имея в виду тип переходов автомата: a. для всех состояний типа q1 δ(q2, a), a Σ; q1, q2Q (в графе q2 a q1 есть такой переход ) включаем в множество P продукцию q2aq1. b. для всех состояний типа q1 δ(q2, a), a Σ и q1F (в графе q2 a есть такой переход q1 q1 ) включаем в множество P продукцию q2a. Пример: Дан КА = (Σ, Q, q0, δ, F), Σ = {0, 1}, Q = {q0, q1, q2, q3}, F = {q3}, функция перехода δ: δ(q0, 1)={q1}, δ(q0, 0)={q2}, δ(q1, 0)={q1}, δ(q1, 1)={q3}, δ(q2, 1)={q2}, δ(q2, 0)={q3}, δ(q3, 0)={q3}, δ(q3, 1)={q3}. 0 q1 0 1 1 q0 q3 q3 0 0 1 q2 1 Необходимо построить регулярную грамматику G=(VT, VN, P, S). Используем вышеизложенный алгоритм: VT = Σ = {0,1}, VN = Q = {q0, q1, q2, q3}, S = q0. Правила P: a. q01q1 b. q11 q00q2 q20 q10q1 q31 q11q3 q30 q21q2 q20q3 q30q3 q31q3 Проверим на эквивалентность конечный автомат и регулярную грамматику, используя следующие слова: 00, 11, 011101, 10011.