Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 1308 / 43 | Оценка: 5.00 / 5.00 | Длительность: 14:18:00
ISBN: 978-5-94774-714-0
Специальности: Программист, Математик
Лекция 4:

Конечные автоматы: преобразователи и распознаватели

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Конечные автоматы - распознаватели

Детерминированные конечные автоматы (ДКА) и автоматные языки

Пусть \Sigma =\{ a_{1}, \dots , a_{m}\} - это алфавит, который состоит из конечного множества элементов, называемых символами (буквами).

Слово в алфавите \Sigma - это конечная последовательность символов этого алфавита: w =w_{1}\dots  w_{n}, w_{i} \in  \Sigma при i=1, ..., n . Число букв в этой последовательности называется длиной слова и обозначается |w|. Имеется одно специальное "пустое" слово длины 0. Будем обозначать его через \varepsilon. На словах определена операция приписывания одного слова после другого, называемая конкатенацией: если слово w =w1... wn, а слово v =v1... vm, то их конкатенация w \hat{}  v - это слово w1... wnv1... vm длины n+m. Обычно знак конкатенации \hat{} будем опускать и писать просто w v (по аналогии со знаком умножения в алгебре). Пустое слово - это единственное слово такое, что для любого слова w справедливо равенство w \varepsilon = \varepsilon  w = w. Операция конкатенации ассоциативна: для любых трех слов w, v и u, очевидно, имеет место равенство: (w v)u = w(v u). Поэтому скобки при записи конкатенации нескольких слов будем опускать. Для представления нескольких конкатенаций одного и того же слова используют сокращенную "степенную форму" записи: w^{0} = \varepsilon , w^{1}= w,\dots , w^{i+1} = w^{i}w. Например, a3b4c2 - это сокращенная запись слова aaabbbbcc.

Языком в алфавите \Sigma называется произвольное множество слов этого алфавита. Язык, включающий все слова в алфавите \Sigma ( в том числе и пустое слово \varepsilon ), будем обозначать через \Sigma ^{*}.

Конечные автоматы часто используются для определения тех или иных свойств слов, т.е. для распознавания языков: автомат, распознающий некоторый язык L должен по произвольному слову w ответить на вопрос " w \in  L? ". Для решения такой задачи функция выходов может быть заменена на проверку того, в какое состояние переходит автомат после получения входного слова w - "принимающее" или "отвергающее".

Определение 4.3. Детерминированный конечный автомат (ДКА) - распознаватель - это система вида

A = <\Sigma, Q, q_0, F, \Phi, >

включающая следующие компоненты:

  • \Sigma  =\{ a_{1}, \dots  , a_{m}\}  (m \ge  1) - конечное множество - входной алфавит ;
  • Q={q0, ... , qn-1} (n >= 1) - конечное множество - алфавит внутренних состояний;
  • q_{0} \in  Q - начальное состояние автомата;
  • F \subseteq  Q - множество принимающих (допускающих, заключительных) состояний ;
  • \Phi : Q x \Sigma  \to  Q - функция переходов,
  • \Phi (q, a) - это состояние, в которое переходит автомат из состояния q, когда получает на вход символ a.

Функцию \Phi называют программой автомата A и задают как список из m n команд вида q_{i}a_{j} \to  \Phi (q_{i},a_{j}).

Удобно также задавать функцию \Phi с помощью описанной выше таблицы размера n x m, строки которой соответствуют состояниям из Q, а столбцы - символам из входного алфавита \Sigma, и в которой на пересечении строки qi и столбца aj стоит состояние \Phi (q_{i},a_{j}).

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

Определение 4.4. Диаграмма ДКА A = <\Sigma , Q, q_{0}, \Phi  > - это ориентированный (мульти)граф DA=(Q, E) с помеченными ребрами, в котором выделена вершина- начальное состояние q0 из каждой вершины q \in  Q выходит |\Sigma _{X}| ребер, помеченных символами a \in  \Sigma так, что для каждой q \in  Q и каждого символа a \in  \Sigma имеется единственное ребро из q в вершину q' =\Phi (q,a) с меткой a .

Скажем, что представленный последовательностью ребер путь p=e1e2 ... et в диаграмме несет слово w=w1w2 ... wt, если wi - это метка ребра ei (1 >= i >= t). Если q - начальная вершина (состояние) этого пути, а q' - его заключительная вершина, то будем говорить, что слово w переводит q в q'.

Работа конечного автомата-распознавателя состоит в чтении входного слова и изменению состояний в зависимости от его символов.

Определение 4.5. Назовем конфигурацией ДКА A = <\Sigma , Q, q_{0}, F, \Phi , > произвольную пару вида (q, w), в которой q \in  Q и w \in  \Sigma ^{*}.

На множестве конфигураций введем отношение перехода за один шаг \vdash_A:

(q, w) \vdash_A (q^\prime, w^\prime)\ \Leftrightarrow\ w = aw^\prime, \ \Phi(q,a)= q^\prime

Если w=\varepsilon, то положим для каждого q \in  Q: (q, \varepsilon ) \vdash_A (q, \varepsilon ).

Через \vdash_A^* обозначим рефлексивное и транзитивное замыкание \vdash_A.

Содержательно, (q, w) \vdash_A^* (q^\prime, w^\prime) означает, что автомат A, начав работу в состоянии q на слове w=w1 ... wl, через некоторое конечное число шагов 0 <= k <= l прочтет первые k символов слова w и перейдет в состояние q', а w' =wk+1 ... wl - это непрочтенный остаток слова w.

Определение 4.6. ДКА A распознает (допускает, принимает) слово w, если для некоторого q \in  F

(q_0, w) \vdash_A^* (q, \varepsilon), т.е. после обработки слова w автомат переходит в принимающее состояние.

Язык LA, распознаваемый (допускаемый, принимаемый) автоматом A, состоит из всех слов, распознаваемых этим автоматом:

L_A= \{ w\ |\ A \text{ распознает } \ w\}

Язык называется конечно автоматным, если он распознается некоторым ДКА.

Из этого определения, в частности, следует, что \varepsilon  \in  L_{A} \Leftrightarrow  q_{0} \in  F. Один и тот же язык может распознаваться разными автоматами.

Определение 4.7. Автоматы A и B называются эквивалентными, если совпадают распознаваемые ими языки, т.е. LA = LB .

Определение распознавания слова и языка можно легко перевести на язык диаграмм.

Лемма 4.3. Автомат A распознает (допускает, принимает) слово w, если для некоторого q \in  F в диаграмме DA имеется путь из q0 в q, который несет слово w, т.е. w переводит q0 в заключительное состояние q.

Доказательство можно провести индукцией по длине слова w (см. задачу 4.3).

Tаким образом, язык LA, распознаваемый автоматом A, состоит из всех слов, которые переводят в его диаграмме DA начальное состояние q0 в заключительные состояния из F.

Наша цель теперь состоит в изучении класса конечно автоматных языков.

Во многих случаях удается доказать, что язык L конечно автоматный, непосредственно построив распознающий его автомат. Для этого нужно постараться разбить множество всех входных слов на конечное число классов "однородных", "эквивалентных" слов, т.е. слов, получение которых на входе одинаково влияет на возможность их продолжения до слов распознавемого языка. Затем для каждого такого класса создать состояние автомата и определить переходы между этими состояниями. Часто полезно бывает выделить одно состояние для представления "ошибочных" слов, для которых ни они сами, ни любые их продолжения не входят в язык.

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Денис Борисов
Денис Борисов
Россия, Казань, КСЮИ, 2013
Сергей Жарский
Сергей Жарский
Беларусь, Минск