2

wikiで与えられた疑似コードに従ってこのコードを作成しました。まだいくつかのエラーがあります。コーディングを手伝ってください。どうすれば改善できるか教えてください。何時間も試しています。私はエラーとして知っている行をマークしました。どこが間違っているのかわからない

  var graph = [{
        from: [1, 2, 3, 4],
        to: [3, 3, 5, 6]
    }];
    var shortestpath = function (graph, source) {
            for (i in graph) {
                dist[i] = infinty;
                prev[i] = undefined;
            }
            dist[source] = 0;
            var q = [];
            q.push(graph.value);
            while (q != 0) {
               var min_distance = infinity;
var u = null;

for (var i in dist) {
   if (dist[i] < min_distance) {
      u = i;
      min_distance = dist[u];
   }
}
                if (dist[u] = infinity) {
                    break;
                }
                q.pop(u);
                for (v in u) {
                    var alt = dist[u] + dist_between(u, v);
                    if (alt < dist[v]) {
                        dist[v] = alt;
                        previous[v] = u;
                        q.sort(v);
                    }
                }
            }
            return dist;
        }
    }
4

1 に答える 1

0

ダイクストラ アルゴリズムの疑似コードによると、は u listではなく、 で距離が小さい頂点のインデックスを保持する単純な int である 必要がありQます。

最小距離の頂点が必要な場合は、頂点配列を反復処理し、これまでに見つかった最小距離を追跡し、この距離 uを持つ頂点に割り当てる必要があります。

var min_distance = infinity;
var u = null;

for (var i in dist) {
   if (dist[i] < min_distance) {
      u = i;
      min_distance = dist[u];
   }
}
于 2012-06-29T19:57:01.483 に答える