Структуры данных и модели вычислений

         

Автоматное задание языков


Недетерминированные конечные автоматы

с -переходами. Недетерминированным конечным автоматом с -переходами над алфавитом называется набор

где — множество состояний, — алфавит, — начальное состояние , — множество финальных состояний ( и — переходная функция.

Такой автомат можно представить нагруженным ориентированным мультиграфом (диаграммой) следующим образом. Вершинами графа объявить состояния, то есть элементы множества , и если , то из состояния в состояние провести дугу, помеченную символом .

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

как пустое слово.

Пример.

Пусть алфавит , , и переходная функция задана таблицей

Диаграмма автомата изображена на рис. 13.1


Рис. 13.1. 

Недетерминированные конечные автоматы без

-переходов. Недетерминированным конечным автоматом без -переходов над алфавитом называется набор

где — множество состояний, — алфавит, — начальное состояние , — множество финальных состояний и

— переходная функция. Такой автомат также можно представить нагруженным ориентированным мультиграфом (диаграммой). Отличие в том, что дуги теперь могут быть помечены только символами алфавита .

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

Детерминированные конечные автоматы. Детерминированным конечным автоматом над алфавитом называется набор

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

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


Язык , порождаемый таким автоматом , определяется аналогично тому, как это было для недетерминированных автоматов.

Теорема.

Классы языков, задаваемые детерминированными конечными автоматами, недетерминированными конечными автоматами с -переходами, недетерминированными конечными автоматами без -переходов, регулярными выражениями совпадают.

Доказательство.

Для доказательства достаточно по регулярному выражению научиться строить равносильный недетерминированный конечный автомат с -переходами (синтез), затем избавляться от -переходов, затем детерминировать и, наконец, по детерминированному автомату строить регулярное выражение (анализ).

Синтез. Регулярное выражение представляется автоматом где , алфавит — произволен, — начальное состояние, — множество финальных состояний и переходная функция задается соотношениями


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

задается соотношениями и , .

Регулярное выражение представляется автоматом , где , — начальное состояние, — множество финальных состояний и переходная функция

задается соотношениями

и .

Для регулярного выражения , где

и — регулярные выражения, можно построить задающий автомат следующим образом. Пусть автомат

задает , а автомат задает . Не уменьшая общности, можно считать, что и — одноэлементные и что , . Положим , где , — новые состояния, и поясним построение автомата на языке диаграмм. Состояние соединим дугами со стартовыми состояниями , автоматов , и пометим их символом . Состояния и автоматов , соединим дугами с новым состоянием и также пометим их символом . Начальным состоянием построенного автомата объявим , а финальным — .



Финальное состояние автомата соединим дугой со стартовым состоянием автомата и пометим ее символом . В качестве возьмем стартовое состояние автомата , а в качестве финального состояния возьмем финальное состояние

автомата .

Для регулярного выражения , где — регулярное выражение, можно построить задающий автомат следующим образом. Пусть автомат

задает . Опять не уменьшая общности, считаем, что — одноэлементное и что . Добавляем к множеству два новых состояния — и . Соединяем -переходами пары состояний , , и .

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

Таким образом, задача синтеза решена.

Избавление от -переходов. Покажем, как по недетерминированному автомату

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

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

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

Детерминизация.Покажем, как по недетерминированному автомату без -переходов построить детерминированный автомат , такой, что . Положим , , , а

определим следующим образом: Нетрудно видеть, что построенный таким образом автомат

удовлетворяет условию .

Анализ. Для завершения доказательства теоремы покажем, как по заданному детерминированному конечному автомату ( построить регулярное выражение , такое, что . Именно это и называют задачей анализа. Правда, метод, который мы используем, можно применить и к недетерминированным автоматам. Метод заключается в том, что мы сводим задачу к решению стандартной системы уравнений. Итак, рассмотрим автомат .

Пусть , . Введем переменные , . Переменную для каждого будем интерпретировать как множество слов, которые можно прочитать, начиная от состояния и заканчивая в финальном состоянии, тогда должна удовлетворять уравнению


где , если , , если . Решив систему, берем в качестве ответа значение переменной .

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

Рис. 13.2. 

Решение. Запишем систему уравнений Заметим, что при записи системы мы упростили обозначения переменных, используя индексы.

Из четвертого уравнения получаем . Подставляя полученное выражение во все остальные уравнения, получим систему из трех уравнений: Перепишем ее в стандартном виде:

Из третьего уравнения получаем и подставляем в остальные уравнения:


Преобразуем второе уравнение к стандартному виду

и получаем из него

Наконец, получаем ответ


Содержание раздела