Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Теория автоматов и формальных языков

Основные понятия теории

Определение 1

Теория автоматов – это раздел дискретной математики, изучающий математические модели автоматов и имеющий широкое применение в научных и прикладных исследованиях.

Такими автоматами могут быть как реальные устройства, так и абстрактные системы.

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

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

Определение 2

Формальный язык – это произвольное множество слов некоторого алфавита, которое позволяет создавать математическую модель реального языка.

Перечислим другие базовые понятия данной теории:

  • Алфавит – это конечное непустое множество символов.
  • Слово – это конечная последовательность символов из алфавита.
  • Символ – это объект, имеющий собственное содержание и уникальную читаемую форму.
  • Грамматика – это набор правил вывода, по которым одни слова можно преобразовывать в другие.

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

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

Замечание 1

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

«Теория автоматов и формальных языков» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Классификация грамматик

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

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

В зависимости от алгоритмического способа формирования языка принято выделять 3 вида грамматик:

  1. Распознающие грамматики. Представляют собой алгоритмы, которым в качестве входного параметра подаётся цепочка языка, а на выходе получается один из двух результатов: «yes» (если цепочка принадлежит языку) или «no» (если цепочка не принадлежит полностью языку).
  2. Порождающие грамматики. Такие алгоритмы используются в тех случаях, когда необходимо создавать цепочки языков по требованию. То есть они позволяют генерировать различные цепочки языков.
  3. Перечисляющие грамматики. Эти грамматики последовательно генерируют все цепочки языка. Если количество цепочек в языке бесконечно, то этот процесс перечисления всегда можно самостоятельно остановить в нужный момент времени, например, при получении требуемой цепочки.

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

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

Тем не менее, можно использовать такой метод: после запуска алгоритма в ходе процесса перечисления цепочек ожидать цепочку, поданную на вход. Если она найдена, то заканчиваем процесс перечисления и делаем вывод, что она принадлежит этому языку.

Распознаватель автоматной грамматики

Распознавателем автоматной грамматики является конечный автомат.

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

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

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

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

Реализация конечного автомата с функциями-состояниями является достаточно простым и очень удачным методом реализации компьютерных игр.

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

Выявляя состояния конечного автомата и переходы между ними, реализуем его.

Всякое состояние конечного автомата является функцией, которая вызывается при последующем обновлении кадра игры.

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

Дата написания статьи: 02.09.2021
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot