Lemon dijkstra вычисляет неправильную длину пути / пути, почему?

Я использую следующий код для вычисления кратчайшей длины пути от исходного узла s в G ко всем остальным узлам:

void class::initilize(int T, ListDigraph &G, ListDigraph::ArcMap <int> &duration,
ListDigraph::ArcMap <int> &capacity, ListDigraph::NodeMap <int> &supply) {
vector<int> to_dist(countNodes(G));
vector<int> from_dist(countNodes(G));
Node s = getsource();
Node t = getsink();
//ListDigraph::NodeMap<int> dist(G);
lemon::Dijkstra<ListDigraph, Duration> dijkstra_instance(G, duration);
dijkstra_instance.run(s);
for (ListDigraph::NodeIt n(G); n != INVALID; ++n) {
for (Node v=n;v != s; v=dijkstra_instance.predNode(v)) {
std::cout << G.id(v) << "<-";
}
cout << dijkstra_instance.dist(n) << endl;
cout << G.id(n) << endl;
to_dist[G.id(n)] = dijkstra_instance.dist(n);
dijkstra_instance.run(n, t);
from_dist[G.id(n)] = dijkstra_instance.dist(t);
}

Однако, когда я сравниваю вычисленные длины путей с реальными, они не соответствуют действительности. Даже пути неверны, и узел с идентификатором узла -1 появляется в выходных данных.
Когда я теперь помещаю dijkstra_instance.run (s) в цикл for, вычисления верны. Я неправильно использую команду dijkstra?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]