2014 dxdy logo

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

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


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


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

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Проверка на равенство детерминированных конечных автоматов
Сообщение23.12.2008, 22:15 


16/05/07
32
Подскажите пожалуйста алгоритм проверки на равенство двух детерминированых конечных автоматов.

 Профиль  
                  
 
 
Сообщение23.12.2008, 22:22 
Заслуженный участник
Аватара пользователя


14/02/07
2648
Что такое "равенство" в данном случае?
Если это " равенство", а не "эквивалентность", собственно берем и проверяем :)
Если это "эквивалентность", думаю, такого конечного алгоритма не существует и не может существовать (я могу ошибаться).

 Профиль  
                  
 
 
Сообщение23.12.2008, 22:27 


16/05/07
32
Да описался. Эквивалентными называем два автомата, если множества слов которые они воспринимают совпадают. Автомат воспринимает слово, если читая по символу из слова(слева направо) ) и делая переходы согласно функции переходов, прочитав последний символ мы попадём в конечную вершину(при этом раньше в конечную мы не попадали). Рассматривается конечные, детерминированый автомат

 Профиль  
                  
 
 Re: Автоматы
Сообщение23.12.2008, 22:29 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Tik-tak писал(а):
Подскажите пожалуйста алгоритм проверки на равенство двух детерминированых конечных автоматов.


Вероятно, имелась в виду эквивалентность автоматов, а не "равенство". Два автомата называются эквивалентными, если они распознают один и тот же язык.

Алгоритм проверки эквивалентности простой. Минимизируем оба автомата и сравниваем минимальные автоматы. Если они совпадают, то исходные автоматы эквивалентны, если нет, то нет.

Алгоритм минимизации автоматов описан, например, здесь, стр. 18~--~22.

 Профиль  
                  
 
 
Сообщение23.12.2008, 22:34 


16/05/07
32
Спасиба профессор.
Я сам хотел разбивать вершины на классы еквивалентности, а потом говорить, что автоматы совпадают, если в одном класе нет конечных и не конечных вершин. Но оказался не прав.

 Профиль  
                  
 
 
Сообщение23.12.2008, 22:38 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Tik-tak писал(а):
Спасиба профессор.
Я сам хотел разбивать вершины на классы еквивалентности, а потом говорить, что автоматы совпадают, если в одном класе нет конечных и не конечных вершин. Но оказался не прав.


А как Вы определяли эту Вашу эквивалентность?

 Профиль  
                  
 
 
Сообщение23.12.2008, 22:48 


16/05/07
32
Начальные состояния эквивалентны. Дальше два состояния N и M с разных автоматов эквивалентны, если существует буква А с алфавита, и эквивалентные состояния T и P с соответствующих автоматов, такие что f(T,A)=N; f(P,A)=M. Где f функция переходов.

 Профиль  
                  
 
 
Сообщение23.12.2008, 22:59 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Tik-tak писал(а):
Начальные состояния эквивалентны. Дальше два состояния N и M с разных автоматов эквивалентны, если существует буква А с алфавита, и эквивалентные состояния T и P с соответствующих автоматов, такие что f(T,A)=N; f(P,A)=M. Где f функция переходов.


Ну, Вам тут надо выражаться точнее. Вы даёте индуктивное определение. Насколько я понял, там у Вас возникает цепочка "эквивалентностей", а та "эквивалентность", о которой Вы ведёте речь, является объединением этой цепочки.

В конце-концов (если я правильно понял), состояния "эквивалентны", если существует слово, переводящее оба автомата в эти состояния.

Мне надо ещё подумать, но, по первому впечатлению, алгоритм правильный. Зря Вы так поспешно в нём усомнились.

 Профиль  
                  
 
 
Сообщение23.12.2008, 23:02 


16/05/07
32
Да. Два состояния "эквивалентны", если существует слово, переводящее оба автомата в эти состояния.
Просто мне нада запрограммировать алгоритм, и первое определиние поудобней.

 Профиль  
                  
 
 
Сообщение23.12.2008, 23:07 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Tik-tak писал(а):
Просто мне нада запрограммировать алгоритм, и первое определиние поудобней.


Если Вам надо это программировать, то лучше программируйте тот алгоритм, который предложил я. Это гораздо проще!

Кстати, он довольно быстрый, этот алгоритм. Если я не ошибаюсь, то время его работы будет порядка $O(k^2)$, где $k$ --- максимальное число состояний этих двух автоматов.

 Профиль  
                  
 
 
Сообщение24.12.2008, 06:11 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
Добавлю ещё, что термин "эквивалентность" применительно к вашему алгоритму явно неудачен. "Эквивалентность", даже если её понимать неформально, всё же предполагает некоторую транзитивность. А у Вас с этим может быть плохо.

Допустим, что $q_1$ и $q_2$ --- состояния первого автомата, а $p_1$ и $p_2$ --- состояния второго. Допустим, оба автомата приходят по слову $w$ в состояния $q_1$ и $p_1$, по слову $v$ --- в состояния $q_1$ и $p_2$, а по слову $u$ --- в состояния $q_2$ и $p_2$. Тогда $q_1 \sim p_1$, $q_1 \sim p_2$ и $q_2 \sim p_2$. Имея эти три "эквивалентности", логично было бы ожидать, что $q_2 \sim p_1$. Однако я не вижу резонов, по которым должно было бы найтись слово, переводящее первый автомат в $q_2$, а второй --- в $p_1$.

Конечно, если состояния $q_2$ и $p_1$ имеют разные типы (конечное/не конечное), то исходные автоматы не эквивалентны, ибо, в связи с наличием слов $u$, $v$ и $w$, тип состояния должен сохраняться вдоль всей цепочки $q_2 \to p_2 \to q_1 \to p_1$. Но всё же говорить про эквивалентность тут как-то неловко.

Я бы предпочёл всё излагать в терминах соответствий. Пусть $Q$ --- множество состояний первого автомата, а $P$ --- множество состояний второго. Нас интересует соответствие $S \subseteq Q \times P$, такое что

$$
\langle q,p \rangle \in S \Leftrightarrow \text{существует слово, переводящее автоматы в состояния }p \text{ и }q
$$

Индуктивно $S$ можно задать так:

$$
S_0 = \langle q_0,p_0 \rangle : \text{состояния }q_0 \text{ и }p_0\text{ --- начальные;}
$$
$$
S_{n+1} = S_n \cup \{ \langle f(q,a), f(p,a) \rangle : \langle q,p \rangle \in S_n, a \in \Sigma \}
$$
$$
S = \bigcup_{n \in \mathbb{N}} S_n
$$

Легко показать, что для некоторого $n$ справедливо

$$
S_0 \subset S_1 \subset \ldots \subset S_n = S_{n+1} = S_{n+2} = \ldots
$$

и $S = S_n$ для этого $n$. Остаётся только найти требуемое $n$, что довольно просто сделать, пользуясь формулой перехода от $S_n$ к $S_{n+1}$. Это произойдёт довольно быстро, так как справедлива оценка $n \leqslant |Q| \cdot |P|$.

На а далее всё просто: автоматы эквивалентны тогда и только тогда, когда состояния из любой пары, входящей в $S$, имеют один и тот же тип.

Программируется всё довольно легко. Если хотите, можете реализовывать этот, свой алгоритм. По сложности он такой же, как и мой, основанный на минимизации и сравнении двух минимальных автоматов.

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

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



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

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


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

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