
No.1ベストアンサー
- 回答日時:
先日久しぶりに、ダイクストラ法のサブルーティンを書いたばかりです^^。
A*に関しては、
http://www.weblio.jp/content/A*%E3%82%A2%E3%83%A …
を参考にしています。
ダイクストラさんのオリジナルでは、探索パスを現時点での既知の最最短経路に絞る事で、不要に遠い点への探索を避け、効率化をはかっていると思います。特にそういう事をせず、現時点で行ける点を全て探索し、最小コストのパスを選んでも、ダイクストラ法は成立するはずです。これを勝手に、基本ダイクストラと呼んでます(こっちの方が、論理がわかりやすいので)。
ダイクストラ法は、A*のヒューリスティック関数h*を、現時点での既知の最最短経路評価が最適と仮定するのと、等価と思えます。h*をどうやって推定するかをおいとけば、もっと最適なh*があるなら、不要に遠い点をより無視できて、もっと探索効率は上がるはずです。というわけで効率は、
基本ダイクストラ(最適化なし)<ダイクストラ(暫定最適化)<A*(もっと最適化)
となり、理屈の上では、A*のデメリットはない気がします。
とすれば後は、実際上の問題です。
(1)単純な最短路検索の場合
参考URLによれば、この場合、h*として2点間の直線距離でもとれば良いと書いてますので、是非A*という事になりますが、自分は何故かダイクストラ(オリジナルの)をとりたいです。理由は次で述べます。
(2)時間最短経路の場合
例えば道路ネットワークを考えた場合、距離最短に従ってドライバーの皆さんがある道路に集中すると、その道路は混んで渋滞し、走行速度が下がります。ご存知かも知れませんが、幹線道路には設計交通量というのがあり、それを越えた場合の走行速度降下曲線みたいなものまで用意されてます。
こういう場合は、時間最短です。この時、h*の推定はかなり鬱陶しい気がします(サブルーティンが数個増える!)。対して、ダイクストラを時間最短用にするのは、きわめて簡単です。というか、距離最短でも時間最短でも、そのまんまダイクストラが使えます。
自分はもともと土木系で、現在は、上流から下流までたった一人のApplicationプログラマーをやってますが(つまり、この部署はたった一人^^)、状況に応じて方法を切り替えるApplicationというのは、嫌です。コーディング量,Bugの量,テスト量,仕様書の文書量,メンテナンス量まで全部増加するからです。単純明解がいい~~!。
(3)対話型Application
(1)と(2)の答えは、どんな方法を使っても一つです。そうでない場合は対話型になります。例えば「この道路を通ると、何故か速いんだよね~」といった経験事実がある場合です。これh*に使えますよね?。しかも(1)と(2)のような紋切り型の解でなく、現場の状況をより反映した応答を出せます。この時は、A*だと思います。
参考URL:http://www.weblio.jp/content/A*%E3%82%A2%E3%83%A …
この回答へのお礼
お礼日時:2010/12/10 17:39
理屈上ではA*にはデメリットはないのですね
A*の粗さがしをしていたので少々残念です。
回答ありがとうございました!
詳しい回答で大変参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
円盤の回転距離と中心の移動距離
-
5
A*アルゴリズムとダイクストラ...
-
6
|-5| + |2| っていう式の計算を...
-
7
私は学校で4人グループです。...
-
8
距離を置く意味 距離を置いてお...
-
9
話す時に顔を必要以上に近づける人
-
10
子供の習い事の送迎時間につい...
-
11
視力1.0の人は740m先の人の顔...
-
12
綺麗すぎて同性から距離を置か...
-
13
4人グループにハブられてる気が...
-
14
アメリカとフランスはどちらが...
-
15
TNT(トリニトロトルエン)1...
-
16
クロネコヤマトに伝票番号で問...
-
17
東京ビッグサイトからお台場 徒歩
-
18
ある密度での対象間の平均距離...
-
19
川岸にいながら川の幅を調べる...
-
20
部分空間と、その直交補空間へ...
おすすめ情報
公式facebook
公式twitter