Конечный автомат

Коне́чный автома́т (КА) — (в теории алгоритмов) — математическая абстракция, модель дискретного устройства, имеющего один вход, один выход и в каждый момент времени находящегося в одном состоянии из множества возможных. Является частным случаем абстрактного дискретного автомата, число возможных внутренних состояний которого конечно.

Абстрактный автомат

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

Помимо конечных автоматов существуют и бесконечные дискретные автоматы — автоматы с бесконечным числом внутренних состояний, например, машина Тьюринга.

Переход из одного внутреннего состояния КА в другое может происходить не только от внешнего воздействия но и самопроизвольно.

Различают детерминированные КА — автоматы, в которых следующее состояние однозначно определяется текущим состоянием и выход зависит только от текущего состояния и текущего входа, и недетерминированные КА, следующее состояние у которых в общем случае неопределённо и, соответственно, не определён выходной сигнал. Если переход в последующие состояния происходит с некоторыми вероятностями, то такой КА называют вероятностным КА.

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

С абстрактной точки зрения КА изучает раздел дискретной математики — теория конечных автоматов.

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

Содержание

Формальное описание конечного автомата

  Обобщённая функциональная схема абстрактного автомата. «Память» — это совокупность внутренних состояний.
s(t){displaystyle s(t)}  — текущее состояние;
s(t+1){displaystyle s(t+1)}  — следующее состояние.

Общее формальное описание

Формально КА определяется как пятёрка:

A=(S,X,F,δ,s0),{displaystyle A=(S,X,F,delta ,s0),} 
где S{displaystyle S}  — конечное множество состояний автомата;
X{displaystyle X}  — конечный входной алфавит, из которого формируются строки, считываемые и выдаваемые автоматом;
δ:S×X→S{displaystyle delta :Stimes Xrightarrow S}  — функция переходов;
F — непустое множество конечных состояний автомата;
s0 = {S0} — начальное состояние автомата;

Абстрактный автомат с некоторым выделенным состоянием, это состояние называют начальным состоянием, называется инициальным автоматом. Так как каждый КА имеет конечное число состояний, и любое из его состояний может быть назначено начальным состоянием, одному и тому же автомату соответствует N{displaystyle N}

  инициальных автоматов, N{displaystyle N}  — число внутренних состояний КА. Таким образом, абстрактный КА определяет семейство инициальных автоматов.

Различают два класса КА: автоматы Мура — КА у которых выходной сигнал зависит только от внутреннего состояния, по рисунку у автомата Мура нет связи от входа x(t){displaystyle x(t)}

 к функции выхода λ{displaystyle lambda }  и автоматы Мили — выходной сигнал зависит как от внутреннего состояния, так и от состояния входа.

Другие способы задания функционирования КА

Исходное
состояние
Следующее состояние
Входной
символ a
Входной
символ b
Любой
другой
символ
p0 p1 p0 p0
p1 p1 p2 p1
p2 p3 p4 p2
p3 p3 p3 p3
p4 p4 p4 p4
p5 p3 p5 p5
  1. Диаграмма состояний (или иногда граф переходов) — графическое представление множества состояний и функции переходов. Представляет собой размеченный ориентированный граф, вершины которого — состояния КА, дуги — переходы из одного состояния в другое, а метки дуг — символы, по которым осуществляется переход из одного состояния в другое. Если переход из состояния q1 в q2 может быть осуществлен по одному из нескольких символов, то все они должны быть надписаны над дугой диаграммы.
  2. Таблица переходов — табличное представление функции δ. Обычно в такой таблице каждой строке соответствует одно состояние, а столбцу — один допустимый входной символ. В ячейке на пересечении строки и столбца записывается состояние, в которое должен перейти автомат, если в данном состоянии он считал данный входной символ. Пример таблицы переходов для автомата, заданного в виде графа по рисунку 1 приведена справа.

Детерминированность

  Рисунок 1. Пример графа переходов детерминированного КА.   Рисунок 2. Пример графа переходов недетерминированного КА с самопроизвольными переходами

  Рисунок 3. Недетерминированный КА с переходами из одного состояния в разные состояния при одинаковом входном воздействии

Конечные автоматы подразделяются на детерминированные и недетерминированные.

  • Детерминированным конечным автоматом (ДКА) называется такой автомат, в котором нет дуг с меткой ε (предложение, не содержащее ни одного символа), и из любого состояния по любому символу возможен переход не более, чем в одно состояние.
  • Недетерминированный конечный автомат (НКА) является обобщением детерминированного. Недетерминированность автоматов может достигаться двумя способами: либо могут существовать переходы из состояние в состояние вызываемые пустой цепочкой символов, то есть самопроизвольные переходы без внешних воздействий, либо из одного состояния КА может переходит в разные состояния под воздействием одного и того же символа.

Если рассмотреть случай, когда автомат формально задан следующим образом: M=(V,Q,S,F,δ){displaystyle M=(V,Q,S,F,delta )}

 , где S{displaystyle S}  — множество начальных состояний автомата, такое, что S⊆Q{displaystyle Ssubseteq Q} , то появляется третий признак недетерминированности — наличие нескольких начальных (стартовых) состояний у автомата M{displaystyle M} .

Теорема о детерминизации[источник не указан 1020 дней] утверждает, что для любого конечного автомата может быть построен эквивалентный ему детерминированный конечный автомат (два конечных автомата называют эквивалентными, если их языки совпадают[прояснить]). Однако поскольку количество состояний в эквивалентном ДКА в худшем случае растёт экспоненциально с ростом количества состояний исходного НКА, на практике подобная детерминизация не всегда возможна. Кроме того, конечные автоматы с выходом в общем случае не поддаются детерминизации.

