タグ付けされた質問 「shortest-path」

グラフ内のノード間の最短経路を見つけるアルゴリズムの問​​題に関する質問。

7
最小スパニングツリーと最短パス
最小スパニングツリーアルゴリズムと最短パスアルゴリズムの違いは何ですか? 私のデータ構造クラスでは、2つの最小スパニングツリーアルゴリズム(PrimおよびKruskal)と1つの最短パスアルゴリズム(Dijkstra)を取り上げました。 最小スパニングツリーとは、すべての頂点にまたがるグラフ内のツリーであり、ツリーの総重量は最小です。最短経路は非常に明白であり、ある頂点から別の頂点への最短経路です。 私が理解していないのは、最小スパニングツリーの総重量が最小であるため、ツリー内のパスは最短パスではないということです。誰かが私に欠けていることを説明できますか? どんな助けも大歓迎です。

3
疎グラフのすべての最短パスを見つけるための最速のアルゴリズムは何ですか?
ような頂点とエッジを持つ重みのない無向グラフで、グラフ内のすべての最短経路を見つける最速の方法は何ですか?あるFloyd-Warshallよりも速く実行できますが、反復ごとに非常に高速ですか?E 2 V > E O (V 3)VVVEEE2V>E2V>E2V \gt EO(V3)O(V3)O(V^3) グラフが重み付けされている場合はどうですか?

3
動的グラフの最短経路を取得する
現在、有向グラフの最短経路を研究しています。ダイクストラやベルマンフォードのよ​​うに、ネットワーク内の最短経路を見つけるための多くの効率的なアルゴリズムがあります。しかし、グラフが動的な場合はどうでしょうか?動的とは、プログラムの実行中に頂点を挿入または削除できることを意味します。新しいグラフで最短経路アルゴリズムを再度実行する必要なく、エッジeを挿入した後、頂点から他のすべての頂点uへの最短経路を更新するための効率的なアルゴリズムを見つけようとしています。これどうやってするの?前もって感謝します。vvvあなたはuueee 注:変更は、アルゴリズムの最初の反復後に行うことができます 注[2]: 2つのノード、はソース、tはターゲットです。これらのノード間の最短パスを見つける必要があります。グラフが更新されたら、π (s 、t )を更新するだけです。これはsとtの間の最短経路です。ssstttπ(s 、t )π(s,t)\pi(s,t)sssttt 注[3]:エッジ挿入の場合にのみ興味があります。 正式な定義:グラフ与えられた場合。定義更新操作を)1と、エッジの挿入Eに対してE)は、エッジのアミノ酸欠失または2 EからEを。目的は、更新操作後のすべてのペアの最短パスのコストを効率的に見つけることです。効率的には、少なくとも更新操作の後に、Bellman-FordアルゴリズムなどのAll-Pairs-Shortest-Pathアルゴリズムを実行するよりも優れています。G = (V、E)G=(V,E)G = (V,E)eeeEEEeeeEEE 編集:以下に問題の簡略版があります: 重み付きグラフが与えられ、単方向のエッジと2つの重要な頂点sおよびtで構成されます。候補の双方向エッジのセットCも提供されます。私はエッジを構築しなければならない(U 、V )∈ Cはからの距離を最小にするために、SをT。G (V、E)G(V,E)G(V,E)ssstttCCC(U 、V )∈ C(u,v)∈C(u,v) \in Csssttt

