logo search
ЭУМКД_ДиВМ3

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

(Finite-state machines)

Конечный автомат (Finite-state machines, или сокращённо FSM) – это машина или программа, содержащая конечное число состояний, которые могут изменяться от полученных входных данных.

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

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

Определения:

Символ — любой атомарный блок данных, который может производить эффект на машину.

Слово — строка символов, создаваемая с помощью операции конкатенации.

Входной алфавит — конечный набор различных символов.

Язык — множество слов, формируемых символами данного алфавита. Может быть конечным или бесконечным.

С математической точки зрения автомат состоит из 4 основных элементов:

Q — множество состояний (states) конечного автомата Σ — входной алфавит языка (alphabet), который понимает автомат.

δ — функция перехода (transitions), позволяющей автомату перейти в новое состояние.

S0 — начальное состояние конечного автомата (start state)

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

Конечные автоматы широко используются при разработке синтаксических и лексических анализаторов, а также для построения событийно-ориетированный приложений, т.е. приложений использующих графический интерфейс пользователя (GUI), например, программы Windows Forms или Windows Presentation Foundation (WPF) для платформы .NET.

Удобным инструментом для проектирования и разработки конечных автоматов является ещё одна технология .NET: Windows Workflow Foundation (WWF).Особенно широко она используется при проектировании различных бизнес-процессов, которые могут пребывать в различной степени готовности. Подробнее с этой замечательной технологией можно познакомиться в книге Э. Троелсена “Язык программирования С# 2010 и платформа .NET 4”.