2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Детерминированный конечный автомат
Сообщение26.09.2011, 18:36 


21/03/11
200
Есть вопросы по правильности построения детерминированного конечного автомата по регулярному выражению $\[{({\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 


13/04/09
77
неправильно, если смотреть по графу, то он принимает слово $bbb$, которое невходит в данное регулярное выражение.

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

 Профиль  
                  
 
 Re: Детерминированный конечный автомат
Сообщение27.09.2011, 00:16 


21/03/11
200
состояние D я торопясь по ошибке в кружок обвел, оно не является состоянием останова (видно по таблице)

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group