Вот код для обхода графика с BreathFirstIterator
:
public class GraphTest {
public static void main(String[] args) {
DirectedGraph<Integer, DefaultEdge> graph =
new DefaultDirectedGraph <Integer, DefaultEdge>(DefaultEdge.class);
graph.addVertex(7);
graph.addVertex(4);
graph.addVertex(9);
graph.addVertex(3);
graph.addVertex(2);
graph.addVertex(5);
graph.addEdge(7, 4);
graph.addEdge(7, 9);
graph.addEdge(9, 3);
graph.addEdge(3, 2);
graph.addEdge(3, 5);
GraphIterator<Integer, DefaultEdge> iterator =
new BreadthFirstIterator<Integer, DefaultEdge>(graph);
while (iterator.hasNext()) {
System.out.println( iterator.next() );
}
}
}
Как и ожидалось, код распечатывает список всех посещенных вершин: 7,4,9,3,2,5
. Моя проблема в том, что я не знаю, как я могу использовать этот API для получения пути с удаленными откатами алгоритма. Например, для пути от 7 до 2 будет выведено 7->9->3->2
, а не только список посещенных вершин. Остановить его после достижения пункта назначения явно недостаточно. Кто-нибудь уже решил эту проблему?