
- •Формальные грамматики и языки.
- •Задача разбора
- •Классификация грамматик по Холмскому.
- •Диаграмма состояний
- •Отношения предшествования
- •Распознаватель
- •Матрица предшествования
- •Некоторые приемы приведения к грамматикам простого предшествования.
- •Представление автоматов.
- •Концевые маркеры и выходы из распознавания.
- •Эквивалентность состояний.
- •Проверка эквивалентности двух состояний.
- •Недостижимые состояния.
- •Алгоритм составления списка достижимых состояний.
- •Приведённые автоматы.
- •Получение минимального автомата.
- •Недетерминированные автоматы.
- •Эквивалентность недетерминированных и детерминированных конечных распознавателей (нкр и дкр).
- •Задание:
- •Транслятор.
- •Введение таблицы символов.
- •Включение неявной информации.
- •Обнаружение ошибок.
- •Макрообработка и операции, выполняемые во время компиляции.
- •Синтез объектной программы.
- •Оптимизация.
- •Генерация кода.
- •Редактирование связей и загрузки.
- •Задача идентификации. Реализация ка при работе трансляторов.
- •Хранение информации о лексемах.
- •Механизм запоминания.
- •Метод хеширования.
- •Нисходящий разбор с возвратами.
- •Начальная установка.
- •Новый человек.
- •Неудача
- •Класс грамматик, допускающих нисходящий распознаватель.
- •Статистические управляемые схемы перевода и атрибутные грамматики.
- •Контекстные условия
Недетерминированные автоматы.
Недетерминированный конечный распознаватель (НКР) представляет собой обычный распознаватель, но значениями его функций перехода является множество состояний, а не отдельные состоянии, и вместо одного начального состояния задаётся множество начальных состояний.
НКР задаётся:
Конечным множеством входных символов.
Конечным множеством состоянии.
Функцией перехода б, которая каждой паре состоящей из состояния и входного символа, ставит в соответствие множество новых состояний.
Подмножеством состояний, выделенных в качестве начальных.
Подмножеством состояний, выделенных в качестве допускающих.
Входная цепочка длинны n допускается недетерминированными конечными распознавателями (НКР) , когда можно найти последовательность состояний S0…Sn,такую, что S0 – начальное состояний, Sn – допускающее, и для всех i: 0<i≤n, состояний Si принадлежит множеству новых состояний, приписанных функцией переходов состоянию Si-1 для i-го элемента входной цепочки.
Способ представления конечных распознавателей с помощью таблицы переходов легко распространяется и на представление недетерминированных конечных распознавателей.
Во-первых, каждый элемент таблицы должен содержать множество состояний (перечисляя их через « , »).
Во- вторых, начальные состояния указываются с помощью стрелок. Если таких стрелок нет, подразумевается, что есть только одно начальное состояния (состояние соответствующее первой строке).
Пусть множество состояний {A, B, C}, входное множество {0,1} допускающее состояния {B, C} и начальные состояния {A, B}.
Переходы такие:
δ(A, 0)={A, B}
δ (B, 0)={B}
δ (C, 0)={ }
δ (A, 1)={C}
δ (B, 1)={C}
δ (C, 1)= {A, C}
|
0 |
1 |
|
→А →В С |
А, В В
|
С С А,С |
0 1 1 |
Цепочка 11 – одна из допускаемых автоматом цепочек, т.к., B →1C→1C причём В – начальное состояний, С – допускающее. Существование одной такой последовательности переходов достаточно, чтобы показать допустимость цепочки и СУЩЕСТВОВАНИЕ другой – из начального состояния в отвергающее
B →1C→1А на это не влияет.
Одним из переходов недетерминированного распознавателя, а именно δ(C, 0) является переходом в пустое множество. Это означает, что для состояния С и входа 0 дальнейшие переходы не возможны. Такой элемент таблицы переходов может препятствовать существованию последовательности переходов для некоторой входной цепочки так для 10, т.к 1 переводит оба начальных состояния в С, множество преемников пусто, такие цепочки просто отвергаются на ряду с другими.
«Работу» недетерминированного автомата можно интерпретировать (представить) двояким образом. Покажем это на нашем примере. Пусть автомат находится в состоянии А и к нему применяется цепочка, начинающаяся с 0, тогда:
Автомат осуществляет выбор перехода либо в А, либо в В, т.е. в одно из новых состояний, соответствующих старому состоянию А и входу 0.
Автомат продолжает работу подобным образом, и при этом возможно много выборов.
Если изменяется какая-нибудь последовательность выборов, при которой автомат под действием входной цепочки заканчивает работу в допускающем состоянии, то говорят, что эта входная цепочка допускается автоматом, т.е. достаточно СУЩЕСТВОВАНИЯ одной такой последовательности.
Автомат распадается на 2 автомата, один в состоянии А, а другой – в состоянии В. При продолжении обработки входа происходит дальнейшее деление каждого автомата в соответствии с возможностями, содержащимся в таблице в переходов.
Когда вход обработан, цепочка допускается, если один из результирующих автоматов находится в допускающем состоянии.
Пример:
Построим недетерминированный автомат с входным алфавитом {A, Л, Н, О, С, Ь}, который допускает только 2 цепочки: ЛАССО и ЛАНЬ.
С0 – начальное состояние
Л1 – Л в ЛАССО
А1 – А в ЛАССО
С1 – первое С в ЛАССО
С2 – второе С в ЛАССО
О – О в ЛАССО
Л2 – Л в ЛАНЬ
А2 – А в ЛАНЬ
Н – Н в ЛАНЬ
Ь – Ь в ЛАНЬ
|
Н |
С |
Л |
О |
А |
Ь |
|
С0 Л1 А1 С1 С2 0 Л2 А2 Н Ь |
Н |
С1 С2
|
Л1Л2
|
О
|
А1
А2
|
Ь
|
0 0 0 0 0 1 0 0 0 1 |
Недетерминированность появляется двояким образом.
Во-первых, поскольку обе Л из ЛАССО и ЛАНЬ могут встречаться сразу после начального состояния, мы просто помещаем как Л1, так и Л2 в этот элемент таблицы.
Во-вторых, во многих местах встречается буква, которая не может быть правильным продолжением слова, и эти места мы оставляем незаполненными, как указание на то, что продолжение невозможно. Это освобождает нас от введения состояния – «ошибка».