オムネットでダイクストラを使って最短経路(ホップ)を計算する構造体です。
void cTopology::calculateUnweightedSingleShortestPathsTo(Node * _target) {
// multiple paths not supported :-(
if (!_target) throw cRuntimeError(this, "..ShortestPathTo(): target node is NULL");
target = _target;
for (int i = 0; i < num_nodes; i++) {
nodev[i].known = false; // not really needed for unweighted
nodev[i].dist = INFINITY;
nodev[i].out_path = NULL;
}
target - > dist = 0;
std::deque < Node * > q;
q.push_back(target);
while (!q.empty()) {
Node * v = q.front();
q.pop_front();
// for each w adjacent to v...
for (int i = 0; i < v - > num_in_links; i++) {
if (!(v - > in_links[i] - > enabl)) continue;
Node * w = v - > in_links[i] - > src_node;
if (!w - > enabl) continue;
if (w - > dist == INFINITY) {
w - > dist = v - > dist + 1;
w - > out_path = v - > in_links[i];
q.push_back(w);
}
}
}
}
次の最短ホップを見つけて記録したかったのです。誰かがこの問題について私を助けることができますか?理論的には、以前に選択された次のノードなしで最短パスを計算する新しい構造体を1つ作成する必要がありますか?.感謝