この方法で Dijkstra'a Algorithm を変更できるかどうか疑問に思っていました: 2 つの頂点間に次の長さの 2 つのパスがあるとします。
5, 8, 6, 9 // sum=28
2, 4, 8, 25 //sum=39
最初のパスは短いですが、両方の最長エッジを無視すると、合計が 19 と 14 になるので、2 番目のパスを選択します。
ダイクストラを使用せずに、別の解決方法があるのでしょうか?
このアイデアがうまくいくかどうかはわかりませんが、最初はうまくいくように思えます。
訪問した各ノードについて、 distance の横に、そのノードD(n)
へのパス上の最長エッジの長さ、たとえば を格納しますL(v)
。未訪問の隣接ノードの距離はmin D(n) + L(n) - max(L(n), weight(v,n))
、訪問済みのすべての隣接ノードに対してn
です。がへのパス上の最後のノードである場合、L(v)
次に訪問したノードの はです。同じ長さの(より多くの)へのパスが複数ある場合は、最大のものを選択します。max(L(n), weight(v,n))
n
v
v
n's
L(v)