В силу последних двух замечаний, несмотря на бо́льшую сложность недетерминированных конечных автоматов, для задач, связанных с обработкой текста, преимущественно применяются именно НКА[источник не указан 1020 дней].

Автоматы и регулярные языки

Для конечного автомата можно определить язык (множество слов) в алфавите V{displaystyle V}

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

Теорема Клини утверждает, что язык является регулярным тогда и только тогда, когда он допускается некоторым конечным автоматом, используемым в этом языке.

Минимизация автоматов

Основная статья: Минимизация ДКА

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

Специализированные языки программирования

В графическом языке SFC программа описывается в виде схематической последовательности шагов, объединённых переходами.

Разработка моделей с использованием конечных автоматов

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

Что может «делать» конечный автомат и последовательностная машина?

Ответ дается в различных терминах в зависимости от того, является ли автомат (соответственно П-машина) автономным или нет[1]. Автономный конечный автомат, начиная с некоторого такта, может лишь генерировать периодическую последовательность состояний х (соответственно П-машина — последовательность выходных символов y). Если эта последовательность состоит лишь из одного символа, то это означает, что за конечное число тактов автомат достигает равновесного состояния. Если же эта последовательность содержит несколько символов, это означает, что автомат последовательно проходит состояния, соответствующие этим символам, а затем работа автомата неограниченно долго периодически повторяется. Более того, какова бы ни была периодическая последовательность состояний конечной длины, всегда может быть построен автономный конечный автомат, который, начиная уже со второго такта, генерирует эту последовательность. Ничего иного, кроме периодического повторения одного и того же состояния или конечной последовательности состояний, автономный автомат «делать» не может. Однако в связи с тем, что последовательное выполнение заданного цикла операций типично для многих областей современной техники, динамические системы, которые в приемлемой идеализации можно рассматривать как автономный автомат, имеют широкое применение.

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

Современным примером служат многие станки-автоматы, автоматические линии и системы автоматического управления циклическими производствами. Если автомат не автономен, то есть состояние входа изменяется от такта к такту, то ответ на вопрос, что может «делать» и что не может «делать» конечный автомат, можно дать в разных терминах. Например, ответ можно сформулировать на языке представления событий. Действительно, неавтономный конечный автомат или последовательностная машина лишь преобразуют входные последовательности символов в последовательности состояний или выходных символов, и сказать, что может и что не может «делать» конечный автомат, значит выяснить, какие преобразования последовательностей возможны в конечном автомате, а какие невозможны. Но так как количество состояний (соответственно выходных символов) конечно, этот вопрос эквивалентен такому вопросу: при каких входных последовательностях возникает каждое из возможных состояний (или каждый из выходных символов). Этот последний вопрос в терминах, принятых в теории конечных автоматов, формулируется так: какие события могут и какие не могут быть представлены в конечном автомате каждым из возможных состояний (или каждым из выходных символов).

Ответ дается теоремами Клини. Этот ответ точный, так как теоремы Клини устанавливают необходимые и достаточные условия представимости последовательности событий в автомате, а именно: выделяются особые множества последовательностей входных символов — регулярные множества. Факт появления входной последовательности из такого множества называется соответствующим регулярным событием. Теоремы Клини устанавливают, что в конечном автомате могут быть представлены регулярные события и только они. Таким образом, на языке представления событий ответ на вопрос, что может «делать» конечный автомат, дается однозначно: конечный автомат может представлять только регулярные события. Ряд важных множеств входных последовательностей, с которыми часто приходится иметь дело на практике, заведомо регулярны. Так, например, заведомо регулярно множество, состоящее из любого конечного числа входных последовательностей конечной длины; множество любых периодических входных последовательностей; множество бесконечных последовательностей, которое содержит заданные конечные последовательности на протяжении нескольких последних тактов, и т. д.

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

Хотя теоремы Клини и отвечают на вопрос о том, что может делать конечный автомат, но отвечают они на этот вопрос неэффективно. Сделаны первые попытки построения иных языков, на которых ответ может быть дан эффективно. Эта проблема языка, играющая кардинальную роль в получении эффективного ответа на вопрос, что может и что не может «делать» конечный автомат, имеет решающее значение и для первых этапов синтеза автомата, то есть для ответа на второй из сформулированных выше вопросов. Если расширить класс динамических систем, которые мы определили терминами «конечный автомат» и «последовательностная машина», включением бесконечной памяти (моделью бесконечной памяти может быть, например, бесконечная лента для хранения символов или бесконечное число состояний), то для динамических систем этого более широкого класса (абстрактные системы этого класса называют машинами Тьюринга) ответ на вопрос «что они могут делать?» значительно проще — они могут реализовать любой наперед заданный алгоритм. При этом само понятие алгоритма трактуется в современной математике как реализация вычисления значений какой-либо рекурсивной функции. Столь однозначный и четкий ответ на вопрос «что может делать машина Тьюринга?» дает возможность положить понятие о машине Тьюринга в основу определения понятия алгоритма: алгоритмом называется любой процесс, который может быть осуществлен на конечном автомате, дополненном бесконечной памятью, то есть алгоритмически полных машинах, на машине Тьюринга, на машине Поста и др.

Примечания

  1. Айзерман М. А., Гусев Л. А., Розоноэр Л. И., Смирнова И. М., Таль А. А. Логика. Автоматы. Алгоритмы. Гос. изд. физ.-мат. литературы 1963, 556 стр.

См. также

Литература

Ссылки