- •Донбасский институт техники и менеджмента международного научно-технического университета
- •Тема №1. Теория множеств. План.
- •1.1 Условные обозначения, принятые в конспекте лекций
- •1.2 Множества. Способы задания множеств
- •1.3 Операции над множествами
- •1.4 Действия с цепочками
- •1.5 Число элементов множества
- •2.2.Свойства бинарных отношений
- •2.3.Операции с бинарными отношениями
- •Тема №3. Элементы алгебры логики. План
- •3.1 Простые высказывания; логические связки
- •3.5 Отношения между высказываниями
- •3.6 Аргументы
- •Тема №4. Элементы теории графов План
- •4.1 Общие понятия и определения
- •4.2 Способы задания графов
- •4.3 Элементы графов
- •4.4 Операции с частями графа
- •4.5 Диаметр, радиус и центр графа
- •4.6 Параметры протяженности (диаметр, радиус и центр) графа
- •5.1 Конечные автоматы - распознаватели
- •5.2 Эквивалентность состояний ка
- •5.3 Недостижимые состояния
- •5.4 Недетерминированный конечный автомат
- •6.1 Автоматы-распознаватели с магазинной памятью
- •6.2 Автоматы-трансляторы с магазинной памятью
- •6.3 Задачи на построение мп-распознавателей.
- •6.4 Задачи на построение мп-трансляторов
- •Тема № 7. Грамматики План
- •7.1 Общие сведения
- •7.2 Классификация грамматик
- •7.3 Эквивалентные преобразования кс-грамматик
- •7.3.1 Удаление или добавление бесполезных (непродуктивных и не-
- •7.3.2 Добавление нетерминала
- •7.3.3 Подстановка правил
- •7.3.4 Изменение направления рекурсии
- •8.1 Построение ка для распознания автоматных грамматик
- •3.2 Построение ка-распознавателей для праволинейных грамматик
- •8.4 Построение мп-распознавателей для q-грамматик
5.1 Конечные автоматы - распознаватели
Конечный автомат(в дальнейшем КА) - абстрактное вычислительное устройство с фиксированным и конечным объемом памяти, которое на входе читает цепочки(последовательности символов некоторого алфавита), а на выходе сообщает об их принадлежности к некоторому множеству, для распознания которого он построен.
Принцип работы конечных автоматов различных уровней широко применяется в вычислительных устройствах, как на аппаратном так и на программном уровнях: это компиляторы, трансляторы программ, различные кодировщики, антивирусные программы и т.п. В принципе работу любой программы можно представить как работу цепочки конечных автоматов различной сложности. Рассмотрим построение простейших КА - распознавателей.
В процессе построения такого конечного автомата должны быть определены следующие параметры:
а) входной алфавит V конечного автомата (конечное множество входных символов);
б) конечное множество состояний S;
в) начальное состояние КА - Sнач (состояние, с которого начинает
работу КА при обработке новой цепочки);
г) множество допускающих состояний - Sдоп (подмножество множества состояний S, с которым сравнивается достигнутое КА состояние после прихода символа "конец цепочки");
д) таблица переходов (управляющая таблица), которая паре текущее состояние - входной символ ставит в соответствие новое состояние).
Примечания:
1.В множество входных символов V обязательно включают особый символ "конец цепочки", который сообщает КА о том, что нужно достигнутое состояние сравнить с множеством Sдоп и, если оно приналежит этому множеству, пропустить цепочку; в противном случае цепочка отвергается. В тексте этот символ будет иметь вид -+.
2.Часто при распознании цепочек возникает ситуация, когда невозможно поставить текущей паре состояние-входной символ новое состояние. По сути это означает, что распознаваемая цепочка не принадлежит распознаваемому множеству, хотя она и не просмотрена до символа "конец цепочки". Такие ситуации в таблице переходов помечаются символом "Е" ("error"); попав в такое состояние КА отвергает текущую цепочку и переходит в начальное состояние. В конкретных программных реализациях может вызываться обработчик ошибок, выдаваться сообщение о характере ошибки и т.п.
Начинает работать КА из начального состояния. Символы распознаваемой цепочки поступают посимвольно, начиная с первого и изменяют состояния в соответствии с таблицей переходов. После поступления символа "конец цепочки", достигнутое состояние автомата фиксируется и сравнивается с множеством допускающих состояний. На основании этого сравнения цепочка допускается или отвергается. По сути КА работает как фильтр, который пропускает "правильные" цепочки. Другая трактовка КА - компактный алгоритм распознания регулярных, в том числе и бесконечных множеств, который строит программист перед началом кодирования (реализацией алгоритма на конкретном языке).
Построение КА для распознания заданного множества цепочек - процесс творческий и неоднозначный. Теоретически для распознания одного и того же множества цепочек можно построить бесконечное множество КА. Описанный выше принцип распознания применим далеко не ко всякому регулярному множеству.
