zhilyaev / Finite-state-machine

Программная реализация простого конечного автомата

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Finite-state-machine

Программная реализация простого конечного автомата

Постановка задачи

  1. «Произвольная цепочка из a и b; заканчивающаяся на aba; произвольная цепочка из a и b, заканчивающаяся на bab.» Для данного формального языка составить регулярное выражение.
    • Примечание: a можно заменить на 0; b можно заменить на 1
  2. Создать таблицу конечного автомата на основе регулярного выражения
  3. Разработать программную реализацию построенного автомата
  4. Описать заданный язык автоматной грамматикой

Регулярное выражение

{avb}(babVaba)
  ИЛИ
Y1={avb}bab
Y2={avb}aba

V - дизъюнкция; ИЛИ

Граф Переходов

graph-mermaid

Таблица

  0 1 2 3 4 5 6
a 1 1 4 5 1 1 5
b 2 3 2 2 6 6 2
  • Загаловки по горизонтали - это название состояний конечного автомата
  • Загаловки по вертикали - это символы по которым осуществляется переход

Автоматная грамматика

T::={a,b};
V::={<1>,<2>,<3>,<4>,<5>,<6>};
S::=<5>|<6>;
P:
<1>::=<1>a|<4>a|<5>0|a;
<2>::=<2>b|<3>b|<6>b|b;
<3>::=<1>b;
<4>::=<2>a;
<5>::=<3>a|<6>a;
<6>::=<4>b|<5>b;

Вариации

About

Программная реализация простого конечного автомата

License:GNU General Public License v3.0


Languages

Language:Java 36.5%Language:Pascal 33.6%Language:C++ 29.9%