Введение

Теория автоматов – это изучение абстрактных машин и автоматов, а также вычислительных задач, которые могут быть решены с их помощью. Это теория в теоретической информатике, тесно связанная с математической логикой. Слово «автомат» происходит от греческого слова αὐτόματος, что означает «самодействующий, самовольный, самодвижущийся». Автомат (автоматы во множественном числе) – это абстрактное самодвижущееся вычислительное устройство, автоматически выполняющее предопределённую последовательность операций. Автомат с конечным числом состояний называется конечным автоматом (FA) или машиной с конечным числом состояний (FSM). На рисунке справа изображена машина с конечным числом состояний, являющаяся хорошо известным типом автомата. Этот автомат состоит из состояний (представленных на рисунке кругами) и переходов (представленных стрелками). При получении символа входных данных автомат совершает переход (или скачок) в другое состояние в соответствии со своей функцией перехода, которая принимает предыдущее состояние и текущий входной символ в качестве аргументов. Теория автоматов тесно связана с теорией формальных языков. В этом контексте автоматы используются как конечные представления формальных языков, которые могут быть бесконечными. Автоматы часто классифицируются по классу формальных языков, которые они способны распознавать, как, например, в иерархии Чомского, описывающей отношения вложенности между основными классами автоматов. Автоматы играют важную роль в теории вычислений, построении компиляторов, искусственном интеллекте, синтаксическом анализе и формальной верификации.

История

Теория абстрактных автоматов была разработана в середине 20-го века в связи с конечными автоматами. Теория автоматов изначально рассматривалась как отрасль теории математических систем, изучающая поведение систем с дискретными параметрами. Ранние работы в теории автоматов отличались от предшествующих исследований систем тем, что для описания информационных систем использовалась абстрактная алгебра, а не дифференциальное исчисление для описания материальных систем. Теория конечных преобразователей была разработана под разными названиями различными исследовательскими группами. Более ранняя концепция машины Тьюринга также была включена в эту дисциплину вместе с новыми формами автоматов с бесконечным числом состояний, такими как автоматы с магазинной памятью. В 1956 году было опубликовано издание «Исследования автоматов», в котором были собраны работы ученых, включая Клода Шеннона, У. Росса Эшби, Джона фон Неймана, Марвина Мински, Эдварда Ф. Мура и Стивена Коула Клини. С публикацией этого тома «теория автоматов оформилась как относительно самостоятельная дисциплина». В том же году Ноам Хомский описал иерархию Хомского – соответствие между автоматами и формальными грамматиками, а Росс Эшби опубликовал «Введение в кибернетику» – доступный учебник, объясняющий автоматы и информацию с использованием базовой теории множеств. Изучение линейно ограниченных автоматов привело к теореме Майхилла — Нерода, которая дает необходимое и достаточное условие для регулярности формального языка, а также точное определение количества состояний в минимальном автомате для этого языка. Лемма о накачке для регулярных языков, также полезная при доказательстве регулярности, была доказана в этот период Майклом О. Рабином и Даной Скотт вместе с вычислительной эквивалентностью детерминированных и недетерминированных конечных автоматов. В 1960-х годах сформировался комплекс алгебраических результатов, известный как «теория структуры» или «теория алгебраического разложения», который рассматривал реализацию последовательных машин из меньших машин посредством соединения. Хотя любой конечный автомат может быть смоделирован с использованием универсального набора логических элементов, для этого требуется, чтобы имитирующая схема содержала петли произвольной сложности. Теория структуры занимается «беспетлевой» реализуемостью машин. К концу десятилетия теория автоматов стала рассматриваться как «чистая математика информатики».

Приложения

Каждая модель в теории автоматов играет важную роль в нескольких прикладных областях. Конечные автоматы используются в обработке текста, компиляторах и разработке аппаратного обеспечения. Контекстно-свободные грамматики (CFG) применяются в языках программирования и искусственном интеллекте. Изначально CFG использовались при изучении естественных языков. Клеточные автоматы находят применение в области искусственной жизни, наиболее известным примером является "Игра жизни" Джона Конвея. Другие примеры, которые можно объяснить с помощью теории автоматов в биологии, включают рост моллюсков и шишек сосны, а также формирование пигментных узоров. Более того, некоторые ученые поддерживают теорию о том, что вся Вселенная вычисляется неким дискретным автоматом. Эта идея берет начало в работах Конрада Цузе и получила распространение в Америке благодаря Эдварду Фредкину. Автоматы также встречаются в теории конечных полей: множество неприводимых многочленов, представимых в виде композиции многочленов второй степени, фактически является регулярным языком. Еще одна задача, для решения которой можно использовать автоматы, – индукция регулярных языков.

Симуляторы автоматов

Симуляторы автоматов — это педагогические инструменты, используемые для обучения, изучения и проведения исследований в области теории автоматов. Симулятор автомата принимает на вход описание автомата и затем моделирует его работу для произвольной входной строки. Описание автомата можно ввести несколькими способами. Автомат может быть задан на символическом языке, либо его спецификация может быть введена в предопределенную форму, либо его диаграмма переходов может быть построена путем перетаскивания мышью. К известным симуляторам автоматов относятся Turing's World, JFLAP, VAS, TAGS и SimStudio.