研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

経由地点あり最短路問題。

2008-07-11 19:25:11 | Weblog
現在は、Point-to-Point(p2p:1対1)、Single-Source(ss:1対全)の2タイプの問題を扱っているのだが、「経由地点を入力する事は可能か」と質問をいただいた。確かに実際にナビゲーションとして用いる際には必要な機能になるのだが、実は驚くほど容易にできる。


たとえば、「A→B→C→D→E→E→F→G→H」という最短経路問題では、

クエリ数:7
A→B、B→C、C→D、D→E、E→F、F→G、G→H

といった、P2P タイプのクエリを7つとけば良い。
クエリ間は独立しているために、並列に求解することが可能になる。


また、各枝長が対称(行き帰りが同じ長さ)であるなら、もう少し工夫する事も可能になる。

ダイクストラ法は1点から全点への最短路(ssタイプのこと)を求めることができるアルゴリズムであるので、以下のようにまとればクエリ数も半数程度となる。

クエリ数:4
Bを始点として、A、Cのどちらにも到達したら終了
Dを始点として、C、Eのどちらにも到達したら終了
Fを始点として、E、Gのどちらにも到達したら終了
G→H


条件が増える事によって低速化してしまうことも考えられるが、1対全であっても高速に実行できるので、思い切って ss にしてしまってもよいだろう。

クエリ数:4
B、D、Fをそれぞれ始点とした1対全(ss)最短路問題
G→H



いずれこちらで公開する予定である。

Shortest Path Online Solver
http://opt.indsys.chuo-u.ac.jp/portal/

最新の画像もっと見る

コメントを投稿