Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по теории автоматов.doc
Скачиваний:
105
Добавлен:
01.05.2014
Размер:
3.35 Mб
Скачать

Алгоритм получения правил, не содержащих правил вывода нетерминальных символов.

  1. Грамматика имеет набор правил R. Разобьем его наR1иR2 , причем вR1будут входить только правила типаAB, гдеA,B€Vn

  2. Для любого символа Aiстоит в левой части правила нетерминала построим подмножество правил (Ai) следующим образом, если существует

Ai  An ; An ηB , то в SAi войдет Ai  ηB.

  1. Строим новую грамматику, создающую следующий набор правил:

R=Vi=1kS(Ai)vRiгдеk– число нетерминальных символов, находящихся слева в правилах набораRподмножества. Построение грамматики будет эквивалентно исходной и не создаст правил нетерминалов.

Рассмотрим пример:

G:

R = {IaM , MA , AaA , AB , BbB , Bb}

Vt = {a , b}

Vn = {I , M , A , B}

R1 = {M  A , A  B}

R2 = {I  aM , A  aA1 B  bB , B  b}

S(M) = {MaA , M  bB , M  b}

S(A) = {A  bB , A  b}

R = {M  aA , M  bB , M  b , A bB , A b , I  aM , A  aA , B  bB , B  b}

Грамматика правосторонняя или левосторонняя контекстно-свободная, создается правило нетерминал-нетерминал, может быть преобразовано к автоматному виду.

Грамматика, контекстно-свободная создающаяся и правосторонней и левосторонней не может быть преобразована а автоматному виду.

Если грамматика имеет правило вида:

AφAψ,φ,ψ€V*φ≠ε, то она не может быть преобразована к контекстно-свободной.

Самовосстанавливающаяся грамматика, которая содержит правило вида: AφAψ, гдеφ,ψ– любые символы, причем не пустые не может быть преобразована к автоматному виду.

Данный вывод вытекает из вывода два.

Если грамматика порождает не пустой язык, то в общем случае можно построить эквивалентную ей автоматную грамматику, для этого нужно получить язык, затем построить автоматную грамматику.

Построение распознавателей и преобразователей.

Распознаватель – это автомат, у которого нет выходного преобразователя – формирователь предыстории. Он определяет является ли заданная цепочки допустимой для автомата.

Преобразователь – это полный автомат, имеющий выходной преобразователь, т.е. у него есть выходной алфавит и функция выхода, он позволяет осуществить синтаксический разбор цепочек.

Построение распознавателей.

Пример : построить распознаватель из множества слов двоичного алфавита длиной в три буквы, слова с двумя единицами, т.е. цепочек из «0» и «1» длиной три.

Vt = {0 , 1}

L = {011 , 101 , 110}

Vn = {I , A , C , Z , B , D , e}

I 01 A1C1Z

I 1 B 0 D 1 Z

I 1 B 1 E 0 Z

R = {I0A , I1B , A1C , B0D , B1e , C1Z , D1Z , e0Z , Ze}

Пример 2:

Построим распознаватель для представленной задачи обнаруживающий допустимые и недопустимые слова.

Введем два конечных состояния Z1для допустимых слов иZ2для недопустимых слов.

I 0 A 1 C 1 Z1

I 1 B 0 D 1 Z1

I 0 A 0 F 0 Z2

I 0 A 0 F 1 Z2

I 0 A 1 C 0 Z2

I 1 B 0 D 0 Z2

I 1 B 1 E 1 Z2

P = {0 , 1}

Vn = {I , A , C , Z1 , Z2 , B , D , e , F } = S

Построение преобразователя для выполнения синтаксического разбора. Преобразование, выполняя синтаксический разбор цепочки, выдает номера правил следующий его выходной алфавит представляет собой множество номеров правил.