Лекция 9 Формальные языки и автоматы
Два типа грамматик Распознающая грамматика Порождающая грамматика
Этапы распознавания На первом этапе определяется грамматика – правила, которым подчиняются конструкции образов (в смысле термина, используемого в лингвистике).
Этапы распознавания На второй этапе принимается решение о том, принадлежит ли предъявленный объект к множеству всех объектов, порождаемых заданной грамматикой.
Порождение языка Задаются правила, механизм порождения слов языка
Определение: Конечным автоматом-распознавателем называется пятерка объектов: A =
, где: S - конечное непустое множество (состояний); X - конечное непустое множество входных сигналов (входной алфавит); s 0 S - начальное состояние; d : Sx. X → S - функция переходов; F - множество заключительных состояний
Определение: Конечный автомат-распознаватель A=
допускает входную цепочку из Х*, если эта цепочка переводит его из начального состояния в одно из заключительных состояний. Множество всех цепочек, допускаемых автоматом А, образует язык, допускаемый А.
Определение Язык, для которого существует распознающий его конечный автомат, называют автоматным языком.
Примеры языков 1. V = {a, b, c} ; L = {abc, aa}
Полный граф автоматного языка
Примеры 2. V 2 = {а, b с}; L 2 = «» Любой автомат с пустым множеством заключительных состояний допускает L 2.
Примеры 3. V 4 = {а, b, с}; L 4 - (anbcn| n > 0}. Этот язык не является автоматным
Примеры 4. V 3 = {a, b, c}; L 3 = V 3*. Автомат с единственным состоянием, которое является заключительным, имеющий три перехода из этого состояния в него же, помеченные символами из VЗ, допускает L 3
Примеры V={a, b, c}; L = {anbcm| n, m >0}. Например, aaabcc € L, cbaa≠ L
Примеры V = {+, -, 0, …, 9}; L ={множество целых числовых констант}
Примеры V={+, -, 0, …, 9, '. '}; L = {множество вещественных чисел}
Утверждение Любой автоматный язык задается синтаксической диаграммой и обратно, по любой синтаксической диаграмме можно построить конечный автомат (в общем случае недетерминированный), распознающий тот же язык, который задает синтаксическая диаграмма
Недетерминированный автомат Автомат, у которого допускается неоднозначный переход к заданному состоянию, либо распознаваемая цепочка символов может имеет не один маршрут к заключительному состоянию, называют недетерминированным
Пример недетерминированного автомата
Операции над языками Теорема 1. Объединение и пересечение двух распознаваемых языков, а также дополнение к распознаваемому языку является распознаваемым языком. Следствие. Любой язык, состоящий из конечного количества слов, является распознаваемым.
Определение Произведением двух языков называется множество слов, полученных путем всевозможных произведений слов первого языка на слова второго. При этом под произведением двух слов понимается их склеивание (конкатенация). Теорема 2. Произведение двух распознаваемых
Определение Пусть _ - пустое слово, L – некоторый язык. Определим степени языка: L 0 = {_}, L 1 = L, L n+1 = LLn Множество L* = U Ln , полученное объединением всех Ln , называют итерацией языка L. Теорема 3. Итерация распознаваемого
Теорема Клини Язык, полученный конечным набором распознаваемых языков применением к ним операций объединения, произведения и итерации является распознаваемым языком. И, обратно, если язык распознаваем, то он получен из конечного набора языков применением к ним конечного числа операций объединения, умножения и итерации.
Анализ предложений Рассмотрим предложение, состоящее из подлежащего и сказуемого. Дождь - подлежащее; идет - сказуемое. Предложение в терминах Бекуса и Наура: <предложение>: : =<подлежащее><сказуемое> <подлежащее>: : =дождь солнце <сказуемое>: : =идет светит.
Анализ предложений Пусть дано предложение «Дождь идет» <подлежащие>< сказуемое> Дождь идет Дождь <сказуемое> <сказуемое > идет Результат положительный, текст является предложением
Пример Грамматика: S: : =х. А, правило подстановки A: : =z y. A. Проверить является ли предложением xyyz? Попытаемся сконструировать искомое предложение: S -> x. A -> xyyz. Результат положительный.
Ограничение 1 Если А: : = 1 2. . n порождаемое правило, где i - последовательность символов, то множество начальных символов всех предложений, порождаемых из различных i не должны пересекаться, т. е. First( i) First( j)=0, для всех i ≠ j. First( ) - это множество всех терминальных символов, которые могут встречаться в начале предложений.
Пример В грамматике S: : =А В; A: : =х. А y; В: : =х. B z Нарушено ограничение 1, т. к. определение нетерминальных символов А и В начинается с символа х.
Ограничение 2 Для любого нетерминального символа А, который порождает пустую последовательность (A _), множество начальных символов не должно пересекаться со множеством символов, которые могут появляться в предложениях языка, порождаемой А, справа, то есть first(A) follow(А)=.
Пример Рассмотрим грамматику: S: : =Ax; A: : =x _, ограничение 2 нарушено, так как first(A) follow(А)={x}.
Ограничение Будем рассматривать грамматические системы, которые удовлетворяют вышеназванным ограничениям
Примеры грамматик Языки программирования Алгоритмический язык Синтаксис и семантика текстовых редакторов (Word) Переводчики
Формальный исполнитель алгоритма - субъект или устройство, способные воспринимать и анализировать указания алгоритма, изменять в соответствии с ним свое состояние, а также обладающие механизмом исполнения, способным производить пошаговую обработку информации
Формальный исполнитель Исполнитель алгоритма считается заданным, если для него установлены: - система команд; - формы представления входной и выходной информации; - система допустимых внутренних состояний; - язык представления алгоритма.
Контроль алгоритма Причинами невыполнения алгоритма могут быть: - ошибки синтаксиса; - выход начальных данных за пределы допустимого множества; - несоответствие алгоритма возможностям исполнителя.
Настоящее и будущее Компьютер через свое программное обеспечение предоставляет пользователю множество исполнителей, из которых следует выбрать оптимальный, т. е. наиболее соответствующий задаче и алгоритму.
Контрольные вопросы 1. Приведите примеры порождающей и распознающей грамматик. 2. Как выглядят синтаксическая диаграмма и конечный автомат для условного оператора? 3. Пусть задана грамматика S: : =A B и правила подстановки A: : =x. A y, B: : =x. B z. Проверить, является ли заданный текст xxxz правильным предложением?