JP2021028736A - 最短経路探索プログラム、装置、及び方法 - Google Patents

最短経路探索プログラム、装置、及び方法 Download PDF

Info

Publication number
JP2021028736A
JP2021028736A JP2019147202A JP2019147202A JP2021028736A JP 2021028736 A JP2021028736 A JP 2021028736A JP 2019147202 A JP2019147202 A JP 2019147202A JP 2019147202 A JP2019147202 A JP 2019147202A JP 2021028736 A JP2021028736 A JP 2021028736A
Authority
JP
Japan
Prior art keywords
shortest path
vertices
vertex
shortest
graph
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
JP2019147202A
Other languages
English (en)
Inventor
康男 山根
Yasuo Yamane
康男 山根
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019147202A priority Critical patent/JP2021028736A/ja
Priority to US16/984,300 priority patent/US20210042298A1/en
Publication of JP2021028736A publication Critical patent/JP2021028736A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Navigation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】k−最短経路探索の処理コストを削減することを目的とする。【解決手段】始点から、元のグラフに含まれる各頂点までの最短経路と、終点から、元のグラフに含まれる各頂点までの最短経路とに基づいて導出された、始点から各頂点のいずれかを経由点として終点に至る経由最短経路の各々を導出し、導出した経由最短経路から距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、元のグラフから除外した縮約グラフを生成し、縮約グラフに対して、K1−最短経路探索の処理を行う。【選択図】図1

Description

