Uploaded by Tvink Tvinky

Лекция 7 Формальные грамматики и автоматы (1)

advertisement
Лекция 7 Формальные языки, грамматики и автоматы
Если V – некоторый алфавит, то любая цепочка конечной длины,
составленная из символов этого алфавита, называется предложением, словом
или строкой. Цепочка, в которой нет ни одного символа, - пустая цепочка (,
||=0).
Обозначим V* бесконечное множество всех цепочек (включая пустую)
в алфавите V (V* называется замыканием множества V). Любое
подмножество L множества V* (L⊆V*) называется языком.
Например, пусть V= a,b. Перечислим некоторые языки над этим
алфавитом:
L1=  - пустой язык;
L2= - язык, состоящий из пустой цепочки;
L3=, a, b, aa, bb, ba, bb- язык, состоящий из предложений (слов)
длиной ≤ 2;
L4=, a, aa, aaa, aaaa, aaaaa,…- язык, все слова которого состоят
только из символа a.
Один из способов представления языка – алгоритм, определяющий,
принадлежит ли цепочка (слово) языку. Такой метод представляет язык с
точки зрения распознавания.
Язык можно представить и с помощью порождения (генерации)
цепочек языка. Одной из систем генерации языков являются грамматики.
Грамматика – это четверка G = {N, T, P, S}, где
N–алфавит нетерминальных символов (синтаксических категорий,
переменных);
T – алфавит терминальных символов (слов); N∩T=;
P – конечное множество правил (продукций) вида , где
  (NT)+,   (NT)*;
S – начальный символ грамматики (аксиома), SN.
Тип грамматики определяется видами правил из P, т.е. ограничениями,
налагаемыми на  и .
Существует иерархия Хомского формальных грамматик, в
соответствии с которой все грамматики, называемые грамматиками
структуры фразы, делятся на 4 типа с номерами от 0 до 3 в порядке убывания
общности.
Грамматики можно рассматривать как формальные порождающие
системы, которые из исходного символа применением некоторых правил
(продукций) порождают фразы языка. Каждый тип грамматики имеет
эквивалентный ей автомат, являющийся воспринимающей системой, правила
которого позволяют проверять, принадлежит или не принадлежит фраза
данному языку.
Наименее
общими
(3)
являются
регулярные
грамматики,
эквивалентные им автоматы - конечные автоматы. На втором уровне
иерархии (2) находятся контекстно-свободные грамматики (КС-грамматики)
и стековые автоматы (МП-автоматы, или автоматы с магазинной памятью).
Первый уровень (1) - контекстно-зависимые грамматики и эквивалентные им
линейно-ограниченные автоматы (автоматы Майхилла, или ЛО-автоматы).
На вершине иерархии – грамматики типа ноль (0), или неограниченные
грамматики, и соответствующие им распознаватели - машины Тьюринга.
Регулярные грамматики.
Грамматика Хомского называется регулярной, если ее продукции
имеет вид
A a (эта продукция называется заключительной) или А bB, где A,
B – переменные, т.е. A, B N, a, b  T.
Так определенная грамматика называется регулярной справа. В
регулярной слева грамматике второе правило имеет вид: АBb. Существуют
эквивалентные им грамматики: линейные слева и линейные справа.
Например, линейная справа грамматика имеет продукции вида
A  α и A  βB , где A, BN, α, β – непустые последовательности
слов, т.е. α, β  T+.
Язык называется регулярным, если он порождается регулярной
грамматикой. Отметим, что любой конечный язык регулярен.
С другой стороны, конечный автомат представляется пятеркой (Q, , ,
q0, F), где
Q – конечное множество состояний;
 – входной алфавит;
 – правила перехода: Q    Q, или правила qiak  qj, qi, qj  Q, ak –
входной символ,
ak  ;
q0  Q – начальное состояние;
F  Q – элементы из Q, называемые заключительными состояниями.
Конечный автомат можно рассматривать как машину, которая в
каждый момент времени находится в некотором состоянии q  Q и читает
поэлементно последовательность  символов из , записанную на конечной
слева ленте. При этом лента перемещается справа налево.
a1
a2
…
…
ak
прочит.
часть
an
...
непрочит.
часть
операция чтения
УУ
qi
Если КА в состоянии qi читает символ ak и правило (qi,ak) = qj есть среди
правил работы КА, то он воспринимает символ аk и переходит в состояние qj
для обработки следующего символа.
Конфигурация КА – это элемент множества Q  *, т.е.
последовательность вида q, где q  Q,   *. Отношения
непосредственного следования () и следования (*) между
конфигурациями определяются так:
1)
qiak  qj, если qiak  qj – правило из ;
2)
c1 *cn, если существуют c1,..,cn, где ci  ci+1, i = 1, n-1.
Пусть  - пустой элемент из *. Воспринимаемый конечным автоматом
язык L определим так:
L =    * q0 * qf, где qf  F ,
т.е. фраза  воспринимается конечным автоматом, если, начиная
функционирование из начального состояния q0, этот КА читает все слова
фразы и в результате приходит в заключительное состояние.
Язык воспринимается конечным автоматом тогда и только тогда, когда
он порождается регулярной грамматикой.
Пример.
Пусть язык L =  0 (10)n n0 состоит из фраз: 0, 010, 01010, 0101010
и т.д.
Этот язык порожден регулярной грамматикой (N, T, P, S), где
N =  S, A, B,
T =  0, 1,
P =  S 0, S 0A, A 1B, B 0, B 0A .
Он же воспринимается следующим недетерминированным конечным
автоматом, у которого
 =  0, 1;
Q =  S, A, B, qf ;
q0 = S;
F =qf;
 =  S0  qf, S0 A, A1 B, B0  qf, B  A 
Проследим, как строится конечный автомат, распознающий слова
языка, порожденного заданной грамматикой. Рассмотрим порождение
некоторой фразы
S  0A  01B  010A  0101B  01010.
Выясним, как эта фраза воспринимается конечным автоматом:
S01010  A1010  B010  A10  B0  qf.
Построим диаграмму (автоматную таблицу) и граф переходов КА:
S
A
B
qf
0
qf, A
qf, A
-
A
0
1
B
-
S
0
0
1
Полученный КА – недетерминированный, т.к. из S под действием
входа 0 происходит переход и в
A и в qf. Объединим эти состояния
в одно новое заключительное состояние
Qf:
S
B
Qf
0
Qf
Qf
-
1
B
B
qf
0
B
1
S
0
0
В полученном КА два состояния
S и B явно эквивалентны. Минимизируем
его:
0
1
S'
Qf
Qf
S'
Qf
1
S'
0
Посмотрим, как порожденная фраза 01010 воспринимается этим КА:
S'01010 Qf1010 S'010 Qf10 S'0 Qf.
Download