1
グラフにエッジを追加すると、最短距離はいくつ変化しますか?
してみましょう、いくつかの完全な、加重、無向グラフとします。からエッジを1つずつ追加して、2番目のグラフを作成します。合計でエッジをに追加します。G ′ = (V 、E ′)E E ′ Θ (| V |)G ′G=(V,E)G=(V,E)G=(V,E)G′=(V,E′)G′=(V,E′)G'=(V, E')EEEE′E′E'Θ(|V|)Θ(|V|)\Theta(|V|)G′G′G' 我々は一つのエッジを追加するたびにに、我々はすべてのペア間の最短距離を考える及び。を追加した結果、これらの最短距離がいくつ変化したかを数えます。してみましょう最短距離の数も変化することを、私たちは追加したときに番目のエッジを、とlet、我々は、合計で追加エッジの数をすること。E ′(V 、E ′)(V 、E ′ ∪ { (u 、v )} )(u 、v )C i i n(u,v)(u,v)(u,v)E′E′E'(V,E′)(V,E′)(V, E')(V,E′∪{(u,v)})(V,E′∪{(u,v)})(V, E' \cup \{ (u,v) \})(u,v)(u,v)(u,v)CiCiC_iiiinnn 大きさは?C=∑iCinC=∑iCinC = \frac{\sum_i C_i}{n} 、も同様。この限界は改善できますか?は追加されたすべてのエッジの平均であると定義しているため、であることが証明されていますが、多くの距離が変化する単一のラウンドはそれほど興味深いものではありません。C = O (n 2)C C = Ω (n …

2
ダイクストラのアルゴリズムは、優先キューを持つBFSだけですか?
この質問は、コンピューターサイエンススタック交換で回答できるため、理論的コンピューターサイエンススタック交換から移行されました。 6年前に移行され ました。 このページによると、ダイクストラのアルゴリズムは優先キューを備えたBFSにすぎません。本当にそんなに簡単なのですか?私はそうは思いません。

2
ベルマンフォードを使用して負のサイクルを取得
有向グラフで負のサイクルを見つけなければなりません。ベルマンフォードアルゴリズムの仕組みと、到達可能な負のサイクルがあるかどうかがわかります。ただし、明示的に名前を付けるわけではありません。 サイクルの実際のパスを取得するにはどうすればよいですか?v 1 、v 2 、… v k 、v 1v1,v2,…vk,v1v1, v2, \ldots vk, v1 標準アルゴリズムを適用した後、すでに回の反復を行っているため、それ以上の改善は不可能です。それでもノードまでの距離を短くできる場合は、負のサイクルが存在します。n − 1n−1n-1 私のアイデアは次のとおりです。パスを改善できるエッジと各ノードの先行ノードを知っているので、再びエッジに到達するまでそのエッジからさかのぼることができます。これでサイクルができました。 悲しいことに、これが正しいかどうかを伝える論文は見つかりませんでした。それで、実際にそのように機能しますか? 編集:この例は、私の考えが間違っていることを証明しています。次のグラフを考えると、ノードからBellman-Fordを実行します。111 エッジを順に処理します。回の反復の後、ノード距離を取得します:n − 1a 、b 、c 、da,b,c,da, b, c, dn − 1n−1n-1 2 :− 30 3 :− 151 :− 51:−51: -5 2 :− 302:−302: -30 3 :− 153:−153: -15 そして親テーブル:親持ち親持ち親を持っている 3 …

2
無向グラフ上の最短経路?
だから私はこの(多少基本的な)質問はここに属していると思った: サイズが100のノードのグラフが10x10のパターンで配列されているとします(チェス盤を考えてください)。グラフは無向であり、重み付けされていません。グラフを移動するには、3つのスペースを前方に移動し、1つのスペースを右または左に移動します(チェスナイトがボード上を移動するのと同様)。 開始ノードが固定されている場合、ボード上の他のノードへの最短パスをどのように見つけますか? 実行可能な移動であるノード間にのみエッジがあると想像しました。したがって、この情報が与えられたら、開始ノードから終了ノードまでの最短パスを見つけたいと思います。 私の最初の考えは、各エッジは重み1で重み付けされるということでした。しかし、グラフは無向であるため、ジクストラは理想的なフィットではありません。したがって、私は深さ優先検索の変更された形式を使用してそれを行うことにしました。 しかし、検索を使用して最短経路を取得する方法を視覚化することはできませんでした。 私が試したもう1つのことは、開始ノードをルートとしてツリー形式でグラフを配置し、次に希望の終了ノードを与えた最も浅い(最も低い行番号)結果を選択することでした...これはうまくいきましたが、非常に効率的ではなかったため、大きなグラフでは機能しません。 誰かが私にこの方向性を正しい方向に向けるようなアイデアを持っていますか? どうもありがとうございました。 (グラフの視覚化を試みましたが、評判が悪いためできませんでした)

6
重みのないグラフで最短パスを見つけるためにDFSを使用できないのはなぜですか?
「現状のまま」のDFSを使用しても、重み付けされていないグラフでは最短経路が見つからないことを理解しています。 しかし、DFSを微調整して、重みのないグラフで最短パスを見つけることができるのはなぜですか?件名に関するすべてのテキストは、単にそれを実行できないと述べています。私は(自分で試したことがなく)納得していません。 DFSが重み付けされていないグラフで最短パスを見つけることを可能にする変更を知っていますか?そうでない場合、アルゴリズムをそれほど難しくしているのは何ですか?

4
巨大なグラフでのダイクストラのアルゴリズム
私はダイクストラに非常に精通しており、アルゴリズムについて具体的な質問があります。35億ノード(すべてOpenStreetMapデータ)などの巨大なグラフがある場合、グラフをメモリに格納できないことは明らかなので、グラフはデータベースのディスクに保存されます。 そのようなグラフの最短経路を計算するために利用可能なライブラリがあります。彼らはどうやってこれをしますか?より具体的には、ダイクストラのアルゴリズムを実行するためにグラフの必要な部分をどのようにロードしますか? 訪問した各頂点の隣接リストを取得するには、統計データによると10,000ノードあたり約1,500のデータベースクエリが必要になるため、明らかにそうではありません。それはとても遅すぎるでしょう。 どうやってやっているの?自分で実装しようとしています。

2
最短
ましょうGはGGグラフであり、およびlet Sss及びTはttの2つの頂点であるGGG。sとtの間のすべての最短パスのセットからランダムに均一かつ独立して最短sss - tttパスを効率的にサンプリングできますか?簡単にするために、Gは単純で、方向付けられておらず、重み付けされていないと仮定できます。ssttGG 多くの制限されたグラフでさえ、sssとtの間の最短経路の数ttはGのサイズで指数関数的GGです。したがって、実際にはすべての最短sss - tttパスを実際に計算することは避けたいと思います。一般的なケースについては知りませんが、いくつかの特別なグラフクラスでこれを達成できるようです。 これは、誰かが以前に考慮したに違いないように感じます。これに関する既存の研究はありますか、または実際にこれは一般的なグラフに対しても簡単ですか?

2
ユークリッド平面に埋め込まれたグラフの最短非交差パス(2D)
経路に自己交差が含まれないように、ユークリッド平面に埋め込まれたグラフの最短経路を見つけるためにどのアルゴリズムを使用しますか? たとえば、次のグラフでは、ます。通常、ダイクストラのアルゴリズムのようなアルゴリズムは、次のようなシーケンスを生成します。(0 、0 )→ (- 3 、2 )(0、0)→(−3、2)(0,0) \rightarrow (-3,2) [(0 、0 )→3(0 、3 )→2√(1 、2 )→4(- 3 、2 )] = 7 + 2–√。[(0、0)→3(0、3)→2(1、2)→4(−3、2)]=7+2。\left[ (0,0) \stackrel {3}{\rightarrow} (0,3) \stackrel{\sqrt{2}}{\rightarrow} (1,2) \stackrel{4}{\rightarrow} (-3,2) \right] = 7+\sqrt{2}. 完全なグラフ: 最短経路: 最短の非交差パス: しかし、ユークリッド平面上のこのパスが交差自体は、それゆえ私はしたい、この場合には、私の最短非交差シーケンスを与えるアルゴリズムを: [(0 、0 )→3(0 、3 )→3(0 、6 )→5(- 3 、2 )] = …

2
Bellman-Fordアルゴリズム-エッジを順不同で更新できるのはなぜですか?
ベルマン-フォード法は、ソースからの最短経路決定他のすべての頂点にします。最初にと他のすべての頂点間距離は設定されます。次に、から各頂点まで最短パスが計算されます。これは、回の反復で続き ます。私の質問は:秒∞ 秒| V | − 1ssssss∞∞\inftysss| V| −1|V|−1|V|-1 なぜ回の反復が必要なのですか?| V| −1|V|−1|V|-1 別の順序でエッジをチェックした場合、問題になりますか? たとえば、最初にエッジ1、2、3をチェックしてから、2回目の反復で2、3、1をチェックするとします。 MITのEric教授は順序は重要ではないと言ったが、これは私を混乱させる:値がエッジに依存しているがが後に更新される場合、アルゴリズムはエッジ基づいてノードを誤って更新しないか?x 1 x 1 x 2バツ2バツ2x_2バツ1バツ1x_1バツ1バツ1x_1バツ2バツ2x_2

2
DAGの2つの頂点間の最短および最長パスを見つける
非加重DAG(有向非巡回グラフ)と2つの頂点および与えられた場合、多項式時間でからへの最短および最長の経路を見つけることは可能ですか?パスの長さは、エッジの数で測定されます。D=(V,A)D=(V,A)D = (V,A)ssstttsssttt 多項式時間で可能な経路長の範囲を見つけることに興味があります。 追って、この質問はStackOverflow質問DAGの最長パスの複製です。

1
一貫性は、ヒューリスティックも許容されることをどのように示唆していますか?
ヒューリスティック関数h(n)h(n)h (n)は... ノードnnnからゴールまでの推定コストが、そのサクセサステップコストにn′n′n'サクセサからゴールまでの推定コストを加えた値より大きくない場合、一貫性があります。 h(n)h(n)h(n)が目標状態への真のコストを過大評価しない場合に許容されます。 私の人工知能コースの教科書には、一貫性は許容性よりも強いと書かれていますが、それを証明するものではなく、数学的な説明をするのに苦労しています。

3
幅優先検索での「幅」の意味は何ですか?
私は幅優先検索について学んでいて、なぜBFSがそう呼ばれるのかという疑問が頭に浮かびました。「CLRSによるアルゴリズムの紹介」の本で、私はこれについて次の理由を読みました。 幅優先探索は、発見された頂点と発見されていない頂点の間の境界を、境界の幅全体に均一に拡張するため、このように呼ばれています。 しかし、私はこの発言の意味を理解することができません。私はこの「フロンティア」という言葉とそのフロンティアの幅について混乱しています。 それで、私のような初心者にとって理解しやすい方法でこの質問に誰かが答えてもらえますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.