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

7
最短経路を探す場合、幅優先検索はどのように機能しますか?
いくつかの調査を行ったところ、このアルゴリズムの一部が欠けているようです。幅優先検索がどのように機能するかは理解していますが、個々のノードがどこに移動できるかを指示するだけではなく、特定のパスにたどり着く方法を正確には理解していません。私の混乱を説明する最も簡単な方法は、例を提供することです: たとえば、次のようなグラフがあるとします。 そして、私の目標は、AからEに到達することです(すべてのエッジは重み付けされていません)。 Aから始めます。それが私の原点だからです。私はAをキューに入れ、すぐにAをデキューして探索します。AはBとDに接続されているため、これによりBとDが生成されます。したがって、BとDの両方をキューに入れます。 Bをデキューして探索し、A(探索済み)とCにつながることがわかったので、Cをキューに入れます。次に、Dをデキューして、目標であるEにつながることを見つけます。次にCをデキューしましたが、それが私の目標であるEにもつながることがわかりました。 最速のパスがA-> D-> Eであることは論理的にわかっていますが、幅優先検索がどのように役立つかわかりません-終了時に結果を分析して確認できるようにパスを記録するにはどうすればよいですか最短経路はA-> D-> Eですか? また、私は実際にはツリーを使用していないので、「親」ノードはなく、子だけがあることに注意してください。


8
ダイクストラのアルゴリズムを使用した負の重み
ダイクストラのアルゴリズムが負の重みで機能しない理由を理解しようとしています。最短パスの例を読んで、私は次のシナリオを理解しようとしています: 2 A-------B \ / 3 \ / -2 \ / C ウェブサイトから: エッジがすべて左から右に向けられていると仮定すると、Aから開始すると、ダイクストラのアルゴリズムはd(A、A)+ length(edge)を最小化するエッジ(A、x)、つまり(A、B)を選択します。次に、d(A、B)= 2を設定し、d(A、y)+ d(y、C)を最小化する別のエッジ(y、C)を選択します。唯一の選択肢は(A、C)で、d(A、C)= 3を設定します。ただし、AからCを経由してBへの最短経路は決して見つかりません。全長は1です。 ダイクストラの次の実装を使用すると、d [B]がに更新されない理由を理解できません1(アルゴリズムが頂点Cに到達すると、Bでリラックスが実行され、d [B]がに等しいこと2を確認して、更新します。その値は1)。 Dijkstra(G, w, s) { Initialize-Single-Source(G, s) S ← Ø Q ← V[G]//priority queue by d[v] while Q ≠ Ø do u ← Extract-Min(Q) S ← S U {u} for …

16
チェス盤上の騎士の最短経路
私は今度のプログラミング競争のために練習しており、私はちょうど完全に当惑している質問に出くわしました。でも、それを思いついたのではなく、今から学ばなければならないコンセプトだと思います。 基本的に、それはチェス盤上の騎士の駒を扱います。開始位置と終了位置の2つの入力が与えられます。目標は、騎士が目標の場所に到達するために使用できる最短経路を計算して出力することです。 私は最短経路のようなものを扱ったことがなく、どこから始めればよいかもわかりません。これに取り組むためにどのようなロジックを採用しますか? PS何らかの関連性がある場合、彼らはあなたがあなたがナイトの通常の動きを補足することを望んでいます騎士の場所。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.