Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБЗОРНАЯ ЛЕКЦИЯ ПО КУРСУ ЯП и МТ.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
141.53 Кб
Скачать

7 Автоматные грамматики и конечные автоматы

7.1. Механизмы распознавания и преобразования

Разработка и применение языков обычно требуют проработки по крайней мере двух основных проблем:

  1. должен быть создан механизм порождения языка, т.е. система описания строк языка

  2. решена задача проверки принадлежности заданной строки заданному языку

Для решения второй проблемы создается механизм распознавания или распознаватель.

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

Входная лента

Входная головка

Распознаватель выполняет некоторую последовательность шагов, каждый из которых включает:

  • чтение текущего символа входной ленты;

  • анализ входного символа, содержимого памяти и текущего состояния;

  • перемещение (если нужно) входной головки;

  • изменение содержимого памяти;

  • изменение состояния распознавателя.

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

  • состояние управляющего устройства;

  • содержимое входной ленты и положение входной головки;

  • содержимое вспомогательной памяти.

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

Для каждого класса грамматик из иерархии Хомского существует класс распознавателей, определяющих тот же класс языков.

Распознаватели для языков класса 3 называют конечными автоматами, для языков класса 2 – автоматами с магазинной памятью, для языков класса 1 – линейными ограниченными автоматами (машинами Тьюринга с конечным объемом ленты), для языков класса 0 – машинами Тьюринга.

7.2 Конечные автоматы

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

Конечный автомат – это простейший распознаватель (см. п.2) без вспомогательной памяти.

Конечный автомат действует следующим образом:

  • В начале он находится в состоянии S

  • На вход КА поступают символы входной ленты, принадлежащие входному алфавиту

  • Находясь в некотором состоянии и получив на вход очередной символ, автомат переходит в следующее состояние, определяемое значением функции переходов для данной пары символ-состояние, и считывает очередной символ.

Конечным автоматом (КА) называется пятерка:

К=(Q, , , q0, F)

Где

Q – конечное множество состояний автомата

 – входной алфавит – конечное множество символов

 – функция переходов автомата (в общем случае неоднозначная): отображение множества Q  в множество P(Q), т.е. : (Q  )  P(Q) , где P(N) – множество всех подмножеств множества N

q0начальное состояние. g0  Q;

Fмножество конечных (финишных) состояний FQ (F включается в Q)

Формально конфигурацией автомата называется пара (q, )  Q  *, конфигурация (q0, ) называется начальной, а (q , ), где q  F – заключительной.

Такт работы КА представляется бинарным отношением (├), определенным на множестве конфигураций. Если q  (q, a), то (q, aw) ├ (q’, w) для всех w  *.

Говорят, что конечный автомат К=(Q, , , q0, F) допускает (распознает) входную цепочку w  , если (q0, w) ├ (q, ) для некоторого q  F.

Языком, определяемым (допускаемым, распознаваемым) КА, называется множество всех входных цепочек, допускаемых этим автоматом, т.е.

L(K) = {w | w   и (q0, w) ├ *(q, ) для некоторого q  F }

Пример 1. Рассмотрим КА К = ({q0, q1, q2, q3,}, {a, b}, , q0, { q3} ), в котором функция переходов выглядит следующим образом:

1) (q0, a) = {q1}

2) (q0, a) = {q0}

3) (q1, a) = {q1}

4) (q1, b) = {q2}

5) (q2, a) = {q3}

6) (q2, b) = {q0}

7) (q3, a) = {q3}

8) (q3, b) = {q3}

Для входной цепочки baababa автомат выполнит следующую последовательность действий:

(q0, baababa) ├ (q0, aababa) ├ (q1, ababa) ├ (q1, baba) ├ (q2, aba) ├ (q3, ba) ├ (q3, a) ├ (q3, )

Таким образом, цепочка baababa принадлежит языку L(K)