- •2. Формальное определение грамматики. Форма Бэкуса—Наура
- •3. Регулярные выражения как способ определения языка. Первый вариант
- •Второй вариант
- •Способы задания регулярных языков
- •Конечные автоматы, виды.
- •Построение дка на основе нка.
- •Минимальный конечный автомат. Первый вариант
- •Второй вариант
- •Метод нахождения лишних состояний.
- •Алгоритм минимизация ка.
- •13. Лексический анализ.
- •14. Построение Полиза.
- •15. Формальное определение языка, способы задания.
- •16. Классификация Хомского.
-
Конечные автоматы, виды.
Конечный автомат — абстрактный автомат без выходного потока, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.
Существуют различные варианты задания конечного автомата. Например, конечный автомат может быть задан с помощью пяти параметров: , где:
-
Q — конечное множество состояний автомата;
-
q0 — начальное (стартовое) состояние автомата ();
-
F — множество заключительных (или допускающих) состояний, таких что ;
-
Σ — допустимый входной алфавит (конечное множество допустимых входных символов), из которого формируются строки, считываемые автоматом;
-
δ — заданное отображение множества во множество подмножеств Q:
(иногда δ называют функцией переходов автомата).
Автомат начинает работу в состоянии q0, считывая по одному символу входной строки. Считанный символ переводит автомат в новое состояние из Q в соответствии с функцией переходов. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово «принимается» автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово «отвергается».
Конечные автоматы подразделяются на детерминированные и недетерминированные.
Детерминированным конечным автоматом (ДКА) называется такой автомат, в котором для каждой последовательности входных символов существует лишь одно состояние, в которое автомат может перейти из текущего.
Недетерминированный конечный автомат (НКА) является обобщением детерминированного.
Конечные автоматы широко используются на практике, например в синтаксических, лексических анализаторах, и тестировании программного обеспечения на основе моделей.
-
Построение дка на основе нка.
Алгоритм систем подмножеств
Смысл алгоритма состоит в замене множества из состояний НКА, множеством из подмножеств его состояний.
Алгоритм
Генерируем все подмножества множества состояний НКА — это состояния ДКА. Далее для всевозможных — пар состояний ДКА и символов , добавляем переход из в по , если для каждого состояния НКА из есть переход по в состояние из и, наоборот, в каждое состояние НКА из есть переход из состояния из по
Алгоритм Томпсона
Данный алгоритм используется для преобразования НКА в ДКА. Смысл этого алгоритма, как и предыдущего, состоит в замене множества из состояний НКА, множеством из подмножеств его состояний. Но не все из состояний будут присутствовать в ДКА, ввиду недостижимости многих из них, поэтому в алгоритме используется обход в ширину.
Алгоритм
Вначале в очередь помещается множество состоящее только из стартового состояния НКА . Затем из очереди изымается очередное множество — новое состояние ДКА. Если в есть допускающие состояния, то оно допускающее. Функция перехода строится по следующему правилу: . В результате задаст новое состояние автомата. Если еще нет в ДКА, тогда мы помещаем в очередь. Так как - конечна, а , то алгоритм завершится за конечное число шагов. Отсюда же получается верхняя оценка на время работы алгоритма — в худшем случае это .