JP2011007713A - 多点対間最短経路探索方法およびシステム - Google Patents

多点対間最短経路探索方法およびシステム Download PDF

Info

Publication number
JP2011007713A
JP2011007713A JP2009153307A JP2009153307A JP2011007713A JP 2011007713 A JP2011007713 A JP 2011007713A JP 2009153307 A JP2009153307 A JP 2009153307A JP 2009153307 A JP2009153307 A JP 2009153307A JP 2011007713 A JP2011007713 A JP 2011007713A
Authority
JP
Japan
Prior art keywords
value
vertices
vertex
graph data
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009153307A
Other languages
English (en)
Inventor
弘揮 ▲柳▼澤
Hiroki Yanagisawa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009153307A priority Critical patent/JP2011007713A/ja
Priority to US12/816,414 priority patent/US8412660B2/en
Publication of JP2011007713A publication Critical patent/JP2011007713A/ja
Priority to US13/750,047 priority patent/US20130179384A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3446Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Automation & Control Theory (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Navigation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】複数始点から複数終点までの最短経路問題を高速に解くための方法およびシステムを提供することである。
【解決手段】上記課題を解決するために第1の態様として、記憶手段を有するコンピュータの処理により、多点対間最短経路問題を解く方法であって、(A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込むステップと、(B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込むステップと、(C)前記グラフ・データSから k 個の頂点 s1, s2, ...skを選択するステップと、(D)前記グラフ・データSから前記 k 個の頂点を除去するステップと、(E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶するステップと、(F)前記グラフ・データSが空になるまで、前記(C)から(E)までのステップを繰り返すステップを有する方法を提供する。
【選択図】図5

Description

本発明は、多点対間最短経路問題に関し、多点対間最短経路問題を高速に解く方法およびシステムに関する。
従来、複数始点から複数終点までの最短経路問題(多点対間最短経路問題)の解法は、単一始点から複数終点を、複数始点に応用したものが知られている。例えば特許文献1は、地図上の交差点に対応した各ノードと、それに繋がるリンクコスト(距離)を分離独立させ、それぞれを隣接行列或いは隣接リストで管理しながらダイクストラ法を用いて経路探索を行う。特許文献1は、単一始点複数終点最短経路問題をダイクストラ(Dijkstra)法を利用して解く際の効率的なデータ構造を提案しているが、複数始点複数終点の最短経路問題そのものを高速化する技法ではない。
複数始点から複数終点への最短経路問題(many-to-many)を解くものとして非特許文献1がある。非特許文献1は道路情報ネットワークの探索方法であるが、最初に入力グラフを前処理するステップと、その後、前処理済みのグラフに対してダイクストラ法の変形版を適用するステップから構成されている。非特許文献1は全点対間最短経路問題を高速に解く方法を提供しない。逆に非特許文献1は前処理部で全点対間最短経路問題(all-to-all)をダイクストラ法を適用して解くため本発明の手法と組み合わせることにより全点対間最短経路問題を高速に解くことが可能になる。
特開2001-125882
Sebastian Knopp,Peter Sanders, Dominik Schultes,Frank Schulz, Dorothea Wagner: Computing Many-to-Many Shortest Paths UsingHighway Hierarchies. ALENEX 2007
複数始点から複数終点までの最短経路問題を高速に解くための新しい方法およびシステムを提供することである。さらに全点対間最短経路問題を高速に解く方法およびシステムを提供することである。
本発明の1つの実施態様では、記憶手段を有するコンピュータの処理により、多点対間最短経路問題を解く方法であって、(A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込むステップと、(B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込むステップと、(C)前記グラフ・データSから k 個の頂点 s1, s2, ...skを選択するステップと、(D)前記グラフ・データSから前記 k 個の頂点を除去するステップと、(E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶するステップと、(F)前記グラフ・データSが空になるまで、前記(C)から(E)までのステップを繰り返すステップ を含む。
本発明の1つの実施態様では、(C)のステップがダイクストラ法を用いて前記 k 個の頂点を選択するステップである。
本発明の1つの実施態様では、前記(E)のステップが、探索対象頂点を優先度付き待ち行列Qとして、前記優先度付き待ち行列Qに前記グラフ・データの全頂点を代入するステップと、前記 k 個の頂点からグラフ・データの全頂点までの最短経路長を格納する配列 distance に既定の最大値を記憶するステップと、前記優先度付き待ち行列Qの優先度を表す配列keyに既定の最大値を記憶するステップと、前記 k 個の頂点から自身までの最短経路長を格納する前記配列 distance及びkey の該当する要素に0を記憶するステップと、
(G)前記配列 key の中で最小の頂点vをQから削除するステップと、(H)前記頂点vにおける配列 key に既定の最大値を設定するステップと、(I)k個の頂点の各々について、前記最小の頂点vに隣接する各頂点までの経路長を算出し、前記算出した値が現在の配列 distance の値より小さい場合に、その値を配列 distanceに代入し配列 key に探索のための優先度を表す値を代入するステップと、前記探索対象頂点Qが空になるまで前記(G)から(I)のステップを繰り返すステップである。
本発明の1つの実施態様では、前記(I)のステップが、前記最小の頂点vに隣接する頂点の各々について変数newKey に既定の最大値を代入するステップと、k個の頂点の各々について、前記隣接する頂点までの経路長を算出しその値を変数 temp に代入するステップと、前記変数tempの値が前記隣接する頂点における配列distance の値より小さい場合、その値を前記配列distanceに代入し、前記変数 temp の値が前記変数 newKey の値より小さいか判断し、小さい場合には前記変数 newKeyに前記変数 tempの値を代入するステップと、前記変数 newKey が前記隣接する頂点における配列 key の値より小さい場合に、前記配列keyに前記変数 newKeyの値を代入するステップである。
本発明の1つの実施態様では、記憶手段を有するコンピュータの処理により、多点対間最短経路問題を解くシステムであって、(A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込む手段と、(B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込む手段と、(C)前記グラフ・データSから k 個の頂点 s1, s2, ...skを選択する手段と、(D)前記グラフ・データSから前記 k 個の頂点を除去する手段と、(E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶する手段と、(F)前記グラフ・データSが空になるまで、前記(C)から(E)までの手段を繰り返す手段を有する。
本発明の1つの実施態様では、(C)の手段がダイクストラ法を用いて前記 k 個の頂点を選択する手段である。
本発明の1つの実施態様では、前記(E)の手段が、探索対象頂点を優先度付き待ち行列Qとして、前記優先度付き待ち行列Qに前記グラフ・データの全頂点を代入する手段と、前記 k 個の頂点からグラフ・データの全頂点までの最短経路長を格納する配列 distance に既定の最大値を記憶する手段と、前記優先度付き待ち行列Qの優先度を表す配列keyに既定の最大値を記憶する手段と、前記 k 個の頂点から自身までの最短経路長を格納する前記配列 distance及びkey の該当する要素に0を記憶する手段と、
(G)前記配列 key の中で最小の頂点vをQから削除する手段と、(H)前記頂点vにおける配列 key に既定の最大値を設定する手段と、(I)k個の頂点の各々について、前記最小の頂点vに隣接する各頂点までの経路長を算出し、前記算出した値が現在の配列 distance の値より小さい場合に、その値を配列 distanceに代入し配列 key に探索のための優先度を表す値を代入する手段と、前記探索対象頂点Qが空になるまで前記(G)から(I)の手段を繰り返す手段である。
本発明の1つの実施態様では、前記(I)の手段が、前記最小の頂点vに隣接する頂点の各々について変数newKey に既定の最大値を代入する手段と、k個の頂点の各々について、前記隣接する頂点までの経路長を算出しその値を変数 temp に代入する手段と、前記変数tempの値が前記隣接する頂点における配列distance の値より小さい場合、その値を前記配列distanceに代入し、前記変数 temp の値が前記変数 newKey の値より小さいか判断し、小さい場合には前記変数 newKeyに前記変数 tempの値を代入する手段と、前記変数 newKey が前記隣接する頂点における配列 key の値より小さい場合に、前記配列keyに前記変数 newKeyの値を代入する手段である。
本発明の1つの実施態様では、多点対間最短経路問題を解くためのプログラムであって、該プログラムが、記憶手段を有するコンピュータに、(A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込む機能と、(B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込む機能と、(C)前記グラフ・データSから k 個の頂点 s1, s2, ...skを選択する機能と、(D)前記グラフ・データSから前記 k 個の頂点を除去する機能と、(E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶する機能と、(F)前記グラフ・データSが空になるまで、前記(C)から(E)までの機能を繰り返す機能を実現させる。
本発明の1つの実施態様では、(C)の機能がダイクストラ法を用いて前記 k 個の頂点を選択する機能である。
本発明の1つの実施態様では、前記(E)の機能が、探索対象頂点を優先度付き待ち行列Qとして、前記優先度付き待ち行列Qに前記グラフ・データの全頂点を代入する機能と、前記 k 個の頂点からグラフ・データの全頂点までの最短経路長を格納する配列 distance に既定の最大値を記憶する機能と、前記優先度付き待ち行列Qの優先度を表す配列keyに既定の最大値を記憶する機能と、前記 k 個の頂点から自身までの最短経路長を格納する前記配列 distance及びkey の該当する要素に0を記憶する機能と、
(G)前記配列 key の中で最小の頂点vをQから削除する機能と、(H)前記頂点vにおける配列 key に既定の最大値を設定する機能と、(I)k個の頂点の各々について、前記最小の頂点vに隣接する各頂点までの経路長を算出し、前記算出した値が現在の配列 distance の値より小さい場合に、その値を配列 distanceに代入し配列 key に探索のための優先度を表す値を代入する機能と、前記探索対象頂点Qが空になるまで前記(G)から(I)の機能を繰り返す機能である。
本発明の1つの実施態様では、前記(I)の機能が、前記最小の頂点vに隣接する頂点の各々について変数newKey に既定の最大値を代入する機能と、k個の頂点の各々について、前記隣接する頂点までの経路長を算出しその値を変数 temp に代入する機能と、前記変数tempの値が前記隣接する頂点における配列distance の値より小さい場合、その値を前記配列distanceに代入し、前記変数 temp の値が前記変数 newKey の値より小さいか判断し、小さい場合には前記変数 newKeyに前記変数 tempの値を代入する機能と、前記変数 newKey が前記隣接する頂点における配列 key の値より小さい場合に、前記配列keyに前記変数 newKeyの値を代入する機能である。
本発明の1つの実施態様では、上記プログラムを記録した、コンピュータ可読記録媒体である。
本発明の実施態様によれば、複数始点から複数終点までの最短経路問題を高速に解くための新しい方法およびシステムが提供され、さらに全点対間最短経路問題を高速に解く方法およびシステムが提供される。従来、GISに用いられるデータは多点対間最短経路問題を予め相当の時間をかけ計算している。本発明はこの多点対間最短経路の計算をリアルタイムに行うための基盤となる技術になる可能性を秘めている。
多点対間最短経路問題の例である。 グラフの頂点の配置の例である。 頂点の配置例に基づくグラフのデータ構造を示す図である。 距離が近い2頂点を開始点とした例について説明する図である。 本発明の処理の流れの概要である。 本発明の全体のフローチャートである。 初期化処理の詳細なフローチャートである。 各枝の処理の詳細なフローチャートである。 更新処理の詳細なフローチャートである。 コンピュータ・ハードウェアのブロック図である。 ダイクストラ法を用いた最短経路探索例である。 本発明の探索法を用いた最短経路探索例である。
頂点集合 V と枝集合 E から構成されるグラフ G(V,E) と、各枝 e∈E について距離 d(e) (≧0) が与えられたとき、頂点集合 S, T⊆V について、全ての (u, v) ∈ S×T ペアの頂点 u から頂点 v まで到達する距離の最小値を計算する問題が多点対間最短経路問題である。特にS と T が V に等しいとき、全点対間最短経路問題(all-to-all)という。本実施例では、全点対間最短経路問題は多点対間最短経路問題の特殊ケースと考え、両者を特に区別せずに多点対間最短経路問題(many-to-many)として記載する。
多点対間最短経路問題には、多くの応用があるが、その一つが GIS (地理情報システム)への適用である。道路ネットワークは、上記でいうグラフとみなすことができ、道路ネットワーク上の多数の拠点について、それらの拠点間の距離(もしくは移動時間)を求める問題は、多点対間最短経路問題としてモデル化できる。
図1に多点対間最短経路問題の例を示す。図1において、入力がグラフ G(V,E)の点集合 S, T ⊆ Vである。この場合の出力として、全ての (u, v) ∈ S×T ペア(図1の点A,B,C,Dのペア)について、u→v の最短経路長を求めている。ここで一般には S=Tである。例えば図1の例ではグラフの各枝の長さが1のときAからDへの最短距離は5になる。なお以下の説明では入力グラフが無向グラフであることを前提に記載するが、有向グラフでも本発明の手法はそのまま適用可能である。
図2にグラフの頂点の配置の例を示す。グラフの各頂点には、1から連番で番号が付与される。図2ではn番目の頂点はnを丸で囲って表示されている。図2では頂点1は隣接する頂点として、頂点2、5及び8を持ち、それぞれへの距離は、4.0, 5.0, 2.5である。頂点2は隣接する頂点として、頂点1、4及び5を持ち、それぞれへの距離は、4.0, 3.5, 3.0 である。
次に図3に、図2の頂点の配置例に基づくグラフのデータ構造を示す。このデータが本発明の入力となるグラフ・データでありメモリに記憶される。各頂点は、隣接する頂点の番号のリストへのリンクと、隣接する頂点への距離のリストへのリンクを含む。なおこのようなデータ構造は一例に過ぎず種々の変形が可能である。
次に図4にS 中の距離が近い2頂点 s1 と s2を始点とした場合について説明する。これにダイクストラ法を |S| 回適用して多点対間最短経路問題を解く。この両者では似たような最短経路木が生成されていると推測される。なぜなら、s1 と s2 の距離が近いので、s1 からある頂点 v への最短経路は、s1 から s2 を経由して v に到達する経路と一致する可能性が高いからである(もちろん必ず一致するわけではない)。このことから、s1 を始点とする最短経路木(a)とs2 を始点とする最短経路木(b)を一気に(同時に)作成することができれば高速化につながる。
ダイクストラ法を |S| 回繰り返して多点対間最短経路問題を解くアルゴリズムを擬似コードで表すとすると以下のようになる。
for s∈S {
ダイクストラ法を適用し、s を始点とする単一始点最短経路問題を解く
}
そして本発明で提案するアルゴリズムは下記のような擬似コードで記述できる。2頂点の場合に限定せずに一般化して、k 頂点の場合について記述する。k 頂点を選択して複数始点最短経路問題を一気に解く点が本発明の特徴である。
While S が空でない {
S 中で互いに距離の近い頂点 s1,…,sk を選択する
Let S := S{s1,…,sk}
s1,…,sk を始点とする複数始点最短経路問題を一気に解く。
}
図5に本発明の処理の流れの概要を図示する。ステップ502でグラフ・データ格納部501からグラフ・データ301を読み込む。ステップ503でSが空かを判定しそうであれば処理は終了する。空でなければ処理はステップ504へ進む。ステップ504ではSからk 個の頂点s1,…,skを取り出す。すなわちSからk 個の頂点を除去する。次にステップ505で頂点s1,…,skからの複数始点最短経路問題を解き、結果を出力格納部506に記録する。
頂点s1,…,sk からの複数始点最短経路問題をどのようにして一気に解くかを説明する前に、理解が容易になるように通常の ダイクストラ法による単一始点最短経路問題を解く擬似コードを示した後、本発明の擬似コードを説明する。
<前提>
vertex s : 開始点(頂点)
Q: 検索対象となる点(頂点)を格納したキュー(優先度付き待ち行列を用いたキューで priority queue と呼ぶ)
distance[v] : 始点 s から v に到達するそれまでに見つかった最短経路長を格納する配列
key[v] : 頂点v に対応する優先度を格納する配列(priority queueから頂点を削除する際に、どの頂点v を削除するかを決定する手掛かりとなる値となる。下記の ダイクストラ法の説明では distance[v] と同じ値となる。本発明の手法では何を入れても構わない。)
d(e) : 頂点から頂点へ伸びる枝 e の長さ
e.toNode : 枝 e の到達先頂点
<ダイクストラ法による単一始点最短経路問題を解く擬似コード>
Dijkstra(graph G(V,E), vertex s)
for each v∈V { distance[v] := ∞; key[v] := ∞; }
distance[s]:= 0
V 中の頂点を全て Q に入れる
While Q が空でない {
Q から key[v] の値が最小の v を削除
For each esuch that e is outgoing from v {
temp :=distance[v] + d(e) ;
if temp< distance[e.toNode] then {
distance[e.toNode] := temp
key[e.toNode] := temp
Q に e.toNode を入れる
}
}
}
配列 distance[] を出力
上記の ダイクストラ法を用いて始点sから各頂点までの最短経路を探索した例を図11に示す。各点は上記のように固有の長さを持つ経路木で接続されており各点の横に始点sからの最短距離が記載されている。
本発明は上記擬似コードのdistance 配列を拡張し、distance[i][v] に始点 si から v に到達するそれまでに見つかった最短経路長を記憶するようする。
<本発明による複数始点最短経路問題を解く擬似コード>
Dijkstra(graph G(V,E), vertex{s1,...,sk}) // Selection
for i in 1...k { for each v∈V { distance[i][v] := ∞; key[v] := ∞; } }
for i in 1...k { distance[i][si] := 0; key[si] := 0; }
V 中の頂点を全て Q に入れる
While Q が空でない {
Q から key[v] の値が最小の v を削除
key[v] := ∞
For each esuch that e is outgoing from v {
newKey := ∞
For i in 1…k {
temp :=distance[i][v] + d(e)
if temp< distance[i][e.toNode]then {
distance[i][e.toNode] := temp
if temp< newKeythen newKey := temp
}
}
if newKey < key[e.toNode] then {key[e.toNode] := newKey; Q に e.toNode を追加} // <---update key
}
}
for i in 1…k { 配列 distance[i] を出力 }
上記擬似コードにおける配列key[v]は重要な配列である。この配列 key[v] は priority queue (Q) から頂点を削除する際に、どの頂点 v を削除するかを決定する手掛かりとなる値をもつ。つまり key[v] に入る値は、優先度付き待ち行列 (priority queue) Q の「優先度」に相当する。ダイクストラ法では key[v] にいれる値は常に distance[v] と同じ値を入れることになる。本発明では key[v] には必ずしもdistance[v] の値を入れない点に注意されたい。なお key[v] にはどのような値を入るかによって実行時間が変化するが、どのような値を入れたとしても上記アルゴリズムは必ず最短経路長を出力する。
上記本発明の探索法を用いて2頂点s1 と s2について各頂点までの最短経路を探索した例を図12に示す。各点には s1 と s2 からの最短距離が2つセットで記載されている。図12ではk=2 として各頂点につき2つの最短距離が計算されることを例示している。
上記本発明の擬似コードのフローを図6〜9に示す。図6は全体の流れを示し、図7は初期化601の詳細なフローを示し、図8は枝eの処理606の詳細なフローを示し、図9は更新処理805の詳細なフローを示す。まず図6においてステップ601で初期化を行う。初期化の詳細は図7で説明する。ステップ602でSが空か判断し、空なら処理を終了する。空でなければステップ603でQ から key[v] の値が最小の頂点 v を削除する。すなわち探索の基点をvにセットする。次にkey[v] に最大値を代入する。そして vから伸びる各枝についてステップ605から607までの処理をループする。このループでは枝eの処理(ステップ606)を行う。このステップ606の詳細は図8で説明する。
図7に初期化601の詳細なフローを示す。まずステップ701で開始点としてk 個の頂点を選択する。次にステップ702〜704で全ての頂点v∈Vについて配列 distance[i][v]及び key[v] に最大値を代入する。最大値として∞を代入しているが、実際に記憶されるメモリ中の値はグラフの経路長として取りえる値よりも十分大きい値を予めセットするものとする。ステップ702〜ステップ705はvについてのループを構成する。ステップ701〜706は変数i=1,…,kについて配列 distance[i][si]およびkey[si] の値を最大値を代入する。最後にステップ712でQにV中の頂点を全て追記して初期化処理を終了する。
上記初期化において、配列distance[i][v] が si から v までの最短経路長の上限値になっていれば、どのような初期化を行っても良い。例えば、別途i=1,…,k について配列distance[i][si] に正しい最短経路長を計算しておき、その値を上記最大値として入れておいても良い。
図8に枝eの処理606の詳細なフローを示す。ステップ801で newKeyに最大値を代入する。次に i=1,…,k についてステップ802〜ステップ806のループを構成する。ステップ803では臨時変数temp にiまでの経路長 distance[i] に枝 e の長さ d(e) の和を代入する。ステップ804で臨時変数 temp の値が配列 distance[i][e.toNode] より小さいか判断する。もし小さければ処理はステップ805の更新処理に移る。そうでなければステップ806で次の i についての処理を行う。ステップ802〜ステップ806のループ終了後、処理はステップ807に移る。ステップ807では newKey が key[e.toNode] より小さいかを判断し、小さくない場合、処理は終了する。小さい場合には、処理はステップ808に移る。ステップ808では key[e.toNode] に newKey を代入し、ステップ809でQに e.toNodeを代入する。
なおステップ808〜809における処理(update key)では key[e.toNode] にどのような値を入れても本発明の擬似コードは正しく動作する。つまり newKey の値を入れる必要は必ずしもない。ただしステップ808〜809においてどのような値を入れるかによって実行時間が変化する。上記の擬似コードは実装方法の一例であり種々の変更が可能である。
図9は更新処理805の詳細なフローを示す。ステップ901で配列 distande[i][e.toNode] に key を代入する。次にステップ902で 臨時変数 temp が newKey より小さいか判断し、小さい場合には処理はステップ903に移り newKey に臨時変数 temp を代入する。臨時変数 temp が newKey より小さくない場合は処理は終了する。
また擬似コードにおける s1,…,sk の選び方(Selection)の例としては、適当に s1∈S を選んだ後、s1 からの距離が近い頂点から順に k 個取り出す方法が挙げられる。例えば近い頂点を選ぶ方法として、A*アルゴリズムまたはダイクストラ法を使ってもよい。なお k の値は、グラフ・データの数にも左右されるが、実験的に8〜64が良い結果が得られている。
例示として s1,…,sk の選ぶ際に ダイクストラ法を用いた擬似コードを以下に示す。前提として S には、それまでの繰り返しの処理(iteration)で未選択の頂点が入っているものとする。
SelectVertices(graph G(V,E), S)
S の中から一つの頂点 s1 を選び、U = {s1} とおく。
for each v∈V { distance[v] := ∞; key[v] := ∞; }
distance[s1] :=0
V 中の頂点を全て Q に入れる
While Q が空でない {
Q から key[v] の値が最小の v を削除
If v∈S then { U に v を追加。
If U の大きさ |U| が k と等しい then { U を出力して、処理を終了}
}
For each e suchthat e is outgoing from v {
temp :=distance[v] + d(e) ;
if temp <distance[e.toNode] then {
distance[e.toNode] := temp
key[e.toNode] := temp
Q に e.toNode を入れる
}
}
<コンピュータ・ハードウェアのブロック図>
図10に本発明の実施態様における、図5のシステムが有するコンピュータ・ハードウェアのブロック図を一例として示す。本発明の実施形態に係るコンピュータ・システム(1001)は、CPU(1002)とメイン・メモリ(1003)と含み、これらはバス(1004)に接続されている。CPU(1002)は好ましくは、32ビット又は64ビットのアーキテクチャに基づくものであり、例えば、インテル社のXeon(商標)シリーズ、Core(商標)シリーズ、Atom(商標)シリーズ、Pentium(商標)シリーズ、Celeron(商標)シリーズ、AMD社のPhenom(商標)シリーズ、Athlon(商標)シリーズ、Turion(商標)シリーズ及びSempron(商標)などを使用することができる。
バス(1004)には、ディスプレイ・コントローラ(1005)を介して、LCDモニタなどのディスプレイ(1006)が接続されている。ディスプレイ(1006)は、コンピュータ・システムの管理のために、通信回線を介してネットワークに接続されたコンピュータ・システムについての情報と、そのコンピュータ・システム上で動作中のソフトウェアについての情報を、適当なグラフィック・インターフェースで表示するために使用される。バス(1004)にはまた、IDE又はSATAコントローラ(1007)を介して、ハードディスク又はシリコン・ディスク(1008)と、CD−ROM、DVDドライブ又はBlu−rayドライブ(1009)が接続されている。
ハードディスク(1008)には、オペレーティング・システム、本発明のコードを含むプログラム及びデータが、メイン・メモリ(1003)にロード可能なように記憶されている。好ましくはハードディスク(1008)は本発明のグラフ・データ格納部501として使用される。またグラフ・データ格納部501に記憶されたグラフ・データは入力データ読み込み部502により読み込まれメイン・メモリ(1003)に格納される。
CD−ROM、DVD又はBlu−rayドライブ(1009)は、必要に応じて、CD−ROM、DVD−ROM又はBlu−rayディスクからプログラムをハードディスクに追加導入するために使用される。バス(1004)には更に、キーボード・マウスコントローラ(1010)を介して、キーボード(1011)及びマウス(1012)が接続されている。本発明のグラフ・データを上記外部記憶装置に記憶し、これを読み込むようにしても良い。
通信インタフェース(1014)は、例えばイーサネット(商標)・プロトコルに従う。通信インタフェース(1014)は、通信コントローラ(1013)を介してバス(1004)に接続され、コンピュータ・システム及び通信回線(1015)を物理的に接続する役割を担い、コンピュータ・システムのオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワーク・インターフェース層を提供する。なお、通信回線は、有線LAN環境、或いは例えばIEEE802.11a/b/g/nなどの無線LAN接続規格に基づく無線LAN環境であってもよい。本発明のグラフ・データを通信インタフェース(1014)を介して外部のデータベースから取り込むようにしても良い。
<実験結果>
通常の ダイクストラ法を繰り返し適用する方法と本発明で提案するアルゴリズムの両者を実装し、実行時間(入出力にかかる時間は除く)を比較した。実験に使用した入力データは公開されているアメリカ合衆国の州別道路ネットワーク情報 (TIGER/Line) を使用した。入力データDCに対して全点対間最短経路問題を解くのにかかった時間を計測すると本発明の手法の方が3倍以上高速であること確かめられた。本発明の手法の方がダイクストラ法のボトルネックである priority queue に対する操作が少なくなっていることがその理由の一つである。

Claims (13)

  1. 記憶手段を有するコンピュータの処理により、多点対間最短経路問題を解く方法であって、
    (A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込むステップと、
    (B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込むステップと、
    (C)前記グラフ・データSからk 個の頂点 s1, s2, ... skを選択するステップと、
    (D)前記グラフ・データSから前記 k 個の頂点を除去するステップと、
    (E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶するステップと、
    (F)前記グラフ・データSが空になるまで、前記(C)から(E)までのステップを繰り返すステップ
    を有する方法。
  2. (C)のステップがダイクストラ法を用いて前記 k 個の頂点を選択するステップである、請求項1記載の方法。
  3. 前記(E)のステップが、
    探索対象頂点を優先度付き待ち行列Qとして、前記優先度付き待ち行列Qに前記グラフ・データの全頂点を代入するステップと、
    前記 k 個の頂点からグラフ・データの全頂点までの最短経路長を格納する配列 distance に既定の最大値を記憶するステップと、
    前記優先度付き待ち行列Qの優先度を表す配列keyに既定の最大値を記憶するステップと、
    前記 k 個の頂点から自身までの最短経路長を格納する前記配列 distance及びkey の該当する要素に0を記憶するステップと、
    (G)前記配列 key の中で最小の頂点vをQから削除するステップと、
    (H)前記頂点vにおける配列 key に既定の最大値を設定するステップと、
    (I)k個の頂点の各々について、前記最小の頂点vに隣接する各頂点までの経路長を算出し、前記算出した値が現在の配列 distance の値より小さい場合に、その値を配列 distanceに代入し配列 key に探索のための優先度を表す値を代入するステップと、
    前記探索対象頂点Qが空になるまで前記(G)から(I)のステップを繰り返すステップ
    である、請求項1記載の方法。
  4. 前記(I)のステップが、
    前記最小の頂点vに隣接する頂点の各々について
    変数 newKey に既定の最大値を代入するステップと、
    k個の頂点の各々について、前記隣接する頂点までの経路長を算出しその値を変数 temp に代入するステップと、
    前記変数 tempの値が前記隣接する頂点における配列 distance の値より小さい場合、その値を前記配列 distanceに代入し、前記変数 temp の値が前記変数 newKey の値より小さいか判断し、小さい場合には前記変数 newKeyに前記変数 tempの値を代入するステップと、
    前記変数 newKey が前記隣接する頂点における配列 key の値より小さい場合に、前記配列keyに前記変数 newKeyの値を代入するステップ
    である、請求項3記載の方法。
  5. 記憶手段を有するコンピュータの処理により、多点対間最短経路問題を解くシステムであって、
    (A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込む手段と、
    (B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込む手段と、
    (C)前記グラフ・データSからk 個の頂点 s1, s2, ... skを選択する手段と、
    (D)前記グラフ・データSから前記 k 個の頂点を除去する手段と、
    (E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶する手段と、
    (F)前記グラフ・データSが空になるまで、前記(C)から(E)までの手段を繰り返す手段
    を有するシステム。
  6. (C)の手段がダイクストラ法を用いて前記 k 個の頂点を選択する手段である、請求項5記載のシステム。
  7. 前記(E)の手段が、
    探索対象頂点を優先度付き待ち行列Qとして、前記優先度付き待ち行列Qに前記グラフ・データの全頂点を代入する手段と、
    前記 k 個の頂点からグラフ・データの全頂点までの最短経路長を格納する配列 distance に既定の最大値を記憶する手段と、
    前記優先度付き待ち行列Qの優先度を表す配列keyに既定の最大値を記憶する手段と、
    前記 k 個の頂点から自身までの最短経路長を格納する前記配列 distance及びkey の該当する要素に0を記憶する手段と、
    (G)前記配列 key の中で最小の頂点vをQから削除する手段と、
    (H)前記頂点vにおける配列 key に既定の最大値を設定する手段と、
    (I)k個の頂点の各々について、前記最小の頂点vに隣接する各頂点までの経路長を算出し、前記算出した値が現在の配列 distance の値より小さい場合に、その値を配列 distanceに代入し配列 key に探索のための優先度を表す値を代入する手段と、
    前記探索対象頂点Qが空になるまで前記(G)から(I)の手段を繰り返す手段
    である、請求項5記載のシステム。
  8. 前記(I)の手段が、
    前記最小の頂点vに隣接する頂点の各々について
    変数 newKey に既定の最大値を代入する手段と、
    k個の頂点の各々について、前記隣接する頂点までの経路長を算出しその値を変数 temp に代入する手段と、
    前記変数 tempの値が前記隣接する頂点における配列 distance の値より小さい場合、その値を前記配列 distanceに代入し、前記変数 temp の値が前記変数 newKey の値より小さいか判断し、小さい場合には前記変数 newKeyに前記変数 tempの値を代入する手段と、
    前記変数 newKey が前記隣接する頂点における配列 key の値より小さい場合に、前記配列keyに前記変数 newKeyの値を代入する手段
    である、請求項7記載のシステム。
  9. 多点対間最短経路問題を解くためのプログラムであって、該プログラムが、記憶手段を有するコンピュータに、
    (A)前記コンピュータの記憶領域から、複数の探索開始頂点のグラフ・データSを読み込む機能と、
    (B)前記コンピュータの記憶領域から、複数の探索終点頂点のグラフ・データTを読み込む機能と、
    (C)前記グラフ・データSからk 個の頂点 s1, s2, ... skを選択する機能と、
    (D)前記グラフ・データSから前記 k 個の頂点を除去する機能と、
    (E)前記選択した k 個の頂点の各々について、前記グラフ・データTまでの最短経路長を探索し、前記記憶領域に記憶する機能と、
    (F)前記グラフ・データSが空になるまで、前記(C)から(E)までの機能を繰り返す機能
    を実現させるプログラム。
  10. (C)の機能がダイクストラ法を用いて前記 k 個の頂点を選択する機能である、請求項9記載のプログラム。
  11. 前記(E)の機能が、
    探索対象頂点を優先度付き待ち行列Qとして、前記優先度付き待ち行列Qに前記グラフ・データの全頂点を代入する機能と、
    前記 k 個の頂点からグラフ・データの全頂点までの最短経路長を格納する配列 distance に既定の最大値を記憶する機能と、
    前記優先度付き待ち行列Qの優先度を表す配列keyに既定の最大値を記憶する機能と、
    前記 k 個の頂点から自身までの最短経路長を格納する前記配列 distance及びkey の該当する要素に0を記憶する機能と、
    (G)前記配列 key の中で最小の頂点vをQから削除する機能と、
    (H)前記頂点vにおける配列 key に既定の最大値を設定する機能と、
    (I)k個の頂点の各々について、前記最小の頂点vに隣接する各頂点までの経路長を算出し、前記算出した値が現在の配列 distance の値より小さい場合に、その値を配列 distanceに代入し配列 key に探索のための優先度を表す値を代入する機能と、
    前記探索対象頂点Qが空になるまで前記(G)から(I)の機能を繰り返す機能
    である、請求項9記載のプログラム。
  12. 前記(I)の機能が、
    前記最小の頂点vに隣接する頂点の各々について
    変数 newKey に既定の最大値を代入する機能と、
    k個の頂点の各々について、前記隣接する頂点までの経路長を算出しその値を変数 temp に代入する機能と、
    前記変数 tempの値が前記隣接する頂点における配列 distance の値より小さい場合、その値を前記配列 distanceに代入し、前記変数 temp の値が前記変数 newKey の値より小さいか判断し、小さい場合には前記変数 newKeyに前記変数 tempの値を代入する機能と、
    前記変数 newKey が前記隣接する頂点における配列 key の値より小さい場合に、前記配列keyに前記変数 newKeyの値を代入する機能
    である、請求項11記載のプログラム。
  13. 請求項9〜12記載のプログラムを記録した、コンピュータ可読記録媒体。
JP2009153307A 2009-06-29 2009-06-29 多点対間最短経路探索方法およびシステム Pending JP2011007713A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009153307A JP2011007713A (ja) 2009-06-29 2009-06-29 多点対間最短経路探索方法およびシステム
US12/816,414 US8412660B2 (en) 2009-06-29 2010-06-16 Multi-pairs shortest path finding method and system with sources selection
US13/750,047 US20130179384A1 (en) 2009-06-29 2013-01-25 Multiple-pairs shortest path finding method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009153307A JP2011007713A (ja) 2009-06-29 2009-06-29 多点対間最短経路探索方法およびシステム

Publications (1)

Publication Number Publication Date
JP2011007713A true JP2011007713A (ja) 2011-01-13

Family

ID=43381819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009153307A Pending JP2011007713A (ja) 2009-06-29 2009-06-29 多点対間最短経路探索方法およびシステム

Country Status (2)

Country Link
US (2) US8412660B2 (ja)
JP (1) JP2011007713A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101449637B1 (ko) 2013-12-17 2014-10-14 숭실대학교산학협력단 확장된 독립적인 비트변수를 사용하는 회전식 브리지 우선도 마스킹 방법
JP2016048540A (ja) * 2014-08-25 2016-04-07 富士通株式会社 生成方法、装置、及びプログラム

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5919695B2 (ja) 2011-02-25 2016-05-18 株式会社リコー セッション制御システム、伝送システム、及びプログラム
US20120250535A1 (en) * 2011-03-31 2012-10-04 Microsoft Corporation Hub label based routing in shortest path determination
US20130132369A1 (en) * 2011-11-17 2013-05-23 Microsoft Corporation Batched shortest path computation
JP6260101B2 (ja) 2012-05-01 2018-01-17 株式会社リコー 通信端末、起動方法及びプログラム
KR101400868B1 (ko) 2012-12-03 2014-05-30 숭실대학교산학협력단 행재배치된 우선도 행렬을 이용한 다중 경로 선택 장치 및 방법
JP2014215941A (ja) * 2013-04-30 2014-11-17 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 経路情報の処理方法、コンピュータ・プログラム及びコンピュータ。
CN103528585B (zh) * 2013-09-26 2016-05-25 中北大学 一种不等距分割可通行区域的路径规划方法
CN104142151A (zh) * 2014-07-31 2014-11-12 上海闻泰电子科技有限公司 一种导航方法
US10389640B2 (en) 2015-07-24 2019-08-20 International Business Machines Corporation Determining connections of a network between source and target nodes in a database
US10270679B2 (en) 2015-07-24 2019-04-23 International Business Machines Corporation Determining connections between nodes in a network
US10274331B2 (en) 2016-09-16 2019-04-30 Polaris Industries Inc. Device and method for improving route planning computing devices
CN106406762A (zh) * 2016-09-19 2017-02-15 郑州云海信息技术有限公司 一种重复数据删除方法及装置
US10546021B2 (en) * 2017-01-30 2020-01-28 Sap Se Adjacency structures for executing graph algorithms in a relational database
CN108444488B (zh) * 2018-02-05 2021-09-28 天津大学 基于等步采样a*算法的无人驾驶局部路径规划方法
US10812371B2 (en) 2018-10-12 2020-10-20 At&T Intellectual Property I, L.P. Methods, devices and systems for determining a target path in a network
US11563670B2 (en) 2018-10-12 2023-01-24 At&T Intellectual Property I, L.P. Methods, devices and systems for determining a target path
CN110823237B (zh) * 2019-10-24 2021-08-17 百度在线网络技术(北京)有限公司 起点绑路及预测模型获取方法、装置及存储介质
CN111982138B (zh) * 2020-07-09 2022-06-28 北京百度网讯科技有限公司 预测模型获取及路径规划方法、装置及存储介质
CN112213113B (zh) * 2020-09-02 2022-07-15 中国第一汽车股份有限公司 智能驾驶移动装置的现实道路测试场景选择及规划方法
CN112800353A (zh) * 2021-03-03 2021-05-14 郑州大学 一种基于虚拟边界的动态椭圆限制搜索区域最短路径方法
CN113361997A (zh) * 2021-06-04 2021-09-07 南京大学 一种基于风险最小化的危险废物运输路径实时规划的方法
CN116369020B (zh) * 2023-04-07 2023-11-14 上海华维可控农业科技集团股份有限公司 一种基于环境监测技术的智慧灌溉管理系统及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001125882A (ja) * 1999-10-29 2001-05-11 Yoichi Aono ダイクストラ法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11184837A (ja) * 1997-12-11 1999-07-09 Internatl Business Mach Corp <Ibm> 最短経路探索システム
DE60303763T2 (de) * 2002-12-11 2006-08-17 Nippon Telegraph And Telephone Corp. Verfahren und Vorrichtung zur Berechnung von Mehrfachsendungsleitwegen

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001125882A (ja) * 1999-10-29 2001-05-11 Yoichi Aono ダイクストラ法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101449637B1 (ko) 2013-12-17 2014-10-14 숭실대학교산학협력단 확장된 독립적인 비트변수를 사용하는 회전식 브리지 우선도 마스킹 방법
JP2016048540A (ja) * 2014-08-25 2016-04-07 富士通株式会社 生成方法、装置、及びプログラム

Also Published As

Publication number Publication date
US20130179384A1 (en) 2013-07-11
US8412660B2 (en) 2013-04-02
US20100332436A1 (en) 2010-12-30

Similar Documents

Publication Publication Date Title
JP2011007713A (ja) 多点対間最短経路探索方法およびシステム
US8681635B2 (en) Computer-implemented systems and methods for planning a route
JP4398455B2 (ja) 経路探索方法、プログラム及びシステム
US10050866B2 (en) Parallel top-K simple shortest paths discovery
US20130231862A1 (en) Customizable route planning
EP2375364A1 (en) Method and system for time-dependent routing
US20140354649A1 (en) Distributed k-core view materialization and maintenance for graphs
JP5919950B2 (ja) 経路探索方法、経路探索装置、及びプログラム
US9285218B2 (en) Shortest travel path determination using critical start time points
US20120310523A1 (en) Customizable route planning
JP5108956B2 (ja) 経路計算順決定方法、プログラムおよび計算装置
JP5391322B2 (ja) 経路計算方法、プログラムおよび計算装置
US10547536B2 (en) Identifying shortest paths
Abid et al. Heuristic approaches to solve traveling salesman problem
JP6374823B2 (ja) 経路配置方法、経路配置装置、及びプログラム
JP7548317B2 (ja) 経路探索装置、経路探索方法、およびプログラム
WO2019189207A1 (ja) 推定装置、推定方法及びプログラム
WO2013084281A1 (ja) 地図情報処理装置
JP7198473B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置及び情報処理方法
KR20190051769A (ko) 지도 매핑 방법 및 시스템
Alanis Efficient storage of transport network routes for simulation models
Jackovich et al. Comparing greedy constructive heuristic subtour elimination methods for the traveling salesman problem
JP6723967B2 (ja) 推定装置、推定方法及びプログラム
JP2006221047A (ja) 地図情報システムを異なる電子地図に移行する方法
JP2000187653A (ja) 交通ネットワーク経路探索方法および装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111025