(57)【要約】  本発明の計算装置は、ネットワークの２つのノード間を結ぶ最短経路を計算する。また、ノードＹを起点とする最短経路をその他のノードごとに計算することで、ノードＹを起点とする最短経路の集合である最短経路群を一度に計算する。ノードＹを起点とする最短経路群を計算する際には、記憶部にノードＸを起点とする最短経路群が予め記憶されている場合、ノードＸを起点とする最短経路群のうち、ノードＹからノードＹよりも下流側に位置するノードまでの経路を、ノードＹを起点とする最短経路群の計算結果の一部とする。
2010058797.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの２つのノード間を結ぶ最短経路を計算する計算装置であって、
前記ノード間の最短経路群を含む情報を記憶する記憶部と、
ノードＹを起点とする最短経路をその他のノードごとに計算することで、ノードＹを起点とする最短経路の集合である最短経路群を一度に計算し、また、最短経路群を、各ノードの上流に位置するノードに関する１つの情報と下流に位置するノードに関する複数の情報とからなり、これらの情報における上流下流の関係をたどることで任意のノード間の経路をツリー構造で表現した経路情報を用いて計算することとし、
ノードＹを起点とする最短経路群を計算する際に、前記記憶部にノードＸを起点とする最短経路群が予め記憶されている場合、ノードＸを起点とする最短経路群のうち、ノードＹからノードＹよりも下流側に位置するノードまでの経路をそれぞれのノードまでの最短経路、すなわち計算結果とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部とする第１の処理を行う制御部と、
を備えることを特徴とする計算装置。
【請求項２】
前記制御部は、ノードＹを起点とする最短経路群の中間計算結果の一部を通らないノードのうち、中間計算結果の一部を通るノードから１ホップのリンクで到達できるノードａを検索し、ノードＹからノードａまでの経路のうち、該１ホップのリンクとノードＹから該リンクの端点のうち中間計算結果の一部を通るノードまで中間計算結果をたどっていく経路とを通る経路Ｒ１を、ノードＹからノードａまでの最短経路の候補として扱う第２の処理を行い、
ノードＹからノードａまでの最短経路の候補が存在する場合、最短経路の候補のうち距離が最短なものを選択し、選択した最短経路Ｒ２の距離が、ノードＹからノードａまでの経路として最短経路Ｒ２を選択した時点までにわかっている経路と比較して、最短であれば、選択した最短経路Ｒ２をノードＹからノードａまでの最短経路とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部として扱う第３の処理を行うことを特徴とする請求項１に記載の計算装置。
【請求項３】
前記制御部は、前記第３の処理において、ノードＹを起点とし、いずれかのノードまでを結ぶ最短経路の候補が存在する場合、これらの最短経路の候補のうち距離が最短なものを選択し、選択した最短経路Ｒ２の距離が、ノードＹからノードａまでの経路として最短経路Ｒ２を選択した時点までにわかっている経路と比較して、最短であれば、選択した最短経路Ｒ２をノードＹからノードａまでの最短経路とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部として扱うことを特徴とする請求項２に記載の計算装置。
【請求項４】
前記制御部は、ノードＹからノードａよりも下流側に位置するノードまでの距離を、選択したノードＹからノードａまでの最短経路と、ノードａからノードａよりも下流側に位置するノードまで経路ツリーに従って到達する経路と、を通る距離に変更し、ノードａよりも下流側に位置する経路ツリーをノードＹを起点とする最短経路群の中間計算結果の一部として扱う第４の処理を行うことを特徴とする請求項３に記載の計算装置。
【請求項５】
前記制御部は、ノードａよりも下流側に位置するノードから１ホップのリンクで到達できるノードａ’を検索し、ノードＹからノードａ’までの経路として、ノードＹから経路ツリーに従ってノードａ’まで到達する経路Ｒ３と、該１ホップのリンク、選択したノードＹからノードａまでの最短経路、およびノードａから該１ホップのリンクの端点まで経路ツリーに従って到達する経路を通る経路Ｒ４と、に着目し、後者の経路Ｒ４の距離のほうが短ければ、経路Ｒ４を、ノードＹからノードａ’までの最短経路の候補として扱う第５の処理を行い、その後に、第３の処理に戻って、ノードＹからノードａ’までの最短経路を確定することを特徴とする請求項４に記載の計算装置。
【請求項６】
ネットワークの２つのノード間を結ぶ最短経路をコンピュータが計算する経路計算方法であって、
前記コンピュータは、制御部と前記ノード間の最短経路群を含む情報を記憶する記憶部とを有しており、
前記制御部は、ノードＹを起点とする最短経路をその他のノードごとに計算することで、ノードＹを起点とする最短経路の集合である最短経路群を一度に計算し、また、最短経路群を、各ノードの上流に位置するノードに関する１つの情報と下流に位置するノードに関する複数の情報とからなり、これらの情報における上流下流の関係をたどることで任意のノード間の経路をツリー構造で表現した経路情報を用いて計算することとし、
前記制御部が行う前記計算は、ノードＹを起点とする最短経路群を計算する際に、前記記憶部にノードＸを起点とする最短経路群が予め記憶されている場合、ノードＸを起点とする最短経路群のうち、ノードＹからノードＹよりも下流側に位置するノードまでの経路をそれぞれのノードまでの最短経路、すなわち計算結果とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部とする第１の処理を含むことを特徴とする経路計算方法。
【請求項７】
前記制御部が行う前記計算は、
ノードＹを起点とする最短経路群の中間計算結果の一部を通らないノードのうち、中間計算結果の一部を通るノードから１ホップのリンクで到達できるノードａを検索し、ノードＹからノードａまでの経路のうち、該１ホップのリンクとノードＹから該リンクの端点のうち中間計算結果の一部を通るノードまで中間計算結果をたどっていく経路とを通る経路Ｒ１を、ノードＹからノードａまでの最短経路の候補として扱う第２の処理と、
ノードＹからノードａまでの最短経路の候補が存在する場合、最短経路の候補のうち距離が最短なものを選択し、選択した最短経路Ｒ２の距離が、ノードＹからノードａまでの経路として最短経路Ｒ２を選択した時点までにわかっている経路と比較して、最短であれば、選択した最短経路Ｒ２をノードＹからノードａまでの最短経路とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部として扱う第３の処理と、をさらに含むことを特徴とする請求項６に記載の経路計算方法。
【請求項８】
前記制御部が行う前記計算は、
前記第３の処理において、ノードＹを起点とし、いずれかのノードまでを結ぶ最短経路の候補が存在する場合、これらの最短経路の候補のうち距離が最短なものを選択し、選択した最短経路Ｒ２の距離が、ノードＹからノードａまでの経路として最短経路Ｒ２を選択した時点までにわかっている経路と比較して、最短であれば、選択した最短経路Ｒ２をノードＹからノードａまでの最短経路とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部として扱うことを特徴とする請求項７に記載の経路計算方法。
【請求項９】
前記制御部が行う前記計算は、
ノードＹからノードａよりも下流側に位置するノードまでの距離を、選択したノードＹからノードａまでの最短経路と、ノードａからノードａよりも下流側に位置するノードまで経路ツリーに従って到達する経路と、を通る距離に変更し、ノードａよりも下流側に位置する経路ツリーをノードＹを起点とする最短経路群の中間計算結果の一部として扱う第４の処理をさらに含むことを特徴とする請求項８に記載の経路計算方法。
【請求項１０】
前記制御部が行う前記計算は、
ノードａよりも下流側に位置するノードから１ホップのリンクで到達できるノードａ’を検索し、ノードＹからノードａ’までの経路として、ノードＹから経路ツリーに従ってノードａ’まで到達する経路Ｒ３と、該１ホップのリンク、選択したノードＹからノードａまでの最短経路、およびノードａから該１ホップのリンクの端点まで経路ツリーに従って到達する経路を通る経路Ｒ４と、に着目し、後者の経路Ｒ４の距離のほうが短ければ、経路Ｒ４を、ノードＹからノードａ’までの最短経路の候補として扱う第５の処理をさらに含み、
前記制御部は、その後に、第３の処理に戻って、ノードＹからノードａ’までの最短経路を確定することを特徴とする請求項９に記載の経路計算方法。
【請求項１１】
請求項６から請求項１０のいずれか１項に記載の経路計算方法を前記コンピュータに実行させるためのプログラム。
【請求項１２】
複数のノードがリンクによって接続されたネットワークにおいて、前記複数のノードのうち２つのノード間の最短の通信経路である最短経路をコンピュータが計算する経路計算方法であって、
前記コンピュータは、制御部と前記ノード間の最短経路を含む情報を記憶する記憶部とを有しており、
前記制御部は、
前記複数のノードのうち通信経路の起点となる起点ノードと該起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、該第１の通信経路以外に計算済みであり前記記憶部に記憶されている第２の通信経路の距離とを比較する比較処理と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短い場合、前記第１の通信経路を前記最短経路の候補として扱う処理と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短くない場合、前記第２の通信経路を前記最短経路の候補として扱う処理とを実行し、
該隣接ノードを起点ノードとして前記比較処理をさらに実行することを特徴とする経路計算方法。
【請求項１３】
請求項１２に記載の経路計算方法において、
前記制御部は、
前記最短経路の候補からなる最短経路ツリー経由の前記ノードまでの距離と、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とを比較する処理と、
該比較の結果、前記最短経路ツリー経由の前記ノードまでの距離と該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とのどちらか短い方の経路を、前記ノードまでの最短経路として採用する処理と、をさらに実行することを特徴とする経路計算方法。
【請求項１４】
請求項１２に記載の経路計算方法において、
前記制御部は、
前記第１の通信経路の距離が前記ノードがそれぞれ記録している距離の記録値よりも短い場合、前記記録値を前記第１の通信経路の距離に更新する処理をさらに実行することを特徴とする経路計算方法。
【請求項１５】
請求項１３に記載の経路計算方法において、
前記制御部は、
前記最短経路ツリー経由の前記ノードまでの距離が、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離よりも短い場合、前記ノードがそれぞれ記録している距離の記録値を前記最短経路ツリー経由の前記ノードまでの距離に更新する処理をさらに実行することを特徴とする経路計算方法。
【請求項１６】
複数のノードがリンクによって接続されたネットワークにおいて、前記複数のノードのうち２つのノード間の最短の通信経路である最短経路を計算するプログラムであって、
前記複数のノードのうち通信経路の起点となる起点ノードと該起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、該第１の通信経路以外に計算済みである第２の通信経路の距離とを比較する比較手順と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短い場合、前記第１の通信経路を前記最短経路の候補として扱う手順と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短くない場合、前記第２の通信経路を前記最短経路の候補として扱う手順と、
該隣接ノードを起点ノードとしてさらに前記比較手順と、をコンピュータに実行させるためのプログラム。
【請求項１７】
請求項１６に記載のプログラムにおいて、
前記最短経路の候補からなる最短経路ツリー経由の前記ノードまでの距離と、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とを比較する手順と、
該比較の結果、前記最短経路ツリー経由の前記ノードまでの距離と該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とのどちらか短い方の経路を、前記ノードまでの最短経路として採用する手順とをさらに含むことを特徴とするプログラム。
【請求項１８】
複数のノードがリンクによって接続されたネットワークにおいて、前記複数のノードのうち２つのノード間の最短の通信経路である最短経路を計算する計算装置であって、
前記ノード間の最短経路を含む情報を記憶する記憶部と、
前記複数のノードのうち通信経路の起点となる起点ノードと該起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、該第１の通信経路以外に前記記憶部に記憶された第２の通信経路の距離とを比較し、前記第１の通信経路の距離が前記第２の通信経路の距離よりも短い場合、前記第１の通信経路を前記最短経路の候補として扱い、また、前記第１の通信経路の距離が前記第２の通信経路の距離よりも短くない場合、前記第２の通信経路を前記最短経路の候補として扱い、該隣接ノードを起点ノードとして前記第１の通信経路の距離と前記第２の通信経路の距離とをさらに比較していく制御部とを有することを特徴とする計算装置。
【請求項１９】
請求項１８に記載の計算装置において、
前記制御部は、前記最短経路の候補からなる最短経路ツリー経由の前記ノードまでの距離と、該最短経路ツリー以外の前記記憶部に記憶された経路ツリー経由の前記ノードまでの距離とを比較し、該比較の結果、前記最短経路ツリー経由の前記ノードまでの距離と該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とのどちらか短い方の経路を、前記ノードまでの最短経路として採用することを特徴とする計算装置。
【請求項２０】
請求項１８に記載の計算装置において、
前記制御部は、前記第１の通信経路の距離が前記ノードがそれぞれ記録している距離の記録値よりも短い場合、前記記録値を前記第１の通信経路の距離に更新することを特徴とする計算装置。
【請求項２１】
請求項１９に記載の計算装置において、
前記制御部は、前記最短経路ツリー経由の前記ノードまでの距離が、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離よりも短い場合、前記ノードがそれぞれ記録している距離の記録値を前記最短経路ツリー経由の前記ノードまでの距離に更新することを特徴とする計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信経路を計算する経路計算方法、プログラムおよび計算装置に関する。
【背景技術】
【０００２】
ネットワーク内のノード間を結ぶリンクの敷設状況（トポロジ）に変化が生じ、それまで通れなかった箇所が通れるようになる、もしくは逆に通れた箇所が通れなくなることが生じる場合が存在する。【０００３】
出発地から目的地までの最短経路を常に維持する必要がある場合、パスのトポロジの変化に伴い、トポロジの変化後の最短経路を計算する必要がある。【０００４】
従来の最短経路計算方法では、トポロジが変化した場合、変化後のトポロジの情報を用いることで２ノード間を結ぶ最短経路を全て再計算している。【０００５】
このような最短経路計算方法は、非特許文献１に記載されている。なお、非特許文献１に記載された方法はダイクストラのアルゴリズムとして知られている。【０００６】
ただし、注意すべきこととして、トポロジの変化前と変化後の最短経路に違いが生じない場合が多々存在するということが挙げられる。また、別のノード間を結ぶ最短経路がトポロジ変化後に計算されているものが存在すれば、この最短経路とこれから計算しようとしているノード間の最短経路に違いが生じない場合も多々存在する。【０００７】
しかし、従来の最短経路計算方法では、敷設状況のみの情報を用いて、最短経路を計算しているため、最短経路に違いが生じない場合でも、既に存在する最短経路の情報を利用することは不可能である。このため、全ての最短経路を再計算する必要が生じ、計算時間が長くなるという問題が生じる。【０００８】
通常、このような最短経路計算方法では、ノード間を結ぶリンクにコストと呼ばれる数を割り当て、通過した経路に含まれるリンクのコスト和が最小になる経路を計算する。【０００９】
あるリンクのコストに変化が生じた場合に、トポロジの変化前の最短経路の情報を用いて、変化後の最短経路を計算する方法が非特許文献２に記載されている。この方法を用いることで、上述の全ての最短経路を再計算することにより計算時間が長くなるという問題を解決することができる。【００１０】
【非特許文献１】E. W. Dijkstra: A note on two problems in connexion with graphs. In Numerische Mathematik, 1(1959), S. 269-271.
【非特許文献２】B. Xiao, et al. "Dynamic update of shortest path tree in OSPF," IEEE Parallel Architectures Algorithms and Network, pp.18-23, May 2004.
【発明の開示】
【発明が解決しようとする課題】
【００１１】
非特許文献２では、トポロジの変化として、トポロジ内に存在するリンクのコスト変化が生じた場合のみを計算対象としている。【００１２】
ところが、トポロジの変化には、この他にも、ノード間を結ぶリンクが新規に追加されたもしくはリンクとノードが同時に追加された場合や、リンクが削除された場合が存在する。【００１３】
しかし、非特許文献２では、トポロジ変化前に存在していなかったリンクの追加や存在していたリンクの削除によるトポロジ変化を計算開始のトリガーとして扱っておらず、最短経路の再計算を行わない。【００１４】
このため、リンクの追加や削除によるトポロジ変化があった場合の最短経路を計算するには手順の追加が必要となる。【００１５】
本発明の目的は、リンクが新規に追加もしくは削除された場合でも、最短経路を再計算することができる経路計算方法、プログラムおよび計算装置を提供することにある。
【課題を解決するための手段】
【００１６】
本発明の特徴は、あるノードを起点とする最短経路が計算済みである場合に、別のノードを起点とする最短経路を計算するに際し、他のノードを起点とする計算済みの最短経路を利用する点にある。具体的には、本発明は以下の特徴を有する。【００１７】
本発明の計算装置は、
ネットワークの２つのノード間を結ぶ最短経路を計算する計算装置であって、
前記ノード間の最短経路群を含む情報を記憶する記憶部と、
ノードＹを起点とする最短経路をその他のノードごとに計算することで、ノードＹを起点とする最短経路の集合である最短経路群を一度に計算し、また、最短経路群を、各ノードの上流に位置するノードに関する１つの情報と下流に位置するノードに関する複数の情報とからなり、これらの情報における上流下流の関係をたどることで任意のノード間の経路をツリー構造で表現した経路情報を用いて計算することとし、
ノードＹを起点とする最短経路群を計算する際に、前記記憶部にノードＸを起点とする最短経路群が予め記憶されている場合、ノードＸを起点とする最短経路群のうち、ノードＹからノードＹよりも下流側に位置するノードまでの経路をそれぞれのノードまでの最短経路、すなわち計算結果とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部とする第１の処理を行う制御部と、
を備えることを特徴とする。【００１８】
また、前記制御部は、ノードＹを起点とする最短経路群の中間計算結果の一部を通らないノードのうち、中間計算結果の一部を通るノードから１ホップのリンクで到達できるノードａを検索し、ノードＹからノードａまでの経路のうち、該１ホップのリンクとノードＹから該リンクの端点のうち中間計算結果の一部を通るノードまで中間計算結果をたどっていく経路とを通る経路Ｒ１を、ノードＹからノードａまでの最短経路の候補として扱う第２の処理を行い、
ノードＹからノードａまでの最短経路の候補が存在する場合、最短経路の候補のうち距離が最短なものを選択し、選択した最短経路Ｒ２の距離が、ノードＹからノードａまでの経路として最短経路Ｒ２を選択した時点までにわかっている経路と比較して、最短であれば、選択した最短経路Ｒ２をノードＹからノードａまでの最短経路とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部として扱う第３の処理を行うことを特徴とする。【００１９】
また、前記制御部は、前記第３の処理において、ノードＹを起点とし、いずれかのノードまでを結ぶ最短経路の候補が存在する場合、これらの最短経路の候補のうち距離が最短なものを選択し、選択した最短経路Ｒ２の距離が、ノードＹからノードａまでの経路として最短経路Ｒ２を選択した時点までにわかっている経路と比較して、最短であれば、選択した最短経路Ｒ２をノードＹからノードａまでの最短経路とするとともに、ノードＹを起点とする最短経路群の中間計算結果の一部として扱うことを特徴とする。【００２０】
また、前記制御部は、ノードＹからノードａよりも下流側に位置するノードまでの距離を、選択したノードＹからノードａまでの最短経路と、ノードａからノードａよりも下流側に位置するノードまで経路ツリーに従って到達する経路と、を通る距離に変更し、ノードａよりも下流側に位置する経路ツリーをノードＹを起点とする最短経路群の中間計算結果の一部として扱う第４の処理を行うことを特徴とする。【００２１】
また、前記制御部は、ノードａよりも下流側に位置するノードから１ホップのリンクで到達できるノードａ’を検索し、ノードＹからノードａ’までの経路として、ノードＹから経路ツリーに従ってノードａ’まで到達する経路Ｒ３と、該１ホップのリンク、選択したノードＹからノードａまでの最短経路、およびノードａから該１ホップのリンクの端点まで経路ツリーに従って到達する経路を通る経路Ｒ４と、に着目し、後者の経路Ｒ４の距離のほうが短ければ、経路Ｒ４を、ノードＹからノードａ’までの最短経路の候補として扱う第５の処理を行い、その後に、第３の処理に戻って、ノードＹからノードａ’までの最短経路を確定することを特徴とする。【００２２】
本発明の経路計算方法は、
複数のノードがリンクによって接続されたネットワークにおいて、前記複数のノードのうち２つのノード間の最短の通信経路である最短経路をコンピュータが計算する経路計算方法であって、
前記コンピュータは、制御部と前記ノード間の最短経路を含む情報を記憶する記憶部とを有しており、
前記制御部は、
前記複数のノードのうち通信経路の起点となる起点ノードと該起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、該第１の通信経路以外に計算済みであり前記記憶部に記憶されている第２の通信経路の距離とを比較する比較処理と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短い場合、前記第１の通信経路を前記最短経路の候補として扱う処理と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短くない場合、前記第２の通信経路を前記最短経路の候補として扱う処理とを実行し、
該隣接ノードを起点ノードとして前記比較処理をさらに実行することを特徴とする。【００２３】
また、前記制御部は、
前記最短経路の候補からなる最短経路ツリー経由の前記ノードまでの距離と、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とを比較する処理と、
該比較の結果、前記最短経路ツリー経由の前記ノードまでの距離と該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とのどちらか短い方の経路を、前記ノードまでの最短経路として採用する処理と、をさらに実行することを特徴とする。【００２４】
また、前記制御部は、
前記第１の通信経路の距離が前記ノードがそれぞれ記録している距離の記録値よりも短い場合、前記記録値を前記第１の通信経路の距離に更新する処理をさらに実行することを特徴とする。【００２５】
また、前記制御部は、
前記最短経路ツリー経由の前記ノードまでの距離が、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離よりも短い場合、前記ノードがそれぞれ記録している距離の記録値を前記最短経路ツリー経由の前記ノードまでの距離に更新する処理をさらに実行することを特徴とする。【００２６】
また、本発明のプログラムは、
複数のノードがリンクによって接続されたネットワークにおいて、前記複数のノードのうち２つのノード間の最短の通信経路である最短経路を計算するプログラムであって、
前記複数のノードのうち通信経路の起点となる起点ノードと該起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、該第１の通信経路以外に計算済みである第２の通信経路の距離とを比較する比較手順と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短い場合、前記第１の通信経路を前記最短経路の候補として扱う手順と、
前記第１の通信経路の距離が前記第２の通信経路の距離よりも短くない場合、前記第２の通信経路を前記最短経路の候補として扱う手順と、
該隣接ノードを起点ノードとしてさらに前記比較手順と、をコンピュータに実行させることを特徴とする。【００２７】
また、前記プログラムは、前記最短経路の候補からなる最短経路ツリー経由の前記ノードまでの距離と、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とを比較する手順と、
該比較の結果、前記最短経路ツリー経由の前記ノードまでの距離と該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とのどちらか短い方の経路を、前記ノードまでの最短経路として採用する手順とをさらに含むことを特徴とする。【００２８】
また、本発明の計算装置は、
複数のノードがリンクによって接続されたネットワークにおいて、前記複数のノードのうち２つのノード間の最短の通信経路である最短経路を計算する計算装置であって、
前記ノード間の最短経路を含む情報を記憶する記憶部と、
前記複数のノードのうち通信経路の起点となる起点ノードと該起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、該第１の通信経路以外に前記記憶部に記憶された第２の通信経路の距離とを比較し、前記第１の通信経路の距離が前記第２の通信経路の距離よりも短い場合、前記第１の通信経路を前記最短経路の候補として扱い、また、前記第１の通信経路の距離が前記第２の通信経路の距離よりも短くない場合、前記第２の通信経路を前記最短経路の候補として扱い、該隣接ノードを起点ノードとして前記第１の通信経路の距離と前記第２の通信経路の距離とをさらに比較していく制御部とを有することを特徴とする。【００２９】
また、前記制御部は、前記最短経路の候補からなる最短経路ツリー経由の前記ノードまでの距離と、該最短経路ツリー以外の前記記憶部に記憶された経路ツリー経由の前記ノードまでの距離とを比較し、該比較の結果、前記最短経路ツリー経由の前記ノードまでの距離と該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離とのどちらか短い方の経路を、前記ノードまでの最短経路として採用することを特徴とする。【００３０】
また、前記制御部は、前記第１の通信経路の距離が前記ノードがそれぞれ記録している距離の記録値よりも短い場合、前記記録値を前記第１の通信経路の距離に更新することを特徴とする。【００３１】
また、前記制御部は、前記最短経路ツリー経由の前記ノードまでの距離が、該最短経路ツリー以外の経路ツリー経由の前記ノードまでの距離よりも短い場合、前記ノードがそれぞれ記録している距離の記録値を前記最短経路ツリー経由の前記ノードまでの距離に更新することを特徴とする。
【発明の効果】
【００３２】
本発明によれば、リンクが新規に追加もしくは削除されることでトポロジに変化が起きた場合においても、最短経路を計算することが可能となるという効果が得られる。また、非特許文献２の方法と同様、すでに計算されている経路情報を用いて最短経路を計算するため、非特許文献１の方法に比べ、最短経路の計算時間を短縮することが可能となるという効果が得られる。
【図面の簡単な説明】
【００３３】
【図１】第１実施形態の最短経路計算装置の構成を示すブロック図である。
【図２Ａ】第１及び第２実施形態における用語「最短経路ツリー」を説明する図である。
【図２Ｂ】第１及び第２実施形態における用語「配下ツリー」を説明する図である。
【図３】ネットワークにおけるノードの接続関係の一例を示す図である。
【図４】第１実施形態の最短経路計算方法の一例を説明するフローチャートである。
【図５】図４に示したステップＳ１の処理を説明する図である。
【図６】図４に示したステップＳ２，Ｓ３の処理を説明する図である。
【図７】図４に示したステップＳ４〜Ｓ６の処理を説明する図である。
【図８】図４に示したステップＳ７，Ｓ３の処理を説明する図である。
【図９】本発明の計算装置の第２実施形態を示す図である。
【図１０】図９に示した計算装置が経路を計算するトポロジの一例を示す図である。
【図１１】図９に示した計算装置における経路計算方法を説明するためのフローチャートである。
【図１２】図１１のステップＳ１１の処理を模式化した図である。
【図１３】ノード２００−１からの最短経路の一部としてノード２００−２を選択した処理を模式化した図である。
【図１４】すでに計算されている最短経路ツリーＳｅが存在する場合の処理を模式化した図である。
【図１５】図１１に示したステップＳ１７〜Ｓ１９の処理を説明するための図である。
【符号の説明】
【００３４】
１０      外部インタフェース
２０      プロセッサ
２１      経路計算部
２２      情報管理部
３０      記憶媒体
１００    計算装置
１０１    外部インタフェース部
１０２    制御部
１０３    記憶部
２００−１〜２００−８    ノード
【発明を実施するための最良の形態】
【００３５】
（第１実施形態）
以下に、本発明を実施するための第１実施形態について図面を参照して説明する。【００３６】
（１）最短経路計算装置の構成
まず、図１を参照して、本実施形態の最短経路計算装置の構成を説明する。【００３７】
図１を参照すると、本実施形態の最短経路計算装置は、外部インタフェース１０と、プロセッサ２０と、記憶媒体３０と、を含む。【００３８】
外部インタフェース１０は、他の装置に計算結果を送信したり、他の装置からトポロジに関するトポロジ情報を受信したりする。【００３９】
プロセッサ２０は、ネットワークにおける２ノード間の最短経路を計算する経路計算部２１と、経路計算部２１により計算された最短経路の経路情報や他の装置から受信したトポロジに関するトポロジ情報の更新や取得を行う情報管理部２２と、を含む。【００４０】
記憶媒体３０には、経路情報とトポロジ情報とが記憶される。【００４１】
（２）最短経路計算方法
以下、図１に示した最短経路計算装置において、ネットワークにおける２ノード間の最短経路を計算する方法について説明する。本計算方法は、２ノード間を結ぶ最短経路のうち、起点となるノードが同じ複数の最短経路を一度に計算する方法である。【００４２】
（２−１）用語の定義
まず、以下の第１実施形態の説明中で使用する用語を、以下のように定義する。なお、以下の用語の定義は、第２実施形態でも同様である。
・最短経路ツリー
最短経路ツリーは、２ノード間を結ぶ最短経路のうち、起点となるノードが同じ最短経路の集合である最短経路群を表す。【００４３】
集合に含まれる経路には、共通部分を持つものも存在する。これらの経路の情報を個別に持つのは情報的に冗長であるため、本実施形態では、経路の集合をツリー構造で表す。【００４４】
具体的には、経路は、ノードごとに、経路に沿ったときの隣接ノードの情報によって表す。より具体的には、この情報は、各ノードの上流に位置するノードに関する１つの情報と下流に位置するノードに関する複数の情報とからなり、これらの情報における上流下流の関係をたどることで任意のノード間の経路をツリー構造で表現した情報である。そして、２ノード間を結ぶ最短経路を、ツリーのうち２ノード間を結ぶ部分で示すこととする。【００４５】
例えば、図２Ａの例では、ノードｓ，ａ間の最短経路、ノードｓ，ｂ間の最短経路、ノードｓ，ｃ間の最短経路、およびノードｓ，ｄ間の最短経路は、起点となるノードｓが同じであるため、これら最短経路の集合がノードｓを起点とする最短経路ツリーとなる。
・候補経路
候補経路は、最短経路の計算結果の一部となりうる２点間を結ぶ経路を表す。最短経路を確定する際には、後述する手順を経て、候補経路のうち距離が短いものから順に最短経路の計算結果の一部として確定していく。
・親ノード
ノードｎの親ノードは、ある経路において、ノードｎに隣接（１ホップで到達）し、かつ、経路の上流側に位置するノードのことを指す。【００４６】
例えば、図２Ａの例では、ノードａの親ノードはノードｓとなる。
・配下ツリー
ノードｎの配下ツリーは、計算する最短経路の一部で、ノードｎと、ノードｎよりも下流側に位置するノードとを接続する経路ツリーを示す。なお、ノードｎ自身も配下ツリーに含まれる。【００４７】
例えば、図２Ｂの例では、ノードｘの配下ツリーは、ノードｘをノードｙおよびノードｚとそれぞれ接続している経路ツリーとなる。【００４８】
・距離
距離は、ノード間の実際の距離やホップ数ではなく、あらかじめ設定されたノード間の接続の重みづけを示す。【００４９】
（２−２）計算手順
以下、トポロジ変化後のノードの接続関係が図３のような状態となっているネットワークにおいて、２ノード間の最短経路を計算する計算手順を、図４を参照して説明する。【００５０】
ここでは、ノードＸを親ノードに持つノードＹを起点とする最短経路の集合である最短経路ツリーＳｙを計算することを考える。また、ノードＸを起点とするトポロジ変化後に計算された最短経路ツリーＳｘがすでに存在するとする。【００５１】
最初に、ステップＳ１では、経路計算部２１は、最短経路ツリーＳｘの中からノードＹを検索し、最短経路ツリーＳｘにおける、ノードＹよりも下流の部分を、ノードＹの配下ツリーとする。経路計算部２１は、ノードＹの配下ツリーを、最短経路ツリーＳｙの計算結果の一部として扱うと同時に、計算中のツリーとしても扱う。【００５２】
以降、経路計算部２１は、ノードＹを起点とし、計算中のツリーには属さないノードまでの最短経路を順次確定していく。【００５３】
まず、ステップＳ２では、経路計算部２１は、計算中のツリーに属するノードを起点とし、１ホップで到達でき、かつ、計算中のツリーに属さないノードａを終点とするリンクＬ１を検索する。そして、経路計算部２１は、ノードＹからノードａまでの経路として、計算中のツリーのうちリンクＬ１の他方の端点となるノードを通るツリーとリンクＬ１とを経由する経路Ｒ１に着目する。【００５４】
ステップＳ３では、ノードＹからノードａまでの経路が他に見つかっていない場合、経路計算部２１は、経路Ｒ１を候補経路の１つとして扱う。もし、ノードＹからノードａまでの経路が他に見つかっている場合、見つかっている中で最短の経路の距離よりも経路Ｒ１の距離が短ければ、経路Ｒ１を候補経路の１つとして扱う。【００５５】
以下の処理は、候補経路がなくなるまで繰り返される。【００５６】
次に、ステップＳ４では、経路計算部２１は、候補経路が存在する場合、候補経路のうち、距離が最短なものを選択する。そして、経路計算部２１は、ノードＹから終点のノードａまでの経路として、上記で候補経路を選択した時点までにわかっている経路と比較して、選択した候補経路の距離が最短であれば、選択した候補経路を、ノードＹから終点のノードａまでの最短経路Ｒ２、すなわち最短経路ツリーＳｙの計算結果の一部とする。【００５７】
次に、ステップＳ５では、情報管理部２２は、最短経路ツリーＳｙにおけるノードａまでの経路情報を、選択した経路Ｒ２に変更する。【００５８】
次に、ステップＳ６では、ノードａの配下ツリーが存在するのであれば、ノードＹの配下ツリーとノードａの配下ツリーとを計算中のツリーとして扱う。そして、情報管理部２２は、ノードＹからノードａの配下ツリーに属するノードまでの距離を、ステップＳ４で選択した経路とノードａの配下ツリーとを経由した経路のものに更新する。【００５９】
これにより、ノードＹからノードａまでの経路の距離と、ノードＹからノードａの配下ツリーに属するノードまでの距離が変化したため、いくつかのノードでは、この時点で見つかっている経路よりも、ノードａの配下ツリーに属するノードを経由する経路のほうが距離が短くなる場合が生じる。このような経路を探索するために、ステップＳ７で次の処理を行う。【００６０】
ステップＳ７では、経路計算部２１は、ノードａの配下ツリーに属するノードを起点とし、１ホップで到達でき、かつ、ノードａの配下ツリーに属さないノードａ’を終点とするリンクＬ２を検索する。そして、経路計算部２１は、ノードＹからリンクＬ２の端点まで到達する経路のうち、ノードａの配下ツリーとリンクＬ２を通過して到達する経路Ｒ４の距離が、配下ツリーのみを経由する経路Ｒ３の距離に比べて短くなる場合、経路Ｒ４をノードａ’の候補経路として扱うという処理を行う。この処理が終了すると、再びステップＳ３，Ｓ４の処理に戻り、ノードＹからノードａ’までの最短経路を確定する。【００６１】
（２−３）計算手順の具体例
以上の計算手順の具体例を、図５〜図８を参照して説明する。【００６２】
まず、図５を参照して、ステップＳ１について説明する。【００６３】
トポロジ変化後に計算されたノードＸを起点とする最短経路ツリーＳｘを矢印線で示す。ここでは、計算する経路は、ノードＹを起点とする最短経路ツリーＳｙである。【００６４】
ステップＳ１では、経路計算部２１は、最短経路ツリーＳｘの中からノードＹとノードＹの配下ツリーとを検索する。そして、経路計算部２１は、ノードＹの配下ツリーを最短経路ツリーＳｙの計算結果の一部として扱うと同時に、計算中のツリーとしても扱う。【００６５】
次に、図６を参照して、ステップＳ２，Ｓ３について説明する。【００６６】
ステップＳ２では、経路計算部２１は、計算中のツリーに属するノードＡから１ホップで到達できるノードとして、最初に、ノードＣを検索したとする。この場合、経路計算部２１は、ノードＹからノードＣまでの経路として、計算中のツリー（Ｙ→Ａ）と、ノードＡとＣを結ぶリンクＬ１と、を経由する経路（Ｙ→Ａ→Ｃ）Ｒ１に着目する。【００６７】
このとき、ノードＣまでの経路は他に見つかっていないので、ステップＳ３では、経路計算部２１は、経路（Ｙ→Ａ→Ｃ）Ｒ１を候補経路の１つとして扱う。【００６８】
次に、図７を参照して、ステップＳ４〜Ｓ６について説明する。【００６９】
ここでは、ノードＣまでの経路として、計算中のツリーに属するノードＤを経由する経路（Ｙ→Ｄ→Ｃ）がすでに候補経路とされている状態で、計算中のツリーに属するノードＡを経由する経路（Ｙ→Ａ→Ｃ）が候補経路とされたとする。【００７０】
ステップＳ４では、経路計算部２１は、新たに候補経路とされた経路（Ｙ→Ａ→Ｃ）の距離が、すでに候補経路とされている経路（Ｙ→Ｄ→Ｃ）の距離（コスト）よりも短ければ、経路（Ｙ→Ａ→Ｃ）を、ノードＹからノードＣまでの最短経路Ｒ２として扱う。仮に、経路（Ｙ→Ａ→Ｃ）の距離が「５」である場合、経路（Ｙ→Ｄ→Ｃ）の距離が「６」以上であるならば、経路計算部２１は、経路（Ｙ→Ａ→Ｃ）を最短経路Ｒ２として確定する。【００７１】
ステップＳ５では、情報管理部２２は、ノードＹから経路の終点のノードＣまでの最短経路の情報を、それまでのものから経路（Ｙ→Ａ→Ｃ）の情報に更新する。１つの方法として、ツリーにおけるノード間の接続関係が、自身の親ノード、すなわち１ホップ上流側にあるノードで示される場合、親ノードを選択された経路に沿ったものに変更する方法がある。この例の場合、経路の終点のノードＣの親ノードを、それまでのノードＤから経路（Ｙ→Ａ→Ｃ）Ｒ２における親ノードであるノードＡに変更する。【００７２】
ステップＳ６では、経路の終点のノードＣの配下ツリーにノードが存在するならば、ノードＹの配下ツリーとノードＣの配下ツリーとを計算中のツリーとして扱う。そして、情報管理部２２は、ノードＹからノードＣの配下ツリーに属するノードまでの距離を、経路（Ｙ→Ａ→Ｃ）Ｒ２とノードＣの配下ツリーとを通って到達する経路の距離に変更する。ノードＣの配下ツリーの情報が存在するならば、ノードＣの配下ツリーに属する各ノードまでの距離は、ノードＣの配下ツリーの情報により容易に計算することが可能である。例えば、ノードＣからノードＣの配下ツリーに属するノードＧまでの距離が「２」である場合、経路（Ｙ→Ａ→Ｃ）Ｒ２の距離が「５」であったならば、情報管理部２２は、経路（Ｙ→Ａ→Ｃ）Ｒ２とノードＣの配下ツリーとを経由する経路の距離を「７」と算出する。この距離の値を、ノードＹからノードＧまでの距離の値とする。【００７３】
次に、図８を参照して、ステップＳ７，Ｓ３について説明する。【００７４】
ステップＳ７では、ノードＹから、前ステップにおけるノードＣの配下ツリーに属さないノードまで到達する経路において、ノードＣの配下ツリーを経由する場合のほうが距離が短くなる場合を探す。具体的には、経路計算部２１は、ノードＣの配下ツリーに属するノードを起点とし、ノードＣの配下ツリーに属さないノードと、そのノードを終点とするリンクＬ２とを検索する。ここでは、経路計算部２１は、ノードＫを検索したとする。ただし、ノードＫは、ノードＹの配下ツリーに属するノードＤから１ホップで到達できるノードとして、ステップＳ２の時点で検索されており、ノードＹの配下ツリー、すなわち計算中のツリーを経由する経路（Ｙ→Ｄ→Ｋ）Ｒ３がすでに見つかっているものとする。【００７５】
そのため、ステップＳ３では、経路計算部２１は、ノードＹからリンクＬ２の終点のノードＫまで到達する経路として、計算中のツリー経由の経路（Ｙ→Ｄ→Ｋ）Ｒ３と、計算中のツリーとノードＣの配下ツリーを経由する経路（Ｙ→Ａ→Ｃ→Ｇ→Ｋ）Ｒ４と、に着目する。両者のうち、経路（Ｙ→Ａ→Ｃ→Ｇ→Ｋ）Ｒ４のほうが距離が短ければ、経路計算部２１は、経路（Ｙ→Ａ→Ｃ→Ｇ→Ｋ）Ｒ４を候補経路の１つとして扱う。【００７６】
以上の処理を候補経路がなくなるまで繰り返す。【００７７】
なお、本発明の最短経路計算方法は、コンピュータに実行させるためのプログラムに適用してもよい。また、そのプログラムを記憶媒体に格納することも可能であり、ネットワークを介して外部に提供することも可能である。【００７８】
（第１実施形態の効果）
本実施形態によれば、非特許文献２の方法では計算できない、リンクが新規に追加もしくは削除されてトポロジが変化した場合にも、最短経路の計算が可能となる。これは、他ノードを起点とするトポロジ変化後の最短経路群がすでに計算されている場合、その結果を利用しているためである。また、新たに発見すべき経路についても、新たに追加されたリンクを経由するような経路も探索対象となるため、リンクの追加が生じたときも最短経路の計算が可能となる。【００７９】
すなわち、リンクが新規に追加もしくは削除されることでトポロジに変化が起きた場合においても、最短経路を計算することが可能となるという効果が得られる。また、非特許文献２の方法と同様、すでに計算されている経路情報を用いて最短経路を計算するため、非特許文献１の方法に比べ、最短経路の計算時間を短縮することが可能となるという効果が得られる。【００８０】
（第２実施形態）
以下に、本発明の第２実施形態について図面を参照して説明する。【００８１】
図９は、本発明の計算装置の第２実施形態を示す図である。【００８２】
本形態における計算装置１００は図９に示すように、外部インタフェース部１０１と、制御部１０２と、記憶部１０３とから構成されている。【００８３】
外部インタフェース部１０１は、制御部１０２からの指示により、計算装置１００と接続された他の装置へ計算装置１００にて計算した結果を送信する。また、外部インタフェース部１０１は、計算装置１００と接続された他の装置から送信されてきたネットワークのトポロジに関する情報を受信し、受信した情報を制御部１０２へ出力する。【００８４】
制御部１０２は、ネットワークと接続されたノード間の通信経路（以下、経路と称する）を計算する経路計算機能を有する。また、制御部１０２は、計算した経路の経路情報やトポロジに関する情報の更新・取得を行う情報管理機能を有する。また、制御部１０２は、それらの情報を他の装置との間で外部インタフェース部１０１を介してやり取りする。【００８５】
記憶部１０３は、制御部１０２が計算した経路情報や他の装置から外部インタフェース１０１を介して取得した情報（トポロジ情報等）を記憶する。また、制御部１０２が実行するプログラムを記憶する。【００８６】
図１０は、図９に示した計算装置１００が経路を計算するトポロジの一例を示す図である。【００８７】
図９に示した計算装置１００が経路を計算するトポロジの一例として図１０に示すように、ノード２００−１〜２００−８がそれぞれ接続されている。【００８８】
ここで、計算装置１００は、これらのノード２００−１〜２００−８の経路情報を取得できる位置に設けられていれば良い。【００８９】
この計算装置１００を用いて図１０に示したようなトポロジにおける２つのノード間の最短経路を計算する。本計算方法は、２つのノードを結ぶ最短経路のうち、起点が同じノードである複数の最短経路を一度に計算する方法である。なお、第１実施形態の説明のために定義した用語は、第２実施形態でも適用する。【００９０】
以下に、図９に示した計算装置１００における経路計算方法について説明する。【００９１】
図１１は、図９に示した計算装置１００における経路計算方法を説明するためのフローチャートである。ここでは、ノードｘ（図１０に示したノード２００−１）を起点（起点ノード）とする最短経路集合である最短経路ツリーＳｘを計算する。また、トポロジ変更後に計算された最短経路ツリーＳｙが存在する。なお、ｙは特定のノードを指さず、自身を起点とする最短経路ツリーが計算されているノードすべてを指す。【００９２】
まず、ノードｘに隣接する、つまり、ノードｘと直接リンクで接続されているノードを検索する。ノードｘに隣接しているノードが１つある場合、当該隣接ノードを選択する。また、ノードｘに隣接しているノードが複数ある場合、複数の隣接ノードを選択する。【００９３】
そして、ノードｘから各隣接ノードまでの経路を最短経路の候補として扱う。なお、隣接するノード以外のノードまでの距離は無限大とする。この最短経路の候補があるかどうかを判断する（ステップＳ１１）。【００９４】
図１２は、図１１のステップＳ１１の処理を模式化した図である。【００９５】
図１２に示すように、ノード２００−１に隣接する隣接ノードが、ノード２００−２〜２００−４の３つある場合、ノード２００−１からノード２００−２〜２００−４までの経路を最短経路の候補として選択する。【００９６】
以降の処理を、最短経路の候補が存在する間、続ける。【００９７】
続いて、選択された複数のノード（ノード２００−２〜２００−４）のうち、ノードｘ（ノード２００−１）からの距離が最短であるものを選択する（ステップＳ１２）。各ノードは、それまで発見された最短経路の距離を記録している。その距離の初期値は無限大であるが、経路が発見されたことで、暫定的な距離（暫定最短距離）に書き換える。図１２に示した例では、ノード２００−１からノード２００−２までの距離が「２」である。また、ノード２００−１からノード２００−３までの距離が「５」である。また、ノード２００−１からノード２００−４までの距離が「５」である。したがって、ノード２００−１からの距離が最も短いノード２００−２を選択し、ノード２００−１からノード２００−２への経路を最短経路の候補経路とする。【００９８】
図１３は、ノード２００−１からの最短経路の一部としてノード２００−２を選択した処理を模式化した図である。【００９９】
図１３に示すように、ノード２００−１からの距離が最も短いノード２００−２を選択する。【０１００】
ここで、ノード２００−１からノード２００−２までの経路が、選択された時点でわかっている経路のうちで距離が最短の経路であれば、当該経路をノード２００−２までの最短経路（候補経路）、すなわち計算結果とする。【０１０１】
すると、選択された候補の終点ノード（この場合、ノード２００−２）を起点とする最短経路（最短経路ツリーＳｅ）がすでに計算されているかどうかを判断する（ステップＳ１３）。この判断は、記憶部１０３に当該最短経路ツリーＳｅが記憶されているかどうかを判断することによる。ここで、この記憶部１０３に記憶されている最短経路を記憶経路ツリーとする。【０１０２】
最短経路ツリーＳｅがすでに計算されていると判断した場合、最短経路が計算されていないすべてのノードを終点とする経路のうち、最短経路ツリーＳｅを経由する距離を計測する（ステップＳ１４）。ここで、図１３におけるノード２００−３やノード２００−４のように、ノード２００−１からの最短経路が計算されていないノードまで、ノード２００−１からノード２００−２までの最短経路とノード２００−２から各ノードまでの最短経路を経由する経路に着目する。そして、この経路がそれまでに見つかっている各ノードまでの経路の中で距離が最短であるならば、その経路を各ノードまでの暫定最短経路とする。【０１０３】
図１４は、すでに計算されている最短経路ツリーＳｅが存在する場合の処理を模式化した図である。【０１０４】
例えば、図１４に示すように、ノード２００−２起点の最短経路ツリーが存在する場合、ノード２００−２からノード２００−３までの距離を計測する。図１４に示した例では、ノード２００−２からノード２００−３までの距離は「１」と計測される。【０１０５】
続いて、計測した経路の距離と、ノード２００−３に記録されている他の経路ツリー経由の暫定最短経路の距離とを比較する（ステップＳ１５）。【０１０６】
計測した距離がノード２００−３に記録されている他の経路ツリー経由の暫定最短経路の距離よりも短い場合、ノード２００−３への経路として最短経路ツリーＳｅ経由の経路を採用し、ノード２００−３への経路の距離を最短経路ツリーＳｅ経由の距離に更新する（ステップＳ１６）。【０１０７】
図１４に示した例では、他の経路ツリー経由の暫定最短経路の距離が「５」であり、ノード２００−２を経由した最短経路ツリーＳｅ経由の距離が「２＋１＝３」である。そのため、ノード２００−１からノード２００−３までの経路の距離は、ノード２００−２を経由した方が距離（２＋１＝３）が短いため、当該距離をノード２００−２を経由した経路の距離「３」に更新する。【０１０８】
その後、ステップＳ１１にてさらに最短経路の候補があるかどうかを判断する。【０１０９】
一方、ステップＳ１３にて、最短経路ツリーＳｅがすでに計算されていないと判断した場合、選択したノードの隣接ノードおよび隣接ノードまでのリンクを検索する（ステップＳ１７）。【０１１０】
続いて、検索されたノードそれぞれを終点とするステップＳ１２で選択された候補の終点ノード（この場合、ノード２００−２）経由の距離（検索距離）と、検索されたノードに対応付けられている距離の記録値（検索された時点で見つかっているほかの経路の距離：記録距離）とを比較する（ステップＳ１８）。【０１１１】
選択されたノード経由の距離が、記録された距離よりも短い場合、選択されたノード経由の距離の経路を検索されたノードまでの最短経路の候補として扱う（ステップＳ１９）。【０１１２】
図１５は、図１１に示したステップＳ１７〜Ｓ１９までの処理を説明するための図である。【０１１３】
図１５に示すように、ノード２００−８までの最短経路が計算されると、ノード２００−１とノード２００−８との間の最短経路を経由し、ノード２００−８に隣接するノードまで結ぶ１ホップリンクを経由して隣接するノードに達する経路を検索する。検索した経路の距離が、隣接するノードの暫定最短経路の距離よりも短ければ、検索した経路を経路の終点までの最短経路の候補として扱う。【０１１４】
このように、最短経路の候補として扱う経路をノード２００−１からの最短経路の一部として決定する。【０１１５】
以上の処理を最短経路の候補がなくなるまで繰り返す。【０１１６】
なお、上述した計算装置１００の処理は、目的に応じて作製された論理回路で行うようにしても良い。また、処理内容を手順として記述したプログラムを計算装置１００にて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを計算装置１００に読み込ませ、実行するものであっても良い。計算装置１００にて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、計算装置１００に内蔵されたＲＯＭ、ＲＡＭ等のメモリやＨＤＤ等を指す。この記録媒体に記録されたプログラムは、計算装置１００内の制御部１０２にて読み込まれ、制御部１０２の制御によって、上述したものと同様の処理が行われる。ここで、制御部１０２は、プログラムが記録された記録媒体から読み込まれたプログラムを実行するコンピュータとして動作するものである。【０１１７】
（第２実施形態の効果）
以上説明したように本実施形態においては、複数のノードがリンクによって接続されたネットワークにおいて、ノードまたはリンクが追加または削除された場合に、複数のノードのうち２つのノード間の最短の通信経路である最短経路を計算する際、複数のノードのうち通信経路の起点となる起点ノードと起点ノードに隣接する隣接ノードとの間の第１の通信経路の距離と、第１の通信経路以外に計算済みである第２の通信経路の距離とを比較し、第１の通信経路の距離が第２の通信経路の距離よりも短い場合、第１の通信経路を最短経路として扱い、第１の通信経路の距離が第２の通信経路の距離よりも短くない場合、第２の通信経路を最短経路として扱い、隣接ノードを起点ノードとして比較をさらに行っていく構成としたため、リンクを新規に追加、もしくは削除することによりトポロジが変化した場合においても、最短経路を計算することができる。【０１１８】
すなわち、本実施形態を用いることによって、リンクを新規に追加、もしくは削除することによりトポロジが変化した場合であっても、最短経路を計算することが可能となる。また、非特許文献２に記載された技術と同様に、すでに計算されている経路情報を用いて最短経路を計算するため、非特許文献１に記載された技術に比べて、経路の計算時間が短縮される。
【図１】
2010058797.tif 000003
【図２Ａ】
2010058797.tif 000004
【図２Ｂ】
2010058797.tif 000005
【図３】
2010058797.tif 000006
【図４】
2010058797.tif 000007
【図５】
2010058797.tif 000008
【図６】
2010058797.tif 000009
【図７】
2010058797.tif 000010
【図８】
2010058797.tif 000011
【図９】
2010058797.tif 000012
【図１０】
2010058797.tif 000013
【図１１】
2010058797.tif 000014
【図１２】
2010058797.tif 000015
【図１３】
2010058797.tif 000016
【図１４】
2010058797.tif 000017
【図１５】
2010058797.tif 000018
【国際調査報告】
2010058797.tif 000019
2010058797.tif 000020
2010058797.tif 000021
2010058797.tif 000022