Лекция
Привет, Вы узнаете о том , что такое теория автоматов, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое теория автоматов , настоятельно рекомендую прочитать все из категории Теория цифровых автоматов.
теория автоматов — раздел дискретной математики, изучающий абстрактные автоматы — вычислительные машины, представленные в виде математических моделей — и задачи, которые они могут решать.
Теория автоматов наиболее тесно связана с теорией алгоритмов: автомат преобразует дискретную информацию по шагам в дискретные моменты времени и формирует результат по шагам заданного алгоритма.
Существует алгебраическая трактовка теории автоматов, использующая полукольца, формальные степенные ряды, формальные ряды над деревьями, теорию неподвижных точек и теорию матриц .
Символ — любой атомарный (то есть неделимый более без потери смысла) блок данных, который может производить эффект на машину. Чаще всего символ — это буква некоего формального языка. Например, символы, применяемые во многих языках программирования, включают буквы обычного языка, разделители, также какие-то дополнительные знаки. Но символом может быть, к примеру, ключевое слово целиком некоего языка программирования (if, for, while и т. д.), графический элемент диаграммы и т. д.
В теории автоматов под этим словом понимается формальная (математическая) конструкция, которая задает алгоритм, назначением которого является определение принадлежности заданного слова входному языку, описываемому данным формальным автоматом. Слово «формальный» подчеркивает отличие такого автомата от воплощенных в металле станков-автоматов, автоматических коробок передач и иных подобных устройств. Для краткости изложения в соответствующих пособиях прилагательное «формальный» или «математический» часто опускается (начиная с названия теории — точнее было бы «теория формальных автоматов»), когда понятно о чем идет речь.
Для выполнения своего назначения все (формальные) автоматы наделяются свойством нахождения в некотором допустимом состоянии и функциями переходов автомата, в простейшем случае (конечные автоматы) задающих только возможность перехода из одного состояние в другое при чтении очередного символа из входной цепочки. После очередного перехода читающая головка автомата сдвигается на один символ (он «прочитывается»). Так происходит пока не достигнут конец читаемого слова, либо не найдена подходящая функция перехода.
Множество всех допустимых состояний автомата конечно и образует алфавит состояний автомата. Из всего множества состояний выделяют подмножество начальных состояний автомата (в одном из которых может быть начат разбор слова) и подмножество завершающих (или конечных) состояний, в которых автомат (если слово при этом прочитано полностью) может сделать вывод о принадлежности разбираемого (входного) слова языку автомата. Начальные и конечные состояния автомата могут пересекаться. Попадание автомата в завершающее (или конечное) состояние говорит лишь о возможности завершения разбора, то есть автомат в ходе работы может проходить то или иное конечное состояние множество раз, пока чтение слова продолжается.
Начало работы автомата полностью задается его «начальной конфигурацией», включающей разбираемое слово и состояние, в котором находится автомат. Если автомат находится в одном из начальных состояний и имеется функция перехода для данного состояния и первого символа читаемой цепочки, автомат совершает соответствующий переход, сдвигает читающую головку на входном слове и (в простейшем случае — конечные автоматы) переходит к исследованию следующего символа входа.
Для приема (или, как говорят, допуска) входного слова автоматом необходимо выполнение двух условий:
Под «пустым переходом» или «переходом по пустому символу» здесь понимается переход из одного состояния в другое, когда очередной символ из входного слова не считывается или, иначе говоря, «читается» пустой символ. Об этом говорит сайт https://intellect.icu . Обозначения см. ниже.
Заметим, что автомат должен принять все допустимые слова описываемого им языка и при этом не принять ни одного слова, которое в этот язык не входит.
Если входное слово не принадлежит языку, то автомат либо
Формальные автоматы обычно делятся по особенностям своих функций переходов, определяющих степень сложности языка, который он описывает.
По классификации Н. Хомского, известны четыре основных вида (по разнообразию, по сложности) формальных языков:
Для разбора слов из регулярных языков подходят формальные автоматы самого простого устройства, т. н. конечные автоматы. Их функция перехода задает только смену состояний и, возможно, сдвиг (чтение) входного символа.
Для разбора слова из контекстно-свободных языков в автомат приходится добавлять «магазинную ленту» или «стек», в который при каждом переходе записывается цепочка на основе соответствующего алфавита магазина. Такие автоматы называют «магазинные автоматы».
Для контекстно-зависимых языков разработаны еще более сложные линейно-ограниченные автоматы, а для языков общего вида — машина Тьюринга .
При более близком знакомстве с теорией, становится понятно, что чем более сложно устройство автомата, тем больше его возможности распознавания, но и, одновременно, более сложно и трудоемко становится с ним работать. Поэтому грамотный математик и инженер-программист стараются подбирать наиболее простой вид автомата, решающий с должным качеством поставленную задачу распознавания.
Заметим, что многие задачи поиска сведений во всемирной сети Интернет записываются в понятиях регулярных языков (т.е. с самыми жесткими ограничениями), а большинство применяемых универсальных языков программирования вполне успешно воплощены на основе контекстно-свободных грамматик (хотя и с некоторыми усовершенствованиями, см. "атрибутные грамматики"). К числу немногих и очень своеобразных исключений относится язык программирования ЛИСП (LISP), разработанный на основе контекстно-зависимых языков. А Машина Тьюринга, при всей своей (в теории) универсальности и мощи, оказывается настолько сложной и неудобной для использования в приложениях, что используется только для теоретического анализа.
Для одной и той же текущей конфигурации (состояние автомата, читаемый входной символ и, возможно, некоторые дополнительные параметры для сложных видов автоматов, например, содержание стека в магазинном автомате) функции переходов формального автомата могут задавать как единственный (определенный, детерминированный) переход, так и несколько разных. Иначе говоря, для одной и той же конфигурации автомата вообще говоря возможно существование нескольких функций переходов.
Неопределенность (недетерминированность) автомата может возникать и тогда, когда каждой его конфигурации соответствует лишь одна функция перехода, но при этом допустимы и переходы по «пустой цепочке» (пустому символу). Понятно, что неоднозначность перехода здесь может возникать не за один, а за несколько тактов работы автомата.
По данному признаку автоматы также делятся на детерминированные (определенные) и недетерминированные. Важность данного разделения объясняется еще и тем, как свойство детерминированности влияет на толкование допуска слова автоматом.
Так, если у нас детерминированный автомат, то если вышеупомянутые условия допуска слова не выполнены, мы можем сразу сказать, что данное слово не принадлежит языку. Если же у нас автомат недетерминированный, то в подобном случае мы этот вывод делаем лишь для одной из возможных веток разбора слова. На деле программисту приходится как-то запоминать все возможные развилки разбора слова и, если одна из веток завершилась неудачно, возвращаться к очередной развилке и исследовать другую ветку разбора. И только после исследования всех возможных вариантов разбора (если ни одна из промежуточных веток не соответствовала условиям допуска), можно уверенно сделать вывод о том, что данное слово не принадлежит языку.
Понятно, что отслеживание и учет возможных возвратов при разборе слова заметно усложняет работу программиста. Поэтому возникает вопрос, можно ли так преобразовать автомат, чтобы он из недетерминированного стал детерминированным и, в целом ряде случаев, поэтому более удобным для работы с ним. В теории автоматов доказано, что для регулярных языков и соответствующих им конечных автоматов это можно сделать всегда. А для остальных видов языков (по Н. Хомскому), начиная с контекстно-свободных и соответствующих им автоматов, в общем случае — уже нет.
С другой стороны отмечается, что недетерминированные автоматы обычно имеют заметно меньший объем, их логика работы легче понимается человеком. Заметим, что при использовании многопроцессорных (многоядерных) вычислительных машин сама возможность распараллеливания нередко тесно связана с недетерминированностью алгоритма. Программа, все части которой должны выполняться в строго определенной последовательности, распараллеливанию не поддается… .
Автоматы могут быть детерминированные и недетерминированные.
Детерминированный конечный автомат (ДКА) — последовательность (кортеж) из пяти элементов (𝑄,Σ,𝛿,𝑆0,𝐹) , где:
Недетерминированный конечный автомат (НКА) — последовательность (кортеж) из пяти элементов (𝑄,Σ,Δ,𝑆,𝐹) , где:
Слово
Автомат читает конечную строку символов a1, a2, …., an , где ai ∈ Σ, которая называется входным словом. Набор всех слов записывается как Σ*.
Принимаемое слово
Слово w ∈ Σ* принимается автоматом, если qn ∈ F.
Говорят, что язык L читается (принимается) автоматом M, если он состоит из слов w на базе алфавита Σ таких, что если эти слова вводятся в M, по окончании обработки он приходит в одно из принимающих состояний F:
𝐿={𝑤∈Σ⋆|𝛿^(𝑆0,𝑤)∈𝐹}
Обычно автомат переходит из состояния в состояние с помощью функции перехода 𝛿, читая при этом один символ из ввода. Есть автоматы, которые могут перейти в новое состояние без чтения символа. Функция перехода без чтения символа называется 𝜖-переход (эпсилон-переход).
Теория автоматов лежит в основе всех цифровых технологий и программного обеспечения, так, например, компьютер является частным случаем практической реализации конечного автомата.
Часть математического аппарата теории автоматов напрямую применяется при разработке лексических и синтаксических анализаторов для формальных языков, в том числе языков программирования, а также при построении компиляторов и разработке самих языков программирования, описания аппаратуры, а также разметки.
Другое важнейшее применение теории автоматов — математически строгое нахождение разрешимости и сложности задач.
Исследование, описанное в статье про теория автоматов, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое теория автоматов и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Теория цифровых автоматов
Комментарии
Оставить комментарий
Теория цифровых автоматов
Термины: Теория цифровых автоматов