Dijkstra法を用いた最短経路問題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ABC

Dijkstra法を用いた最短経路問題

#1

投稿記事 by ABC » 14年前

初めてトピを立てさせていただきます、よろしくお願いします

現在Dijkstra法を用いた最短経路のプログラム(電車の乗り換え案内の簡易版)をC#で構築しておりますが、どうしてもわからないことがあるので質問させていただきます。
Dijkstra法を文献やネットで調べたのですが、隣の点のコストを更新する概念は理解できましたが、どうしても「それぞれのノードに対して最短経路(コスト)が確定しているか、また未確定かを決める際の判定はどのように行えばいいか」がわかりません。具体的なソースではなく大まかな流れだけで大丈夫ですのでご存じの方いましたら御返事お願いします

駄文失礼しました

アバター
a5ua
記事: 199
登録日時: 14年前

Re: Dijkstra法を用いた最短経路問題

#2

投稿記事 by a5ua » 14年前

以下のページは参考になりませんか?
http://www.deqnotes.net/acmicpc/dijkstra/

始点のノードが、コスト0で最初に確定するのは大丈夫ですよね。

それ以外のノードについては、
更新処理が終了したとき、未確定ノードのうち、最小のコストとなっているノードが確定ノードとなります。
なぜなら、そのようにして選んだノードは、確定ノード(すなわち、最小のコストで進んできたノード)から
最小のコストで到達できるノードだからです。

ABC

Re: Dijkstra法を用いた最短経路問題

#3

投稿記事 by ABC » 14年前

お返事ありがとうございます!
そのサイトも参考にしましたがいまいち・・・

自分が考えた流れは
①確定点の周りのノード(ただし未確定のみ)のコストを更新
②その中で一番小さいコストをもつノードを確定
③①に戻る
④全てのノードが確定したら終了

という考え方をとったのですが、そのサイトは確定点も更新しているようなので混乱してしまっています・・・
そもそも上の考え方が間違ってしまっているのでしょうか??何度もすいません・・・

アバター
a5ua
記事: 199
登録日時: 14年前

Re: Dijkstra法を用いた最短経路問題

#4

投稿記事 by a5ua » 14年前

考え方はそれで合っていますよ。

確定点も含めて更新処理を行っても、確定点のコストが変わることはありません。
(確定点から行って戻ってくるような経路を考えることになる)
そうしないと、「確定」の意味がありませんよね。

ですから、更新処理の対象に確定点が含まれていても、問題はありません。
更新処理の対象から確定点を除くかどうかは、(効率面など)各人の判断で決めればいいでしょう。

ABC

Re: Dijkstra法を用いた最短経路問題

#5

投稿記事 by ABC » 14年前

なるほど、サイトを見なおしてみたら確定も探索はしていますが更新はしていませんね!!

もう一度考えてみます、もしかしたらまた質問するかもしれません(・_・;)
その時はよろしくお願いします!

閉鎖

“C言語何でも質問掲示板” へ戻る