開示の技術は、最短経路探索プログラム、最短経路探索装置、及び最短経路探索方法に関する。
複数の頂点と、頂点間の連結関係を表す複数の辺とを含むネットワークグラフにおいて、始点となる頂点から終点となる頂点までのk番目までの最短経路(以下、「k−最短経路」と呼ぶ)を探索するk−最短経路探索という技術が存在する。
k−最短経路探索は、最短経路以外の準最短経路を求めるために重要であり、また、最近は、グラフを分析する手段として重要になってきている。グラフで2頂点間の最短経路を求めることは、2頂点が示す要素間の基本的な関係を知る上で重要であるが、2頂点間のk−最短経路を求めることで、さらに詳しい関係を知ることができるためである。例えば、k−最短経路探索の応用例として、次のようなものが考えられる。
例えば、鉄道網、道路網、航空網などの交通網を表すグラフに対して、k−最短経路探索を行うことで、地点間の最短経路に加え、準最短経路の探索も行うことができる。一般人にとっても、運送業者にとっても、準最短経路まで把握することは重要である。例えば、最短経路上でのトラブル時の迂回路として準最短経路を利用可能となる。また、最短経路が、距離又は時間面では最適であったとしても、コスト面や他の面を考慮すると、準最短経路の方が有利な可能性もある。
また、例えば、SNS(Social Networking Service)において、人を頂点とし、友人関係にある人同士、又は社内でメールのやり取りを行なっている人同士を辺で結ぶことにより、人間関係のグラフが作れる。二人の人に相当する頂点間の最短経路を求めることで、二人の間にどのような人が関係しているかを把握することができる。さらに、準最短経路を求めることで、より詳しい人間関係を把握することができる。
また、例えば、企業を頂点、企業間のお金の流れを辺とするグラフにおいて、最短経路に加え、準最短経路まで求めることで、上記の人間関係の例と同様に、2つの企業間にどういう企業が関係しているかを詳細に分析することができる。
上記のようなk−最短経路探索の手法として、既に求めた最短経路に含まれる辺を取り除いたグラフで最短経路を求めることにより、既に求めた最短経路とは別の最短経路を求める手法が存在する。
また、最短経路探索のアルゴリズムであるDijkstra法をk−最短経路に拡張した手法が存在する。
Yen, J. Y. (1971). "Finding the K Shortest Loopless Paths in a Network". Management Science. 1 7 (11): 712-716. doi:10.1287/mnsc.17.11.712.
しかしながら、k−最短経路探索は、1番目の最短経路だけ求める最短経路探索より処理コストがかかる。特に、グラフに含まれる頂点の数が多くなるほど、k−最短経路探索の処理コストも大きくなる。
一つの側面として、開示の技術は、k−最短経路探索の処理コストを削減することを目的とする。
一つの態様として、開示の技術は、複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理を実行する。また、開示の技術は、前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とを求める。そして、開示の技術は、求めた最短経路に基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出する。また、開示の技術は、前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成する。そして、開示の技術は、前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う。
一つの側面として、k−最短経路探索の処理コストを削減することができる、という効果を有する。
実施形態の概要を説明するための図である。 第1及び第2実施形態に係る最短経路探索装置の機能ブロック図である。 経由最短経路の導出を説明するための図である。 ループを含む経由最短経路の一例を示す図である。 ループを含まない経由最短経路の一例を示す図である。 第1及び第2実施形態に係る最短経路探索装置として機能するコンピュータの概略構成を示すブロック図である。 第1実施形態における最短経路探索処理の一例を示すフローチャートである。 経由最短経路の集合の一例を示す図である。 重複を排除した経由最短経路の集合の一例を示す図である。 距離の小さい順にソートした経由最短経路の集合の一例を示す図である。 ループを含まないk番目の経由最短経路までの全ての経由最短経路の集合、及び縮約グラフに含める頂点集合の一例を示す図である。 縮約グラフの生成を説明するための図である。 縮約グラフから探索したk−最短経路の一例を示す図である。 第2実施形態における最短経路探索処理の一例を示すフローチャートである。 距離の小さい順にソートした経由最短経路の集合の一例を示す図である。 1回目の処理時の経由最短経路の集合及び頂点集合の一例を示す図である。 2回目の処理時の経由最短経路の集合及び頂点集合の一例を示す図である。 3回目の処理時の経由最短経路の集合及び頂点集合の一例を示す図である。 4回目の処理時の経由最短経路の集合及び頂点集合の一例を示す図である。 重複した経由最短経路の排除を説明するための図である。 線状のループを含む経由最短経路の一例を示す図である。 環状のループを含む経由最短経路の一例を示す図である。 k−DijとGR(k−Dij)との性能比較を示すグラフである。 k−DijとGR(k−Dij)との性能比較の詳細を示す表である。 k−DijとGR(k−Dij)との性能比較の詳細を示す表である。
まず、各実施形態の詳細を説明する前に、各実施形態の概要について説明する。
各実施形態の基本的な考え方は、図1に示すように、元のグラフを、解となるk−最短経路を含むような部分グラフに縮約することである。図1の左図に示す元のグラフでは、黒丸が頂点、各頂点間を連結する線が辺であり、頂点に併記した整数の数値は頂点の識別番号(以下、「頂点番号」という)である。以下、頂点番号iの頂点を「頂点i」と表記する。図1左図に示す元のグラフには、頂点1〜頂点25までの25個の頂点が含まれている。また、辺に併記した小数点第1位までの数値は、その辺の重みであり、重みが併記されていない実線の辺は重み1.0、破線の辺は重み10.0とする。
図1に示すグラフにおいて、k=3として、始点である頂点1(以下、「始点1」ともいう)から終点である頂点9(以下、「終点9」ともいう)までの3−最短経路を求めると、距離が短い順に実線(1)、破線(2)、点線(3)の3経路が求められる。実施形態では、25個の頂点を含む元のグラフを、これら3経路を含む、7個の頂点からなる部分グラフ(又は、7個の頂点を含み且つ元のグラフGよりも少ない頂点からなる部分グラフ)に縮約する。高速にサイズの小さなグラフ(頂点数の少ないグラフ)に縮約することができれば、その縮約したグラフに、既存の任意のk−最短経路探索の方式を適用することにより、高速にk−最短経路を求めることが可能となる。
既存の任意のk−最短経路探索の方式を適用できるという意味で、本実施形態の方式はメタな方式である。本実施形態では、グラフを縮約する方法をGR(Graph Reduction)法と呼び、縮約されたグラフから既存の任意のk−最短経路探索の方式Eを用いてk−最短経路を探索する方法をGR(E)法と呼ぶ。
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。
なお、k−最短経路探索では、最短経路の中にループを含む経路を許す方式と許さない方式とがある。以下の各実施形態では、より処理コストを要するループを含む経路を許さない方式について説明する。また、グラフには、無向グラフと有向グラフ、及び重み付きグラフと重みなしグラフがあり、それらの組み合わせで4種類(=2×2)のグラフが考えられる。開示の技術はその全ての種類に適用可能であるが、以下では、説明を簡略化するために、連結した重み付きグラフの場合について説明し、他の種類のグラフについては後で補足する。
<第1実施形態>
第1実施形態に係る最短経路探索装置10は、機能的には、図2に示すように、導出部12と、生成部14と、探索部16とを含む。また、最短経路探索装置10の所定の記憶領域には、グラフ構造データ22が記憶される。
グラフ構造データ22は、複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフであり、上述した元のグラフを示すデータである。具体的には、元のグラフに含まれる頂点及び辺の情報が含まれる。頂点の情報は、各頂点の頂点番号を含む。辺の情報は、各辺の両端の頂点の頂点番号及び重みを含む。以下では、グラフ構造データ22が示す元のグラフをG=(V,E)で表す。Vは元のグラフに含まれる頂点の集合であり、Eは辺の集合である。また、n=|V|とする。
導出部12は、始点から、元のグラフに含まれる各頂点までの第1の最短経路と、終点から、元のグラフに含まれる各頂点までの第2の最短経路とを求める。そして、導出部12は、第1の最短経路と第2の最短経路とに基づいて、始点から各頂点のいずれかを経由点として第2の頂点に至る経路の最短経路である経由最短経路の各々を導出する。なお、始点は、開示の技術の「第1の頂点」の一例であり、終点は「第2の頂点」の一例である。
具体的には、導出部12は、求めるべきk−最短経路の始点をv、終点をvとし、始点v及び終点vの各々から、全ての頂点までの最短経路を求める。以下、ここで求められる最短経路を「st−最短経路」、st−最短経路の集合を「st−最短経路群」と呼ぶ。なお、stはsource(始点)、target(終点)を意味する。
例えば、全頂点をv,v,・・・,vとする。導出部12は、始点vから他の各頂点vまでの最短経路を計算し、始点vから各頂点vまでの距離をベクトルd=[dsj]として、所定の記憶領域に記憶する。同様に、導出部12は、終点vから他の各頂点vまでの最短経路を計算し、終点vから各頂点vまでの距離をベクトルd=[dtj]として記憶する。ここで、dijは、頂点vから頂点vまでの距離を表す。
ある頂点vから他の全頂点までの最短経路、又は、ある頂点vまでの他の全頂点からの最短経路は最短経路木として表現でき、最短経路木はベクトルとして表現できることが知られている。このような最短経路木をベクトルとして所定の記憶領域に記憶する。例えば、全頂点から頂点vまでの最短経路木は、n個の要素からなるベクトル[p]として表現できる。pはvからvまでの最短経路木の経路におけるvの次の頂点の頂点番号であり、順に辿っていくことで、vからvまでの最短経路を求めることができる。
以下では、vからvまでの最短経路をsp(v,v)、vからvまでの最短経路をsp(v,v)で表す。
また、導出部12は、図3に示すように、始点vから、各頂点vを経由して、終点vに至る経路を、上記のvからvまでの最短経路、及びvからvまでの最短経路を通るように導出する。この経路を上述したように、vを経由する「経由最短経路」と呼び、bで表す。bは、vからvを経由してvに行く経路の中では最短である。他により短い経路が存在すれば、b上のvからvまでの経路、及びvからvまでの経路が最短経路であることに反するからである。なお、b及びbは、vからvまでの最短経路であり、bとbとは一致する。
経由最短経路群b,b,・・・,bは、一旦始点及び終点の各々から各頂点までの最短経路が求まれば、容易に求められる。導出部12は、導出した経由最短経路群b,b,・・・,bを生成部14へ受け渡す。
ここで、以下で用いる記号について説明する。最短経路を含め、経路pの長さ(距離)をd(p)で、頂点vとvとの間の距離をd(v,v)で表す。すなわち、d(v,v)=dijである。また、k−最短経路のi番目の最短経路の長さをspdで表す。vからvまでの経路pがk−最短経路探索の解となる条件は、経路pがループを含まず、かつd(p)≦spdを満たすことと言える。
生成部14は、経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、元のグラフから除外した縮約グラフを生成する。以下では、説明を簡単にするため、K1=K2=kとして説明する。
具体的には、生成部14は、導出部12から受け渡された経由最短経路群b,b,・・・,bに含まれる同一の経路について、重複を排除する。例えば、生成部14は、経路に含まれる頂点番号の列で表される経由最短経路の各々を頂点番号列に基づいてソートする。そして、生成部14は、上から順に隣同士の経由最短経路を比較して、同じであれば一方を削除していく。また、生成部14は、各経由最短経路の頂点番号列をハッシュし、バケット毎に重複を排除してもよい。
生成部14は、重複を排除した経由最短経路群bh1,bh2,・・・,bhn’(n’≦n)を、vからvまでの距離、すなわちd(b)が小さい順にソートする。ソートされた経由最短経路群をbi1,bi2,・・・,bin’とする。生成部14は、経由最短経路群をbi1,bi2,・・・,bin’の先頭の経由最短経路から、ループを含む経由最短経路を除いて上位k番目となる経由最短経路までの全ての経由最短経路の各々に含まれる頂点を特定する。そして、生成部14は、特定した頂点と、元のグラフにおいて特定した頂点間を連結する辺とに基づいて、縮約グラフを生成する。
例えば、bieが上記のループを含む経由最短経路を除いて上位k番目となる経由最短経路であったとする。この場合、bi1,bi2,・・・,bieに含まれる頂点の集合をV’、E’={(v,w)|(v,w)∈E,and v,w∈V’}とすれば、グラフG’=(V’,E’)が求めるべきk−最短経路を含む縮約グラフである。なお、経由最短経路群をbi1,bi2,・・・,bin’のうち、ループを含まない経路がk個未満の場合は、元のグラフを縮約できないことを意味するため、e=n’、すなわち、V’=Vであるとする。
生成部14は、縮約グラフG’を示す縮約グラフ構造データ24を、所定の記憶領域に記憶する。
ここで、e<n’、すなわち、元のグラフを縮約できる場合を考える。bi1,bi2,・・・,bieの中には、vからvまでの異なる、ループを含まないk個の経路が含まれているが、それらが、求めるべきk番目までの最短経路とは限らない。すなわち、spd≦d(bie)である。ただし、少なくともループを含まないk個の経路が縮約グラフに含まれることは保証される。
また、bi1,bi2,・・・,bieの中には、ループを含む経由最短経路も含めるが、その理由を説明する。
図4に示すループを含む経由最短経路bij2(j<e)を考える。j<eとしているのは、bi1,bi2,・・・,bieは、ループを含む経由最短経路を除いて上位k番目となる経由最短経路までを抽出したものであるため、bijeはループを含まない経路だからである。sp(v,vij2)とsp(vij2,v)とは、vij1を共有しているためにループが発生している。さらに、vij2はvij1と隣接しているとする。すなわち、bij2は、bij1にvij2を付けた経路になっている。したがって、d(bij1)<d(bij2)であるから、ij1<ij2が成り立っている。
ここで、d(vij1,vij2)は極めて短いものとする。また、図5に示すように、vからvij1までの最短経路上に頂点v’があり、d(vij2,v’)も極めて短いものとする。この場合、vからvij1、vij2、v’を通ってvに至る経路pは、わずかにbij1よりは長い。bij2+1がbij1よりかなり長いと仮定すると、d(p)<d(bij2+1)が成り立つ。このことは、経路pがk番目の経由最短経路より短いことを意味する。k番目の経由最短経路の頂点もV’に入れているのだから、vij2もV’に当然入れるべきことになる。以上が、bi1,bi2,・・・,bieの中には、ループを含む経由最短経路も含める理由である。
また、縮約グラフG’=(V’,E’)が、求めるべきk−最短経路を含んでいることは、次のように証明することができる。
i1,bi2,・・・,bieについて、e=n’の場合は、元のグラフを縮約できないことを意味するため、e<n’の場合について証明すれば十分である。bi1,bi2,・・・,bieに含まれる頂点の集合をV’とする。またbi1,bi2,・・・,bieから、ループを含む経由最短経路を除き、距離が小さい順にソートして、b’,b’,・・・,b’とする。b’は前述のように、spd≦d(b’)である。
ここで、V’に含まれない頂点vを考える。vを経由するvからvまでの経路pで、d(p)<spdを満たすような経路が存在しないことが言えれば、vをV’に含めなくても問題ないため、証明できたことになる。
vを経由する経由最短経路bを考える。以上述べたことから、d(b)≦d(p)であり、d(b’)≦d(b)であるはずである。もし、d(b’)>d(b)であれば、bは、b’,b’,・・・,b’の中に含まれているはずだからである。上述のとおり、spd≦d(b’)であるため、spd≦d(b)である。すなわち、spd≦d(p)でなければならず、d(p)<spdを満たすようなpは存在しないことを意味する。
探索部16は、縮約グラフ構造データ24が示す縮約グラフG’に対して、既存の任意のk−最短経路探索の方式を適用することにより、k−最短経路を探索し、探索されたk−最短経路を出力する。
最短経路探索装置10は、例えば図6に示すコンピュータ40で実現することができる。コンピュータ40は、CPU(Central Processing Unit)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶部43とを備える。また、コンピュータ40は、入力部、表示部等の入出力装置44と、記憶媒体49に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)部45とを備える。また、コンピュータ40は、インターネット等のネットワークに接続される通信I/F(Interface)46を備える。CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、及び通信I/F46は、バス47を介して互いに接続される。
記憶部43は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40を、最短経路探索装置10として機能させるための最短経路探索プログラム50が記憶される。最短経路探索プログラム50は、導出プロセス52と、生成プロセス54と、探索プロセス56とを有する。また、記憶部43は、グラフ構造データ22及び縮約グラフ構造データ24が記憶される情報記憶領域60を有する。
CPU41は、最短経路探索プログラム50を記憶部43から読み出してメモリ42に展開し、最短経路探索プログラム50が有するプロセスを順次実行する。CPU41は、導出プロセス52を実行することで、図2に示す導出部12として動作する。また、CPU41は、生成プロセス54を実行することで、図2に示す生成部14として動作する。また、CPU41は、探索プロセス56を実行することで、図2に示す探索部16として動作する。また、CPU41は、情報記憶領域60からグラフ構造データ22を読み出して、グラフ構造データ22が示す元のグラフGをメモリ42に展開する。また、CPU41は、メモリ42上にある縮約グラフG’を縮約グラフ構造データ24として情報記憶領域60に格納したり、情報記憶領域60から縮約グラフ構造データ24を読み出して、縮約グラフG’をメモリ42に展開したりする。これにより、最短経路探索プログラム50を実行したコンピュータ40が、最短経路探索装置10として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
なお、最短経路探索プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
次に、第1実施形態に係る最短経路探索装置10の作用について説明する。元のグラフに含まれる頂点から、始点v及び終点vが指定されると、最短経路探索装置10において、図7に示す最短経路探索処理が実行される。なお、最短経路探索処理は、開示の技術の最短経路探索方法の一例である。ここでは、図1左図に示す元のグラフにおいて、始点vとして頂点1、終点vとして頂点9が指定された場合を例に説明する。
ステップS12で、導出部12が、v及びvの各々から各頂点までのst−最短経路群を求める。
次に、ステップS14で、導出部12が、st−最短経路群を用いて、経由最短経路の集合B={b,b,・・・,b}を導出する。図8に、経由最短経路の集合Bの一例を示す。図8において、bの次の列の数値はd(b)であり、次の列の頂点番号列が経由最短経路である。また、下線が付与された頂点番号は、経由する頂点(経由点)の頂点番号を示している。
次に、ステップS16で、生成部14が、ソートやハッシュを使って、Bの重複を排除し、その結果の集合をB={bh1,bh2,・・・,bhn’}(n’≦n)とする。図9に、重複を排除した経由最短経路の集合Bの一例を示す。図9において、取り消し線で取り消した経由最短経路が、重複により排除された経由最短経路であることを示している。
次に、ステップS18で、生成部14が、Bを距離の小さい順にソートし、その結果の列をB={bi1,bi2,・・・,bin’}(n’≦n)とする。図10に、距離の小さい順にソートした経由最短経路の集合Bの一例を示す。
次に、ステップS20で、生成部14が、Bの中で、ループを含む経由最短経路を除いて上位k番目となる経由最短経路bieを特定する。特定できない場合は、e=n’とする。k=3とすると、図10の例では、bはループを含んでいるため、bがbieとして特定される。
次に、ステップS22で、生成部14が、bi1,bi2,・・・,bieに含まれる頂点の集合をV’とする。図11に、bi1,bi2,・・・,bie及びV’の例を示す。
次に、ステップS24で、生成部14が、E’={(v,w)|(v,w)∈E,and v,w∈V’}として、縮約グラフG’=(V’,E’)を生成し、縮約グラフG’を示す縮約グラフ構造データ24を、所定の記憶領域に記憶する。図12に、V’に辺を加えて生成した縮約グラフG’を示す。
次に、ステップS26で、探索部16は、縮約グラフ構造データ24が示す縮約グラフG’に対して、既存の任意のk−最短経路探索の方式を適用することにより、k−最短経路を探索し、探索されたk−最短経路を出力する。そして、最短経路探索処理は終了する。図13に、図12に示す縮約グラフG’から探索した3−最短経路を示す。
以上説明したように、第1実施形態に係る最短経路探索装置は、始点から、元のグラフに含まれる各頂点までの第1の最短経路と、終点から、元のグラフに含まれる各頂点までの第2の最短経路とを求める。また、最短経路探索装置は、第1の最短経路と第2の最短経路とに基づいて、始点から各頂点のいずれかを経由点として終点に至る経由最短経路の各々を導出する。そして、最短経路探索装置は、経由最短経路のうち、距離の短い上位k個の経由最短経路のいずれにも含まれない頂点及び辺を、元のグラフから除外した縮約グラフを生成する。さらに、最短経路探索装置は、縮約グラフに対して、既存の任意の手法を適用して、k−最短経路探索の処理を行う。これにより、k−最短経路探索の処理コストを削減することができる。
<第2実施形態>
次に、第2実施形態について説明する。なお、第2実施形態に係る最短経路探索装置において、第1実施形態に係る最短経路探索装置10と同様の部分については、同一符号を付して詳細な説明を省略する。
第1実施形態におけるGR(E)法では、導出された経由最短経路から重複を排除する部分の処理コストが大きい。そこで、第2実施形態では、この重複を排除する処理を行うことなく縮約グラフを生成する方式について説明する。
第2実施形態に係る最短経路探索装置210は、機能的には、図2に示すように、導出部12と、生成部214と、探索部16とを含む。また、最短経路探索装置10の所定の記憶領域には、グラフ構造データ22が記憶される。
生成部214は、導出部12により導出された経由最短経路を距離の昇順で並び替えた経由最短経路群の先頭から順に処理対象の経由最短経路とし、処理対象の経由最短経路に含まれる頂点を縮約グラフに含める頂点集合に追加する。また、生成部214は、経由最短経路群から、頂点集合に追加された頂点を経由点とする経由最短経路を除外する処理をk回繰り返した場合に、頂点集合に含まれる頂点に基づいて、縮約グラフを生成する。縮約グラフの生成方法は、第1実施形態と同様である。
なお、生成部214は、処理対象の経由最短経路がループを含む場合、処理対象の経由最短経路に含まれる経由点のみを頂点集合に追加すると共に、処理の繰り返し回数を加算しない。
最短経路探索装置210は、例えば図6に示すコンピュータ40で実現することができる。コンピュータ40の記憶部43には、コンピュータ40を、最短経路探索装置210として機能させるための最短経路探索プログラム250が記憶される。最短経路探索プログラム50は、導出プロセス52と、生成プロセス254と、探索プロセス56とを有する。
CPU41は、最短経路探索プログラム250を記憶部43から読み出してメモリ42に展開し、最短経路探索プログラム250が有するプロセスを順次実行する。CPU41は、生成プロセス254を実行することで、図2に示す生成部214として動作する。他のプロセスについては、第1実施形態に係る最短経路探索プログラム50と同様である。これにより、最短経路探索プログラム250を実行したコンピュータ40が、最短経路探索装置10として機能することになる。
なお、最短経路探索プログラム250により実現される機能は、例えば半導体集積回路、より詳しくはASIC等で実現することも可能である。
次に、第2実施形態に係る最短経路探索装置210の作用について説明する。元のグラフに含まれる頂点から、始点v及び終点vが指定されると、最短経路探索装置210において、図14に示す最短経路探索処理が実行される。なお、第2実施形態の最短経路探索処理において、第1実施形態の最短経路探索処理と同様の処理については、同一のステップ番号を付与して詳細な説明を省略する。また、ここでは、第1実施形態と同様に、図1左図に示す元のグラフにおいて、始点vとして頂点1、終点vとして頂点9が指定された場合を例に説明する。
ステップS12及びS14で、導出部12が、図8に示すように、経由最短経路の集合B={b,b,・・・,b}を導出する。
次に、ステップS212で、生成部214が、経由最短経路の集合Bを距離の小さい順にソートし、その結果を列B={bi1,bi2,・・・,bin}とする。図15に、距離の小さい順にソートした経由最短経路の集合Bの一例を示す。
次に、ステップS214で、生成部214が、縮約グラフに含める頂点の集合V’として空集合を用意する。また、生成部214が、ループを含まない経由最短経路を数えるためのカウンタcを0に設定する。
次に、ステップS216で、生成部214が、Bが空か否かを判定する。Bが空の場合は、処理はステップS24へ移行し、Bに経由最短経路が残っている場合には、処理はステップS218へ移行する。
ステップS218では、生成部214が、Bの先頭の経由最短経路を、処理対象の経由最短経路bijに設定する。
次に、ステップS220で、生成部214が、処理対象の経由最短経路bijがループを含むか否かを判定する。bijがループを含まない場合、処理はステップS222へ移行し、bijがループを含む場合、処理はステップS226へ移行する。
ステップS222では、生成部214が、bijに含まれる頂点をvj1,vj2,・・・,vjhとし、V’にvj1,vj2,・・・,vjhを追加する。また、生成部214が、Bから、bj1,bj2,・・・,bjhを取り除く。さらに、生成部214が、カウンタcを1カウントアップし、処理はステップS224へ移行する。
一方、ステップS226では、生成部214が、V’にvijのみを追加し、Bからbijを取り除き、処理はステップS216に戻る。
ステップS224では、生成部214が、カウンタcがkになったか否かを判定する。c=kの場合は、処理はステップS24へ移行し、c≠kの場合は、処理はステップS216に戻る。
k=3として、上記ステップS216〜S224の処理についてより詳細に説明する。1回目の処理では、Bsが図15に示す状態であり、ステップS216で否定判定となり、ステップS218で、bが処理対象の経由最短経路として選択される。bにはループが含まれないため、ステップS222で、図16に示すように、bに含まれる頂点v,v,v,v,vを経由点とする経由最短経路b,b,b,b,bがBsから取り除かれる。また、頂点v,v,v,v,vがV’に追加される。さらに、c=1となる。
ステップS216に戻り、2回目の処理では、ステップS218で、bが処理対象の経由最短経路として選択される。bにはループが含まれないため、ステップS222で、図17に示すように、bに含まれる頂点v,v,v,v,vを経由点とする経由最短経路b,b,b,b,bがBsから取り除かれる。なお、b,b,b,bは既にBから取り除かれているため、ここでは、bが取り除かれる。また、頂点v,v,v,v,vがV’に追加される。なお、v,v,v,vは既にV’に追加されているため、ここでは、vが新たに追加される。さらに、c=2となる。
ステップS216に戻り、3回目の処理では、ステップS218で、bが処理対象の経由最短経路として選択される。bにはループが含まれるため、ステップS226で、図18に示すように、処理対象の経由最短経路であるbがBsから取り除かれる。また、bの経由点であるvがV’に追加される。なお、ここでは、c=2のままである。
ステップS216に戻り、4回目の処理では、ステップS218で、bが処理対象の経由最短経路として選択される。bにはループが含まれないため、ステップS222で、図19に示すように、bに含まれる頂点v,v,v,v,vを経由点とする経由最短経路b,b,b,b,bがBsから取り除かれる。なお、b,b,b,bは既にBから取り除かれているため、ここでは、bが取り除かれる。また、頂点v,v,v,v,vがV’に追加される。なお、v,v,v,vは既にV’に追加されているため、ここでは、vが新たに追加される。さらに、c=3となる。
この段階で、c=kとなり、現時点でV’に含まれる頂点に基づいて、図12に示すような縮約グラフが生成される。
第1実施形態と第2実施形態とでは、縮約グラフの生成方法が異なるが、生成される縮約グラフは同じものが得られる。この理由について説明する。
上記ステップS222の処理は、第1実施形態において、導出された経由最短経路の重複を排除する処理に相当する。また、上記ステップS226の処理は、第1実施形態において、ループを含む経由最短経路の頂点をV’に含める導処理に相当する。
まず、上記ステップS222の処理について説明する。bijに含まれる頂点をvj1,vj2,・・・,vjhとする。bijはvijを経由点とする経由最短経路であるが、vj1はvijに等しい、すなわち、j=iとする。vj1,vj2,・・・,vbjhの中には、v及びvも含まれているが、この中のvj1でもvでもvでもない、図20に示すような頂点vixを考える。この場合、d(bij)=d(bix)である。なぜなら、bijはBの先頭の経由最短経路であることから、d(bij)≦d(bix)、d(bij)<d(b(ix)であることは、bixにおけるvからvixまでの距離が、bijにおけるvからvixまでの距離より長いことを意味する。これはbixにおけるvからvixまでの距離が最短であることに反するからである。このことは、bixはbijと全く同じでもよいことを意味している。すなわち、bixは重複したものとして削除さてもよいことを意味している。
次に、上記ステップS226の処理について説明する。ステップS226において、vijだけがV’に追加される。ここで、図21のような状況、すなわち、ループの中にvij以外のv’含まれている場合でも、v’をV’に追加する必要はない。これは、d(b(v’))<d(bij)であるから、v’は既にV’に加えられているからである。図21の例では、ループは線状であるが、図22に示すように、環状のループの場合も同様である。vixからv’を通ってvijに至る経路の距離と、vixからv''を通ってvijに至る経路の距離とは同じであるので、d(b(v’))<d(bij)及びd(b(v''))<d(bij)が成り立つからである。
また、第2実施形態では、第1実施形態の場合に比べ、より縮約された縮約グラフを生成できる可能性がある。第1実施形態のアルゴリズムと第2実施形態のアルゴリズムとで、縮約グラフに含める頂点の数について、ループを含む経由最短経路に関する処理では違いは生じないが、重複した経由最短経路の排除の処理の関係で違いが生じる。
ループを含む経由最短経路に関する処理で、縮約グラフに含める頂点の数が同じである理由は、以下のとおりである。まず、両アルゴリズムでループを含む経由最短経路は全く同じである。ただし、第1実施形態のアルゴリズムでは、ループを含む経由最短経路中の全ての頂点が、縮約グラフに含まれる。第2実施形態のアルゴリズムでは、頂点vijを経由点とする経由最短経路bijを加える際に、vijだけを縮約グラフの頂点として加える。上述したように、図21及び図22に示すvijとvixとの間の頂点は既にそれ以前に縮約グラフの頂点として加えられている。また、vixの経由最短経路bixもbijより前に既に現れているため、その頂点も加えられている。すなわち、結局同じ頂点が縮約グラフに加えられている。以上が、両アルゴリズムでループを含む経由最短経路については、頂点の数に違いが生じない理由である。
重複した経由最短経路の排除の処理の関係で、縮約グラフに含める頂点の数に違いが生じる理由は以下のとおりである。図20で、bij及びbixは、第2実施形態のアルゴリズムでは重複したものとみなしている。一方、第1実施形態のアルゴリズムでは、st−最短経路群を計算する際、距離は同じであるが、別経路として計算されている可能性もある。その場合は、第1実施形態のアルゴリズムの方が縮約グラフの頂点数が増えてしまう。これが、第1実施形態の方が縮約グラフの頂点の個数が増えてしまう可能性がある理由である。
以上説明したように、第2実施形態に係る最短経路探索装置は、元のグラフから縮約グラフを生成する際に、導出された経由最短経路の重複を排除する処理を行わないこと。これにより、第1実施形態に係る最短経路探索装置よりも、更にk−最短経路探索の処理コストを削減することができる。
ここで、2つの従来手法と、本実施形態の手法との性能の比較結果について説明する。従来手法の1つは、既に求めた最短経路に含まれる辺を取り除いたグラフで最短経路を求めることにより、既に求めた最短経路とは別の最短経路を求める手法(以下、「Yen法」という)である。もう1つの従来手法は、Dijkstra法をk−最短経路に拡張した手法(以下、「k−Dij」という)である。なお、以下の性能比較で用いたk−Dijは、以下の[K−shortest]に掲載されているアルゴリズムに改良を加えたものである。本実施形態の手法は、既存のk−最短経路探索にk−Dijを適用したGR(k−Dij)である。
[K−shortest]:k shortest path routing, https://en.wikipedia.org/wiki/K_shortest_path_routing
Yen法及びk−DijとGR(k−Dij)とを、k=√nで比較した場合、k−Dijの方がYen法よりも処理速度が高速であったため、以下では、k−DijとGR(k−Dij)との比較結果のみを示す。
元のグラフとしては、現実世界に遍在すると言われるスケールフリーグラフを用いた。頂点数nは、n=22i(i=3,4,5,6,7)、すなわち、n=64,256,1024,4096,16384で測定した。フリースケールのグラフを生成する際は、n個の頂点からなるグラフを生成する場合、n’(<n)個の頂点からなる完全グラフG=(V,E)をまず生成する。2番目に残りのn−n’個の頂点が1つずつ加えられる。その1つをvとする。Vからランダムに選ばれたn’個の頂点をv,v,・・・,vn’としたとき、V=V∪{v}、E=E∪{(v,v),(v,v),・・・,(v,vn’)}とする。v(i=1,2,・・・,n’)を選ぶ確率は、vの次数に比例させた。
図23は、スケールフリーのグラフでn’=2,√n、すなわちグラフが疎な場合と密な場合とについて、k−Dij及びGR(k−Dij)のCPU時間を両対数のグラフで比較したものである。図24及び図25は、両方式のCPU時間の比較、GR(k−Dij)のCPU時間の内訳、及び縮約グラフの頂点数をまとめたものである。
図24及び図25のk−Dij/GR(k_Dij)の列は、k−DijのCPU時間のGR(k_Dij)のCPU時間に対する比、すなわちGR(k_Dij)がk−Dijに比べ何倍速いかを表す。GR(k_Dij)のCPU時間の内訳は、GR(k_Dij)が要するCPU時間をst−最短経路群計算、それに基づくグラフの縮約、そして縮約されたグラフへのk−Dijによるk−最短経路探索の3つに分けたものである。なお、上記実施形態では、縮約グラフを生成するまでの処理に、st−最短経路群を求める処理も含まれるが、ここでは、st−最短経路群を求める処理は含まないことを表すために、グラフの「真縮約」と呼ぶ。
n=16384の場合について、n’=2の場合、GR(k−Dij)がk−Dijを約4.5倍上回っているが、n’=√nの場合は、GR(k−Dij)が約230倍とk−Dijを大きく上回っている。n’が大きい、すなわちグラフが密な場合、性能差が顕著になることがわかる。
図24及び図25のk−Dij/GR(k_Dij)の値は、n’=2,√nの両方で、nが増えるにつれ、比が大きくなっている。真縮約の部分の割合は、n’=2,√nの両方でわずかであり、真縮約の部分のアルゴリズムは高速であると言える。
縮約グラフの頂点数を見ると、n’=√nの場合、すなわちグラフが密な場合の方が、n’=2の場合、すなわちグラフが疎な場合よりもより縮約されていることがわかる。これがn’=√nの方がn’=2の場合に比べ、k−Dij/GR(k_Dij)の値が大きい原因と考えられる。
上記の比較結果から、密なグラフのように処理負荷が重く時間がかかるグラフほど、本実施形態に係る手法が効果的であることが期待できる。
また、縮約グラフを求めるのに要する時間のほとんどがst−最短経路の計算で、グラフの真縮約に要する時間はわずかであり、その意味で真縮約の部分のアルゴリズムは高速であると言える。真縮約に時間が掛かる場合、GR法の効果が薄れるため、この点は重要である。
また、第2実施形態のアルゴリズムは、第1実施形態のアルゴリズムより高速なだけでなく、上述したように、生成される縮約グラフに含まれる頂点の数が、第1実施形態のアルゴリズムにより生成される縮約グラフの頂点数以下である点においても有利である。
なお、上記各実施形態では、連結した重み付き無向グラフについて説明したが、これに限定されず、開示の技術は、以下の他の3種類の組み合わせにも適用可能である。
まず、重みなしグラフは、無向グラフでも有向グラフでも、辺の重みが全て1であるグラフとみなすことで、開示の技術を適用可能である。
また、有向グラフでは、重み付きでも重みなしでも、始点から全ての頂点への最短経路と、全ての頂点から終点までの最短経路とを求める際、ある頂点vではどちらかが求まらない可能性がある。その場合は、vの経由最短経路は求まらないものとして、またvをV’に入れないようにすることで、開示の技術を適用することが可能となる。
以上で、無向グラフと有向グラフ、及び重み付きグラフと重みなしグラフの4種類全ての組み合わせに対して開示の技術が適用可能であることが示せた。
非連結グラフ
また、上記各実施形態では、連結グラフを前提として説明したが、非連結グラフにも開示の技術を適用可能である。非連結グラフの場合は、始点及び終点が同じ連結成分に含まれる場合は、開示の技術を適用することで解を求め、そうでない場合は、解がなしとすればよい。
また、上記各実施形態では、始点及び終点が指定された際、すなわち、k−最短経路探索の処理を実行する際に、st−最短経路群の計算、及び縮約グラフの生成を行う場合について説明したが、これに限定されない。各処理を事前に行うことで、k−最短経路探索時の処理時間を更に短縮することができる。
具体的には、上記各実施形態の中で処理時間の多くを占めるst−最短経路群の計算を事前に行い、二次記憶や主記憶に記憶させておくことで、k−最短経路探索時の処理時間の短縮を図ることができる。
また、kの値として使われる値が、だいたいkmaxくらいまでであることが想定される場合、kmax−最短経路探索を前もって行い、その縮約グラフを記憶させておくことで、st−最短経路群の計算及び縮約グラフの生成の処理を省くことが可能である。
なお、事前にst−最短経路群を計算しておく方法は、特にst−最短経路群の計算が処理全体に占める割合が高い場合に有効である。例えば、図25に示すように、n’=√n、n=256の場合は、st−最短経路計算の占める割合が74%と高く、GR(k−Dij)で0.232秒かかっていたものを、0.058秒と4倍高速化することができる。したがって、k−最短経路探索では、0.573秒が0.232秒になり約2.5倍の高速化にとどまっていたが、事前に計算しておくことで、0.058秒と約10倍に高速化でき、効果が大きいことがわかる。
また、上記各実施形態では、k−最短経路探索での解の数であるK1と、縮約グラフに含めるループを含まない経由最短経路の数であるK2とを共にkとして説明したが、これに限定されず、K1≦K2であればよく、異なる値を設定してもよい。
また、上記実施形態では、最短経路探索プログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD−ROM、DVD−ROM、USBメモリ等の記憶媒体に記憶された形態で提供することも可能である。
以上の各実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理をコンピュータに実行させるための最短経路探索プログラムであって、
前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出し、
前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成し、
前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う
ことを含む処理を前記コンピュータに実行させるための最短経路探索プログラム。
(付記2)
導出された前記経由最短経路の重複を排除し、残りの経由最短経路を距離の昇順で並び替えて、前記上位K2個に含まれる経由最短経路を特定する付記1に記載の最短経路探索プログラム。
(付記3)
前記距離の昇順で並び替えられた先頭の経由最短経路から、ループを含む経由最短経路を除いて上位K2番目となる経由最短経路までの全ての経由最短経路の各々に含まれる頂点を特定し、前記グラフ構造データにおいて、特定した前記頂点間を連結する辺と、特定した前記頂点とに基づいて、前記縮約グラフ構造データを生成する付記2に記載の最短経路探索プログラム。
(付記4)
導出された前記経由最短経路を距離の昇順で並び替えた経由最短経路群の先頭から順に処理対象の経由最短経路とし、前記処理対象の経由最短経路に含まれる頂点を前記縮約グラフ構造データに含める頂点集合に追加すると共に、前記経由最短経路群から、前記頂点集合に追加された頂点を前記経由点とする経由最短経路を除外する処理をK2回繰り返した場合に、前記頂点集合に含まれる頂点に基づいて、前記縮約グラフ構造データを生成する付記1に記載の最短経路探索プログラム。
(付記5)
前記グラフ構造データにおいて、前記頂点集合に含まれる頂点間を連結する辺と、前記頂点集合に含まれる頂点とに基づいて、前記縮約グラフ構造データを生成する付記4に記載の最短経路探索プログラム。
(付記6)
前記処理対象の経由最短経路がループを含む場合、前記処理対象の経由最短経路に含まれる前記経由点のみを前記頂点集合に追加すると共に、処理の繰り返し回数を加算しない付記4又は付記5に記載の最短経路探索プログラム。
(付記7)
複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理を実行する最短経路探索装置であって、
前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出する導出部と、
前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成する生成部と、
前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う探索部と、
を含む最短経路探索装置。
(付記8)
前記生成部は、導出された前記経由最短経路の重複を排除し、残りの経由最短経路を距離の昇順で並び替えて、前記上位K2個に含まれる経由最短経路を特定する付記7に記載の最短経路探索装置。
(付記9)
前記生成部は、前記距離の昇順で並び替えられた先頭の経由最短経路から、ループを含む経由最短経路を除いて上位K2番目となる経由最短経路までの全ての経由最短経路の各々に含まれる頂点を特定し、前記グラフ構造データにおいて、特定した前記頂点間を連結する辺と、特定した前記頂点とに基づいて、前記縮約グラフ構造データを生成する付記8に記載の最短経路探索装置。
(付記10)
前記生成部は、導出された前記経由最短経路を距離の昇順で並び替えた経由最短経路群の先頭から順に処理対象の経由最短経路とし、前記処理対象の経由最短経路に含まれる頂点を前記縮約グラフ構造データに含める頂点集合に追加すると共に、前記経由最短経路群から、前記頂点集合に追加された頂点を前記経由点とする経由最短経路を除外する処理をK2回繰り返した場合に、前記頂点集合に含まれる頂点に基づいて、前記縮約グラフ構造データを生成する付記7に記載の最短経路探索装置。
(付記11)
前記生成部は、前記グラフ構造データにおいて、前記頂点集合に含まれる頂点間を連結する辺と、前記頂点集合に含まれる頂点とに基づいて、前記縮約グラフ構造データを生成する付記10に記載の最短経路探索装置。
(付記12)
前記生成部は、前記処理対象の経由最短経路がループを含む場合、前記処理対象の経由最短経路に含まれる前記経由点のみを前記頂点集合に追加すると共に、処理の繰り返し回数を加算しない付記10又は付記11に記載の最短経路探索装置。
(付記13)
複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理をコンピュータが実行する最短経路探索方法であって、
前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出し、
前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成し、
前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う
ことを含む処理を前記コンピュータが実行する最短経路探索方法。
(付記14)
導出された前記経由最短経路の重複を排除し、残りの経由最短経路を距離の昇順で並び替えて、前記上位K2個に含まれる経由最短経路を特定する付記13に記載の最短経路探索方法。
(付記15)
前記距離の昇順で並び替えられた先頭の経由最短経路から、ループを含む経由最短経路を除いて上位K2番目となる経由最短経路までの全ての経由最短経路の各々に含まれる頂点を特定し、前記グラフ構造データにおいて、特定した前記頂点間を連結する辺と、特定した前記頂点とに基づいて、前記縮約グラフ構造データを生成する付記14に記載の最短経路探索方法。
(付記16)
導出された前記経由最短経路を距離の昇順で並び替えた経由最短経路群の先頭から順に処理対象の経由最短経路とし、前記処理対象の経由最短経路に含まれる頂点を前記縮約グラフ構造データに含める頂点集合に追加すると共に、前記経由最短経路群から、前記頂点集合に追加された頂点を前記経由点とする経由最短経路を除外する処理をK2回繰り返した場合に、前記頂点集合に含まれる頂点に基づいて、前記縮約グラフ構造データを生成する付記13に記載の最短経路探索方法。
(付記17)
前記グラフ構造データにおいて、前記頂点集合に含まれる頂点間を連結する辺と、前記頂点集合に含まれる頂点とに基づいて、前記縮約グラフ構造データを生成する付記16に記載の最短経路探索方法。
(付記18)
前記処理対象の経由最短経路がループを含む場合、前記処理対象の経由最短経路に含まれる前記経由点のみを前記頂点集合に追加すると共に、処理の繰り返し回数を加算しない付記16又は付記17に記載の最短経路探索方法。
(付記19)
複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理をコンピュータに実行させるための最短経路探索プログラムであって、
前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出し、
前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成し、
前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う
ことを含む処理を前記コンピュータに実行させるための最短経路探索プログラムを記憶した記憶媒体。
10、210 最短経路探索装置
12 導出部
14、214 生成部
16 探索部
22 グラフ構造データ
24 縮約グラフ構造データ
40 コンピュータ
41 CPU
42 メモリ
43 記憶部
49 記憶媒体
50、250 最短経路探索プログラム

Claims (8)

  1. 複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理をコンピュータに実行させるための最短経路探索プログラムであって、
    前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出し、
    前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成し、
    前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う
    ことを含む処理を前記コンピュータに実行させるための最短経路探索プログラム。
  2. 導出された前記経由最短経路の重複を排除し、残りの経由最短経路を距離の昇順で並び替えて、前記上位K2個に含まれる経由最短経路を特定する請求項1に記載の最短経路探索プログラム。
  3. 前記距離の昇順で並び替えられた先頭の経由最短経路から、ループを含む経由最短経路を除いて上位K2番目となる経由最短経路までの全ての経由最短経路の各々に含まれる頂点を特定し、前記グラフ構造データにおいて、特定した前記頂点間を連結する辺と、特定した前記頂点とに基づいて、前記縮約グラフ構造データを生成する請求項2に記載の最短経路探索プログラム。
  4. 導出された前記経由最短経路を距離の昇順で並び替えた経由最短経路群の先頭から順に処理対象の経由最短経路とし、前記処理対象の経由最短経路に含まれる頂点を前記縮約グラフ構造データに含める頂点集合に追加すると共に、前記経由最短経路群から、前記頂点集合に追加された頂点を前記経由点とする経由最短経路を除外する処理をK2回繰り返した場合に、前記頂点集合に含まれる頂点に基づいて、前記縮約グラフ構造データを生成する請求項1に記載の最短経路探索プログラム。
  5. 前記グラフ構造データにおいて、前記頂点集合に含まれる頂点間を連結する辺と、前記頂点集合に含まれる頂点とに基づいて、前記縮約グラフ構造データを生成する請求項4に記載の最短経路探索プログラム。
  6. 前記処理対象の経由最短経路がループを含む場合、前記処理対象の経由最短経路に含まれる前記経由点のみを前記頂点集合に追加すると共に、処理の繰り返し回数を加算しない請求項4又は請求項5に記載の最短経路探索プログラム。
  7. 複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理を実行する最短経路探索装置であって、
    前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出する導出部と、
    前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成する生成部と、
    前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う探索部と、
    を含む最短経路探索装置。
  8. 複数の頂点と、頂点間の連結関係を表す複数の辺とを含むグラフ構造データにおいて、第1の頂点から第2の頂点までのK1−最短経路探索(K1は正の整数)の処理をコンピュータが実行する最短経路探索方法であって、
    前記第1の頂点から、前記複数の頂点に含まれる各頂点までの最短経路と、前記第2の頂点から、前記複数の頂点に含まれる各頂点までの最短経路とに基づいて、前記第1の頂点から前記各頂点のいずれかを経由点として前記第2の頂点に至る経路の最短経路である経由最短経路の各々を導出し、
    前記経由最短経路のうち、距離の短い上位K2個(K2はK1以上の正の整数)の経由最短経路のいずれにも含まれない頂点及び辺を、前記グラフ構造データから除外した縮約グラフ構造データを生成し、
    前記縮約グラフ構造データに対して、前記K1−最短経路探索の処理を行う
    ことを含む処理を前記コンピュータが実行する最短経路探索方法。
JP2019147202A 2019-08-09 2019-08-09 最短経路探索プログラム、装置、及び方法 Pending JP2021028736A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019147202A JP2021028736A (ja) 2019-08-09 2019-08-09 最短経路探索プログラム、装置、及び方法
US16/984,300 US20210042298A1 (en) 2019-08-09 2020-08-04 Program storage medium, device, and method for shortest path search

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019147202A JP2021028736A (ja) 2019-08-09 2019-08-09 最短経路探索プログラム、装置、及び方法

Publications (1)

Publication Number Publication Date
JP2021028736A true JP2021028736A (ja) 2021-02-25

Family

ID=74501722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019147202A Pending JP2021028736A (ja) 2019-08-09 2019-08-09 最短経路探索プログラム、装置、及び方法

Country Status (2)

Country Link
US (1) US20210042298A1 (ja)
JP (1) JP2021028736A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220133001A (ko) * 2021-03-24 2022-10-04 한국로봇융합연구원 물품 하차를 위한 경로 설정방법 및 경로 설정시스템

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113075479B (zh) * 2021-03-26 2022-11-25 中国人民解放军海军航空大学航空作战勤务学院 用于低频信号连接的路径搜索算法
KR102444457B1 (ko) * 2022-06-03 2022-09-19 주식회사 액션파워 단어 그래프를 이용한 대화의 요약 생성 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220133001A (ko) * 2021-03-24 2022-10-04 한국로봇융합연구원 물품 하차를 위한 경로 설정방법 및 경로 설정시스템
KR102596999B1 (ko) * 2021-03-24 2023-10-31 한국로봇융합연구원 물품 하차를 위한 경로 설정방법 및 경로 설정시스템

Also Published As

Publication number Publication date
US20210042298A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
JP2021028736A (ja) 最短経路探索プログラム、装置、及び方法
CN103309917B (zh) 路径搜索方法和路径搜索装置
US20170116315A1 (en) Fast path traversal in a relational database-based graph structure
Li et al. Time-dependent hop labeling on road network
Archetti et al. Chapter 12: Arc routing problems with profits
Shang et al. Finding the most accessible locations: reverse path nearest neighbor query in road networks
US8738559B2 (en) Graph partitioning with natural cuts
JP4893624B2 (ja) データのクラスタリング装置、クラスタリング方法及びクラスタリング用プログラム
JP5895630B2 (ja) 経路探索方法、経路探索装置、及びプログラム
JP2016048540A (ja) 生成方法、装置、及びプログラム
Benavent et al. New facets and an enhanced branch‐and‐cut for the min–max K‐vehicles windy rural postman problem
Lin et al. Initialization for network embedding: A graph partition approach
Ma et al. Proxies for shortest path and distance queries
CN110825817B (zh) 一种企业疑似关联关系判定方法及系统
CN109218211A (zh) 数据流的控制策略中阈值的调整方法、装置和设备
Shapira et al. All-pairs bottleneck paths in vertex weighted graphs
Benavent et al. A branch‐price‐and‐cut algorithm for the min‐max k‐vehicle windy rural postman problem
US10169418B2 (en) Deriving a multi-pass matching algorithm for data de-duplication
US10146902B2 (en) Sharing global route topologies in detailed routing
Peng et al. Efficiently Answering Quality Constrained Shortest Distance Queries in Large Graphs
Sadeghnejad-Barkousaraie et al. Convoy movement problem: a civilian perspective
CN104978382A (zh) MapReduce平台上基于本地密度的聚类方法
Souliou et al. Weight assignment on edges towards improved community detection
Berrettini et al. Arc-flags in dynamic graphs
JPWO2018012413A1 (ja) 類似データ検索装置、類似データ検索方法および記録媒体