Алгоритм преобразования НКА в эквивалентный ДКА

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

Цель данной статьи: познакомить Вас с алгоритмом построения детерминированного конечного автомата из недетерминированного конечного автомата. И сразу куча вопросов: зачем понадобилось данное преобразование, что такое конечный автомат, что такое ДКА и НКА и зачем мне это знать? Начнём с мотивации.

Зачем?

Любой алгоритм можно представить в виде конечного автомата. Обоснованность данного высказывания стоит искать в теории вычислений, связанной с небезызвестной машиной Тьюринга. Теория — это классно, теория — это супер… давайте практику.

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

Надеюсь, этого достаточно, чтобы убедить вас в важности понимать данную конструкцию

© Habrahabr.ru