2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Детерминированный конечный автомат
Сообщение26.09.2011, 18:36 
Есть вопросы по правильности построения детерминированного конечного автомата по регулярному выражению $\[{({\mathop b\limits_1 ^*}\mathop b\limits_2 \mathop a\limits_3 )^*}\mathop b\limits_4 {\mathop a\limits_5 ^*}\mathop \# \limits_6 \]$ (где $1...6$ - позиции символов) из алфавита $\[\{ a,b\} \]$:
1) Корень синтаксического дерева это его самая верхняя вершина (если пользоваться алгоритмами построения синтаксического дерева из книг Ахо-Ульмана и Серебрякова по компиляторам)?
2) Возможен ли случай, когда переход к следующему состоянию возможен только при вводе одного символа из алфавита выше?
Например в случае с моим регулярным выражением, первым символом может быть только символ $b$. Т.е. правильно ли я понимаю, что функция перехода $\[D({q_0},b) = \{ \emptyset \} \]$, где $q_0$ - начальное состояние автомата?
И если да, то как это изобразить на графе автомата? Я думаю, что нужно просто не рисовать стрелку от первого состояния для символа $a$, а рисовать только для $b$, но не уверен...

Таблица $followpos$:
$\[\begin{array}{*{20}{c}}
\hline
{position}&\vline& {followpos}\\
\hline
1&\vline& {1,2}\\
\hline
2&\vline& 3\\
\hline
3&\vline& {1,2,4}\\
\hline
4&\vline& {5,6}\\
\hline
5&\vline& {5,6}\\
\hline
6&\vline& {\emptyset \,\,\,\,\,\,\,\,\,\,\,\,\,\,}
\hline
\end{array}\]$
где на слово height в таблицах не обращайте внимания (глюк какой-то)

Таблица переходов:
$\[\begin{array}{*{20}{c}}
\hline
{}&\vline& {a\{ 3,5\} }&\vline& {b\{ 1,2,4\} }\\
\hline
{start:\,\,\,{q_0} = A\{ 1,2,4\} }&\vline& \emptyset &\vline& {B\{ 1,2,3,5,6\} }\\
\hline
{B\{ 1,2,3,5,6\} }&\vline& {C\{ 1,2,4,5,6\} }&\vline& {D\{ 1,2,3\} }\\
\hline
{C\{ 1,2,4,5,6\} }&\vline& {E\{ 5,6\} }&\vline& B\\
\hline
{D\{ 1,2,3\} }&\vline& A&\vline& D\\
\hline
{E\{ 5,6\} }&\vline& E&\vline& \emptyset 
\hline
\end{array}\]$

Граф детерминированного конечного автомата (где от позиции $B$ к позиции $D$ пропущенный переход осуществляется по символу $b$?;двойные кружки есть состояния остановки F):

Изображение

Правильно ли я его построил?

 
 
 
 Re: Детерминированный конечный автомат
Сообщение26.09.2011, 23:31 
неправильно, если смотреть по графу, то он принимает слово $bbb$, которое невходит в данное регулярное выражение.

а какой вообще алгоритм построения?

 
 
 
 Re: Детерминированный конечный автомат
Сообщение27.09.2011, 00:16 
состояние D я торопясь по ошибке в кружок обвел, оно не является состоянием останова (видно по таблице)

Алгоритм обычный, книжный:
1) строим синтаксическое дерево, с его помощью вычисляем $firstpos$ для вершины, $folllowpos$ для всех позиций, затем строим таблицу по правилам для followpos. Нет, в правильности графа я уверен (с учетом оговоренных опечаток), вот только не знаю как "тупиковые" состояния {$\[\emptyset \]$} обозначать на графе. (скорее всего их вообще не нужно обозначать)

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group