0

オムネットでダイクストラを使って最短経路(ホップ)を計算する構造体です。

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つ作成する必要がありますか?.感謝

4

1 に答える 1