Я хочу написать псевдокод для посещения конечного автомата с использованием DFS. Государственная машина может рассматриваться как ориентированный граф. Следующий алгоритм из книги Cormen использует алгоритм DFS для посещения графика.Псевдокод для посещения конечного автомата
DFS-VISIT(G, u) //G= graph, u=root vertex
u.color = GRAY
for each v from G.Adjacents(u) //edge (u, v)
if v.color == WHITE
DFS-VISIT(G, v)
Государственная машина, однако, может иметь несколько ребер между двумя вершинами. И выше алгоритм хранит ребра в списке смежности. Я реализовал алгоритм в Java со следующими классами,
class Node{
String name;
....
ArrayList<Transition> transitions;
void addTransition(Transition tr);
}
class Transition
{
String src;
String dest;
}
С приведенной выше информацией, я построил государственный аппарат с узлом и переходными объектами. Я хочу изменить приведенный выше алгоритм, где у меня нет объекта графа G. Я просто имею доступ к корневому объекту.
Могу ли я изменить приведенный выше алгоритм, как показано ниже?
DFS-VISIT(root) //root node
root.color = GRAY
for each t from root.getTransitions() //t=transition
v = t.getDestination() //v=destination of t
if v.color == WHITE
DFS-VISIT(v)
Ум, возможно, http://cstheory.stackexchange.com/? –
Вы действительно хотите покрасить состояния, а не переходы? Переходы могут быть важны в конечной машине. – Beta
все в порядке. так как вам не нужен граф, который вам не нужно передавать. – stefan