Теория и реализация языков программирования

       

Построение недетерминированного конечного автомата по регулярному выражению


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

Алгоритм 3.1. Построение недетерминированного конечного автомата по регулярному выражению.

Вход. Регулярное выражение r в алфавите T.

Выход. НКА M, такой что L(M) = L(r).

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

  1. Для выражения e строится автомат

    Построение недетерминированного конечного автомата по регулярному выражению

    Рис. 3.5. 

  2. Для выражения
    Построение недетерминированного конечного автомата по регулярному выражению
    строится автомат
  3. Пусть M(s) и M(t) - НКА для регулярных выражений s и t соответственно.

    Построение недетерминированного конечного автомата по регулярному выражению

    Рис. 3.6. 

    1. Для выражения s|t автомат M(s|t) строится как показано на рис. 3.7. Здесь i - новое начальное состояние и f - новое заключительное состояние. Заметим, что имеет место переход по e из i в начальные состояния M(s) и M(t) и переход по e из заключительных состояний M(s) и M(t) в f. Начальное и заключительное состояния автоматов M(s) и M(t) не являются таковыми для автомата M(s|t).

      Построение недетерминированного конечного автомата по регулярному выражению

      Рис. 3.7. 

    2. Для выражения st автомат M(st) строится следующим образом:

      Построение недетерминированного конечного автомата по регулярному выражению

      Рис. 3.8. 

      Начальное состояние автомата M(s) становится начальным для нового автомата, а заключительное состояние M(t) становится заключительным для нового автомата. Начальное состояние M(t) и заключительное состояние M(s) сливаются, то есть все переходы из начального состояния M(t) становятся переходами из заключительного состояния M(s). В новом автомате это объединенное состояние не является ни начальным, ни заключительным.

    3. Для выражения s* автомат M(s*) строится следующим образом:

      Построение недетерминированного конечного автомата по регулярному выражению

      Рис. 3.9. 

      Здесь i - новое начальное состояние, а f - новое заключительное состояние.



Содержание раздела