Изменения

Перейти к: навигация, поиск

Детерминированные конечные автоматы

60 байт добавлено, 23:10, 1 декабря 2014
Алгоритм
=== Алгоритм ===
Из определения следует, что если автоматы изоморфны, то можно их состояния занумеровать одним способом так, что вершины из разных автоматов с одинаковыми номерами будут равны — то есть в каждом из этих двух состояний существует переход в какое-то состояние с таким же номером, что и переход по этой же букве в другом состоянии. Поэтому мы можем зафиксировать какую-то нумерацию, например, в порядке [[Обход в глубину, цвета вершин | обхода в глубину ]] по символам в лексикографическом порядке и просто проверить состояния с одинаковыми номерами на равенство. Если все состояния будут равны то автоматы будут равны, в нашем случае будет следовать изоморфизм двух автоматов. Этот алгоритм пройдет по всем вершинам и ребрам ровно 2 раза (нумерация вершин + проверка на равенство), из этого следует время работы <tex>O(N + M) </tex>, где <tex> N</tex> {{---}} суммарное число вершин в автоматах, <tex> M</tex> {{---}} суммарное число ребер.
=== Псевдокод ===
Анонимный участник

Навигация