(57)【要約】【課題】ノードやリンクの追加または削除があったとき、最短経路の再計算を行うことが可能な最短経路計算装置を提供する。【解決手段】起点ノードから到達し得るノードとノード同士の接続関係との情報を含む計算対象ツリーが格納される記憶部と、ネットワークのトポロジに変化があると、上記計算対象ツリーを設定し、トポロジの変化がリンクの追加であると、追加されたリンクに接続される第１および第２のノードについて、追加されたリンクを経由する第１の経路の方がそのリンクを経由しない第２の経路よりも短ければ、第１の経路を最短経路の候補とし、トポロジの変化がリンクの削除であると、計算対象ツリー内の第３のノードと計算対象ツリーに属さない第４のノードとを結ぶリンクを見つけ、該リンクを含む経路を起点ノードから第４のノードまでの最短経路の候補とし、最短経路の候補が複数あれば、最短な候補を最短経路に決定するプロセッサとを有する。【選択図】図１
2010130173.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークにおけるノード間の最短経路を計算する最短経路計算装置であって、
起点となるノードである起点ノードからノード間の上流下流の関係をたどって到達し得るノードと該ノード同士における上流下流の接続関係との情報を含む計算対象ツリーが格納される記憶部と、
前記ネットワークのトポロジに変化があると、前記計算対象ツリーを設定し、前記トポロジの変化が新たな第１のリンクの追加である場合、前記計算対象ツリー内のノードであって該第１のリンクで接続される第１および第２のノードについて、前記起点ノードから前記計算対象ツリーに沿って前記第２のノードまで到達する経路および前記第１のリンクの経路を経由して前記第１のノードまで到達する経路からなる第１の経路と、前記起点ノードから前記計算対象ツリーに沿って前記第１のノードまで到達する第２の経路との距離を比較し、前記第２の経路よりも前記第１の経路の距離が短ければ、前記第１の経路を前記起点ノードから前記第１のノードまでの最短経路の候補とし、前記トポロジの変化がリンクの削除である場合、削除されたリンクの下流側の情報を前記計算対象ツリーから削除し、該計算対象ツリー内の第３のノードと該計算対象ツリーに属さない第４のノードとを結ぶ第２のリンクを見つけると、前記起点ノードから前記計算対象ツリーに沿って前記第３のノードまで到達する経路および前記第２のリンクからなる経路を前記起点ノードから第４のノードまでの最短経路の候補とし、前記起点ノードから前記第１または第４のノードに至る経路について、前記最短経路の候補が複数あれば、複数の候補から距離が最短な候補を特定し、特定した候補を最短経路に決定するプロセッサと、
を有する最短経路計算装置。
【請求項２】
前記プロセッサは、
前記第１または前記第４のノードである中継ノードについて、前記起点ノードとは反対側である下流に位置する経路に対応するノード間の上流下流の関係に対応する情報が存在すれば、該情報が示す経路が通るノードまでの距離を前記最短経路と該情報が示す経路を経由した経路のものに書き換え、前記中継ノードの下流に対応する上流下流の関係を前記計算対象ツリーに追加し、下流に位置するノードを前記計算対象ツリーが通過するノードとして扱う、請求項１記載の最短経路計算装置。
【請求項３】
前記プロセッサは、
前記トポロジに新たに追加されたリンクのうち、前記第１または前記第４のノードである中継ノードより下流に位置するノード同士を結ぶ第３のリンクがあると、該第３のリンクの端点である第５のノードおよび第６のノードについて、前記起点ノードから前記中継ノードまでの前記最短経路、該中継ノードの下流における前記第６のノードまでの経路および前記第３のリンクからなる、前記起点ノードから前記第５のノードに到達するまでの第３の経路と、前記起点ノードから前記中継ノードまでの前記最短経路および該中継ノードの下流における前記第５のノードまでの経路からなる第４の経路との距離を比較し、該第４の経路よりも前記第３の経路の距離が短ければ、前記第３の経路を前記起点ノードから前記第５のノードまでの最短経路の候補経路とし、該候補経路のうち距離が最短なものを選び出す、請求項１または２記載の最短経路計算装置。
【請求項４】
前記プロセッサは、
前記第１または前記第４のノードである中継ノードの下流に位置する第７のノードを起点とし、該中継ノードの下流に位置せず、最短経路が計算されていない第８のノードを終点とする第４のリンクがあると、前記起点ノードから前記中継ノードまでの前記最短経路を経由して該中継ノードの下流における前記第７のノードまでの経路および前記第４のリンクからなる、前記起点ノードから前記第８のノードに到達するまでの第５の経路と、前記起点ノードから前記計算対象ツリーを経由して前記第８のノードに到達するまでの第６の経路との距離を比較し、該第６の経路よりも前記第５の経路の距離が短ければ、前記第５の経路を前記起点ノードから前記第８のノードまでの最短経路の候補経路とし、該候補経路のうち距離が最短なものを選び出す、請求項１から３のいずれか１項記載の最短経路計算装置。
【請求項５】
ネットワークにおけるノード間の最短経路を計算する方法であって、
前記ネットワークのトポロジに変化があると、起点となるノードである起点ノードからノード間の上流下流の関係をたどって到達し得るノードと該ノード同士における上流下流の接続関係とを含む情報を計算対象ツリーとし、
前記トポロジの変化が新たな第１のリンクの追加である場合、前記計算対象ツリー内のノードであって該第１のリンクで接続される第１および第２のノードについて、前記起点ノードから前記計算対象ツリーに沿って前記第２のノードまで到達する経路および前記第１のリンクの経路を経由して前記第１のノードまで到達する経路からなる第１の経路と、前記起点ノードから前記計算対象ツリーに沿って前記第１のノードまで到達する第２の経路との距離を比較し、前記第２の経路よりも前記第１の経路の距離が短ければ、前記第１の経路を前記起点ノードから前記第１のノードまでの最短経路の候補とし、
前記トポロジの変化がリンクの削除である場合、削除されたリンクの下流側の情報を前記計算対象ツリーから削除し、該計算対象ツリー内の第３のノードと該計算対象ツリーに属さない第４のノードとを結ぶ第２のリンクを見つけると、前記起点ノードから前記計算対象ツリーに沿って前記第３のノードまで到達する経路および前記第２のリンクからなる経路を前記起点ノードから第４のノードまでの最短経路の候補とし、
前記起点ノードから前記第１または第４のノードに至る経路について、前記最短経路の候補が複数あれば、複数の候補から距離が最短な候補を特定し、特定した候補を最短経路に決定する、最短経路計算方法。
【請求項６】
前記第１または前記第４のノードである中継ノードについて、前記起点ノードとは反対側である下流に位置する経路に対応するノード間の上流下流の関係に対応する情報が存在すれば、該情報が示す経路が通るノードまでの距離を前記最短経路と該情報が示す経路を経由した経路のものに書き換え、前記中継ノードの下流に対応する上流下流の関係を前記計算対象ツリーに追加し、下流に位置するノードを前記計算対象ツリーが通過するノードとして扱う、請求項５記載の最短経路計算方法。
【請求項７】
前記トポロジに新たに追加されたリンクのうち、前記第１または前記第４のノードである中継ノードより下流に位置するノード同士を結ぶ第３のリンクがあると、該第３のリンクの端点である第５のノードおよび第６のノードについて、前記起点ノードから前記中継ノードまでの前記最短経路、該中継ノードの下流における前記第６のノードまでの経路および前記第３のリンクからなる、前記起点ノードから前記第５のノードに到達するまでの第３の経路と、前記起点ノードから前記中継ノードまでの前記最短経路および該中継ノードの下流における前記第５のノードまでの経路からなる第４の経路との距離を比較し、
前記第４の経路よりも前記第３の経路の距離が短ければ、前記第３の経路を前記起点ノードから前記第５のノードまでの最短経路の候補経路とし、該候補経路のうち距離が最短なものを選び出す、請求項５または６記載の最短経路計算方法。
【請求項８】
前記第１または前記第４のノードである中継ノードの下流に位置する第７のノードを起点とし、該中継ノードの下流に位置せず、最短経路が計算されていない第８のノードを終点とする第４のリンクがあると、前記起点ノードから前記中継ノードまでの前記最短経路を経由して該中継ノードの下流における前記第７のノードまでの経路および前記第４のリンクからなる、前記起点ノードから前記第８のノードに到達するまでの第５の経路と、前記起点ノードから前記計算対象ツリーを経由して前記第８のノードに到達するまでの第６の経路との距離を比較し、
前記第６の経路よりも前記第５の経路の距離が短ければ、前記第５の経路を前記起点ノードから前記第８のノードまでの最短経路の候補経路とし、該候補経路のうち距離が最短なものを選び出す、請求項５から７のいずれか１項記載の最短経路計算方法。
【請求項９】
請求項５から８のいずれかの最短経路計算方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、目的地までの経路の計算方法に関し、特に、目的地までの最短経路を計算する最短経路計算装置、最短経路計算方法、およびその方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
ネットワーク内のノードや拠点間を結ぶ道やネットワークリンクの敷設状況（トポロジ）に変化が生じ、それまで通れなかった箇所が通れるようになる、または、その反対に通れた箇所が通れなくなることが生じる場合がある。出発地から目的地までの最短経路を常に維持する必要がある場合、パスのトポロジの変化に伴い、変化後のトポロジにおける最短経路を計算する必要がある。従来の最短経路計算装置は、トポロジ情報を使用することで２拠点間を結ぶ最短経路を全て再計算していた。
【０００３】
計算方法については非特許文献１に記載が存在する。なお、この方式はダイクストラのアルゴリズムとして知られている。
【０００４】
注意すべきこととして、トポロジの変化前と変化後に最短経路に違いが生じない２ノードペアが存在するということが挙げられる。また、別の拠点間を結ぶ最短経路がトポロジ変化後に計算されているものが存在すれば、この最短経路とこれから計算しようとしている拠点間の最短経路に違いが生じない場合も多々存在する。
【０００５】
しかし、従来の最短経路計算装置では、最短経路の計算を敷設状況のみの情報を用いて計算を行っているため、違いが生じない場合、既に存在する最短経路情報を利用することは不可能である。このため、全ての最短経路を再計算する必要が生じ、計算時間が長くなるという問題が生じる。
【０００６】
通常、このような経路計算方法では、拠点間を結ぶ伝送路や道に、コストと呼ばれる数を割り当て、通過した経路に含まれるリンクのコスト和が最小になる経路を計算する。あるリンクのコストに変化が生じたとき、トポロジ変更前の最短経路情報を用いて計算する方法が非特許文献２に記載されている。
【０００７】
この方法を用いることで、前述の全ての最短経路を再計算することにより計算時間が長くなるという問題を解決することができる。
【非特許文献１】Ｅ．  Ｗ．  Ｄｉｊｋｓｔｒａ：  Ａ  ｎｏｔｅ  ｏｎ  ｔｗｏ  ｐｒｏｂｌｅｍｓ  ｉｎ  ｃｏｎｎｅｘｉｏｎ  ｗｉｔｈ  ｇｒａｐｈｓ．  Ｉｎ  Ｎｕｍｅｒｉｓｃｈｅ  Ｍａｔｈｅｍａｔｉｋ  １,  （１９５９），  Ｓ．  ２６９−２７１．
【非特許文献２】Ｂ．  Ｘｉａｏ，  ｅｔ  ａｌ．  “Ｄｙｎａｍｉｃ  ｕｐｄａｔｅ  ｏｆ  ｓｈｏｒｔｅｓｔ  ｐａｔｈ  ｔｒｅｅ  ｉｎ  ＯＳＰＦ，”  ＩＥＥＥ  Ｐａｒａｌｌｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ｎｅｔｗｏｒｋ，  ｐｐ．１８−２３，  Ｍａｙ  ２００４．
【発明の開示】
【発明が解決しようとする課題】
【０００８】
非特許文献２では、トポロジ内に存在するリンクのコスト変化が生じた場合のみを計算対象としている。
【０００９】
トポロジの変化にはこの他に、ノードを結ぶリンクが追加される場合、または、リンクと拠点が同時に追加される場合がある。非特許文献２に開示された技術では、トポロジ変更前に存在していなかった伝送路の追加によるトポロジ変化を計算開始のトリガーとして扱っておらず、再計算を行わない。そのため、この場合の最短経路を計算するには手順を追加する必要がある。
【００１０】
本発明は、上述したような技術が有する問題点を解決するためになされたものであり、ネットワークにノードやリンクの追加または削除があったとき、最短経路の再計算を行うことが可能な最短経路計算装置、最短経路計算方法、およびその方法をコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するための本発明の最短経路計算装置は、ネットワークにおけるノード間の最短経路を計算する最短経路計算装置であって、
起点となるノードである起点ノードからノード間の上流下流の関係をたどって到達し得るノードと該ノード同士における上流下流の接続関係との情報を含む計算対象ツリーが格納される記憶部と、
前記ネットワークのトポロジに変化があると、前記計算対象ツリーを設定し、前記トポロジの変化が新たな第１のリンクの追加である場合、前記計算対象ツリー内のノードであって該第１のリンクで接続される第１および第２のノードについて、前記起点ノードから前記計算対象ツリーに沿って前記第２のノードまで到達する経路および前記第１のリンクの経路を経由して前記第１のノードまで到達する経路からなる第１の経路と、前記起点ノードから前記計算対象ツリーに沿って前記第１のノードまで到達する第２の経路との距離を比較し、前記第２の経路よりも前記第１の経路の距離が短ければ、前記第１の経路を前記起点ノードから前記第１のノードまでの最短経路の候補とし、前記トポロジの変化がリンクの削除である場合、削除されたリンクの下流側の情報を前記計算対象ツリーから削除し、該計算対象ツリー内の第３のノードと該計算対象ツリーに属さない第４のノードとを結ぶ第２のリンクを見つけると、前記起点ノードから前記計算対象ツリーに沿って前記第３のノードまで到達する経路および前記第２のリンクからなる経路を前記起点ノードから第４のノードまでの最短経路の候補とし、前記起点ノードから前記第１または第４のノードに至る経路について、前記最短経路の候補が複数あれば、複数の候補から距離が最短な候補を特定し、特定した候補を最短経路に決定するプロセッサと、
を有する構成である。
【００１２】
また、本発明の最短経路計算方法は、ネットワークにおけるノード間の最短経路を計算する方法であって、
前記ネットワークのトポロジに変化があると、起点となるノードである起点ノードからノード間の上流下流の関係をたどって到達し得るノードと該ノード同士における上流下流の接続関係とを含む情報を計算対象ツリーとし、
前記トポロジの変化が新たな第１のリンクの追加である場合、前記計算対象ツリー内のノードであって該第１のリンクで接続される第１および第２のノードについて、前記起点ノードから前記計算対象ツリーに沿って前記第２のノードまで到達する経路および前記第１のリンクの経路を経由して前記第１のノードまで到達する経路からなる第１の経路と、前記起点ノードから前記計算対象ツリーに沿って前記第１のノードまで到達する第２の経路との距離を比較し、前記第２の経路よりも前記第１の経路の距離が短ければ、前記第１の経路を前記起点ノードから前記第１のノードまでの最短経路の候補とし、
前記トポロジの変化がリンクの削除である場合、削除されたリンクの下流側の情報を前記計算対象ツリーから削除し、該計算対象ツリー内の第３のノードと該計算対象ツリーに属さない第４のノードとを結ぶ第２のリンクを見つけると、前記起点ノードから前記計算対象ツリーに沿って前記第３のノードまで到達する経路および前記第２のリンクからなる経路を前記起点ノードから第４のノードまでの最短経路の候補とし、
前記起点ノードから前記第１または第４のノードに至る経路について、前記最短経路の候補が複数あれば、複数の候補から距離が最短な候補を特定し、特定した候補を最短経路に決定するものである。
【００１３】
さらに、本発明のプログラムは、上記本発明の最短経路計算方法をコンピュータに実行させるものである。
【発明の効果】
【００１４】
本発明によれば、ネットワークにリンクが新規に追加され、または、ネットワークからリンクが削除されたことによりトポロジに変化が起きても、最短経路を計算することが可能となる。また、非特許文献２に開示された方法では計算できない、新たに追加されたリンクが存在する場合についても最短経路の計算が可能となる。
【発明を実施するための最良の形態】
【００１５】
本実施形態の最短経路計算装置の構成を説明する。図１は本実施形態の最短経路計算装置の一構成例を示すブロック図である。
【００１６】
図１に示すように、本実施形態の最短経路計算装置１０は、経路計算に必要な情報を記憶する記憶部１２と、情報管理部１４１および経路計算部１４２を含むプロセッサ１４と、外部の装置とデータを送受信するインタフェース部１６とを有する。
【００１７】
記憶部１２には、ネットワーク内のノード間の最短経路の情報である経路情報と、ネットワークにおけるノード間の物理リンクおよび仮想リンクの接続状況を示すトポロジ情報とが格納される。また、記憶部１２には、最短経路を決定するまでの計算途中の情報も格納される。
【００１８】
インタフェース部１６は、プロセッサ１４による計算結果をネットワーク（不図示）を介して他の装置に通知し、ネットワークを介して他の装置から受信する、トポロジに関する情報をプロセッサ１４に渡す。
【００１９】
プロセッサ１４には、プログラムを格納するためのメモリ（不図示）が設けられている。プロセッサ１４がプログラムを実行することで、情報管理部１４１および経路計算部１４２が最短経路計算装置１０に仮想的に構成される。
【００２０】
情報管理部１４１は、ネットワーク状況を監視し、ネットワーク内にリンクが新規に設定される、または、ネットワーク内のリンクが削除されると、それらの変化の情報を経路計算部１４２に通知する。また、経路計算部１４２から計算結果を取得したり、インタフェース部１６からトポロジに関する情報を取得したりすると、取得した計算結果や情報に基づいて記憶部１２内の情報を更新する。ネットワーク状況を監視する方法の一例として、ルータ間でやり取りされるルーティングテーブルを取得する方法があるが、これ以外の方法であってもよい。
【００２１】
経路計算部１４２は、ネットワーク状況の変化の情報を情報管理部１４１から受け取ると、経路計算を行い、計算結果を情報管理部１４１に通知する。経路計算方法の詳細は、後述の最短経路計算方法の手順で説明する。
【００２２】
最短経路計算装置１０は、上述したように、経路計算機能を備え、ネットワーク内の各ルータのルーティングテーブルを受け取り、または各ルータの経路計算を一手に引き受け、計算結果に基づいてネットワーク内の各ルータに出力先の設定を指示するコンピュータである。最短経路計算装置１０は、ネットワーク内の特定のルータであってもよく、経路計算処理を専門に実行する装置であってもよい。
【００２３】
この最短経路計算装置を用いて、ネットワークにおける２ノード間を結ぶ最短経路を計算する例について考える。
【００２４】
本実施形態の最短経路計算方法は、２ノード間を結ぶ最短経路のうち、１つのノードを起点としてその他の複数のノードとの最短経路を一度に計算する方法である。ここで、本実施形態で使用する用語について説明する。
【００２５】
図２Ａおよび図２Ｂは１つのノードを起点とする経路を示す情報の一例を示す図である。図２Ａはツリー構造で最短経路を表した図であり、図２Ｂは個別に最短経路を表した図である。
【００２６】
「経路ツリー」は２点間を結ぶ経路のうち、起点が同じ経路の一部を示す。本実施形態では、経路の集合である経路集合をツリー構造で表す。２ノード間を結ぶ経路は起点から終点までツリーに沿って進んだ時に通過するノードとリンクからなる。図２Ａに示すようなツリーが存在したとすると、ノードｓが起点であり、ノードｓからｂまでの経路はツリーに沿ってノードｓからｂまでに行くまでに通過するノードであるｓ、ａ、ｂを用いてｓ→ａ→ｂのように表わされる。
【００２７】
ノードａおよびｄのそれぞれから見てノードｓは上流側であり、ノードｂおよびｃのそれぞれから見てノードａは上流側である。反対に、ノードｓから見てノードａ〜ｄは下流側である。
【００２８】
集合に含まれる経路には、共通部分を持つものも存在する。これらの情報を、図２Ｂに示すように、個別に持つのは情報的に冗長である。ツリー構造で表すことにより、冗長な情報をまとめて、共通な部分を管理する情報で表すことができる。図２Ａに示すツリーでは、ノードｓからｂ、そして、ノードｓからｃを結ぶ経路は、ノードｓとａの間をともに通る。この場合、個別の経路でノードｓとａの間を通ることを述べる（図２Ｂ参照）のでなく、図２Ａのようなツリー構造であれば、ノードｓからａの間を通る経路が存在することを示す情報でそれぞれがノードｓとａの間を通ることを示すことができる。これにより、冗長な情報を持つことを防ぐことができる。なお、この例では、ツリー内においてノードｓ→ａを結ぶリンクを最短経路の存在を示す情報として使用している。
【００２９】
図２Ａ示すツリー構造の情報が記憶部１２に格納される経路情報となる。図には示していないがノード間を結ぶ経路を候補経路として挙げ、そのうち最終的に最短経路となるものだけを図２Ａに示すツリー構造に残して経路情報として記憶部１２に記録している。
【００３０】
「ノードＺの配下ツリー」は、ノードＺを経由する経路ツリーの情報において、ノードＺから下流に位置するリンクとノードを指す。ノードＺ自身も配下ツリーに含まれる。図２Ａの経路ツリーの例を用いると、ノードａの配下ツリーは、経路ツリーのうち、ノードａ、ｂ、ｃを結ぶ部分になる。
【００３１】
ノード間の「距離」は、ネットワークのノード間の実際の長さを意味するのではなく、経路上のリンクに振られたコストの総和を意味する。リンクコストがいずれのノード間でも同じであれば、「距離」はホップ数に比例する。
【００３２】
本実施形態の最短経路計算装置１０が実行する最短経路計算方法の手順を説明する。図３および図４は本実施形態の最短経路計算方法の手順を示すフローチャートである。
【００３３】
ここでは、ノードＸを起点とする最短経路集合において、最短経路ツリーＳ’ｘを計算対象とすることを考える。トポロジ変更前における、ノードＸを起点とする最短経路集合の情報を最短経路ツリーＳｘとして、記憶部１２に予め登録されているものとする。
【００３４】
図３に示すように、最短経路計算装置１０は、最初の手順では、ネットワークを監視し（ステップ１０１）、リンクの削除またはリンクの追加があるか否かを調べる（ステップ１０２）。リンクの削除および追加がなければ、ステップ１０１に戻る。
【００３５】
計算対象ツリーＳ’ｘが通っているノードＥａ，Ｅｂにネットワークトポロジに、新たに設定されたリンクＬ１が存在する場合について考える。ステップ１０２で、最短経路計算装置１０は、ネットワークに新たにリンクＬ１が設定されていることを認識すると、次の２通りの経路についてノードＥａまでの距離を計算する。１つ目の経路は、計算対象ツリーＳ’ｘにおけるノードＸからノードＥｂまでの経路（これを経路Ｒ２とする）とノードＥｂからリンクＬ１を経由してノードＥａに到達する経路とを合わせた（Ｒ２＋Ｌ１）の経路である。２つ目の経路は、計算対象ツリーＳ’ｘにおけるノードＸからノードＥａまでの経路（これを経路Ｒ１とする）である。最短経路計算装置１０は、経路（Ｒ２＋Ｌ１）と経路Ｒ１とを比較し、前者の距離のほうが短ければ、前者の経路を候補経路として扱う（ステップ１０３）。
【００３６】
一方、ネットワークからリンクが削除されている場合について考える。ステップ１０２またはステップ１０４で、最短経路計算装置１０は、ネットワークからリンクが削除されていることを認識すると、最短経路ツリーＳｘに、トポロジから削除されるノードやリンクをまたぐ上流下流の関係に対応する情報が存在するか確認する。削除されるノードやリンクが存在すれば、対応するノード間の上流下流の関係に関する情報を削除する。削除されるノードやリンクが存在しないならばそのままにする。ノードＸから経路ツリーをたどって到達することのできるノードおよびノード間の上流下流の関係を含めて、これらを計算対象の最短経路ツリーＳ’ｘとして扱う（ステップ１０５）。
【００３７】
続いて、最短経路計算装置１０は、計算対象ツリーＳ’ｘが通っているノードＥｃと計算対象ツリーＳ’ｘが通っていないノードＥｄとを結ぶリンクＬ２を検索する。検索の結果、リンクＬ２を見つけると、ノードＸからノードＥｄに到達する経路として、計算対象ツリーＳ’ｘを経由してノードＥｃを結ぶ経路とノードＥｃからリンクＬ２を経由してノードＥｄまで到達する経路とを合わせた経路（これを経路Ｃとする）に着目する。そして、この経路Ｃを候補経路の１つとして扱う（ステップ１０６）。リンクの追加があれば、ステップ１０３に進む（ステップ１０７）。
【００３８】
上述のようにして、新規にリンクが追加された場合とリンクが削除された場合のいずれについても、最短経路計算装置１０は、候補経路を見つけ、候補経路がなくなるまで、以下の作業が繰り返される。
【００３９】
候補経路が複数存在するならば（ステップ１０８）、最短経路計算装置１０は、候補経路のうち、距離が最短なものを選び出す。選んだ時点までにわかっている経路の終点までの経路のうち、選んだ経路が最短であれば、選ばれた候補経路を、候補経路の終点までの最短経路、すなわち計算結果とする（ステップ１０９）。
【００４０】
新規にリンクが設定された場合の上記ノードＥａ、およびリンクが削除された場合の上記ノードＥｄを、以下ではノードＥ１と称すると、最短経路計算装置１０は、計算対象ツリーＳ’ｘにおけるノードＥ１までの経路情報を、選んだ経路のものに変更する。具体的には、ノード間の上流下流の関係を、選んだ経路の通りに変更する（図４に示すステップ１１０）。なお、ノードＥ１は本発明の中継ノードに相当する。
【００４１】
ノードＥ１に配下ツリーが存在する場合、最短経路計算装置１０は、配下ツリーに通るノードまでの距離を、ステップ１０９で選んだ経路と配下ツリーを経由する経路とを合わせたものに書き換える（ステップ１１１）。これにより、起点からノードＥ１までの経路の距離とノードＥ１からその配下ツリーを構成するノードまでの距離が変化したため、いくつかのノードではこの時点で見つかっている今までの経路よりも、配下ツリーを構成するノードを経由する経路の方が短くなる場合がある。また、ネットワークトポロジに新規追加されたリンクが、配下ツリーを構成するノード同士を結ぶ場合、配下ツリーとノードＥ１までの最短経路を経由する場合より、新規追加リンク経由の経路のほうが、距離が短くなる場合も生じる。このような経路を探索するために、最短経路計算装置１０は、次のステップ１１２やステップ１１３の動作を行う。
【００４２】
ステップ１１２では、最短経路計算装置１０は、トポロジに新規追加されたリンクのうち、ノードＥ１の配下ツリーを構成するノード同士を結ぶリンクがあるか探す。ノードＥ１の配下ツリーを構成するノード同士ｃ１、ｃ２を結ぶリンクＬ３があると、ツリーの起点のノードＸからノードＥ１までの最短経路と配下ツリーとリンクＬ３とを経由して端点ｃ１に到達する経路（経路Ｒ５とする）の距離と、ノードＸからノードＥ１までの最短経路と配下ツリーとを経由して端点ｃ１に到達する経路（経路Ｒ４とする）の距離とを比較する。そして、経路Ｒ５が経路Ｒ４に比べて短くなるような端点が存在すれば、経路Ｒ５を候補経路として扱う処理を行う。
【００４３】
ステップ１１３では、最短経路計算装置１０は、ノードＥ１の配下ツリーを構成するノードを起点とし、配下ツリーを構成しないノードを終点とするリンクを探す。ノードＥ１の配下ツリーのノードｄ１を起点として配下ツリーを構成しないノードｄ２を終点とするリンクＬ４があると、ツリーの起点のノードＸからノードＥ１までの最短経路とノードＥ１から端点ｄ１までの経路とリンクＬ４とを経由して端点ｄ２に到達する経路（経路Ｒ７とする）の距離と、ノードＸからノードＥ１までの最短経路およびノードＥ１から端点ｄ２までの経路を含む経路（経路Ｒ６とする）の距離とを比較する。そして、経路Ｒ７が経路Ｒ６に比べて短くなるような端点が存在すれば、経路Ｒ７を候補経路として扱う処理を行う。ステップ１１２、ステップ１１３の作業が終了すると、ステップ１０８に戻る。
【実施例１】
【００４４】
本実施形態の最短経路計算方法の手順を、具体例を用いて説明する。ここでは、図３および図４を参照するとともに、各ステップの動作について図５から図１０を用いて説明する。
【００４５】
図５は、トポロジ変更前に計算された、ノードＸを起点とする最短経路ツリーＳｘを示す図である。ここでは、起点となるノードＸの他に、以下の説明で代表的なノードとなるノードＡからＤを図に示している。なお、ノード間の最短経路を示す破線矢印には、他のノードを経由していてもよく、図に示すことを省略している。
【００４６】
図６は図３に示したステップ１０３の処理を説明するための図である。
【００４７】
ネットワークに新規リンクが設定されていると、ステップ１０３で、最短経路計算装置１０は、計算対象ツリーＳ’ｘが通るノード同士を結ぶ新規追加リンクＬ１を探す。そして、リンクＬ１を見つけると、その端点となるノードＧおよびノードＨのそれぞれに到達する経路のうち、それまで見つかっている経路Ｒ１（Ｘ→Ｊ→Ｇ、またはＸ→Ｈ）と、Ｓ’ｘとＬ１を通る経路Ｒ２（Ｘ→Ｈ→Ｇ、またはＸ→Ｊ→Ｇ→Ｈ）とを比較する。経路Ｒ２が経路Ｒ１よりも短ければ、経路Ｒ２を候補経路として扱う。
【００４８】
ノードＧまでの経路について着目すると、最短経路計算装置１０は、経路Ｒ１（Ｘ→Ｊ→Ｇ）と経路Ｒ２（Ｘ→Ｈ→Ｇ）とを比較し、経路Ｒ２の距離が経路Ｒ１よりも短ければ、経路Ｒ２を候補経路として扱う。図６はノードＧまでの経路について着目した場合を示す。ノードＨまでの経路についても、ノードＧと同様に行う。
【００４９】
図７はネットワークでリンクが削除された場合の一例を示す図である。図７には２箇所のリンクが削除されている場合を示しているが、削除されるリンクは１箇所であってもよく、３箇所以上あってもよい。図７は図３に示したステップ１０５の処理を示す。図８は図３に示したステップ１０６の処理を説明するための図であり、図９は図３に示したステップ１０９の処理を説明するための図である。
【００５０】
図７に示すように、ノードＡとＢを結ぶリンクＡ→Ｂと、ノードＣとＤを結ぶリンクＣ→Ｄがトポロジから削除されるとする。最短経路計算装置１０は、最短経路ツリーＳｘの中において削除されたリンクＡ→Ｂ、Ｃ→Ｄをまたぐ上流下流の関係、すなわちノードＡとノードＢの間の接続関係とノードＣとノードＤの間の接続関係が存在するか確認する。この例の場合、ともに存在する。このとき、最短経路計算装置１０は、最短経路ツリーＳｘからリンクＡ→ＢとリンクＣ→Ｄに対応する情報を削除する。この作業により、最短経路ツリーＳｘは、ノードＸを頂点としてノードＡ、ノードＣまで結ぶ経路ツリーと、ノードＢ、ノードＤをそれぞれ頂点とする経路ツリーに分割される。ノードＸからツリーを経由して到達することのできる、ノードＸからノードＡ，Ｃまで結ぶ部分ツリーを計算対象ツリーＳ’ｘとする。
【００５１】
ステップ１０６では、最短経路計算装置１０は、ステップ１０５で分割された計算対象ツリーＳ’ｘを構成するノードまでの経路を探索する。このアルゴリズムでは、計算対象ツリーＳ’ｘ内のノードから計算対象ツリーＳ’ｘ外に至る経路の終点まで１ホップ（リンクＬ２）で到達でき、リンクＬ２の始点まで、計算対象ツリーＳ’ｘを通って行く経路を探索対象とする。図８では、ノードＸからノードＰまでの経路Ｘ→Ｎ→Ｐがそのような経路に該当する。見つかった経路はノードＸからノードＰまでの最短経路の候補として扱う。
【００５２】
最短経路計算装置１０は、新規にリンクが設定された場合、リンクが削除された場合のそれぞれについて、上述の処理を行った後、図３に示したステップ１０９で、候補経路として扱われている経路のうち、終点までの距離が最短である経路を選び出す。
【００５３】
リンクが削除された場合で説明すると、選んだ時点までにわかっている経路の終点までの経路のうち、選んだ経路が最短であれば、図９に示すように、最短経路計算装置１０は、選んだ経路を、計算対象ツリーの起点ノードＸと終点ノードＰまでを結ぶ最短経路Ｒ３として扱う。続いて、図４に示したステップ１１０で、最短経路Ｒ３の終点ノードＰにおける上流のノードに関する情報を最短経路Ｒ３における上流であるノードＮに関する情報に書き換える。つまり、図８および図９から、ノードＰの親ノードをノードＱからノードＮに書き換える。
【００５４】
以下では、ネットワークでリンクが削除された場合のノードＰに着目して説明するが、新規にリンクが設定された場合には、ノードＰをノードＧに置き換えて考えればよく、その場合の詳細な説明を省略する。
【００５５】
経路の終点ノードＰの配下ツリー上にノードが存在するならば、最短経路計算装置１０は、ツリー上のノードまでの距離を、経路Ｒ３と配下ツリーを通ってツリー上のノードまで到達する経路の距離に変更する。図９に示す例では、ノードＰの配下にノードＳとノードＴがある。配下ツリーの情報が記憶部１２に存在するならば、配下ツリーから各ノードまでの距離はツリーの情報より容易に計算することが可能である。
【００５６】
ノードＰからその配下ツリー上に存在するノードＴまでの距離が２であり、計算対象ツリーＳ’ｘの起点ノードＸからノードＰまでの距離が５であるなら、最短経路Ｒ３と配下ツリーを経由する経路の距離は７と算出される。この距離７の値をノードＸからノードＴまでの距離の値とする。そして、ノードＰの配下ツリーを計算対象ツリーＳ’ｘに含める。
【００５７】
図１０は図４に示したステップ１１２およびステップ１１３の処理を説明するための図である。
【００５８】
ステップ１１２では、最短経路計算装置１０は、新たにトポロジに追加されたリンクのうち、ノードＰの配下ツリー上に存在するノードを結ぶものを探す。そして、そのようなリンクＬ３の両端（ノードＳ、ノードＴ）のうち、計算対象ツリーＳ’ｘを経由してそれらのノードに到達する経路よりも、計算対象ツリーＳ’ｘとリンクＬ３を経由する経路の方が距離の短くなる場合を探す。図１０における例では、ノードＰの配下ツリー上に存在するノードＴまで到達するのに、計算対象ツリーＳ’ｘ経由の経路Ｒ４（Ｘ→Ｐ→Ｔ）とリンクＬ３を経由する経路Ｒ５（Ｘ→Ｐ→Ｓ→Ｔ）との距離を比較する。そして、経路Ｒ５の距離が経路Ｒ４よりも短い場合を探す。もしそのような場合が存在すれば、経路Ｒ５を候補経路の１つとして扱う。
【００５９】
ステップ１１３では、最短経路計算装置１０は、ノードＰの配下ツリーを経由し、計算対象ツリーＳ’ｘ内に存在する経路よりも距離が短い経路を探索する。このとき、配下ツリー上のノードからの距離がわかる終点ノードまでの経路を探索する。
【００６０】
該当する経路のうち、このアルゴリズムでは経路の終点まで１ホップ（リンクＬ４）で到達でき、リンクの始点まで、計算対象ツリーＳ’ｘを通って行く経路を探索対象とする。図１０では、ノードＰの配下ツリーのノードＳを起点として配下ツリーを構成しないノードＭを終点とするリンクＬ４があると、ツリーの起点のノードＸからノードＰまでの最短経路とノードＰからノードＳまでの経路とリンクＬ４とを経由してノードＭに到達する経路（経路Ｒ７：経路Ｘ→Ｐ→Ｓ→Ｍ）の距離と、ノードＸから計算対象ツリーＳ’ｘを経由してノードＭまでの最短経路の候補（経路Ｒ６とする）の距離とを比較する。そして、経路Ｒ７が経路Ｒ６に比べて短くなるような端点が存在すれば、経路Ｒ７を候補経路として扱う処理を行う。見つかった経路Ｒ７は候補経路の１つとして扱う。
【００６１】
なお、図１０では、経路Ｒ６をＸ→ノード（不図示）→Ｍと表しているが、経路Ｒ６はＸ→Ｐ→Ｍであってもよい。経路Ｒ６として、様々な経路が考えられ、図１０では、その一例を示したにすぎない。
【００６２】
最短経路計算装置１０は、これらステップ１１２およびステップ１１３の動作を、候補経路として扱われる経路が存在しなくなるまで繰り返す（ステップ１０８）。
【００６３】
本発明によれば、ネットワークにリンクが新規に追加され、または、ネットワークからリンクが削除されたことによりトポロジに変化が起きても、最短経路を計算することが可能となる。また、非特許文献２に開示された方法では計算できない、新たに追加されたリンクが存在する場合についても最短経路の計算が可能となる。これは新たに追加されたリンクを経由するような経路も探索対象となるためである。これにより、リンクの追加が生じたときも最短経路の計算が可能となる。
【図面の簡単な説明】
【００６４】
【図１】本実施形態の最短経路計算装置の一構成例を示すブロック図である。
【図２Ａ】１つのノードを起点とする経路について、ツリー構造で最短経路を表した図である。
【図２Ｂ】１つのノードを起点とする経路について、個別に最短経路を表した図である。
【図３】本実施形態の最短経路計算方法の手順を示すフローチャートである。
【図４】本実施形態の最短経路計算方法の手順を示すフローチャートである。
【図５】トポロジ変更前に計算された、ノードＸを起点とする最短経路ツリーＳｘを示す図である。
【図６】図３に示したステップ１０３の処理を説明するための図である。
【図７】ネットワークでリンクが削除された場合の一例を示す図である。
【図８】図３に示したステップ１０５およびステップ１０６の処理を説明するための図である。
【図９】図３に示したステップ１０９の処理を説明するための図である。
【図１０】図４に示したステップ１１２およびステップ１１３の処理を説明するための図である。
【符号の説明】
【００６５】
１０    最短経路計算装置
１２    記憶部
１４    プロセッサ
１６    インタフェース部
１４１    情報管理部
１４２    経路計算部
【図１】
2010130173.tif 000003
【図２Ａ】
2010130173.tif 000004
【図２Ｂ】
2010130173.tif 000005
【図３】
2010130173.tif 000006
【図４】
2010130173.tif 000007
【図５】
2010130173.tif 000008
【図６】
2010130173.tif 000009
【図７】
2010130173.tif 000010
【図８】
2010130173.tif 000011
【図９】
2010130173.tif 000012
【図１０】
2010130173.tif 000013