質問

エッジ加重接続されたDAG $ g=(v、v、v、v、w \ to \ mathbb {z})$ 一連のNonemptyセットが存在する場合(「レベル」と呼ばれる) $ L_0={r \}、l_1 \ subset v、\ ldots、l_n \ subset v $ $ L_0 \ cup \ ldots \ cup l_n= v $ $内のノードの発信エッジl_i $ $ l_ {i + 1} $ のノードにのみ接続します。

このDAGにより多くのレベルが追加されるにつれて最短経路のセットを維持できるオンラインアルゴリズムはありますか?言い換えれば、それはクエリに答えることができます "グラフの最下レベルのrootからrootへの最小重みパス=" math-contains "> $ n $ の最小値は何ですか?"より多くのレベルが追加されるにつれて

この質問に対処する研究は見つかりませんでした。

役に立ちましたか?

解決

私があなたの問題を正しく理解していれば、問題が解決しやすいので、おそらく研究が見つからなかった。

何かを逃した場合は、エッジ加重 "階層化" DAG $ G=(L_0、\ CUP \ DOTS \ CUP L_K、E)$ (質問に定義されているように)および以下の2つの操作をサポートします。

  • init():レイヤー $ L_0 $ だけでグラフを作成し、単一の頂点 $ R \ \ in l_0 $ 、そしてエッジなし。

  • query(): $ \ min_ {v \ in l_k} d(r、v)$

  • add_layer( $ l_ {k + 1}、E '$ ):新しいセット $ L_ {k + 1} $ の頂点と重み付けされたエッジのセット $ e '\ subeteq(l_k \ hids l_ {k + 1})$ $ g $ の頂点セットは $ L_0 \ cup \ ldots \ cup l_k \ cup l_ {k + 1に更新されます。 $ とエッジセット $ g $ $ e \ cupe '$

:1)各頂点 $ v \ in l_k $ 、距離 $ d [v] $ 形式 $ s $ $ G $ 、および2)最小距離 $ d ^ * $ from 最後のレベルの頂点への$ s $

init操作は $ d [r]= 0 $ の設定になります。クエリ操作を実行するには、 $ d ^ * $ を返します。

add_layerを実装するには( $ l_ {k + 1}、e '$ )、次のように進みます。

  • set $ d ^ * $ $ + \ infty $
  • 各頂点 $ v \ in l_ {k + 1} $
    • set $ d [v]= + \ infty $
    • $ $ e '$
    • update $ d [v] $
  • update $ d ^ * $ $ \ min \ {d ^ *、d [V] \} $

これには $ | l_ {k + 1} | + | E '| $ 、したがって漸近的に最適です。このソリューションが $ g $ を保存する必要がないことにも注意してください。

他のヒント

ルートからレベル $ l_i $ のすべてのノードからすべてのノードへの長さがあるとし、この $ s \ to \ mathbb {z} $ $ l_i $ から $ l_ {i + 1} $ にエッジがあるとします。class="math-container"> $ E_I $ 。その後、ノードへの最短パスの長さ $ n $ in $ l_ {i + 1} $ $ \ min \ {w(x)\ mid(x)\ mid(x)} $ で定義されます。実際のパスを維持するのは簡単な拡張です。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top