ScholarGate
Ассистент

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

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

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

Scope

Эта тема охватывает детерминированные и недетерминированные конечные автоматы, их эквивалентность посредством конструкции подмножеств, регулярные выражения и теорему Клини, теорему Майхилла-Нерода и минимизацию состояний, свойства замкнутости регулярных языков и лемму о накачке, используемую для доказательства того, что определенные языки не являются регулярными.

Core questions

  • Какие языки могут быть распознаны с использованием только фиксированного, конечного объема памяти?
  • Почему детерминированные и недетерминированные конечные автоматы одинаково мощны?
  • Как можно доказать, что конкретный язык не является регулярным?
  • Какой автомат является наименьшим, распознающим данный регулярный язык?

Key theories

Конструкция подмножеств
Любой недетерминированный конечный автомат может быть смоделирован детерминированным автоматом, состояния которого являются множествами исходных состояний, что доказывает, что обе модели распознают одни и те же языки.
Теорема Клини
Язык распознается конечным автоматом тогда и только тогда, когда он описывается регулярным выражением, что устанавливает эквивалентность машинного и алгебраического описаний регулярных языков.
Теорема Майхилла-Нерода
Язык является регулярным тогда и только тогда, когда его отношение неразличимости строк имеет конечное число классов, и эти классы определяют уникальный минимальный детерминированный автомат для языка.

Clinical relevance

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

History

Опираясь на модель нервных сетей Мак-Каллока и Питтса 1943 года, Клини охарактеризовал события, которые могут быть представлены конечными автоматами, примерно в 1951 году, а Рабин и Скотт формализовали недетерминированные автоматы и их проблемы разрешимости в 1959 году, работа, позднее отмеченная премией Тьюринга.

Key figures

  • Stephen Kleene
  • Michael Rabin
  • Dana Scott
  • Anil Nerode

Related topics

Seminal works

  • rabinScott1959
  • sipser2013

Frequently asked questions

Как показать, что язык не является регулярным?
Наиболее распространенным инструментом является лемма о накачке, которая гласит, что любая достаточно длинная строка в регулярном языке содержит подстроку, которую можно повторять любое количество раз, оставаясь при этом в языке. Нахождение строки, которую нельзя накачать таким образом, доказывает, что язык не является регулярным; теорема Майхилла-Нерода предлагает альтернативный аргумент, демонстрируя бесконечно много различимых префиксов.
Если недетерминированные автоматы не мощнее, зачем их использовать?
Они часто намного меньше и проще в разработке или получении из регулярного выражения. Конструкция подмножеств может преобразовать их в детерминированную форму при необходимости, с возможными экспоненциальными затратами на количество состояний, поэтому недетерминизм является удобным инструментом спецификации, а не увеличением мощности распознавания.

Methods for this concept

Related concepts