経路特定装置、経路特定方法、及び、経路特定プログラム
【課題】2つのノードを結び、且つ、リンク又はノードを共有しない、2つの異なる経路を特定する際の処理負荷を低減することが可能な経路特定装置を提供すること。
【解決手段】経路特定装置1000は、基本ノードと2つの基本ノードを結ぶ基本リンクとにより構成される基本グラフにて第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する。経路特定装置は、第1の基本ノードを通る閉路と第2の基本ノードを通る閉路とを含む複数の閉路を特定する閉路特定部1001と、複数の閉路のうちの、基本ノード又は基本リンクを共有する閉路同士を併合することにより、第1の基本ノードと第2の基本ノードとを通る経路含有閉路を特定する経路含有閉路特定部1002と、経路含有閉路において、第1の基本ノードと第2の基本ノードとを結び且つ基本リンク又は基本ノードを共有しない、2つの異なる経路を特定する経路特定部1003と、を備える。
【解決手段】経路特定装置1000は、基本ノードと2つの基本ノードを結ぶ基本リンクとにより構成される基本グラフにて第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する。経路特定装置は、第1の基本ノードを通る閉路と第2の基本ノードを通る閉路とを含む複数の閉路を特定する閉路特定部1001と、複数の閉路のうちの、基本ノード又は基本リンクを共有する閉路同士を併合することにより、第1の基本ノードと第2の基本ノードとを通る経路含有閉路を特定する経路含有閉路特定部1002と、経路含有閉路において、第1の基本ノードと第2の基本ノードとを結び且つ基本リンク又は基本ノードを共有しない、2つの異なる経路を特定する経路特定部1003と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1のノードと第2のノードとを結ぶ経路を特定する経路特定装置に関する。
【背景技術】
【0002】
ノードと、2つのノードを結ぶリンクと、により構成されるグラフにおいて、第1のノードと第2のノードとを結ぶ経路を特定する経路特定装置が知られている。この種の経路特定装置は、例えば、通信網等のネットワーク状に通信装置が接続された通信システムにおける通信装置間の経路を特定するために用いられる。
【0003】
特に、経路特定装置は、ある経路を特定するとともに、その経路に対して冗長な経路も特定する(即ち、2つのノードを結び、且つ、リンクやノードを共有しない2つの異なる経路を特定する)ように構成されることが好適である。これによれば、システムは、障害の発生により、ある経路が使用不能となっても、その経路に対して冗長な経路を使用することができる。
【0004】
ところで、冗長な経路を特定するための最も代表的な方法として、Dijkstra法(非特許文献1を参照)を繰り返し用いる方法が知られている。各リンクにコスト値が与えられ、経路のコストがその経路が経由するリンクのコスト和で与えられるグラフにおいて、この方法は、先ず、第1のノードと第2のノードとを結ぶ経路として、コストが最小となる経路(第1の経路)を、Dijkstra法に従って特定する。次いで、この方法は、特定された経路に含まれる、すべてのリンクを除外したグラフにおいて、再度、第1のノードと第2のノードとを結ぶ経路として、コストが最小となる経路(第2の経路)を、Dijkstra法に従って特定する。又は、この方法は、特定された経路に含まれる、すべての中間ノードを除外したグラフにおいて、再度、第1のノードと第2のノードとを結ぶ経路として、コストが最小となる経路(第2の経路)をDijkstra法に従って特定する。
【0005】
この方法を用いることにより、経路特定装置は、第1のノードと第2のノードとを結び、且つ、リンクやノードを共有しない2つの異なる経路(第1の経路、及び、第2の経路)を特定することができる。
【0006】
しかしながら、上記方法によれば、経路を特定する対象となるグラフのトポロジがトラップ構造を含む場合、第1のノードと第2のノードとを結び、且つ、リンクを共有しない2つの異なる経路が存在しているときであっても、これらの経路を特定することができないことがある。
【0007】
例えば、図1に示したグラフにおいて、第1のノードN100と第2のノードN400とを結ぶ経路を特定する場合を想定する。この場合において、リンクL100、リンクL900、リンクL500、及び、リンクL400をこの順に連結した経路(第1の経路)が、コストが最小となる経路である場合を想定する。
【0008】
この場合、第1の経路に含まれる、すべてのリンクを除外したグラフは、図2に示したグラフである。ここで、破線は、除外されたリンクを表す。従って、このグラフにおいては、第1のノードN100と第2のノードN400とを結ぶ経路を特定することができない。即ち、このグラフのトポロジは、トラップ構造を含んでいる、と言うことができる。
【0009】
このような課題に対処するため、Bhandari法(非特許文献2を参照)が知られている。この方法は、Dijkstra法を繰り返し用いる工程を拡張することにより、グラフのトポロジの一部を変換し、その結果、トラップ構造の基となるリンクであるトラップリンクを特定する。更に、この方法は、特定されたトラップリンクを除いたグラフにおいて、再度、Dijkstra法を繰り返し用いることにより、リンクを共有しない2つの異なる経路を特定する。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】E. W. Dijkstra、“A note on two problems in connexion with graphs”、 NumerischeMathematik 1、1959年、 pp. 269 − 271
【非特許文献2】Ramesh Bhandari、“Survivable Networks: Algorithms for diverse routing”、Springer、1999年
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、上記非特許文献2に記載の技術においては、トラップリンクを特定し、特定したトラップリンクの影響を排除するための処理の負荷(処理負荷)が比較的大きい。即ち、上記非特許文献2に記載の技術においては、2つのノードを結び、且つ、リンク、又は、当該2つのノード以外のノード(即ち、経路途中のノード)を共有しない、2つの異なる経路を特定する際の処理負荷が過大であるという問題があった。
【0012】
このため、本発明の目的は、上述した課題である「2つのノードを結び、且つ、リンク、又は、経路途中のノードを共有しない、2つの異なる経路を特定する際の処理負荷が過大であること」を解決することが可能な経路特定装置を提供することにある。
【課題を解決するための手段】
【0013】
かかる目的を達成するため本発明の一形態である経路特定装置は、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する装置である。
【0014】
更に、この経路特定装置は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定手段と、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定手段と、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する経路特定手段と、
を備える。
【0015】
また、本発明の他の形態である経路特定方法は、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する方法である。
【0016】
更に、この経路特定方法は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する方法である。
【0017】
また、本発明の他の形態である経路特定プログラムは、
情報処理装置に、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する処理を実行させるためのプログラムである。
【0018】
更に、上記処理は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定するように構成される。
【発明の効果】
【0019】
本発明は、以上のように構成されることにより、2つのノードを結び、且つ、リンク、又は、経路途中のノードを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【図面の簡単な説明】
【0020】
【図1】背景技術に係る、経路が特定される対象となるグラフを示した図である。
【図2】背景技術に係る、第1の経路に含まれる、すべてのリンクを除外したグラフを示した図である。
【図3】本発明の第1実施形態に係る経路特定装置の機能の概略を表すブロック図である。
【図4】本発明の第1実施形態に係る、経路が特定される対象となる基本グラフを示した図である。
【図5】本発明の第1実施形態に係る基本グラフ情報を示したテーブルである。
【図6】本発明の第1実施形態に係る経路特定装置が、閉路隣接グラフを生成するために実行する処理を示したフローチャートである。
【図7】本発明の第1実施形態に係る経路特定装置が取得する全域木を概念的に示した説明図である。
【図8】本発明の第1実施形態に係る閉路情報を示したテーブルである。
【図9】本発明の第1実施形態に係る閉路情報を示したテーブルである。
【図10】本発明の第1実施形態に係る閉路情報を示したテーブルである。
【図11】本発明の第1実施形態に係る経路特定装置が生成した閉路隣接グラフを示した図である。
【図12】本発明の第1実施形態に係る閉路隣接グラフ情報を示したテーブルである。
【図13】本発明の第1実施形態に係る経路特定装置が、閉路隣接グラフに基づいて経路を特定するために実行する処理を示したフローチャートである。
【図14】本発明の第1実施形態に係る、経路含有閉路を表す閉路情報を示したテーブルである。
【図15】本発明の第2実施形態に係る、経路が特定される対象となる基本グラフを示した図である。
【図16】本発明の第2実施形態に係る経路特定装置が生成した閉路隣接グラフを示した図である。
【図17】本発明の第3実施形態に係る、経路が特定される対象となる基本グラフを示した図である。
【図18】本発明の第3実施形態に係る経路特定装置が、閉路隣接グラフを生成するために実行する処理を示したフローチャートである。
【図19】本発明の第3実施形態に係る経路特定装置が生成した閉路隣接グラフを示した図である。
【図20】本発明の第4実施形態に係る併合閉路情報を示したテーブルである。
【図21】本発明の第4実施形態に係る併合閉路情報を示したテーブルである。
【図22】本発明の第5実施形態に係る経路特定装置が生成した閉路探索グラフを示した図である。
【図23】本発明の第5実施形態に係る経路特定装置が生成した閉路探索グラフから、探索リンクコストが∞であるリンクを除去したグラフを示した図である。
【図24】本発明の第6実施形態に係る経路特定装置が、経路を特定するために実行する処理を示したフローチャートである。
【図25】本発明の第7実施形態に係る経路特定装置の機能の概略を表すブロック図である。
【発明を実施するための形態】
【0021】
以下、本発明に係る、経路特定装置、経路特定方法、及び、経路特定プログラム、の各実施形態について図1〜図25を参照しながら説明する。
【0022】
<第1実施形態>
(構成)
図3に示したように、第1実施形態に係る経路特定装置1は、情報処理装置(本例では、サーバ装置)である。なお、経路特定装置1は、ネットワーク・スイッチ、ルーター、パーソナル・コンピュータ、携帯電話端末、PHS(Personal Handyphone System)、PDA(Personal Data Assistance、Personal Digital Assistant)、スマートフォン、カーナビゲーション端末、又は、ゲーム端末等であってもよい。
【0023】
経路特定装置1は、図示しない中央処理装置(CPU;Central Processing Unit)、一次記憶装置(メモリ(RAM;Random Access Memory))、及び、二次記憶装置(ハードディスク駆動装置(HDD;Hard Disk Drive))を備える。
【0024】
経路特定装置1は、二次記憶装置に記憶されているプログラムをCPUが実行することにより、後述する機能を実現するように構成されている。
【0025】
なお、経路特定装置1の各機能は、回路等のハードウェアにより実現されていてもよい。また、プログラムは、二次記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0026】
(機能)
図3は、上記のように構成された経路特定装置1の機能を表すブロック図である。経路特定装置1の機能は、基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する。例えば、基本ノードは、通信装置を表す。また、基本リンクは、2つの通信装置を接続する、通信線又は通信回線を表す。
【0027】
具体的には、経路特定装置1の機能は、グラフ情報記憶部11と、閉路特定部(閉路特定手段)12と、経路含有閉路特定部(経路含有閉路特定手段)13と、経路特定部(経路特定手段)14と、を含む。
【0028】
グラフ情報記憶部11は、基本グラフ情報と、閉路情報と、閉路隣接グラフ情報と、経路含有閉路情報と、を記憶する。
【0029】
基本グラフ情報は、基本グラフを構成する、複数の基本ノードのそれぞれを識別するための基本ノード識別子と、複数の基本ノードの任意の2つの組のそれぞれに対して、当該2つの基本ノードを結ぶ基本リンクが存在する(即ち、2つの基本ノードが接続されている)か否かを表す情報と、を含む。
【0030】
閉路情報は、基本グラフにおける閉路を表す情報である。閉路情報は、閉路を識別するための閉路識別子と、当該閉路を構成する基本リンクを特定するための情報と、を含む。
【0031】
閉路隣接グラフ情報は、閉路隣接グラフを構成する、複数の閉路ノードのそれぞれを識別するための閉路ノード識別子と、複数の閉路ノードの任意の2つの組のそれぞれに対して、当該2つの閉路ノードを結ぶ隣接リンクが存在する(即ち、2つの閉路ノードが接続されている)か否かを表す情報と、を含む。
【0032】
ここで、閉路隣接グラフは、基本グラフにおける複数の閉路のそれぞれを閉路ノードにより表すとともに、2つの閉路によって基本グラフにおける基本グラフ要素(基本ノード、又は、基本リンク)が共有されていることを、当該2つの閉路のそれぞれを表す閉路ノードを結ぶ隣接リンクにより表すグラフである。
【0033】
経路含有閉路情報は、基本グラフにおける経路含有閉路を表す情報である。経路含有閉路は、基本グラフにおいて、第1の基本ノードと第2の基本ノードとを通る閉路である。経路含有閉路情報は、経路含有閉路を識別するための経路含有閉路識別子と、当該経路含有閉路を構成する基本リンクを特定するための情報と、を含む。
【0034】
なお、基本グラフ、及び、閉路隣接グラフを表す情報は、隣接行列、又は、隣接リスト等により表される。なお、基本グラフ、及び、閉路隣接グラフを表す情報は、情報処理装置により処理可能な他の形式により表されてもよい。
【0035】
閉路特定部12は、グラフ情報記憶部11に記憶されている基本グラフ情報に基づいて、第1の基本ノードを通る第1の閉路と、第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する。閉路特定部12は、特定された閉路を表す閉路情報をグラフ情報記憶部11に記憶させる。
【0036】
経路含有閉路特定部13は、閉路特定部12により特定された複数の閉路のうちの、基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、経路含有閉路を特定する。
【0037】
ここで、経路含有閉路特定部13は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。ここで、共有リンクは、上記2つの閉路により共有されている基本リンクである。
【0038】
具体的には、経路含有閉路特定部13は、グラフ情報記憶部11に記憶されている閉路情報に基づいて閉路隣接グラフを生成する。更に、経路含有閉路特定部13は、生成された閉路隣接グラフを表す閉路隣接グラフ情報をグラフ情報記憶部11に記憶させる。
【0039】
加えて、経路含有閉路特定部13は、生成された閉路隣接グラフに基づいて、基本グラフにおける経路含有閉路を特定する。このとき、経路含有閉路特定部13は、基本グラフにおける基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、基本グラフにおける経路含有閉路を特定する。
【0040】
経路含有閉路特定部13は、特定された経路含有閉路を表す経路含有閉路情報をグラフ情報記憶部11に記憶させる。
【0041】
経路特定部14は、グラフ情報記憶部11に記憶されている経路含有閉路情報が表す経路含有閉路(即ち、経路含有閉路特定部13により特定された経路含有閉路)において、第1の基本ノードと第2の基本ノードとを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する。
【0042】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図4に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、7つの基本ノードN100〜N700と、9つの基本リンクL100〜L900と、により構成される。
【0043】
図4に示した基本グラフは、図5に示した基本グラフ情報(隣接行列)により表される。本例では、経路特定装置1は、基本グラフ情報を予め記憶している。図5において、「N100」〜「N700」のそれぞれは、基本ノード識別子である。また、隣接行列における値「1」は、当該値の行と対応付けられた基本ノード識別子により識別される基本ノードと、当該値の列と対応付けられた基本ノード識別子により識別される基本ノードと、を結ぶ基本リンクが存在することを表す。
【0044】
なお、本例では、図4に示したように、簡単のために、比較的規模が小さい基本グラフに経路特定装置1が適用されているが、より規模が大きい基本グラフ、又は、より規模が小さい基本グラフに経路特定装置1が適用されてもよい。
【0045】
<<1.閉路隣接グラフの生成>>
先ず、経路特定装置1は、基本グラフに基づいて閉路隣接グラフを生成する。図6は、経路特定装置1が、閉路隣接グラフを生成するために実行する処理を示したフローチャートである。以下、図4に示した基本グラフに基づいて閉路隣接グラフを生成する際の、経路特定装置1の作動について説明する。なお、経路特定装置1は、図4に示した基本グラフ以外の基本グラフに対しても同様に作動する。
【0046】
初めに、経路特定装置1は、ステップS101にて、基本グラフにおける全域木(スパニングツリー)を取得する。全域木を取得する方法は、深さ優先探索法、幅優先探索法、Dijkstra(ダイクストラ)法、又は、プリム法等の種々の方法のいずれかである。ここでは、図4に示した基本グラフに対して、図7に示した全域木(すべての基本ノードと、実線により示された基本リンクと、により構成される部分)が取得された場合を想定する。
【0047】
次いで、経路特定装置1は、ステップS102にて、ステップS101にて取得された全域木に含まれない基本リンクの集合(基本リンク集合)を取得する。
【0048】
そして、経路特定装置1は、ステップS103〜S106にて、図7に示した全域木に対して、全域木に含まれていない基本リンクを1つずつ追加することにより閉路を取得(特定)し、取得された閉路に基づいて閉路隣接グラフを生成する。
【0049】
具体的には、経路特定装置1は、ステップS103にて、上記基本リンク集合が空集合であるか否かを判定する。経路特定装置1は、上記基本リンク集合が空集合でない場合、「No」と判定してステップS104へ進む。
【0050】
そして、経路特定装置1は、基本リンク集合から基本リンクを1つ取得し、取得された基本リンクを基本リンク集合から削除する。更に、経路特定装置1は、取得された基本リンクと、当該基本リンクにより結ばれる(当該基本リンクを構成する)2つの基本ノードを、全域木において結ぶ経路を構成する、すべての基本リンクと、を連結した閉路を取得(特定)する。
【0051】
次いで、経路特定装置1は、ステップS105にて、特定された閉路を表す閉路ノードを閉路隣接グラフに追加する。更に、経路特定装置1は、ステップS106にて、前回までに追加されていた閉路ノードが表す閉路と、今回、新たに追加された閉路ノードが表す閉路と、に基づいて、隣接リンクを閉路隣接グラフに追加する。
【0052】
そして、経路特定装置1は、ステップS103へ戻り、ステップS103〜ステップS106の処理を、基本リンク集合が空集合となるまで繰り返し実行する。そして、基本リンク集合が空集合となると、経路特定装置1は、ステップS103にて「Yes」と判定して図6に示した処理の実行を終了する。
【0053】
なお、経路特定装置1は、図6に示した処理を実行することにより取得された閉路のそれぞれを表す閉路情報と、当該処理を実行することにより取得された閉路隣接グラフを表す閉路隣接グラフ情報と、を記憶装置に記憶させる。
【0054】
例えば、図7に示した全域木においては、基本リンクL600を追加することにより、閉路N100−N200−N600−N100が取得される。同様に、基本リンクL500を追加することにより、閉路N200−N300−N700−N500−N600−N200が取得される。また、基本リンクL400を追加することにより、閉路N300−N400−N500−N700−N300が取得される。
【0055】
本例では、経路特定装置1が、上述した3つの閉路を取得した場合を想定する。閉路N100−N200−N600−N100は、図8に示した閉路情報(隣接行列)により表される。閉路N100−N200−N600−N100を識別するための閉路識別子は、「C100」である。
【0056】
同様に、閉路N200−N300−N700−N500−N600−N200は、図9に示した閉路情報(隣接行列)により表される。閉路N200−N300−N700−N500−N600−N200を識別するための閉路識別子は、「C200」である。
【0057】
また、閉路N300−N400−N500−N700−N300は、図10に示した閉路情報(隣接行列)により表される。閉路N300−N400−N500−N700−N300を識別するための閉路識別子は、「C300」である。
【0058】
また、本例では、閉路C100と閉路C200とは、基本リンクL900を共有している。また、閉路C200とC300とは、基本リンクL700、及び、基本リンクL800を共有している。また、閉路C100とC300とは、基本リンクを共有していない。なお、閉路C200と閉路C300に対する基本ノードN700のように、2つの閉路が共有している区間の両端以外に位置するノードを臨界ノードと呼ぶ。
【0059】
従って、経路特定装置1により生成される閉路隣接グラフは、図11に示したように、閉路ノードC100と閉路ノードC200とを結ぶ隣接リンクA100と、閉路ノードC200と閉路ノードC300とを結ぶ隣接リンクA200と、を含む。すなわち、隣接リンクA100は基本リンクL900と、隣接リンクA200は基本リンクL700およびL800と関連づけられている。隣接リンクAが基本リンクLと関連づけられている状態を単に、隣接リンクAは基本リンクLを含む、又は、内包する、と表現することにする。また、複数の連結した基本リンクを含む隣接リンクは臨界ノードを含む。図11の例において、隣接リンクA200は臨界ノードN700を含む。
【0060】
図11に示した閉路隣接グラフは、図12に示した閉路隣接グラフ情報(隣接行列)により表される。図12において、「C100」〜「C300」のそれぞれは、閉路ノード識別子である。また、隣接行列における値「1」は、当該値の行と対応付けられた閉路ノード識別子により識別される閉路ノードと、当該値の列と対応付けられた閉路ノード識別子により識別される閉路ノードと、を結ぶ隣接リンクが存在することを表す。
【0061】
なお、経路特定装置1は、上述した方法以外の方法を用いることにより、閉路隣接グラフを生成するように構成されていてもよい。なお、閉路隣接グラフを生成する方法は、基本グラフにおける基本リンクのそれぞれが少なくとも1つの閉路ノードに含まれているという第1の条件と、閉路隣接グラフが連結であるという第2の条件と、の両方が満たされる方法であることが好適である。
【0062】
なお、上述した方法においては、基本グラフにおける各基本リンクは、全域木に含まれるか、又は、閉路を構成するために追加される基本リンクである。従って、上述した方法は、第1の条件を満たす。更に、いずれの閉路も全域木の一部を含む。従って、上述した方法は、第2の条件も満たす。
【0063】
<<2.経路の特定>>
次に、経路特定装置1は、生成された閉路隣接グラフに基づいて経路を特定する。図13は、経路特定装置1が、閉路隣接グラフに基づいて経路を特定するために実行する処理を示したフローチャートである。
【0064】
経路特定装置1は、記憶装置に記憶されている、基本グラフ情報、閉路情報、及び、閉路隣接グラフ情報、に基づいて経路を特定する。なお、経路特定装置1は、基本グラフにおける基本リンクのそれぞれに対して予め設定された基本リンクコストw0(x)を予め記憶している。ここで、パラメータxは、基本リンクを特定するための情報である。なお、基本リンクコストw0(x)は、経路特定装置1のユーザにより入力された情報であってもよい。
【0065】
基本リンクコストw0(x)は、スカラ値を有する。基本リンクコストw0(x)は、基本リンクの長さ、又は、基本リンクのその他の属性等に基づいて設定されることが好適である。ところで、基本リンクの系列としての経路p(={l0,l1,…,li}、ここで、ljは、j番目の基本リンクであり、jは、0〜iの整数である)のコストW(p)は、数式1により表される。
【数1】
【0066】
また、経路特定装置1は、基本リンクコストw0(x)に基づいて、閉路隣接グラフにおける隣接リンクのそれぞれに対する隣接リンクコストw(x)を算出する。パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノードと第2の基本ノードとのいずれも臨界ノードとして含まないとき、経路特定装置1は、隣接リンクコストw(x)を数式2に基づいて算出する。
【数2】
【0067】
一方、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノード又は第2の基本ノードの少なくとも一方を臨界ノードとして含むとき、経路特定装置1は、隣接リンクコストw(x)を数式3に基づいて算出する。
【数3】
【0068】
ここでは、第1の基本ノードが基本ノードN100であり、第2の基本ノードが基本ノードN400である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN100と、第2の基本ノードN400と、を結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する場合を想定する。
【0069】
経路特定装置1は、図13のステップS201にて、閉路隣接グラフにおいて、最小コスト経路を特定する。最小コスト経路は、第1の基本ノードN100を通る閉路を表す閉路ノードC100と、第2の基本ノードN400を通る閉路を表す閉路ノードC300と、を結び、且つ、コストが最小となる経路である。
【0070】
最小コスト経路を特定する方法は、幅優先探索法、又は、修正ダイクストラ法(非特許文献2)等の負のリンクコストを許容する最短経路計算アルゴリズムである。
【0071】
本例では、経路特定装置1は、閉路隣接グラフにおける最小コスト経路として、経路C100−C200−C300を特定する。
【0072】
経路特定装置1は、ステップS202にて、閉路隣接グラフにおける最小コスト経路が特定されたか否かを判定する。本例では、経路特定装置1は、「Yes」と判定し、ステップS203へ進む。なお、最小コスト経路が特定されなかった場合、経路特定装置1は、図13に示した処理の実行を終了する。
【0073】
次いで、経路特定装置1は、ステップS203にて、閉路隣接グラフにおける最小コスト経路において隣接する2つの閉路ノードが表す2つの閉路同士を併合することにより、第1の基本ノードN100と第2の基本ノードN400とを通る閉路である経路含有閉路を特定する。
【0074】
本例では、経路特定装置1は、2つの閉路のそれぞれから、2つの閉路により共有されている基本リンク(共有リンク)を除いた部分を構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0075】
本例では、閉路情報は、図8乃至図10に示したように隣接行列により表されている。従って、経路特定装置1は、2つの閉路のそれぞれを表す隣接行列の排他的論理和を算出することにより、当該2つの閉路同士を併合した閉路を表す閉路情報を取得する。
【0076】
具体的には、経路特定装置1は、閉路C100〜C300を併合することにより、経路含有閉路N100−N200−N300−N400−N500−N600−N100を特定する。本例では、経路特定装置1は、図8乃至図10に示した隣接行列の排他的論理和を算出することにより、経路含有閉路を表す閉路情報としての、図14に示した隣接行列を取得する。
【0077】
なお、経路特定装置1は、他の方法を用いることにより、2つの閉路同士を併合した閉路を表す閉路情報を取得するように構成されていてもよい。
【0078】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の基本ノードN100と第2の基本ノードN400とを結ぶ最小コスト経路(第1の経路)を特定する(ステップS204)。このとき、経路特定装置1は、基本リンクコストw0(x)に基づいて最小コスト経路を特定する。
【0079】
具体的には、経路特定装置1は、幅優先探索法、又は、ダイクストラ法等を用いることにより、最小コスト経路を特定する。ここでは、経路特定装置1は、最小コスト経路N100−N200−N300−N400を特定する。
【0080】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の経路と異なる経路であり、且つ、第1の基本ノードN100と第2の基本ノードN400とを結ぶ経路である冗長経路(第2の経路)を特定する(ステップS205)。ここでは、経路特定装置1は、冗長経路N100−N600−N500−N400を特定する。
【0081】
具体的には、経路特定装置1は、ステップS203にて特定された経路含有閉路を表す環状リストから、ステップS204にて特定された第1の経路に相当する部分を取り除くことにより、第2の経路を特定する。なお、経路特定装置1は、ステップS204にて特定された第1の経路における中間の基本ノード又は基本リンクを使用不可とする条件を設けた状態において、深さ優先探索法、又は、ダイクストラ法等を用いることにより第2の経路を特定してもよい。
【0082】
このようにして、経路特定装置1は、閉路隣接グラフを用いることにより、第1の基本ノードN100と第2の基本ノードN400とを結び、且つ、基本リンクを共有しない、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0083】
以上、説明したように、本発明の第1実施形態に係る経路特定装置1によれば、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を確実に特定することができる。更に、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の(即ち、第1の基本ノード及び第2の基本ノード以外の)基本ノードを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【0084】
更に、本発明の第1実施形態に係る経路特定装置1は、基本グラフにおける基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、基本グラフにおける経路含有閉路を特定する。
【0085】
これによれば、基本リンクコストの総和を最小とするように、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の基本ノードを共有しない、2つの異なる経路を特定することができる。
【0086】
<第2実施形態>
次に、本発明の第2実施形態に係る経路特定装置について説明する。第2実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、2つの閉路が基本ノードのみを共有している場合、当該2つの閉路のそれぞれを構成するすべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる点において相違している。従って、以下、かかる相違点を中心として説明する。
【0087】
(機能)
第2実施形態に係る経路含有閉路特定部13は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0088】
本例では、2つの閉路が基本リンクを共有している状態は、強隣接状態とも呼ばれる。また、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している状態は、弱隣接状態とも呼ばれる。
【0089】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図15に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、9つの基本ノードN100〜N900と、12個の基本リンクL100〜L1200と、により構成される。
【0090】
<<1.閉路隣接グラフの生成>>
経路特定装置1は、第1実施形態と同様に、閉路を特定する。本例では、経路特定装置1は、閉路C100、閉路C200、及び、閉路C300に加えて、閉路C700(N400−N800−N900−N400)も特定する。
【0091】
閉路C300と閉路C700とは、基本リンクを共有することなく、基本ノードN400のみを共有している。即ち、閉路C300と閉路C700とは、弱隣接状態にある。経路特定装置1は、図16に示したように、弱隣接状態を表す隣接リンク(弱隣接リンク)A300を閉路隣接グラフに追加する。なお、弱隣接状態にある2つの閉路に共有される唯一の基本ノードは、臨界ノードと見なされる。すなわち、いずれの弱隣接リンクも基本リンクを含まず、且つ、臨界ノードを1つ含む。
【0092】
<<2.経路の特定>>
経路特定装置1は、第1実施形態と同様に、図16に示した閉路隣接グラフに基づいて経路を特定する。
【0093】
本例では、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクであり、且つ、閉路ノードc0が表す閉路と閉路ノードc1が表す閉路とが弱隣接状態にある場合において、当該隣接リンク(弱隣接リンク)が含んでいる基本ノードが第1の基本ノードと第2の基本ノードのいずれでもないとき、経路特定装置1は、隣接リンクコストw(x)を数式4に基づいて算出する。ただし、本例において導入した弱隣接リンクは基本リンクを含まないため、数式4は数式2と同等である。すなわち、第1実施形態において数式1〜3により示した隣接リンクコストw(x)を、本例においてもそのまま使用することができる。
【数4】
【0094】
ここでは、第1の基本ノードが基本ノードN100であり、第2の基本ノードが基本ノードN800である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN100と、第2の基本ノードN800と、を結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する場合を想定する。
【0095】
経路特定装置1は、図13のステップS201にて、閉路隣接グラフにおいて、最小コスト経路を特定する。最小コスト経路は、第1の基本ノードN100を通る閉路を表す閉路ノードC100と、第2の基本ノードN800を通る閉路を表す閉路ノードC700と、を結び、且つ、コストが最小となる経路である。
【0096】
最小コスト経路を特定する方法は、幅優先探索法、又は、修正ダイクストラ法(非特許文献2)等の負のリンクコストを許容する最短経路計算アルゴリズムである。
【0097】
本例では、経路特定装置1は、閉路隣接グラフにおける最小コスト経路として、経路C100−C200−C300−C700を特定する。
【0098】
経路特定装置1は、ステップS202にて、閉路隣接グラフにおける最小コスト経路が特定されたか否かを判定する。本例では、経路特定装置1は、「Yes」と判定し、ステップS203へ進む。なお、最小コスト経路が特定されなかった場合、経路特定装置1は、図13に示した処理の実行を終了する。
【0099】
次いで、経路特定装置1は、ステップS203にて、閉路隣接グラフにおける最小コスト経路において隣接する2つの閉路ノードが表す2つの閉路同士を併合することにより、第1の基本ノードN100と第2の基本ノードN800とを通る閉路である経路含有閉路を特定する。
【0100】
本例では、経路特定装置1は、2つの閉路が基本リンクを共有している場合、当該2つの閉路のそれぞれから、2つの閉路により共有されている基本リンク(共有リンク)を除いた部分を構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。更に、経路特定装置1は、2つの閉路が基本リンクを共有することなく基本ノードを共有している場合、当該2つの閉路のそれぞれを構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0101】
具体的には、経路特定装置1は、2つの閉路のそれぞれを表す隣接行列の排他的論理和を算出することにより、当該2つの閉路同士を併合した閉路を表す閉路情報を取得する。
【0102】
本例では、経路特定装置1は、閉路C100〜C300,C700を併合することにより、経路含有閉路N100−N200−N300−N400−N800−N900−N400−N500−N600−N100を特定する。
【0103】
なお、経路特定装置1は、他の方法を用いることにより、2つの閉路同士を併合した閉路を表す閉路情報を取得するように構成されていてもよい。
【0104】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の基本ノードN100と第2の基本ノードN800とを結ぶ最小コスト経路(第1の経路)を特定する(ステップS204)。このとき、経路特定装置1は、基本リンクコストw0(x)に基づいて最小コスト経路を特定する。
【0105】
具体的には、経路特定装置1は、幅優先探索法、又は、ダイクストラ法等を用いることにより、最小コスト経路を特定する。ここでは、経路特定装置1は、最小コスト経路N100−N200−N300−N400−N800を特定する。
【0106】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の経路と異なる経路であり、且つ、第1の基本ノードN100と第2の基本ノードN800とを結ぶ経路である冗長経路(第2の経路)を特定する(ステップS205)。ここでは、経路特定装置1は、冗長経路N100−N600−N500−N400−N900−N800を特定する。
【0107】
具体的には、経路特定装置1は、ステップS203にて特定された経路含有閉路を表す環状リストから、ステップS204にて特定された第1の経路に相当する部分を取り除くことにより、第2の経路を特定する。なお、経路特定装置1は、ステップS204にて特定された第1の経路における中間の基本ノード又は基本リンクを使用不可とする条件を設けた状態において、深さ優先探索法、又は、ダイクストラ法等を用いることにより第2の経路を特定してもよい。
【0108】
このようにして、経路特定装置1は、閉路隣接グラフを用いることにより、第1の基本ノードN100と第2の基本ノードN800とを結び、且つ、基本リンク、又は、経路途中の基本ノードを共有しない、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0109】
以上、説明したように、本発明の第2実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
【0110】
<第3実施形態>
次に、本発明の第3実施形態に係る経路特定装置について説明する。第3実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、閉路を構成しない基本ノードが存在する場合において、一部の基本リンクを共有する2つの異なる経路を特定する点において相違している。従って、以下、かかる相違点を中心として説明する。
【0111】
本例では、閉路隣接グラフは、いずれの閉路にも含まれない(いずれの閉路も構成しない)基本ノードを閉路ノード(疑似閉路ノード)として含む。更に、閉路隣接グラフは、いずれの閉路にも含まれない(いずれの閉路も構成しない)基本リンクを隣接リンク(疑似隣接リンク)として含む。
【0112】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図17に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、11個の基本ノードN100〜N1100と、14個の基本リンクL100〜L1400と、により構成される。
【0113】
<<1.閉路隣接グラフの生成>>
経路特定装置1は、図6に示したフローチャートに代えて、図18に示したフローチャートにより表される処理を、閉路隣接グラフを生成するために実行する。図18に示した処理は、図6に示した処理と同様のステップS301〜ステップS306の処理の後に、ステップS307〜ステップS310の処理を追加した処理である。
【0114】
経路特定装置1は、第1実施形態と同様に、ステップS301〜ステップS306の処理を実行することにより、閉路C100、閉路C200、及び、閉路C300に加えて、閉路C900(N1100−N800−N900−N1100)を特定する。経路特定装置1は、特定された閉路に基づいて閉路隣接グラフを生成する。
【0115】
この時点では、閉路隣接グラフにおいて、閉路C900を表す閉路ノードは、他の閉路ノードと接続されていない。
【0116】
そして、経路特定装置1は、ステップS307へ進み、いずれの閉路にも含まれない基本ノードの集合である基本ノード集合を取得する。本例では、経路特定装置1は、基本ノードのそれぞれに対して、閉路に含まれた回数(例えば、ステップS305の処理を実行した回数)を数えることにより、基本ノード集合を取得する。
【0117】
次いで、経路特定装置1は、ステップS308にて、上記基本ノード集合が空集合であるか否かを判定する。経路特定装置1は、上記基本ノード集合が空集合でない場合、「No」と判定してステップS309へ進む。
【0118】
そして、経路特定装置1は、基本ノード集合から基本ノードを1つ取得し、取得された基本ノードを基本ノード集合から削除する。更に、経路特定装置1は、取得された基本ノードを閉路ノード(疑似閉路ノード)として閉路隣接グラフに追加する(ステップS309)。
【0119】
更に、経路特定装置1は、ステップS310にて、上記疑似閉路ノードとしての基本ノードに接続されている基本リンクのそれぞれを、隣接リンク(疑似隣接リンク)として閉路隣接グラフに追加する。
【0120】
そして、経路特定装置1は、ステップS308へ戻り、ステップS308〜ステップS310の処理を、基本ノード集合が空集合となるまで繰り返し実行する。そして、基本ノード集合が空集合となると、経路特定装置1は、ステップS308にて「Yes」と判定して図18に示した処理の実行を終了する。
【0121】
このようにして、本例では、経路特定装置1は、基本ノードN1000を、疑似閉路ノードC800として閉路隣接グラフに追加するとともに、基本リンクL1300を疑似隣接リンクA400として閉路隣接グラフに追加し、且つ、基本リンクL1400を疑似隣接リンクA500として閉路隣接グラフに追加する。これにより、経路特定装置1は、図19に示したように、閉路隣接グラフを生成する。
【0122】
なお、経路特定装置1は、閉路隣接グラフを生成する方法として、他の方法を用いるように構成されていてもよい。
【0123】
<<2.経路の特定>>
経路特定装置1は、第1実施形態と同様に、図19に示した閉路隣接グラフに基づいて経路を特定する。
【0124】
本例では、パラメータxが、疑似隣接リンクである場合、経路特定装置1は、隣接リンクコストw(x)として、疑似隣接リンクの実体である基本リンクlに対する基本リンクコストw0(l)を用いる。
【0125】
ここでは、第1の基本ノードが基本ノードN100であり、第2の基本ノードが基本ノードN800である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN100と、第2の基本ノードN800と、を結ぶ、2つの異なる経路を特定する場合を想定する。
【0126】
経路特定装置1は、図13のステップS201にて、閉路隣接グラフにおいて、最小コスト経路を特定する。最小コスト経路は、第1の基本ノードN100を通る閉路を表す閉路ノードC100と、第2の基本ノードN800を通る閉路を表す閉路ノードC900と、を結び、且つ、コストが最小となる経路である。
【0127】
最小コスト経路を特定する方法は、幅優先探索法、又は、修正ダイクストラ法(非特許文献2)等の負のリンクコストを許容する最短経路計算アルゴリズムである。
【0128】
本例では、経路特定装置1は、閉路隣接グラフにおける最小コスト経路として、経路C100−C200−C300−C800−C900を特定する。
【0129】
経路特定装置1は、ステップS202にて、閉路隣接グラフにおける最小コスト経路が特定されたか否かを判定する。本例では、経路特定装置1は、「Yes」と判定し、ステップS203へ進む。なお、最小コスト経路が特定されなかった場合、経路特定装置1は、図13に示した処理の実行を終了する。
【0130】
本例では、基本グラフは、任意の2つの基本ノードを連結可能なグラフである。従って、ステップS201において、必ず、最小コスト経路が特定される。このため、経路特定装置1は、ステップS202の処理を省略した処理を実行するように構成されていてもよい。
【0131】
次いで、経路特定装置1は、ステップS203にて、閉路隣接グラフにおける最小コスト経路において隣接する2つの閉路ノードが表す2つの閉路同士を併合することにより、第1の基本ノードN100と第2の基本ノードN800とを通る閉路である経路含有閉路を特定する。
【0132】
本例では、経路特定装置1は、2つの閉路が基本リンクを共有している場合、当該2つの閉路のそれぞれから、2つの閉路により共有されている基本リンク(共有リンク)を除いた部分を構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0133】
更に、経路特定装置1は、2つの閉路の一方が、疑似閉路ノードとしての基本ノードである(即ち、2つの閉路が基本リンク及び基本ノードのいずれも共有していない)場合、当該2つの閉路の他方を構成する、すべての基本リンクと、疑似閉路ノードとしての基本ノードに接続されている基本リンクと、を連結した閉路(疑似閉路)を、当該2つの閉路同士を併合した閉路として用いる。
【0134】
具体的には、経路特定装置1は、2つの閉路のそれぞれを表す隣接行列の排他的論理和を算出することにより、当該2つの閉路同士を併合した閉路を表す閉路情報を取得する。
【0135】
本例では、経路特定装置1は、閉路C100〜C300,C800,C900を併合することにより、経路含有閉路N100−N200−N300−N400−N1000−N1100−N800−N900−N1100−N1000−N400−N500−N600−N100を特定する。
【0136】
なお、経路特定装置1は、他の方法を用いることにより、2つの閉路同士を併合した閉路を表す閉路情報を取得するように構成されていてもよい。
【0137】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の基本ノードN100と第2の基本ノードN800とを結ぶ最小コスト経路(第1の経路)を特定する(ステップS204)。このとき、経路特定装置1は、基本リンクコストw0(x)に基づいて最小コスト経路を特定する。
【0138】
具体的には、経路特定装置1は、幅優先探索法、又は、ダイクストラ法等を用いることにより、最小コスト経路を特定する。ここでは、経路特定装置1は、最小コスト経路N100−N200−N300−N400−N1000−N1100−N800を特定する。
【0139】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の経路と異なる経路であり、且つ、第1の基本ノードN100と第2の基本ノードN800とを結ぶ経路である冗長経路(第2の経路)を特定する(ステップS205)。ここでは、経路特定装置1は、冗長経路N100−N600−N500−N400−N1000−N1100−N900−N800を特定する。
【0140】
具体的には、経路特定装置1は、ステップS203にて特定された経路含有閉路を表す環状リストから、ステップS204にて特定された第1の経路に相当する部分を取り除くことにより、第2の経路を特定する。
【0141】
なお、経路特定装置1は、ステップS204にて特定された第1の経路における中間の基本ノード又は基本リンクのうちの、疑似閉路ノードN1000、及び、疑似隣接リンクL1300,L1400以外の基本グラフ要素を使用不可とする条件を設けた状態において、深さ優先探索法、又は、ダイクストラ法等を用いることにより第2の経路を特定してもよい。
【0142】
このようにして、経路特定装置1は、閉路隣接グラフを用いることにより、第1の基本ノードN100と第2の基本ノードN800とを結ぶ、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0143】
以上、説明したように、本発明の第3実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
【0144】
<第4実施形態>
次に、本発明の第4実施形態に係る経路特定装置について説明する。第4実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、経路を特定する処理中に取得される閉路情報を保持するとともに、他の経路を特定する処理において、保持されている閉路情報を用いることにより、経路を特定する処理を高速化する点において相違している。従って、以下、かかる相違点を中心として説明する。
【0145】
第4実施形態に係るグラフ情報記憶部11は、2つの閉路のそれぞれを表す情報と、当該2つの閉路同士を併合することにより生成された閉路を表す情報と、を対応付けた併合閉路情報を記憶する。
【0146】
本例では、併合閉路情報は、図20及び図21に示したように、併合の対象となる2つの閉路のそれぞれを識別するための閉路識別子と、併合により生成された閉路を識別するための閉路識別子と、を含むテーブルである。即ち、このテーブルにおける値は、当該値の行と対応付けられた閉路識別子により識別される閉路と、当該値の列と対応付けられた閉路識別子により識別される閉路と、を併合することにより生成された閉路を識別するための閉路識別子である。
なお、併合閉路情報は、情報処理装置により処理可能な他の形式により表されてもよい。
【0147】
(作動)
次に、上述した経路特定装置1の作動について説明する。
経路特定装置1は、図13のステップS203の処理以外の処理を、第1実施形態と同様に実行する。
【0148】
経路特定装置1は、図13のステップS203に進んだとき、併合の対象となる2つの閉路に係る併合閉路情報が記憶されているか否かを判定する。併合の対象となる2つの閉路に係る併合閉路情報が記憶されている場合、経路特定装置1は、当該併合閉路情報から、併合により生成された閉路を表す情報を取得する。
【0149】
一方、併合の対象となる2つの閉路に係る併合閉路情報が記憶されていない場合、経路特定装置1は、第1実施形態と同様に、2つの閉路同士を併合することにより閉路を生成する処理を実行する。更に、この場合、経路特定装置1は、併合の対象となる2つの閉路のそれぞれを識別するための閉路識別子と、併合により生成された閉路を識別するための閉路識別子と、を対応付けて記憶する。
【0150】
ここで、閉路C100〜C300を併合する例について説明する。いま、閉路C100と閉路C200とを併合することにより閉路C400が生成されるとともに、閉路C200と閉路C300とを併合することにより閉路C500が生成される場合を想定する。更に、閉路C100〜C300を併合することにより閉路C600が生成される場合を想定する。
【0151】
この場合、経路特定装置1が、2つの閉路同士を併合する処理を実行する前の時点においては、経路特定装置1が記憶している併合閉路情報は、図20に示した状態である。その後、経路特定装置1が、2つの閉路同士を併合する処理を実行することにより、最終的に、経路特定装置1が記憶している併合閉路情報は、図21に示した状態となる。
【0152】
以上、説明したように、本発明の第4実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
更に、本発明の第4実施形態に係る経路特定装置1によれば、経路を特定する処理を高速化することができる。
【0153】
<第5実施形態>
次に、本発明の第5実施形態に係る経路特定装置について説明する。第5実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、特定すべき経路の端点(経路の端を構成する基本ノード、即ち、第1の基本ノード又は第2の基本ノード)が複数の閉路に含まれる場合における、経路を特定する処理を高速化する点において相違している。例えば、図4に示した基本グラフにおいて、基本ノードN200は、2つの閉路C100,C200に含まれている。
以下、かかる相違点を中心として説明する。
【0154】
例えば、第1実施形態〜第4実施形態に係る経路特定装置1において、基本ノードN200と基本ノードN400とを結ぶ経路を特定する場合、閉路隣接グラフにて、閉路ノードC100と閉路ノードC300とを結ぶ経路と、閉路ノードC200と閉路ノードC300とを結ぶ経路と、の2つの経路を特定し、それぞれのコストを比較する必要が生じる。一方、本実施形態に係る経路特定装置1によれば、これらの計算を一元化することができるので、経路を特定する処理を高速化することができる。
【0155】
(機能)
第5実施形態に係るグラフ情報記憶部11は、閉路隣接グラフ情報に代えて、閉路探索グラフ情報を記憶する。
【0156】
閉路探索グラフ情報は、閉路探索グラフを表す情報である。ここで、閉路探索グラフは、閉路隣接グラフに、包含ノードと、包含リンクと、を追加したグラフである。包含ノードは、閉路ノードが表す閉路が基本グラフにおいて通る(即ち、当該閉路に含まれる)基本ノードを表すノードである。包含リンクは、閉路ノードが表す閉路が基本グラフにおいて包含ノードを通ることを表し、且つ、当該閉路ノードと当該包含ノードとを結ぶリンクである。
【0157】
閉路探索グラフ情報は、閉路隣接グラフ情報に加えて、複数の包含ノードのそれぞれを識別するための包含ノード識別子と、包含ノードと閉路ノードとの任意の組のそれぞれに対して、当該包含ノードと当該閉路ノードとを結ぶ包含リンクが存在するか否かを表す情報と、を含む。
【0158】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図17に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、11個の基本ノードN100〜N1100と、14個の基本リンクL100〜L1400と、により構成される。
【0159】
<<1.閉路探索グラフの生成>>
先ず、経路特定装置1は、第1実施形態と同様に、閉路隣接グラフを生成する。その後、経路特定装置1は、基本グラフにおける各基本ノードに対して、当該基本ノードを包含ノードとして閉路隣接グラフに追加するとともに、当該基本ノードを基本グラフにおいて通る閉路を表す閉路ノードと当該包含ノードとを結ぶ包含リンクを閉路隣接グラフに追加することにより、閉路探索グラフを生成する。
【0160】
ここでは、経路特定装置1が、図4に示した基本グラフに基づいて閉路探索グラフを生成する場合を想定する。この場合、経路特定装置1により生成される閉路探索グラフは、図22に示したようになる。図22における破線は、包含リンクE100〜E710を表す。
【0161】
<<2.経路の特定>>
経路特定装置1は、図22に示した閉路探索グラフに基づいて経路を特定する。
本例では、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノードと第2の基本ノードとのいずれも臨界ノードとして含まないとき、経路特定装置1は、探索リンクコストw(x)を数式5に基づいて算出する。
【数5】
【0162】
一方、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノード又は第2の基本ノードを臨界ノードとして含むとき、経路特定装置1は、探索リンクコストw(x)を数式6に基づいて算出する。
【数6】
【0163】
また、パラメータxが、疑似隣接リンクLである場合、経路特定装置1は、探索リンクコストw(x)を数式7に基づいて算出する。
【数7】
【0164】
また、パラメータxが、包含リンクである場合において、当該包含リンクが第1の基本ノードから閉路ノードcへのリンクであるとき、経路特定装置1は、探索リンクコストw(x)を数式8に基づいて算出する。
【数8】
【0165】
また、パラメータxが、包含リンクである場合において、当該包含リンクが閉路ノードcから第2の基本ノードへのリンクであるとき、経路特定装置1は、探索リンクコストw(x)を数式9に基づいて算出する。
【数9】
【0166】
また、パラメータxが、包含リンクである場合において、当該包含リンクが、第1の基本ノード及び第2の基本ノード以外の基本ノード(包含ノード)と、閉路ノードと、を結ぶとき、経路特定装置1は、探索リンクコストw(x)を数式10に基づいて算出する。
【数10】
【0167】
ここでは、第1の基本ノードが基本ノードN200であり、第2の基本ノードが基本ノードN400である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN200と、第2の基本ノードN400と、を結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する場合を想定する。
【0168】
経路特定装置1は、図13のステップS201の処理に代えて、閉路探索グラフにおいて、最小コスト経路を特定する処理を実行する。ここで、最小コスト経路は、閉路探索グラフにおいて、第1の基本ノードN200と、第2の基本ノードN400と、を結び、且つ、コストが最小となる経路である。
【0169】
ところで、探索リンクコストw(x)が∞であるリンクが、最小コスト経路に含まれることはない。従って、経路特定装置1は、探索リンクコストw(x)が∞であるリンクを、予め閉路探索グラフから除去した、図23に示したグラフに基づいて、最小コスト経路を特定するように構成されることが好適である。
【0170】
なお、閉路探索グラフにおいて最小コスト経路を特定することは、2つの経路(経路N200−C100−C200−C300−N400、及び、経路N200−C200−C300−N400)のうちの、コストが小さい方の経路を特定することに対応している。
【0171】
更に、経路特定装置1は、特定された最小コスト経路から、第1の基本ノードN200、及び、第2の基本ノードN400を除去した経路を特定し、当該経路に基づいて、第1実施形態と同様に、ステップS202〜ステップS205の処理を実行する。これにより、経路特定装置1は、閉路探索グラフを用いることにより、第1の基本ノードN200と第2の基本ノードN400とを結び、且つ、基本リンクを共有しない、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0172】
以上、説明したように、本発明の第5実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
更に、本発明の第5実施形態に係る経路特定装置1によれば、特定すべき経路の端点が複数の閉路に含まれる場合において、経路を特定する処理を高速化することができる。
【0173】
<第6実施形態>
次に、本発明の第6実施形態に係る経路特定装置について説明する。第6実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、基本グラフに基づいて経路を特定できなかった場合にのみ、閉路隣接グラフを用いることにより経路を特定する点において相違している。従って、以下、かかる相違点を中心として説明する。
【0174】
第6実施形態に係る経路特定装置1は、図24にフローチャートにより示した処理を実行する。
【0175】
具体的には、経路特定装置1は、ステップS401にて、基本グラフに基づいて(即ち、閉路隣接グラフを用いることなく)、経路を特定する。本例では、経路特定装置1は、ダイクストラ法を繰り返し用いることにより、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する。即ち、経路特定装置1は、第1の経路を特定し、その後、第1の経路が通る基本リンクを基本グラフから除去したグラフに基づいて、第2の経路を特定する。
【0176】
ステップS401の処理により特定される第1の経路は、基本グラフにおいてコストが最小となる経路である。一方、このように特定された、第1の経路及び第2の経路は、第1の経路のコストと第2の経路のコストとの和が最小であるとは限らない。
なお、経路特定装置1は、他の方法を用いることにより、2つの異なる経路を特定するように構成されていてもよい。
【0177】
次いで、経路特定装置1は、ステップS402にて、経路が特定されたか否かを判定する。ステップS401にて経路が特定されなかった場合、経路特定装置1は、「No」と判定してステップS403へ進む。
【0178】
なお、経路特定装置1は、経路が特定された場合であっても、特定された経路が、予め設定された条件を満たさなかった場合、「No」と判定するように構成されていてもよい。例えば、この条件は、第2の経路のコストが、予め設定された基準値よりも大きいという条件である。
【0179】
そして、経路特定装置1は、ステップS403にて、第1実施形態と同様に、閉路隣接グラフを生成するとともに、生成された閉路隣接グラフに基づいて、2つの異なる経路を特定する。
なお、ステップS401にて経路が特定された場合、経路特定装置1は、ステップS402にて「Yes」と判定して、図24に示した処理の実行を終了する。
【0180】
以上、説明したように、本発明の第6実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
更に、本発明の第6実施形態に係る経路特定装置1によれば、第1の経路のコストと第2の経路のコストとの和が最小となる、2つの経路以外の経路を特定することもできる。
【0181】
なお、第6実施形態に係る経路特定装置1は、基本グラフに基づいて経路を特定できなかった場合に、閉路隣接グラフに基づいて経路を特定するように構成されていたが、閉路探索グラフに基づいて経路を特定するように構成されていてもよい。
【0182】
第1実施形態〜第6実施形態においては、経路特定装置1は、閉路隣接グラフ又は閉路探索グラフの生成する処理(第1の処理)と経路の特定する処理(第2の処理)とを続けて実行するように構成されていた。ところで、経路特定装置1は、第1の処理の実行結果を保持し、その後、保持されている実行結果を用いることにより、複数回、第2の処理を実行するように構成されていてもよい。
【0183】
また、閉路隣接グラフ又は閉路探索グラフを生成するためのプログラムと、経路を特定するためのプログラムと、は、1つのプログラムを構成していてもよいし、互いに独立した2つのプログラムであってもよい。なお、経路特定装置1は、互いに独立した2つのプログラムのそれぞれに対して、中央処理装置、一次記憶装置、及び、二次記憶装置等のプログラムを実行するために必要な計算資源を、物理的又は論理的に分離して割り当てるように構成されていてもよい。
【0184】
<第7実施形態>
次に、本発明の第7実施形態に係る経路特定装置について図25を参照しながら説明する。
第7実施形態に係る経路特定装置1000は、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する装置である。
【0185】
更に、この経路特定装置1000は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定部(閉路特定手段)1001と、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定部(経路含有閉路特定手段)1002と、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する経路特定部(経路特定手段)1003と、
を備える。
【0186】
これによれば、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を確実に特定することができる。更に、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【0187】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【0188】
なお、上記各実施形態において経路特定装置の各機能は、CPUがプログラム(ソフトウェア)を実行することにより実現されていたが、回路等のハードウェアにより実現されていてもよい。
【0189】
また、上記各実施形態においてプログラムは、記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0190】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【0191】
<付記>
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【0192】
(付記1)
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定装置であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定手段と、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定手段と、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する経路特定手段と、
を備える経路特定装置。
【0193】
これによれば、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の(即ち、第1の基本ノード及び第2の基本ノード以外の)基本ノードを共有しない、2つの異なる経路を確実に特定することができる。更に、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【0194】
(付記2)
付記1に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【0195】
(付記3)
付記1又は付記2に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【0196】
(付記4)
付記1乃至付記3のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記特定された複数の閉路のそれぞれを閉路ノードにより表すとともに、2つの閉路によって前記基本グラフにおける基本グラフ要素が共有されていることを、当該2つの閉路のそれぞれを表す閉路ノードを結ぶ隣接リンクにより表す閉路隣接グラフを生成し、当該生成された閉路隣接グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【0197】
(付記5)
付記4に記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記生成された閉路隣接グラフに、前記閉路ノードが表す閉路が前記基本グラフにおいて通る基本ノードのそれぞれを表す包含ノードと、閉路ノードが表す閉路が前記基本グラフにおいて包含ノードを通ることを表し且つ当該閉路ノードと当該包含ノードとを結ぶ包含リンクと、を追加した、閉路探索グラフを生成し、当該生成された閉路探索グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【0198】
(付記6)
付記1乃至付記5のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記基本グラフにおける前記基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【0199】
これによれば、基本リンクコストの総和を最小とするように、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の基本ノードを共有しない、2つの異なる経路を特定することができる。
【0200】
(付記7)
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定方法であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する、経路特定方法。
【0201】
(付記8)
付記7に記載の経路特定方法であって、
2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【0202】
(付記9)
付記7又は付記8に記載の経路特定方法であって、
2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【0203】
(付記10)
情報処理装置に、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する処理を実行させるための経路特定プログラムであって、
前記処理は、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定するように構成された経路特定プログラム。
【0204】
(付記11)
付記10に記載の経路特定プログラムであって、
前記処理は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定プログラム。
【0205】
(付記12)
付記10又は付記11に記載の経路特定プログラムであって、
前記処理は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定プログラム。
【産業上の利用可能性】
【0206】
本発明は、第1のノードと第2のノードとを結ぶ経路を特定する経路特定装置等に適用可能である。
【符号の説明】
【0207】
1 経路特定装置
11 グラフ情報記憶部
12 閉路特定部
13 経路含有閉路特定部
14 経路特定部
1000 経路特定装置
1001 閉路特定部
1002 経路含有閉路特定部
1003 経路特定部
【技術分野】
【0001】
本発明は、第1のノードと第2のノードとを結ぶ経路を特定する経路特定装置に関する。
【背景技術】
【0002】
ノードと、2つのノードを結ぶリンクと、により構成されるグラフにおいて、第1のノードと第2のノードとを結ぶ経路を特定する経路特定装置が知られている。この種の経路特定装置は、例えば、通信網等のネットワーク状に通信装置が接続された通信システムにおける通信装置間の経路を特定するために用いられる。
【0003】
特に、経路特定装置は、ある経路を特定するとともに、その経路に対して冗長な経路も特定する(即ち、2つのノードを結び、且つ、リンクやノードを共有しない2つの異なる経路を特定する)ように構成されることが好適である。これによれば、システムは、障害の発生により、ある経路が使用不能となっても、その経路に対して冗長な経路を使用することができる。
【0004】
ところで、冗長な経路を特定するための最も代表的な方法として、Dijkstra法(非特許文献1を参照)を繰り返し用いる方法が知られている。各リンクにコスト値が与えられ、経路のコストがその経路が経由するリンクのコスト和で与えられるグラフにおいて、この方法は、先ず、第1のノードと第2のノードとを結ぶ経路として、コストが最小となる経路(第1の経路)を、Dijkstra法に従って特定する。次いで、この方法は、特定された経路に含まれる、すべてのリンクを除外したグラフにおいて、再度、第1のノードと第2のノードとを結ぶ経路として、コストが最小となる経路(第2の経路)を、Dijkstra法に従って特定する。又は、この方法は、特定された経路に含まれる、すべての中間ノードを除外したグラフにおいて、再度、第1のノードと第2のノードとを結ぶ経路として、コストが最小となる経路(第2の経路)をDijkstra法に従って特定する。
【0005】
この方法を用いることにより、経路特定装置は、第1のノードと第2のノードとを結び、且つ、リンクやノードを共有しない2つの異なる経路(第1の経路、及び、第2の経路)を特定することができる。
【0006】
しかしながら、上記方法によれば、経路を特定する対象となるグラフのトポロジがトラップ構造を含む場合、第1のノードと第2のノードとを結び、且つ、リンクを共有しない2つの異なる経路が存在しているときであっても、これらの経路を特定することができないことがある。
【0007】
例えば、図1に示したグラフにおいて、第1のノードN100と第2のノードN400とを結ぶ経路を特定する場合を想定する。この場合において、リンクL100、リンクL900、リンクL500、及び、リンクL400をこの順に連結した経路(第1の経路)が、コストが最小となる経路である場合を想定する。
【0008】
この場合、第1の経路に含まれる、すべてのリンクを除外したグラフは、図2に示したグラフである。ここで、破線は、除外されたリンクを表す。従って、このグラフにおいては、第1のノードN100と第2のノードN400とを結ぶ経路を特定することができない。即ち、このグラフのトポロジは、トラップ構造を含んでいる、と言うことができる。
【0009】
このような課題に対処するため、Bhandari法(非特許文献2を参照)が知られている。この方法は、Dijkstra法を繰り返し用いる工程を拡張することにより、グラフのトポロジの一部を変換し、その結果、トラップ構造の基となるリンクであるトラップリンクを特定する。更に、この方法は、特定されたトラップリンクを除いたグラフにおいて、再度、Dijkstra法を繰り返し用いることにより、リンクを共有しない2つの異なる経路を特定する。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】E. W. Dijkstra、“A note on two problems in connexion with graphs”、 NumerischeMathematik 1、1959年、 pp. 269 − 271
【非特許文献2】Ramesh Bhandari、“Survivable Networks: Algorithms for diverse routing”、Springer、1999年
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、上記非特許文献2に記載の技術においては、トラップリンクを特定し、特定したトラップリンクの影響を排除するための処理の負荷(処理負荷)が比較的大きい。即ち、上記非特許文献2に記載の技術においては、2つのノードを結び、且つ、リンク、又は、当該2つのノード以外のノード(即ち、経路途中のノード)を共有しない、2つの異なる経路を特定する際の処理負荷が過大であるという問題があった。
【0012】
このため、本発明の目的は、上述した課題である「2つのノードを結び、且つ、リンク、又は、経路途中のノードを共有しない、2つの異なる経路を特定する際の処理負荷が過大であること」を解決することが可能な経路特定装置を提供することにある。
【課題を解決するための手段】
【0013】
かかる目的を達成するため本発明の一形態である経路特定装置は、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する装置である。
【0014】
更に、この経路特定装置は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定手段と、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定手段と、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する経路特定手段と、
を備える。
【0015】
また、本発明の他の形態である経路特定方法は、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する方法である。
【0016】
更に、この経路特定方法は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する方法である。
【0017】
また、本発明の他の形態である経路特定プログラムは、
情報処理装置に、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する処理を実行させるためのプログラムである。
【0018】
更に、上記処理は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定するように構成される。
【発明の効果】
【0019】
本発明は、以上のように構成されることにより、2つのノードを結び、且つ、リンク、又は、経路途中のノードを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【図面の簡単な説明】
【0020】
【図1】背景技術に係る、経路が特定される対象となるグラフを示した図である。
【図2】背景技術に係る、第1の経路に含まれる、すべてのリンクを除外したグラフを示した図である。
【図3】本発明の第1実施形態に係る経路特定装置の機能の概略を表すブロック図である。
【図4】本発明の第1実施形態に係る、経路が特定される対象となる基本グラフを示した図である。
【図5】本発明の第1実施形態に係る基本グラフ情報を示したテーブルである。
【図6】本発明の第1実施形態に係る経路特定装置が、閉路隣接グラフを生成するために実行する処理を示したフローチャートである。
【図7】本発明の第1実施形態に係る経路特定装置が取得する全域木を概念的に示した説明図である。
【図8】本発明の第1実施形態に係る閉路情報を示したテーブルである。
【図9】本発明の第1実施形態に係る閉路情報を示したテーブルである。
【図10】本発明の第1実施形態に係る閉路情報を示したテーブルである。
【図11】本発明の第1実施形態に係る経路特定装置が生成した閉路隣接グラフを示した図である。
【図12】本発明の第1実施形態に係る閉路隣接グラフ情報を示したテーブルである。
【図13】本発明の第1実施形態に係る経路特定装置が、閉路隣接グラフに基づいて経路を特定するために実行する処理を示したフローチャートである。
【図14】本発明の第1実施形態に係る、経路含有閉路を表す閉路情報を示したテーブルである。
【図15】本発明の第2実施形態に係る、経路が特定される対象となる基本グラフを示した図である。
【図16】本発明の第2実施形態に係る経路特定装置が生成した閉路隣接グラフを示した図である。
【図17】本発明の第3実施形態に係る、経路が特定される対象となる基本グラフを示した図である。
【図18】本発明の第3実施形態に係る経路特定装置が、閉路隣接グラフを生成するために実行する処理を示したフローチャートである。
【図19】本発明の第3実施形態に係る経路特定装置が生成した閉路隣接グラフを示した図である。
【図20】本発明の第4実施形態に係る併合閉路情報を示したテーブルである。
【図21】本発明の第4実施形態に係る併合閉路情報を示したテーブルである。
【図22】本発明の第5実施形態に係る経路特定装置が生成した閉路探索グラフを示した図である。
【図23】本発明の第5実施形態に係る経路特定装置が生成した閉路探索グラフから、探索リンクコストが∞であるリンクを除去したグラフを示した図である。
【図24】本発明の第6実施形態に係る経路特定装置が、経路を特定するために実行する処理を示したフローチャートである。
【図25】本発明の第7実施形態に係る経路特定装置の機能の概略を表すブロック図である。
【発明を実施するための形態】
【0021】
以下、本発明に係る、経路特定装置、経路特定方法、及び、経路特定プログラム、の各実施形態について図1〜図25を参照しながら説明する。
【0022】
<第1実施形態>
(構成)
図3に示したように、第1実施形態に係る経路特定装置1は、情報処理装置(本例では、サーバ装置)である。なお、経路特定装置1は、ネットワーク・スイッチ、ルーター、パーソナル・コンピュータ、携帯電話端末、PHS(Personal Handyphone System)、PDA(Personal Data Assistance、Personal Digital Assistant)、スマートフォン、カーナビゲーション端末、又は、ゲーム端末等であってもよい。
【0023】
経路特定装置1は、図示しない中央処理装置(CPU;Central Processing Unit)、一次記憶装置(メモリ(RAM;Random Access Memory))、及び、二次記憶装置(ハードディスク駆動装置(HDD;Hard Disk Drive))を備える。
【0024】
経路特定装置1は、二次記憶装置に記憶されているプログラムをCPUが実行することにより、後述する機能を実現するように構成されている。
【0025】
なお、経路特定装置1の各機能は、回路等のハードウェアにより実現されていてもよい。また、プログラムは、二次記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0026】
(機能)
図3は、上記のように構成された経路特定装置1の機能を表すブロック図である。経路特定装置1の機能は、基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する。例えば、基本ノードは、通信装置を表す。また、基本リンクは、2つの通信装置を接続する、通信線又は通信回線を表す。
【0027】
具体的には、経路特定装置1の機能は、グラフ情報記憶部11と、閉路特定部(閉路特定手段)12と、経路含有閉路特定部(経路含有閉路特定手段)13と、経路特定部(経路特定手段)14と、を含む。
【0028】
グラフ情報記憶部11は、基本グラフ情報と、閉路情報と、閉路隣接グラフ情報と、経路含有閉路情報と、を記憶する。
【0029】
基本グラフ情報は、基本グラフを構成する、複数の基本ノードのそれぞれを識別するための基本ノード識別子と、複数の基本ノードの任意の2つの組のそれぞれに対して、当該2つの基本ノードを結ぶ基本リンクが存在する(即ち、2つの基本ノードが接続されている)か否かを表す情報と、を含む。
【0030】
閉路情報は、基本グラフにおける閉路を表す情報である。閉路情報は、閉路を識別するための閉路識別子と、当該閉路を構成する基本リンクを特定するための情報と、を含む。
【0031】
閉路隣接グラフ情報は、閉路隣接グラフを構成する、複数の閉路ノードのそれぞれを識別するための閉路ノード識別子と、複数の閉路ノードの任意の2つの組のそれぞれに対して、当該2つの閉路ノードを結ぶ隣接リンクが存在する(即ち、2つの閉路ノードが接続されている)か否かを表す情報と、を含む。
【0032】
ここで、閉路隣接グラフは、基本グラフにおける複数の閉路のそれぞれを閉路ノードにより表すとともに、2つの閉路によって基本グラフにおける基本グラフ要素(基本ノード、又は、基本リンク)が共有されていることを、当該2つの閉路のそれぞれを表す閉路ノードを結ぶ隣接リンクにより表すグラフである。
【0033】
経路含有閉路情報は、基本グラフにおける経路含有閉路を表す情報である。経路含有閉路は、基本グラフにおいて、第1の基本ノードと第2の基本ノードとを通る閉路である。経路含有閉路情報は、経路含有閉路を識別するための経路含有閉路識別子と、当該経路含有閉路を構成する基本リンクを特定するための情報と、を含む。
【0034】
なお、基本グラフ、及び、閉路隣接グラフを表す情報は、隣接行列、又は、隣接リスト等により表される。なお、基本グラフ、及び、閉路隣接グラフを表す情報は、情報処理装置により処理可能な他の形式により表されてもよい。
【0035】
閉路特定部12は、グラフ情報記憶部11に記憶されている基本グラフ情報に基づいて、第1の基本ノードを通る第1の閉路と、第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する。閉路特定部12は、特定された閉路を表す閉路情報をグラフ情報記憶部11に記憶させる。
【0036】
経路含有閉路特定部13は、閉路特定部12により特定された複数の閉路のうちの、基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、経路含有閉路を特定する。
【0037】
ここで、経路含有閉路特定部13は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。ここで、共有リンクは、上記2つの閉路により共有されている基本リンクである。
【0038】
具体的には、経路含有閉路特定部13は、グラフ情報記憶部11に記憶されている閉路情報に基づいて閉路隣接グラフを生成する。更に、経路含有閉路特定部13は、生成された閉路隣接グラフを表す閉路隣接グラフ情報をグラフ情報記憶部11に記憶させる。
【0039】
加えて、経路含有閉路特定部13は、生成された閉路隣接グラフに基づいて、基本グラフにおける経路含有閉路を特定する。このとき、経路含有閉路特定部13は、基本グラフにおける基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、基本グラフにおける経路含有閉路を特定する。
【0040】
経路含有閉路特定部13は、特定された経路含有閉路を表す経路含有閉路情報をグラフ情報記憶部11に記憶させる。
【0041】
経路特定部14は、グラフ情報記憶部11に記憶されている経路含有閉路情報が表す経路含有閉路(即ち、経路含有閉路特定部13により特定された経路含有閉路)において、第1の基本ノードと第2の基本ノードとを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する。
【0042】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図4に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、7つの基本ノードN100〜N700と、9つの基本リンクL100〜L900と、により構成される。
【0043】
図4に示した基本グラフは、図5に示した基本グラフ情報(隣接行列)により表される。本例では、経路特定装置1は、基本グラフ情報を予め記憶している。図5において、「N100」〜「N700」のそれぞれは、基本ノード識別子である。また、隣接行列における値「1」は、当該値の行と対応付けられた基本ノード識別子により識別される基本ノードと、当該値の列と対応付けられた基本ノード識別子により識別される基本ノードと、を結ぶ基本リンクが存在することを表す。
【0044】
なお、本例では、図4に示したように、簡単のために、比較的規模が小さい基本グラフに経路特定装置1が適用されているが、より規模が大きい基本グラフ、又は、より規模が小さい基本グラフに経路特定装置1が適用されてもよい。
【0045】
<<1.閉路隣接グラフの生成>>
先ず、経路特定装置1は、基本グラフに基づいて閉路隣接グラフを生成する。図6は、経路特定装置1が、閉路隣接グラフを生成するために実行する処理を示したフローチャートである。以下、図4に示した基本グラフに基づいて閉路隣接グラフを生成する際の、経路特定装置1の作動について説明する。なお、経路特定装置1は、図4に示した基本グラフ以外の基本グラフに対しても同様に作動する。
【0046】
初めに、経路特定装置1は、ステップS101にて、基本グラフにおける全域木(スパニングツリー)を取得する。全域木を取得する方法は、深さ優先探索法、幅優先探索法、Dijkstra(ダイクストラ)法、又は、プリム法等の種々の方法のいずれかである。ここでは、図4に示した基本グラフに対して、図7に示した全域木(すべての基本ノードと、実線により示された基本リンクと、により構成される部分)が取得された場合を想定する。
【0047】
次いで、経路特定装置1は、ステップS102にて、ステップS101にて取得された全域木に含まれない基本リンクの集合(基本リンク集合)を取得する。
【0048】
そして、経路特定装置1は、ステップS103〜S106にて、図7に示した全域木に対して、全域木に含まれていない基本リンクを1つずつ追加することにより閉路を取得(特定)し、取得された閉路に基づいて閉路隣接グラフを生成する。
【0049】
具体的には、経路特定装置1は、ステップS103にて、上記基本リンク集合が空集合であるか否かを判定する。経路特定装置1は、上記基本リンク集合が空集合でない場合、「No」と判定してステップS104へ進む。
【0050】
そして、経路特定装置1は、基本リンク集合から基本リンクを1つ取得し、取得された基本リンクを基本リンク集合から削除する。更に、経路特定装置1は、取得された基本リンクと、当該基本リンクにより結ばれる(当該基本リンクを構成する)2つの基本ノードを、全域木において結ぶ経路を構成する、すべての基本リンクと、を連結した閉路を取得(特定)する。
【0051】
次いで、経路特定装置1は、ステップS105にて、特定された閉路を表す閉路ノードを閉路隣接グラフに追加する。更に、経路特定装置1は、ステップS106にて、前回までに追加されていた閉路ノードが表す閉路と、今回、新たに追加された閉路ノードが表す閉路と、に基づいて、隣接リンクを閉路隣接グラフに追加する。
【0052】
そして、経路特定装置1は、ステップS103へ戻り、ステップS103〜ステップS106の処理を、基本リンク集合が空集合となるまで繰り返し実行する。そして、基本リンク集合が空集合となると、経路特定装置1は、ステップS103にて「Yes」と判定して図6に示した処理の実行を終了する。
【0053】
なお、経路特定装置1は、図6に示した処理を実行することにより取得された閉路のそれぞれを表す閉路情報と、当該処理を実行することにより取得された閉路隣接グラフを表す閉路隣接グラフ情報と、を記憶装置に記憶させる。
【0054】
例えば、図7に示した全域木においては、基本リンクL600を追加することにより、閉路N100−N200−N600−N100が取得される。同様に、基本リンクL500を追加することにより、閉路N200−N300−N700−N500−N600−N200が取得される。また、基本リンクL400を追加することにより、閉路N300−N400−N500−N700−N300が取得される。
【0055】
本例では、経路特定装置1が、上述した3つの閉路を取得した場合を想定する。閉路N100−N200−N600−N100は、図8に示した閉路情報(隣接行列)により表される。閉路N100−N200−N600−N100を識別するための閉路識別子は、「C100」である。
【0056】
同様に、閉路N200−N300−N700−N500−N600−N200は、図9に示した閉路情報(隣接行列)により表される。閉路N200−N300−N700−N500−N600−N200を識別するための閉路識別子は、「C200」である。
【0057】
また、閉路N300−N400−N500−N700−N300は、図10に示した閉路情報(隣接行列)により表される。閉路N300−N400−N500−N700−N300を識別するための閉路識別子は、「C300」である。
【0058】
また、本例では、閉路C100と閉路C200とは、基本リンクL900を共有している。また、閉路C200とC300とは、基本リンクL700、及び、基本リンクL800を共有している。また、閉路C100とC300とは、基本リンクを共有していない。なお、閉路C200と閉路C300に対する基本ノードN700のように、2つの閉路が共有している区間の両端以外に位置するノードを臨界ノードと呼ぶ。
【0059】
従って、経路特定装置1により生成される閉路隣接グラフは、図11に示したように、閉路ノードC100と閉路ノードC200とを結ぶ隣接リンクA100と、閉路ノードC200と閉路ノードC300とを結ぶ隣接リンクA200と、を含む。すなわち、隣接リンクA100は基本リンクL900と、隣接リンクA200は基本リンクL700およびL800と関連づけられている。隣接リンクAが基本リンクLと関連づけられている状態を単に、隣接リンクAは基本リンクLを含む、又は、内包する、と表現することにする。また、複数の連結した基本リンクを含む隣接リンクは臨界ノードを含む。図11の例において、隣接リンクA200は臨界ノードN700を含む。
【0060】
図11に示した閉路隣接グラフは、図12に示した閉路隣接グラフ情報(隣接行列)により表される。図12において、「C100」〜「C300」のそれぞれは、閉路ノード識別子である。また、隣接行列における値「1」は、当該値の行と対応付けられた閉路ノード識別子により識別される閉路ノードと、当該値の列と対応付けられた閉路ノード識別子により識別される閉路ノードと、を結ぶ隣接リンクが存在することを表す。
【0061】
なお、経路特定装置1は、上述した方法以外の方法を用いることにより、閉路隣接グラフを生成するように構成されていてもよい。なお、閉路隣接グラフを生成する方法は、基本グラフにおける基本リンクのそれぞれが少なくとも1つの閉路ノードに含まれているという第1の条件と、閉路隣接グラフが連結であるという第2の条件と、の両方が満たされる方法であることが好適である。
【0062】
なお、上述した方法においては、基本グラフにおける各基本リンクは、全域木に含まれるか、又は、閉路を構成するために追加される基本リンクである。従って、上述した方法は、第1の条件を満たす。更に、いずれの閉路も全域木の一部を含む。従って、上述した方法は、第2の条件も満たす。
【0063】
<<2.経路の特定>>
次に、経路特定装置1は、生成された閉路隣接グラフに基づいて経路を特定する。図13は、経路特定装置1が、閉路隣接グラフに基づいて経路を特定するために実行する処理を示したフローチャートである。
【0064】
経路特定装置1は、記憶装置に記憶されている、基本グラフ情報、閉路情報、及び、閉路隣接グラフ情報、に基づいて経路を特定する。なお、経路特定装置1は、基本グラフにおける基本リンクのそれぞれに対して予め設定された基本リンクコストw0(x)を予め記憶している。ここで、パラメータxは、基本リンクを特定するための情報である。なお、基本リンクコストw0(x)は、経路特定装置1のユーザにより入力された情報であってもよい。
【0065】
基本リンクコストw0(x)は、スカラ値を有する。基本リンクコストw0(x)は、基本リンクの長さ、又は、基本リンクのその他の属性等に基づいて設定されることが好適である。ところで、基本リンクの系列としての経路p(={l0,l1,…,li}、ここで、ljは、j番目の基本リンクであり、jは、0〜iの整数である)のコストW(p)は、数式1により表される。
【数1】
【0066】
また、経路特定装置1は、基本リンクコストw0(x)に基づいて、閉路隣接グラフにおける隣接リンクのそれぞれに対する隣接リンクコストw(x)を算出する。パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノードと第2の基本ノードとのいずれも臨界ノードとして含まないとき、経路特定装置1は、隣接リンクコストw(x)を数式2に基づいて算出する。
【数2】
【0067】
一方、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノード又は第2の基本ノードの少なくとも一方を臨界ノードとして含むとき、経路特定装置1は、隣接リンクコストw(x)を数式3に基づいて算出する。
【数3】
【0068】
ここでは、第1の基本ノードが基本ノードN100であり、第2の基本ノードが基本ノードN400である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN100と、第2の基本ノードN400と、を結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する場合を想定する。
【0069】
経路特定装置1は、図13のステップS201にて、閉路隣接グラフにおいて、最小コスト経路を特定する。最小コスト経路は、第1の基本ノードN100を通る閉路を表す閉路ノードC100と、第2の基本ノードN400を通る閉路を表す閉路ノードC300と、を結び、且つ、コストが最小となる経路である。
【0070】
最小コスト経路を特定する方法は、幅優先探索法、又は、修正ダイクストラ法(非特許文献2)等の負のリンクコストを許容する最短経路計算アルゴリズムである。
【0071】
本例では、経路特定装置1は、閉路隣接グラフにおける最小コスト経路として、経路C100−C200−C300を特定する。
【0072】
経路特定装置1は、ステップS202にて、閉路隣接グラフにおける最小コスト経路が特定されたか否かを判定する。本例では、経路特定装置1は、「Yes」と判定し、ステップS203へ進む。なお、最小コスト経路が特定されなかった場合、経路特定装置1は、図13に示した処理の実行を終了する。
【0073】
次いで、経路特定装置1は、ステップS203にて、閉路隣接グラフにおける最小コスト経路において隣接する2つの閉路ノードが表す2つの閉路同士を併合することにより、第1の基本ノードN100と第2の基本ノードN400とを通る閉路である経路含有閉路を特定する。
【0074】
本例では、経路特定装置1は、2つの閉路のそれぞれから、2つの閉路により共有されている基本リンク(共有リンク)を除いた部分を構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0075】
本例では、閉路情報は、図8乃至図10に示したように隣接行列により表されている。従って、経路特定装置1は、2つの閉路のそれぞれを表す隣接行列の排他的論理和を算出することにより、当該2つの閉路同士を併合した閉路を表す閉路情報を取得する。
【0076】
具体的には、経路特定装置1は、閉路C100〜C300を併合することにより、経路含有閉路N100−N200−N300−N400−N500−N600−N100を特定する。本例では、経路特定装置1は、図8乃至図10に示した隣接行列の排他的論理和を算出することにより、経路含有閉路を表す閉路情報としての、図14に示した隣接行列を取得する。
【0077】
なお、経路特定装置1は、他の方法を用いることにより、2つの閉路同士を併合した閉路を表す閉路情報を取得するように構成されていてもよい。
【0078】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の基本ノードN100と第2の基本ノードN400とを結ぶ最小コスト経路(第1の経路)を特定する(ステップS204)。このとき、経路特定装置1は、基本リンクコストw0(x)に基づいて最小コスト経路を特定する。
【0079】
具体的には、経路特定装置1は、幅優先探索法、又は、ダイクストラ法等を用いることにより、最小コスト経路を特定する。ここでは、経路特定装置1は、最小コスト経路N100−N200−N300−N400を特定する。
【0080】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の経路と異なる経路であり、且つ、第1の基本ノードN100と第2の基本ノードN400とを結ぶ経路である冗長経路(第2の経路)を特定する(ステップS205)。ここでは、経路特定装置1は、冗長経路N100−N600−N500−N400を特定する。
【0081】
具体的には、経路特定装置1は、ステップS203にて特定された経路含有閉路を表す環状リストから、ステップS204にて特定された第1の経路に相当する部分を取り除くことにより、第2の経路を特定する。なお、経路特定装置1は、ステップS204にて特定された第1の経路における中間の基本ノード又は基本リンクを使用不可とする条件を設けた状態において、深さ優先探索法、又は、ダイクストラ法等を用いることにより第2の経路を特定してもよい。
【0082】
このようにして、経路特定装置1は、閉路隣接グラフを用いることにより、第1の基本ノードN100と第2の基本ノードN400とを結び、且つ、基本リンクを共有しない、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0083】
以上、説明したように、本発明の第1実施形態に係る経路特定装置1によれば、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を確実に特定することができる。更に、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の(即ち、第1の基本ノード及び第2の基本ノード以外の)基本ノードを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【0084】
更に、本発明の第1実施形態に係る経路特定装置1は、基本グラフにおける基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、基本グラフにおける経路含有閉路を特定する。
【0085】
これによれば、基本リンクコストの総和を最小とするように、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の基本ノードを共有しない、2つの異なる経路を特定することができる。
【0086】
<第2実施形態>
次に、本発明の第2実施形態に係る経路特定装置について説明する。第2実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、2つの閉路が基本ノードのみを共有している場合、当該2つの閉路のそれぞれを構成するすべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる点において相違している。従って、以下、かかる相違点を中心として説明する。
【0087】
(機能)
第2実施形態に係る経路含有閉路特定部13は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0088】
本例では、2つの閉路が基本リンクを共有している状態は、強隣接状態とも呼ばれる。また、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している状態は、弱隣接状態とも呼ばれる。
【0089】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図15に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、9つの基本ノードN100〜N900と、12個の基本リンクL100〜L1200と、により構成される。
【0090】
<<1.閉路隣接グラフの生成>>
経路特定装置1は、第1実施形態と同様に、閉路を特定する。本例では、経路特定装置1は、閉路C100、閉路C200、及び、閉路C300に加えて、閉路C700(N400−N800−N900−N400)も特定する。
【0091】
閉路C300と閉路C700とは、基本リンクを共有することなく、基本ノードN400のみを共有している。即ち、閉路C300と閉路C700とは、弱隣接状態にある。経路特定装置1は、図16に示したように、弱隣接状態を表す隣接リンク(弱隣接リンク)A300を閉路隣接グラフに追加する。なお、弱隣接状態にある2つの閉路に共有される唯一の基本ノードは、臨界ノードと見なされる。すなわち、いずれの弱隣接リンクも基本リンクを含まず、且つ、臨界ノードを1つ含む。
【0092】
<<2.経路の特定>>
経路特定装置1は、第1実施形態と同様に、図16に示した閉路隣接グラフに基づいて経路を特定する。
【0093】
本例では、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクであり、且つ、閉路ノードc0が表す閉路と閉路ノードc1が表す閉路とが弱隣接状態にある場合において、当該隣接リンク(弱隣接リンク)が含んでいる基本ノードが第1の基本ノードと第2の基本ノードのいずれでもないとき、経路特定装置1は、隣接リンクコストw(x)を数式4に基づいて算出する。ただし、本例において導入した弱隣接リンクは基本リンクを含まないため、数式4は数式2と同等である。すなわち、第1実施形態において数式1〜3により示した隣接リンクコストw(x)を、本例においてもそのまま使用することができる。
【数4】
【0094】
ここでは、第1の基本ノードが基本ノードN100であり、第2の基本ノードが基本ノードN800である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN100と、第2の基本ノードN800と、を結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する場合を想定する。
【0095】
経路特定装置1は、図13のステップS201にて、閉路隣接グラフにおいて、最小コスト経路を特定する。最小コスト経路は、第1の基本ノードN100を通る閉路を表す閉路ノードC100と、第2の基本ノードN800を通る閉路を表す閉路ノードC700と、を結び、且つ、コストが最小となる経路である。
【0096】
最小コスト経路を特定する方法は、幅優先探索法、又は、修正ダイクストラ法(非特許文献2)等の負のリンクコストを許容する最短経路計算アルゴリズムである。
【0097】
本例では、経路特定装置1は、閉路隣接グラフにおける最小コスト経路として、経路C100−C200−C300−C700を特定する。
【0098】
経路特定装置1は、ステップS202にて、閉路隣接グラフにおける最小コスト経路が特定されたか否かを判定する。本例では、経路特定装置1は、「Yes」と判定し、ステップS203へ進む。なお、最小コスト経路が特定されなかった場合、経路特定装置1は、図13に示した処理の実行を終了する。
【0099】
次いで、経路特定装置1は、ステップS203にて、閉路隣接グラフにおける最小コスト経路において隣接する2つの閉路ノードが表す2つの閉路同士を併合することにより、第1の基本ノードN100と第2の基本ノードN800とを通る閉路である経路含有閉路を特定する。
【0100】
本例では、経路特定装置1は、2つの閉路が基本リンクを共有している場合、当該2つの閉路のそれぞれから、2つの閉路により共有されている基本リンク(共有リンク)を除いた部分を構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。更に、経路特定装置1は、2つの閉路が基本リンクを共有することなく基本ノードを共有している場合、当該2つの閉路のそれぞれを構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0101】
具体的には、経路特定装置1は、2つの閉路のそれぞれを表す隣接行列の排他的論理和を算出することにより、当該2つの閉路同士を併合した閉路を表す閉路情報を取得する。
【0102】
本例では、経路特定装置1は、閉路C100〜C300,C700を併合することにより、経路含有閉路N100−N200−N300−N400−N800−N900−N400−N500−N600−N100を特定する。
【0103】
なお、経路特定装置1は、他の方法を用いることにより、2つの閉路同士を併合した閉路を表す閉路情報を取得するように構成されていてもよい。
【0104】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の基本ノードN100と第2の基本ノードN800とを結ぶ最小コスト経路(第1の経路)を特定する(ステップS204)。このとき、経路特定装置1は、基本リンクコストw0(x)に基づいて最小コスト経路を特定する。
【0105】
具体的には、経路特定装置1は、幅優先探索法、又は、ダイクストラ法等を用いることにより、最小コスト経路を特定する。ここでは、経路特定装置1は、最小コスト経路N100−N200−N300−N400−N800を特定する。
【0106】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の経路と異なる経路であり、且つ、第1の基本ノードN100と第2の基本ノードN800とを結ぶ経路である冗長経路(第2の経路)を特定する(ステップS205)。ここでは、経路特定装置1は、冗長経路N100−N600−N500−N400−N900−N800を特定する。
【0107】
具体的には、経路特定装置1は、ステップS203にて特定された経路含有閉路を表す環状リストから、ステップS204にて特定された第1の経路に相当する部分を取り除くことにより、第2の経路を特定する。なお、経路特定装置1は、ステップS204にて特定された第1の経路における中間の基本ノード又は基本リンクを使用不可とする条件を設けた状態において、深さ優先探索法、又は、ダイクストラ法等を用いることにより第2の経路を特定してもよい。
【0108】
このようにして、経路特定装置1は、閉路隣接グラフを用いることにより、第1の基本ノードN100と第2の基本ノードN800とを結び、且つ、基本リンク、又は、経路途中の基本ノードを共有しない、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0109】
以上、説明したように、本発明の第2実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
【0110】
<第3実施形態>
次に、本発明の第3実施形態に係る経路特定装置について説明する。第3実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、閉路を構成しない基本ノードが存在する場合において、一部の基本リンクを共有する2つの異なる経路を特定する点において相違している。従って、以下、かかる相違点を中心として説明する。
【0111】
本例では、閉路隣接グラフは、いずれの閉路にも含まれない(いずれの閉路も構成しない)基本ノードを閉路ノード(疑似閉路ノード)として含む。更に、閉路隣接グラフは、いずれの閉路にも含まれない(いずれの閉路も構成しない)基本リンクを隣接リンク(疑似隣接リンク)として含む。
【0112】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図17に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、11個の基本ノードN100〜N1100と、14個の基本リンクL100〜L1400と、により構成される。
【0113】
<<1.閉路隣接グラフの生成>>
経路特定装置1は、図6に示したフローチャートに代えて、図18に示したフローチャートにより表される処理を、閉路隣接グラフを生成するために実行する。図18に示した処理は、図6に示した処理と同様のステップS301〜ステップS306の処理の後に、ステップS307〜ステップS310の処理を追加した処理である。
【0114】
経路特定装置1は、第1実施形態と同様に、ステップS301〜ステップS306の処理を実行することにより、閉路C100、閉路C200、及び、閉路C300に加えて、閉路C900(N1100−N800−N900−N1100)を特定する。経路特定装置1は、特定された閉路に基づいて閉路隣接グラフを生成する。
【0115】
この時点では、閉路隣接グラフにおいて、閉路C900を表す閉路ノードは、他の閉路ノードと接続されていない。
【0116】
そして、経路特定装置1は、ステップS307へ進み、いずれの閉路にも含まれない基本ノードの集合である基本ノード集合を取得する。本例では、経路特定装置1は、基本ノードのそれぞれに対して、閉路に含まれた回数(例えば、ステップS305の処理を実行した回数)を数えることにより、基本ノード集合を取得する。
【0117】
次いで、経路特定装置1は、ステップS308にて、上記基本ノード集合が空集合であるか否かを判定する。経路特定装置1は、上記基本ノード集合が空集合でない場合、「No」と判定してステップS309へ進む。
【0118】
そして、経路特定装置1は、基本ノード集合から基本ノードを1つ取得し、取得された基本ノードを基本ノード集合から削除する。更に、経路特定装置1は、取得された基本ノードを閉路ノード(疑似閉路ノード)として閉路隣接グラフに追加する(ステップS309)。
【0119】
更に、経路特定装置1は、ステップS310にて、上記疑似閉路ノードとしての基本ノードに接続されている基本リンクのそれぞれを、隣接リンク(疑似隣接リンク)として閉路隣接グラフに追加する。
【0120】
そして、経路特定装置1は、ステップS308へ戻り、ステップS308〜ステップS310の処理を、基本ノード集合が空集合となるまで繰り返し実行する。そして、基本ノード集合が空集合となると、経路特定装置1は、ステップS308にて「Yes」と判定して図18に示した処理の実行を終了する。
【0121】
このようにして、本例では、経路特定装置1は、基本ノードN1000を、疑似閉路ノードC800として閉路隣接グラフに追加するとともに、基本リンクL1300を疑似隣接リンクA400として閉路隣接グラフに追加し、且つ、基本リンクL1400を疑似隣接リンクA500として閉路隣接グラフに追加する。これにより、経路特定装置1は、図19に示したように、閉路隣接グラフを生成する。
【0122】
なお、経路特定装置1は、閉路隣接グラフを生成する方法として、他の方法を用いるように構成されていてもよい。
【0123】
<<2.経路の特定>>
経路特定装置1は、第1実施形態と同様に、図19に示した閉路隣接グラフに基づいて経路を特定する。
【0124】
本例では、パラメータxが、疑似隣接リンクである場合、経路特定装置1は、隣接リンクコストw(x)として、疑似隣接リンクの実体である基本リンクlに対する基本リンクコストw0(l)を用いる。
【0125】
ここでは、第1の基本ノードが基本ノードN100であり、第2の基本ノードが基本ノードN800である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN100と、第2の基本ノードN800と、を結ぶ、2つの異なる経路を特定する場合を想定する。
【0126】
経路特定装置1は、図13のステップS201にて、閉路隣接グラフにおいて、最小コスト経路を特定する。最小コスト経路は、第1の基本ノードN100を通る閉路を表す閉路ノードC100と、第2の基本ノードN800を通る閉路を表す閉路ノードC900と、を結び、且つ、コストが最小となる経路である。
【0127】
最小コスト経路を特定する方法は、幅優先探索法、又は、修正ダイクストラ法(非特許文献2)等の負のリンクコストを許容する最短経路計算アルゴリズムである。
【0128】
本例では、経路特定装置1は、閉路隣接グラフにおける最小コスト経路として、経路C100−C200−C300−C800−C900を特定する。
【0129】
経路特定装置1は、ステップS202にて、閉路隣接グラフにおける最小コスト経路が特定されたか否かを判定する。本例では、経路特定装置1は、「Yes」と判定し、ステップS203へ進む。なお、最小コスト経路が特定されなかった場合、経路特定装置1は、図13に示した処理の実行を終了する。
【0130】
本例では、基本グラフは、任意の2つの基本ノードを連結可能なグラフである。従って、ステップS201において、必ず、最小コスト経路が特定される。このため、経路特定装置1は、ステップS202の処理を省略した処理を実行するように構成されていてもよい。
【0131】
次いで、経路特定装置1は、ステップS203にて、閉路隣接グラフにおける最小コスト経路において隣接する2つの閉路ノードが表す2つの閉路同士を併合することにより、第1の基本ノードN100と第2の基本ノードN800とを通る閉路である経路含有閉路を特定する。
【0132】
本例では、経路特定装置1は、2つの閉路が基本リンクを共有している場合、当該2つの閉路のそれぞれから、2つの閉路により共有されている基本リンク(共有リンク)を除いた部分を構成する、すべての基本リンクを連結した閉路を、当該2つの閉路同士を併合した閉路として用いる。
【0133】
更に、経路特定装置1は、2つの閉路の一方が、疑似閉路ノードとしての基本ノードである(即ち、2つの閉路が基本リンク及び基本ノードのいずれも共有していない)場合、当該2つの閉路の他方を構成する、すべての基本リンクと、疑似閉路ノードとしての基本ノードに接続されている基本リンクと、を連結した閉路(疑似閉路)を、当該2つの閉路同士を併合した閉路として用いる。
【0134】
具体的には、経路特定装置1は、2つの閉路のそれぞれを表す隣接行列の排他的論理和を算出することにより、当該2つの閉路同士を併合した閉路を表す閉路情報を取得する。
【0135】
本例では、経路特定装置1は、閉路C100〜C300,C800,C900を併合することにより、経路含有閉路N100−N200−N300−N400−N1000−N1100−N800−N900−N1100−N1000−N400−N500−N600−N100を特定する。
【0136】
なお、経路特定装置1は、他の方法を用いることにより、2つの閉路同士を併合した閉路を表す閉路情報を取得するように構成されていてもよい。
【0137】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の基本ノードN100と第2の基本ノードN800とを結ぶ最小コスト経路(第1の経路)を特定する(ステップS204)。このとき、経路特定装置1は、基本リンクコストw0(x)に基づいて最小コスト経路を特定する。
【0138】
具体的には、経路特定装置1は、幅優先探索法、又は、ダイクストラ法等を用いることにより、最小コスト経路を特定する。ここでは、経路特定装置1は、最小コスト経路N100−N200−N300−N400−N1000−N1100−N800を特定する。
【0139】
次いで、経路特定装置1は、ステップS203にて特定された経路含有閉路において、第1の経路と異なる経路であり、且つ、第1の基本ノードN100と第2の基本ノードN800とを結ぶ経路である冗長経路(第2の経路)を特定する(ステップS205)。ここでは、経路特定装置1は、冗長経路N100−N600−N500−N400−N1000−N1100−N900−N800を特定する。
【0140】
具体的には、経路特定装置1は、ステップS203にて特定された経路含有閉路を表す環状リストから、ステップS204にて特定された第1の経路に相当する部分を取り除くことにより、第2の経路を特定する。
【0141】
なお、経路特定装置1は、ステップS204にて特定された第1の経路における中間の基本ノード又は基本リンクのうちの、疑似閉路ノードN1000、及び、疑似隣接リンクL1300,L1400以外の基本グラフ要素を使用不可とする条件を設けた状態において、深さ優先探索法、又は、ダイクストラ法等を用いることにより第2の経路を特定してもよい。
【0142】
このようにして、経路特定装置1は、閉路隣接グラフを用いることにより、第1の基本ノードN100と第2の基本ノードN800とを結ぶ、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0143】
以上、説明したように、本発明の第3実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
【0144】
<第4実施形態>
次に、本発明の第4実施形態に係る経路特定装置について説明する。第4実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、経路を特定する処理中に取得される閉路情報を保持するとともに、他の経路を特定する処理において、保持されている閉路情報を用いることにより、経路を特定する処理を高速化する点において相違している。従って、以下、かかる相違点を中心として説明する。
【0145】
第4実施形態に係るグラフ情報記憶部11は、2つの閉路のそれぞれを表す情報と、当該2つの閉路同士を併合することにより生成された閉路を表す情報と、を対応付けた併合閉路情報を記憶する。
【0146】
本例では、併合閉路情報は、図20及び図21に示したように、併合の対象となる2つの閉路のそれぞれを識別するための閉路識別子と、併合により生成された閉路を識別するための閉路識別子と、を含むテーブルである。即ち、このテーブルにおける値は、当該値の行と対応付けられた閉路識別子により識別される閉路と、当該値の列と対応付けられた閉路識別子により識別される閉路と、を併合することにより生成された閉路を識別するための閉路識別子である。
なお、併合閉路情報は、情報処理装置により処理可能な他の形式により表されてもよい。
【0147】
(作動)
次に、上述した経路特定装置1の作動について説明する。
経路特定装置1は、図13のステップS203の処理以外の処理を、第1実施形態と同様に実行する。
【0148】
経路特定装置1は、図13のステップS203に進んだとき、併合の対象となる2つの閉路に係る併合閉路情報が記憶されているか否かを判定する。併合の対象となる2つの閉路に係る併合閉路情報が記憶されている場合、経路特定装置1は、当該併合閉路情報から、併合により生成された閉路を表す情報を取得する。
【0149】
一方、併合の対象となる2つの閉路に係る併合閉路情報が記憶されていない場合、経路特定装置1は、第1実施形態と同様に、2つの閉路同士を併合することにより閉路を生成する処理を実行する。更に、この場合、経路特定装置1は、併合の対象となる2つの閉路のそれぞれを識別するための閉路識別子と、併合により生成された閉路を識別するための閉路識別子と、を対応付けて記憶する。
【0150】
ここで、閉路C100〜C300を併合する例について説明する。いま、閉路C100と閉路C200とを併合することにより閉路C400が生成されるとともに、閉路C200と閉路C300とを併合することにより閉路C500が生成される場合を想定する。更に、閉路C100〜C300を併合することにより閉路C600が生成される場合を想定する。
【0151】
この場合、経路特定装置1が、2つの閉路同士を併合する処理を実行する前の時点においては、経路特定装置1が記憶している併合閉路情報は、図20に示した状態である。その後、経路特定装置1が、2つの閉路同士を併合する処理を実行することにより、最終的に、経路特定装置1が記憶している併合閉路情報は、図21に示した状態となる。
【0152】
以上、説明したように、本発明の第4実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
更に、本発明の第4実施形態に係る経路特定装置1によれば、経路を特定する処理を高速化することができる。
【0153】
<第5実施形態>
次に、本発明の第5実施形態に係る経路特定装置について説明する。第5実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、特定すべき経路の端点(経路の端を構成する基本ノード、即ち、第1の基本ノード又は第2の基本ノード)が複数の閉路に含まれる場合における、経路を特定する処理を高速化する点において相違している。例えば、図4に示した基本グラフにおいて、基本ノードN200は、2つの閉路C100,C200に含まれている。
以下、かかる相違点を中心として説明する。
【0154】
例えば、第1実施形態〜第4実施形態に係る経路特定装置1において、基本ノードN200と基本ノードN400とを結ぶ経路を特定する場合、閉路隣接グラフにて、閉路ノードC100と閉路ノードC300とを結ぶ経路と、閉路ノードC200と閉路ノードC300とを結ぶ経路と、の2つの経路を特定し、それぞれのコストを比較する必要が生じる。一方、本実施形態に係る経路特定装置1によれば、これらの計算を一元化することができるので、経路を特定する処理を高速化することができる。
【0155】
(機能)
第5実施形態に係るグラフ情報記憶部11は、閉路隣接グラフ情報に代えて、閉路探索グラフ情報を記憶する。
【0156】
閉路探索グラフ情報は、閉路探索グラフを表す情報である。ここで、閉路探索グラフは、閉路隣接グラフに、包含ノードと、包含リンクと、を追加したグラフである。包含ノードは、閉路ノードが表す閉路が基本グラフにおいて通る(即ち、当該閉路に含まれる)基本ノードを表すノードである。包含リンクは、閉路ノードが表す閉路が基本グラフにおいて包含ノードを通ることを表し、且つ、当該閉路ノードと当該包含ノードとを結ぶリンクである。
【0157】
閉路探索グラフ情報は、閉路隣接グラフ情報に加えて、複数の包含ノードのそれぞれを識別するための包含ノード識別子と、包含ノードと閉路ノードとの任意の組のそれぞれに対して、当該包含ノードと当該閉路ノードとを結ぶ包含リンクが存在するか否かを表す情報と、を含む。
【0158】
(作動)
次に、上述した経路特定装置1の作動について説明する。
本例では、図17に示した基本グラフにおいて経路を特定する際の経路特定装置1の作動について説明する。この基本グラフは、11個の基本ノードN100〜N1100と、14個の基本リンクL100〜L1400と、により構成される。
【0159】
<<1.閉路探索グラフの生成>>
先ず、経路特定装置1は、第1実施形態と同様に、閉路隣接グラフを生成する。その後、経路特定装置1は、基本グラフにおける各基本ノードに対して、当該基本ノードを包含ノードとして閉路隣接グラフに追加するとともに、当該基本ノードを基本グラフにおいて通る閉路を表す閉路ノードと当該包含ノードとを結ぶ包含リンクを閉路隣接グラフに追加することにより、閉路探索グラフを生成する。
【0160】
ここでは、経路特定装置1が、図4に示した基本グラフに基づいて閉路探索グラフを生成する場合を想定する。この場合、経路特定装置1により生成される閉路探索グラフは、図22に示したようになる。図22における破線は、包含リンクE100〜E710を表す。
【0161】
<<2.経路の特定>>
経路特定装置1は、図22に示した閉路探索グラフに基づいて経路を特定する。
本例では、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノードと第2の基本ノードとのいずれも臨界ノードとして含まないとき、経路特定装置1は、探索リンクコストw(x)を数式5に基づいて算出する。
【数5】
【0162】
一方、パラメータxが、閉路ノードc0と閉路ノードc1とを結ぶ隣接リンクである場合において、当該隣接リンクが第1の基本ノード又は第2の基本ノードを臨界ノードとして含むとき、経路特定装置1は、探索リンクコストw(x)を数式6に基づいて算出する。
【数6】
【0163】
また、パラメータxが、疑似隣接リンクLである場合、経路特定装置1は、探索リンクコストw(x)を数式7に基づいて算出する。
【数7】
【0164】
また、パラメータxが、包含リンクである場合において、当該包含リンクが第1の基本ノードから閉路ノードcへのリンクであるとき、経路特定装置1は、探索リンクコストw(x)を数式8に基づいて算出する。
【数8】
【0165】
また、パラメータxが、包含リンクである場合において、当該包含リンクが閉路ノードcから第2の基本ノードへのリンクであるとき、経路特定装置1は、探索リンクコストw(x)を数式9に基づいて算出する。
【数9】
【0166】
また、パラメータxが、包含リンクである場合において、当該包含リンクが、第1の基本ノード及び第2の基本ノード以外の基本ノード(包含ノード)と、閉路ノードと、を結ぶとき、経路特定装置1は、探索リンクコストw(x)を数式10に基づいて算出する。
【数10】
【0167】
ここでは、第1の基本ノードが基本ノードN200であり、第2の基本ノードが基本ノードN400である場合を想定する。即ち、経路特定装置1が、第1の基本ノードN200と、第2の基本ノードN400と、を結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する場合を想定する。
【0168】
経路特定装置1は、図13のステップS201の処理に代えて、閉路探索グラフにおいて、最小コスト経路を特定する処理を実行する。ここで、最小コスト経路は、閉路探索グラフにおいて、第1の基本ノードN200と、第2の基本ノードN400と、を結び、且つ、コストが最小となる経路である。
【0169】
ところで、探索リンクコストw(x)が∞であるリンクが、最小コスト経路に含まれることはない。従って、経路特定装置1は、探索リンクコストw(x)が∞であるリンクを、予め閉路探索グラフから除去した、図23に示したグラフに基づいて、最小コスト経路を特定するように構成されることが好適である。
【0170】
なお、閉路探索グラフにおいて最小コスト経路を特定することは、2つの経路(経路N200−C100−C200−C300−N400、及び、経路N200−C200−C300−N400)のうちの、コストが小さい方の経路を特定することに対応している。
【0171】
更に、経路特定装置1は、特定された最小コスト経路から、第1の基本ノードN200、及び、第2の基本ノードN400を除去した経路を特定し、当該経路に基づいて、第1実施形態と同様に、ステップS202〜ステップS205の処理を実行する。これにより、経路特定装置1は、閉路探索グラフを用いることにより、第1の基本ノードN200と第2の基本ノードN400とを結び、且つ、基本リンクを共有しない、2つの異なる経路(第1の経路、及び、第2の経路)を特定する。
【0172】
以上、説明したように、本発明の第5実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
更に、本発明の第5実施形態に係る経路特定装置1によれば、特定すべき経路の端点が複数の閉路に含まれる場合において、経路を特定する処理を高速化することができる。
【0173】
<第6実施形態>
次に、本発明の第6実施形態に係る経路特定装置について説明する。第6実施形態に係る経路特定装置は、上記第1実施形態に係る経路特定装置に対して、基本グラフに基づいて経路を特定できなかった場合にのみ、閉路隣接グラフを用いることにより経路を特定する点において相違している。従って、以下、かかる相違点を中心として説明する。
【0174】
第6実施形態に係る経路特定装置1は、図24にフローチャートにより示した処理を実行する。
【0175】
具体的には、経路特定装置1は、ステップS401にて、基本グラフに基づいて(即ち、閉路隣接グラフを用いることなく)、経路を特定する。本例では、経路特定装置1は、ダイクストラ法を繰り返し用いることにより、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する。即ち、経路特定装置1は、第1の経路を特定し、その後、第1の経路が通る基本リンクを基本グラフから除去したグラフに基づいて、第2の経路を特定する。
【0176】
ステップS401の処理により特定される第1の経路は、基本グラフにおいてコストが最小となる経路である。一方、このように特定された、第1の経路及び第2の経路は、第1の経路のコストと第2の経路のコストとの和が最小であるとは限らない。
なお、経路特定装置1は、他の方法を用いることにより、2つの異なる経路を特定するように構成されていてもよい。
【0177】
次いで、経路特定装置1は、ステップS402にて、経路が特定されたか否かを判定する。ステップS401にて経路が特定されなかった場合、経路特定装置1は、「No」と判定してステップS403へ進む。
【0178】
なお、経路特定装置1は、経路が特定された場合であっても、特定された経路が、予め設定された条件を満たさなかった場合、「No」と判定するように構成されていてもよい。例えば、この条件は、第2の経路のコストが、予め設定された基準値よりも大きいという条件である。
【0179】
そして、経路特定装置1は、ステップS403にて、第1実施形態と同様に、閉路隣接グラフを生成するとともに、生成された閉路隣接グラフに基づいて、2つの異なる経路を特定する。
なお、ステップS401にて経路が特定された場合、経路特定装置1は、ステップS402にて「Yes」と判定して、図24に示した処理の実行を終了する。
【0180】
以上、説明したように、本発明の第6実施形態に係る経路特定装置1によっても、第1実施形態に係る経路特定装置1と同様の作用及び効果が奏される。
更に、本発明の第6実施形態に係る経路特定装置1によれば、第1の経路のコストと第2の経路のコストとの和が最小となる、2つの経路以外の経路を特定することもできる。
【0181】
なお、第6実施形態に係る経路特定装置1は、基本グラフに基づいて経路を特定できなかった場合に、閉路隣接グラフに基づいて経路を特定するように構成されていたが、閉路探索グラフに基づいて経路を特定するように構成されていてもよい。
【0182】
第1実施形態〜第6実施形態においては、経路特定装置1は、閉路隣接グラフ又は閉路探索グラフの生成する処理(第1の処理)と経路の特定する処理(第2の処理)とを続けて実行するように構成されていた。ところで、経路特定装置1は、第1の処理の実行結果を保持し、その後、保持されている実行結果を用いることにより、複数回、第2の処理を実行するように構成されていてもよい。
【0183】
また、閉路隣接グラフ又は閉路探索グラフを生成するためのプログラムと、経路を特定するためのプログラムと、は、1つのプログラムを構成していてもよいし、互いに独立した2つのプログラムであってもよい。なお、経路特定装置1は、互いに独立した2つのプログラムのそれぞれに対して、中央処理装置、一次記憶装置、及び、二次記憶装置等のプログラムを実行するために必要な計算資源を、物理的又は論理的に分離して割り当てるように構成されていてもよい。
【0184】
<第7実施形態>
次に、本発明の第7実施形態に係る経路特定装置について図25を参照しながら説明する。
第7実施形態に係る経路特定装置1000は、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する装置である。
【0185】
更に、この経路特定装置1000は、
上記第1の基本ノードを通る第1の閉路と、上記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定部(閉路特定手段)1001と、
上記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、上記第1の基本ノードと上記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定部(経路含有閉路特定手段)1002と、
上記特定された経路含有閉路において、上記第1の基本ノードと上記第2の基本ノードとを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する経路特定部(経路特定手段)1003と、
を備える。
【0186】
これによれば、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を確実に特定することができる。更に、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【0187】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【0188】
なお、上記各実施形態において経路特定装置の各機能は、CPUがプログラム(ソフトウェア)を実行することにより実現されていたが、回路等のハードウェアにより実現されていてもよい。
【0189】
また、上記各実施形態においてプログラムは、記憶装置に記憶されていたが、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0190】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【0191】
<付記>
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【0192】
(付記1)
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定装置であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定手段と、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定手段と、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する経路特定手段と、
を備える経路特定装置。
【0193】
これによれば、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の(即ち、第1の基本ノード及び第2の基本ノード以外の)基本ノードを共有しない、2つの異なる経路を確実に特定することができる。更に、2つの基本ノードを結び、且つ、基本リンクを共有しない、2つの異なる経路を特定する際の処理負荷を低減することができる。
【0194】
(付記2)
付記1に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【0195】
(付記3)
付記1又は付記2に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【0196】
(付記4)
付記1乃至付記3のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記特定された複数の閉路のそれぞれを閉路ノードにより表すとともに、2つの閉路によって前記基本グラフにおける基本グラフ要素が共有されていることを、当該2つの閉路のそれぞれを表す閉路ノードを結ぶ隣接リンクにより表す閉路隣接グラフを生成し、当該生成された閉路隣接グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【0197】
(付記5)
付記4に記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記生成された閉路隣接グラフに、前記閉路ノードが表す閉路が前記基本グラフにおいて通る基本ノードのそれぞれを表す包含ノードと、閉路ノードが表す閉路が前記基本グラフにおいて包含ノードを通ることを表し且つ当該閉路ノードと当該包含ノードとを結ぶ包含リンクと、を追加した、閉路探索グラフを生成し、当該生成された閉路探索グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【0198】
(付記6)
付記1乃至付記5のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記基本グラフにおける前記基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【0199】
これによれば、基本リンクコストの総和を最小とするように、2つの基本ノードを結び、且つ、基本リンク、又は、経路途中の基本ノードを共有しない、2つの異なる経路を特定することができる。
【0200】
(付記7)
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定方法であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する、経路特定方法。
【0201】
(付記8)
付記7に記載の経路特定方法であって、
2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【0202】
(付記9)
付記7又は付記8に記載の経路特定方法であって、
2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【0203】
(付記10)
情報処理装置に、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する処理を実行させるための経路特定プログラムであって、
前記処理は、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定するように構成された経路特定プログラム。
【0204】
(付記11)
付記10に記載の経路特定プログラムであって、
前記処理は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定プログラム。
【0205】
(付記12)
付記10又は付記11に記載の経路特定プログラムであって、
前記処理は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定プログラム。
【産業上の利用可能性】
【0206】
本発明は、第1のノードと第2のノードとを結ぶ経路を特定する経路特定装置等に適用可能である。
【符号の説明】
【0207】
1 経路特定装置
11 グラフ情報記憶部
12 閉路特定部
13 経路含有閉路特定部
14 経路特定部
1000 経路特定装置
1001 閉路特定部
1002 経路含有閉路特定部
1003 経路特定部
【特許請求の範囲】
【請求項1】
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定装置であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定手段と、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定手段と、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する経路特定手段と、
を備える経路特定装置。
【請求項2】
請求項1に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【請求項3】
請求項1又は請求項2に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【請求項4】
請求項1乃至請求項3のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記特定された複数の閉路のそれぞれを閉路ノードにより表すとともに、2つの閉路によって前記基本グラフにおける基本グラフ要素が共有されていることを、当該2つの閉路のそれぞれを表す閉路ノードを結ぶ隣接リンクにより表す閉路隣接グラフを生成し、当該生成された閉路隣接グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【請求項5】
請求項4に記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記生成された閉路隣接グラフに、前記閉路ノードが表す閉路が前記基本グラフにおいて通る基本ノードのそれぞれを表す包含ノードと、閉路ノードが表す閉路が前記基本グラフにおいて包含ノードを通ることを表し且つ当該閉路ノードと当該包含ノードとを結ぶ包含リンクと、を追加した、閉路探索グラフを生成し、当該生成された閉路探索グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【請求項6】
請求項1乃至請求項5のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記基本グラフにおける前記基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【請求項7】
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定方法であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する、経路特定方法。
【請求項8】
請求項7に記載の経路特定方法であって、
2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【請求項9】
請求項7又は請求項8に記載の経路特定方法であって、
2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【請求項10】
情報処理装置に、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する処理を実行させるための経路特定プログラムであって、
前記処理は、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定するように構成された経路特定プログラム。
【請求項1】
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定装置であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定する閉路特定手段と、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定する経路含有閉路特定手段と、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する経路特定手段と、
を備える経路特定装置。
【請求項2】
請求項1に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【請求項3】
請求項1又は請求項2に記載の経路特定装置であって、
前記経路含有閉路特定手段は、2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定装置。
【請求項4】
請求項1乃至請求項3のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記特定された複数の閉路のそれぞれを閉路ノードにより表すとともに、2つの閉路によって前記基本グラフにおける基本グラフ要素が共有されていることを、当該2つの閉路のそれぞれを表す閉路ノードを結ぶ隣接リンクにより表す閉路隣接グラフを生成し、当該生成された閉路隣接グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【請求項5】
請求項4に記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記生成された閉路隣接グラフに、前記閉路ノードが表す閉路が前記基本グラフにおいて通る基本ノードのそれぞれを表す包含ノードと、閉路ノードが表す閉路が前記基本グラフにおいて包含ノードを通ることを表し且つ当該閉路ノードと当該包含ノードとを結ぶ包含リンクと、を追加した、閉路探索グラフを生成し、当該生成された閉路探索グラフに基づいて前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【請求項6】
請求項1乃至請求項5のいずれかに記載の経路特定装置であって、
前記経路含有閉路特定手段は、前記基本グラフにおける前記基本リンクのそれぞれに対して予め設定された基本リンクコストの総和を最小とするように、前記基本グラフにおける前記経路含有閉路を特定するように構成された経路特定装置。
【請求項7】
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する経路特定方法であって、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定する、経路特定方法。
【請求項8】
請求項7に記載の経路特定方法であって、
2つの閉路が少なくとも1つの基本リンクを共有している場合、当該2つの閉路の一方から、当該共有されている基本リンクである共有リンクを除いた部分を構成するすべての基本リンクと、当該2つの閉路の他方から、当該共有リンクを除いた部分を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【請求項9】
請求項7又は請求項8に記載の経路特定方法であって、
2つの閉路が基本リンクを共有することなく基本ノードのみを共有している場合、当該2つの閉路の一方を構成するすべての基本リンクと、当該2つの閉路の他方を構成するすべての基本リンクと、を連結した閉路を、当該2つの閉路同士を併合した閉路として用いるように構成された経路特定方法。
【請求項10】
情報処理装置に、
基本ノードと、2つの基本ノードを結ぶ基本リンクと、により構成される基本グラフにおいて、第1の基本ノードと第2の基本ノードとを結ぶ経路を特定する処理を実行させるための経路特定プログラムであって、
前記処理は、
前記第1の基本ノードを通る第1の閉路と、前記第2の基本ノードを通る第2の閉路と、を含む複数の閉路を特定し、
前記特定された複数の閉路のうちの、基本ノード又は基本リンクである基本グラフ要素の少なくとも1つを共有する閉路同士を併合することにより、前記第1の基本ノードと前記第2の基本ノードとを通る閉路である経路含有閉路を特定し、
前記特定された経路含有閉路において、前記第1の基本ノードと前記第2の基本ノードとを結び、且つ、基本リンク、又は、当該第1の基本ノード及び当該第2の基本ノード以外の基本ノードを共有しない、2つの異なる経路を特定するように構成された経路特定プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【公開番号】特開2013−62735(P2013−62735A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−200788(P2011−200788)
【出願日】平成23年9月14日(2011.9.14)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度 独立行政法人 情報通信研究機構「λユーティリティ技術の研究開発」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願日】平成23年9月14日(2011.9.14)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度 独立行政法人 情報通信研究機構「λユーティリティ技術の研究開発」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]