(57)【特許請求の範囲】
【請求項１】
複数ノードを通信リンクを介して相互に接続可能としたネットワーク上で、ある始点ノードから他のすべてのノード内の部分集合である複数ノードまでのマルチキャスト経路を計算するためのマルチキャスト経路計算方法であって、
最初はマルチキャスト始点ノードのみからなるマルチキャストツリーを定義し、当該マルチキャストツリーから、まだ経路が決まっていないマルチキャスト終点ノード集合の１終点ノードにたどり着く最短経路を新ブランチとしてマルチキャストツリーに加え、この処理を最終的にすべてのマルチキャストツリーブランチが決まるまで繰り返すマルチキャストツリー生成アルゴリズムにおいて、
アルゴリズムの第１回目のルーチンはマルチキャスト始点ノードから始まり、そのノードから発するリンクを求め、そのすべてのリンクをブランチ候補としてブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納し、
アルゴリズムの第２回目のルーチン以降は、直前のルーチンで前記ブランチ候補記憶手段から取り出した前記最短経路ブランチ候補の終点がマルチキャスト終点の場合は、当該最短経路ブランチ候補の始点を除いたすべてのノードから発するリンクを求め、そのすべてのリンクをブランチ候補として該ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納し、
また、アルゴリズムの第２回目のルーチン以降で、直前のルーチンで取り出した前記最短経路ブランチ候補の終点がマルチキャスト終点でない場合は、当該最短経路ブランチ候補の終点から発するすべてのリンクを求め、当該最短経路ブランチ候補の後に個々のリンクを加えた結果できるすべてのブランチを前記ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納する
ことを特徴とするマルチキャスト経路計算方法。
【請求項２】
前記ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出す手順において、
前記最短経路ブランチ候補の終点がマルチキャスト終点の場合は、当該ブランチ候補上の始点を除いたすべてのノードにマルチキャストツリーの構成要素になったという印("reached属性"=yes)を付与する
請求項１記載のマルチキャスト経路計算方法。
【請求項３】
前記ブランチ候補を前記ブランチ候補記憶手段に格納する手順において、
新規ブランチ候補の最終リンクとして選択されたリンクの終点ノードに前記印("reached属性"=yes)が付いている場合は、当該ブランチ候補を前記ブランチ候補記憶手段に格納しない
請求項２記載のマルチキャスト経路計算方法。
【請求項４】
ネットワーク上の各ノードに、"当該ノードまでの最短ブランチ候補とそのコスト"を属性として保持させ、両者のアルゴリズム開始時の初期値はブランチ候補＝空集合、経路コスト＝∞とするが、アルゴリズム走行後は当該属性にアルゴリズムの開始からその時点までにアルゴリズムが扱った当該ノードを終点に持つブランチ候補の中で最もコストが小さいブランチ候補とその経路コストを保持する
請求項１記載のマルチキャスト経路計算方法。
【請求項５】
前記ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出す手順において、
当該ブランチ候補の終点の"当該ノードまでのブランチ候補とそのコスト"属性からブランチ候補を取出し、ブランチ候補＝空集合にする
請求項４記載のマルチキャスト経路計算方法。
【請求項６】
新規ブランチ候補の最終リンクとして選択されたリンクの終点ノードの上記"当該ノードまでのブランチ候補とそのコスト"属性にすでにブランチ候補が格納されている場合は、当該属性に格納されている経路コストと新規ブランチ候補の経路コストを比較して新規ブランチ候補の当該ノードまでの経路コストが既存ブランチ候補の経路コストより小さい場合にのみ、前記ブランチ候補記憶手段から当該既存ブランチ候補を取出し、新規ブランチ候補を前記ブランチ候補記憶手段に格納し、当該終点ノードの当該属性の既存ブランチ候補とその経路コストを新規ブランチとその経路コストに置き換える
請求項５記載のマルチキャスト経路計算方法。
【請求項７】
新規ブランチ候補の最終リンクとして選択されたリンクの終点ノードの上記"当該ノードまでのブランチ候補とそのコスト"属性にブランチ候補が格納されていない場合は、当該属性に格納されている経路コストと新規ブランチ候補の経路コストを比較して、当該ノードまでの新規ブランチ候補の経路コストが当該属性内の経路コストより小さい場合は、新規ブランチ候補を前記ブランチ候補記憶手段に格納し、当該終点ノードの当該属性に新規ブランチとその経路コストを格納する
請求項６記載のマルチキャスト経路計算方法。
【請求項８】
複数ノードを通信リンクを介して相互に接続可能としたネットワーク上で、ある始点ノードから他のすべてのノード内の部分集合である複数ノードまでのマルチキャスト経路を計算するためのマルチキャスト経路計算装置であって、
ブランチ候補を格納するブランチ候補記憶手段と、
ブランチを格納するブランチ記憶手段と、
最初はマルチキャスト始点ノードのみからなるマルチキャストツリーを定義し、当該マルチキャストツリーから、まだ経路が決まっていないマルチキャスト終点ノード集合の１終点ノードにたどり着く最短経路を新ブランチとしてマルチキャストツリーに加え、この処理を最終的にすべてのマルチキャストツリーブランチが決まるまで繰り返すマルチキャストツリー生成手段と、
を有し、
前記マルチキャストツリー生成手段は、
第１回目の処理として、マルチキャスト始点ノードから始まり、そのノードから発するリンクを求め、そのすべてのリンクをブランチ候補として前記ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとして前記ブランチ記憶手段に格納する手段と、
第２回目以降の処理として、直前のルーチンで前記ブランチ候補記憶手段から取り出した前記最短経路ブランチ候補の終点がマルチキャスト終点の場合は、当該最短経路ブランチ候補の始点を除いたすべてのノードから発するリンクを求め、そのすべてのリンクをブランチ候補として該ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納する手段と、
２回目以降の処理として、直前のルーチンで取り出した前記最短経路ブランチ候補の終点がマルチキャスト終点でない場合は、当該最短経路ブランチ候補の終点から発するすべてのリンクを求め、当該最短経路ブランチ候補の後に個々のリンクを加えた結果できるすべてのブランチを前記ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納する手段と、
を有することを特徴とするマルチキャスト経路計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチキャスト経路計算方法及び装置に係り、特に、マルチキャストツリーを生成するための経路計算（ルーティング）装置におけるマルチキャスト経路計算方法及び装置に関する。
【背景技術】
【０００２】
IP(Internet Protocol)ネットワークでは、IPTVのような放送型のサービス要求が高まっており、このIPストリームを（G）MPLS（Multi Protocol Label Switching）で明示的に張った土管に通すことにより、帯域を確保して放送型サービスのQoSを保証する必要がある。これらの要求を満たすためには、効率よくマルチキャストツリーを作成する必要がある。
【０００３】
複数のノードとその複数ノード間を繋ぐ複数の方向性リンク（リンクの方向によりリンクコストが異なるリンク）で構成されるネットワーク上で、アルゴリズムの最初はマルチキャストの始点ノードのみからなるマルチキャストツリーを定義し、当該マルチキャストツリーから、まだ経路が決まっていないマルチキャスト終点ノード集合に辿り着く経路の中で最も経路コストが小さい経路をマルチキャストツリーに加え、この処理を最終的に全てのマルチキャストツリー終点ノードまでの経路が決まるまで繰り返すマルチキャストツリー生成アルゴリズムがある。
【０００４】
そのマルチキャストツリー生成アルゴリズムとして、MPH(Minimum-cost Path Heuristics)アルゴリズム（例えば、非特許文献１参照）がある。
【０００５】
以下にMPHアルゴリズムについて説明する。
【０００６】
図１にMPHアルゴリズムフローを示す。
【０００７】
ステップ１）  当該ステップでは、アルゴリズムの初期条件と、アルゴリズムが使う集合の定義を示す。集合Eはマルチキャストの終点ノードのうち、まだその終点までの経路が決定していない終点ノードの集合である。集合Eはアルゴリズムの最初は全てのマルチキャストの終点ノードを保持するが、終点ノードまでの経路が決定した終点ノードは集合Eから削除される。集合Vはアルゴリズムの過程で作成される既存ツリー上のすべてのノード(集合Rに登録されているすべてのブランチ上のノード)が格納されている。但し、アルゴリズムの最初はマルチキャストツリーの始点ノードのみがVに格納される。集合Rには、ステップ２で選択されたV-E間最短経路が新ブランチとして格納されていき、最終的にこのブランチの集合がマルチキャストツリーの全ての構成ブランチとなる。
【０００８】
ステップ２）  当該ステップでは既存ツリー上のノード集合であるVから、まだノードまでのブランチが決まっていない終点ノード集合Eまでの最短経路を求めて、その最短経路を新ブランチとして集合Rに登録する。また、当該新ブランチの終点ノードは集合Eから取り除かれ、当該新ブランチの始点以外のノードは集合Vに追加される。
【０００９】
ステップ３）  集合Eが空集合かどうかの判断を行い、もしEが空集合であればすべての終点までのブランチが決定したことになるので、アルゴリズムの終了となる。もし集合Eが空集合ではない場合はステップ２に戻る。
【００１０】
ステップ２のV-E間の最短経路算出のためのダイクストラのアルゴリズム（非特許文献２）は、現在最も計算量を小さくできるFibonacciヒープ（非特許文献３、４）を使ったデータ構造で、Ｏ（l+n log n）の計算量である。なお、ここでlはネットワーク上のリンク数を示し、nはノード数を示す。図１のステップ２〜３のループはマルチキャスト終点数であるｍ回走行されるので、MPHの計算量は最悪時間計算量、平均時間計算量ともにＯ（m(l+n log n)）となる。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Hiromitsu Takahashi and Akira Matsuyama, "AN APPROXIMATE SOLUTION FOR THE STEINER PROBLEM IN GRAPHS," Math. Japonica, vol. 24, pp. 573-577, 1980.
【非特許文献２】http://www.deqnotes.net/acmicpc/dijkstra/
【非特許文献３】M.L. Fredman and R.E. Tarjan, "Fibonacci heaps and their uses in improved network optimization algorithms," Journal of the ACM (JACM), vol. 34, no. 3, pp. 596-615, 1987.
【非特許文献４】http://www.lab2.kuis.kyoto-u.ac.jp/~itohiro/lecture/heap-GT.pdf
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記のアルゴリズムMPHは、マルチキャスト終点数回のダイクストラアルゴリズム走行が必要となるため、計算量が大きく処理時間が大きくなる問題がある。
【００１３】
本発明は、上記の点に鑑みなされたもので、従来のMPHアルゴリズムで必要であったノード間の最短経路を求めるダイクストラアルゴリズムの走行を行なわず、短時間でMPHアルゴリズムと同じマルチキャストツリーを作成することが可能なマルチキャスト経路計算方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の課題を解決するため、本発明は、複数ノードを通信リンクを介して相互に接続可能としたネットワーク上で、ある始点ノードから他のすべてのノード内の部分集合である複数ノードまでのマルチキャスト経路を計算するためのマルチキャスト経路計算方法であって、
最初はマルチキャスト始点ノードのみからなるマルチキャストツリーを定義し、当該マルチキャストツリーから、まだ経路が決まっていないマルチキャスト終点ノード集合の１終点ノードにたどり着く最短経路を新ブランチとしてマルチキャストツリーに加え、この処理を最終的にすべてのマルチキャストツリーブランチが決まるまで繰り返すマルチキャストツリー生成アルゴリズムを用い、
アルゴリズムの第１回目のルーチンはマルチキャスト始点ノードから始まり、そのノードから発するリンクを求め、そのすべてのリンクをブランチ候補としてブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納し、
アルゴリズムの第２回目のルーチン以降は、直前のルーチンで前記ブランチ候補記憶手段から取り出した前記最短経路ブランチ候補の終点がマルチキャスト終点の場合は、当該最短経路ブランチ候補の始点を除いたすべてのノードから発するリンクを求め、そのすべてのリンクをブランチ候補として該ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納し、
また、アルゴリズムの第２回目のルーチン以降で、直前のルーチンで取り出した前記最短経路ブランチ候補の終点がマルチキャスト終点でない場合は、当該最短経路ブランチ候補の終点から発するすべてのリンクを求め、当該最短経路ブランチ候補の後に個々のリンクを加えた結果できるすべてのブランチを前記ブランチ候補記憶手段に格納し、当該ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出し、そのブランチ候補の終点がマルチキャスト終点の場合はマルチキャストを最終的に構成するブランチとしてブランチ記憶手段に格納する。
【００１５】
また、本発明は、前記ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出す手順において、
前記最短経路ブランチ候補の終点がマルチキャスト終点の場合は、当該ブランチ候補上の始点を除いたすべてのノードにマルチキャストツリーの構成要素になったという印("reached属性"=yes)を付与する。
【００１６】
また、本発明は、前記ブランチ候補を前記ブランチ候補記憶手段に格納する手順において、
新規ブランチ候補の最終リンクとして選択されたリンクの終点ノードに前記印("reached属性"=yes)が付いている場合は、当該ブランチ候補を前記ブランチ候補記憶手段に格納しない。
【００１７】
また、本発明は、ネットワーク上の各ノードに、"当該ノードまでの最短ブランチ候補とそのコスト"を属性として保持させ、両者のアルゴリズム開始時の初期値はブランチ候補＝空集合、経路コスト＝∞とするが、アルゴリズム走行後は当該属性にアルゴリズムの開始からその時点までにアルゴリズムが扱った当該ノードを終点に持つブランチ候補の中で最もコストが小さいブランチ候補とその経路コストを保持する。
【００１８】
また、本発明は、前記ブランチ候補記憶手段から最も経路コストが小さい最短経路ブランチ候補を取り出す手順において、
当該ブランチ候補の終点の"当該ノードまでのブランチ候補とそのコスト"属性からブランチ候補を取出し、ブランチ候補＝空集合にする。
【００１９】
また、本発明は、新規ブランチ候補の最終リンクとして選択されたリンクの終点ノードの上記"当該ノードまでのブランチ候補とそのコスト"属性にすでにブランチ候補が格納されている場合は、当該属性に格納されている経路コストと新規ブランチ候補の経路コストを比較して新規ブランチ候補の当該ノードまでの経路コストが既存ブランチ候補の経路コストより小さい場合にのみ、前記ブランチ候補記憶手段から当該既存ブランチ候補を取出し、新規ブランチ候補を前記ブランチ候補記憶手段に格納し、当該終点ノードの当該属性の既存ブランチ候補とその経路コストを新規ブランチ候補とその経路コストに置き換える。
【００２０】
また、本発明は、新規ブランチ候補の最終リンクとして選択されたリンクの終点ノードの上記"当該ノードまでのブランチ候補とそのコスト"属性にブランチ候補が格納されていない場合は、当該属性に格納されている経路コストと新規ブランチ候補の経路コストを比較して、当該ノードまでの新規ブランチ候補の経路コストが当該属性内の経路コストより小さい場合は、新規ブランチ候補を前記ブランチ候補記憶手段に格納し、当該終点ノードの当該属性に新規ブランチ候補とその経路コストを格納する。
【発明の効果】
【００２１】
本発明によれば、従来のMPHアルゴリズムで必要であったノード間の最短経路を求めるダイクストラアルゴリズムの走行を行う必要がなく、ネットワーク上のリンクをたどることにより、最終的にMPHアルゴリズムと同じマルチキャストツリーを作成することを可能としている。
【００２２】
そのため、本発明のアルゴリズム平均時間計算量は(log m)(l + n log n)になる。この時間計算量はMPHの平均時間計算量m(l + n log n)よりも明確に小さい。
【００２３】
実際にランダムに配置した5,070のノード間に方向性リンク57,174本を設定し、リンクのコストは1-100間でランダムに平均41.95のコストで設定し、最もノード次数が高いノード（ノード次数：28)をマルチキャストの始点とし、ノード次数が1以上で次数が低いものから順に200-2,000の終点ノードを200間隔で設定し、その設定された終点ノードに対してMPHと本発明のアルゴリズムを使ってマルチキャストツリーを計算機(Linux（登録商標）マシン）により生成した場合の処理速度を図２に示す。図２より、MPHは終点数が多いとダイクストラアルゴリズムの走行回数が多くなり、Fibonacciヒープへのアクセス回数が大きくなるため、処理速度が落ちる。しかし、本発明のアルゴリズムはFibonacci ヒープへのアクセスが終点数mにかかわらずMPHに比べて大幅に少ないため、mが大きくなればなるほど処理時間がMPHに対して速くなる。
【図面の簡単な説明】
【００２４】
【図１】MPH(minimum-cost path heuristic)フローである。
【図２】本発明のアルゴリズムの効果を示す図である。
【図３】本発明の一実施の形態におけるマルチキャスト経路計算装置の構成図である。
【図４】本発明の一実施の形態におけるマルチキャスト経路計算装置の動作のフローチャートである。
【図５】本発明の一実施の形態におけるアルゴリズム適用動作例（その１）である。
【図６】本発明の一実施の形態におけるアルゴリズム適用動作例（その２）である。
【図７】本発明の一実施の形態におけるアルゴリズム適用動作例（その３）である。
【図８】本発明の一実施の形態におけるアルゴリズム適用動作例（その４）である。
【図９】本発明の一実施の形態におけるアルゴリズム適用動作例（その５）である。
【図１０】本発明の一実施の形態におけるアルゴリズム適用動作例（その６）である。
【発明を実施するための形態】
【００２５】
以下、図面と共に本発明の実施の形態を説明する。
【００２６】
図３は、本発明の一実施の形態におけるマルチキャスト計算装置の構成を示す。
【００２７】
同図に示す計算装置は、ネットワークトポロジ管理部１００、ブランチ候補管理部（PQ）２００、最小木作成部３００から構成される。
【００２８】
ネットワークトポロジ管理部１００は、ネットワークトポロジ管理処理部１１、リンク情報記憶部２１、ノード情報記憶部２２から構成され、ブランチ候補管理部２００は、ブランチ候補処理部１２、ブランチ候補記憶部２３から構成され、最小木作成部３００は、最小木作成処理部１３とブランチ記憶部２４から構成される。
【００２９】
ネットワークトポロジ管理部１００のネットワークトポロジ管理処理部１１は、最小木作成処理部１３との通信と、当該ネットワークトポロジ管理部１００内のリンク情報記憶部２１及びノード情報記憶部２２へのアクセスを行う。
【００３０】
ネットワークトポロジ管理部１００のリンク情報記憶部２１はネットワーク上の各方向性リンク毎にその方向毎のリンクコストを保持する。ノード情報記憶部２２はネットワーク上の各ノード毎に情報を保持する。ノード情報記憶部２２は、接続リンク情報を保持する。接続リンク情報は当該ノードに接続しているリンク情報である。またノード情報記憶部２２は、後述するアルゴリズム中で利用する当該ノードまでの"最短ブランチ候補"と、その"最短ブランチ候補コスト"を格納する"当該ノードまでのブランチ候補とそのコスト"属性、また当該ノードがマルチキャストツリー構成ノードかどうかを判別する"reached属性"を保持する。
【００３１】
最小木作成部３００は、最小木作成処理部１３で、図４に後述するアルゴリズムを実行する。最小木作成処理部１３は、図４のステップ１０２ではネットワークトポロジ管理処理部１００を通して、ノード情報記憶部２２から集合Vに属する各ノードの接続リンクを取得し、当該リンクの終点ノードの"reached属性"= no、且つ"最短ブランチ候補コスト"よりも経路コストが小さいブランチをブランチ候補としてブランチ候補記憶部２３に格納する。ブランチ記憶部２４は図４の集合Rに相当し、ステップ１０３で選択されたブランチ候補記憶部（PQ）２３内の最小ブランチで終点が集合Ｅに属するブランチが格納される。
【００３２】
ブランチ候補管理部(PQ)２００は、ブランチ候補処理部１２が最小木作成処理部１３からの要望に応じて、ブランチ候補記憶部（PQ）２３へのブランチ候補の格納、削除、及び最短ブランチ候補の取得を行う。ブランチ候補記憶部（PQ）２３にはFibonacciヒープ等の構造が用いられ、ブランチ候補がその経路コストに応じてソーティングされ、ブランチ候補へのアクセス速度を速めることができる。このブランチ候補記憶部（PQ）２３ への新ブランチ候補登録は図４のステップ１０２であり、入れ替えられた古いブランチ候補はブランチ候補記憶部PQ２3から削除される。またステップ１０３で取得されるブランチ候補記憶部PQの最短ブランチ候補はブランチ候補記憶部（PQ）２３内で最小の経路コストを持つブランチ候補である。
【００３３】
以下に、上記の構成における動作を説明する。
【００３４】
図４は、本発明の一実施の形態におけるマルチキャスト経路計算方法のフローチャートである。
【００３５】
ステップ１０１）  アルゴリズムの初期条件として、メモリ(図示せず)上の集合Eはマルチキャストのすべての終点ノードを保持する。メモリ（図示せず）上の集合Vはステップ１０２で選択されるリンクの始点ノード集合が格納され、アルゴリズムの最初はマルチキャスト始点ノードだけが格納される。
【００３６】
ブランチ候補記憶部２３の集合PQはブランチ候補を格納する集合であり、空集合（φ）で設定される。
【００３７】
ブランチ記憶部２４の集合Rは最終的なツリーを構成するブランチの集合であり、最初は空集合(φ)で設定される。
【００３８】
マルチキャストツリーを作成するネットワークの各ノードは本発明アルゴリズムのための属性を保持するが、"reached属性"は当該ノードがマルチキャストツリーの構成要素になったかを示す属性であり、yes/noの値をとる（請求項２に対応）。アルゴリズムの最初では始点ノードのみがマルチキャストツリーに含まれるので、yesに設定されるが、他ノードはすべてnoに設定される。
【００３９】
ノード情報記憶部２２の"当該ノードまでの最短ブランチ候補とそのコスト"はアルゴリズム開始時の初期値は"最短ブランチ候補"＝空集合、"最短ブランチ候補コスト"＝∞と設定される。
【００４０】
ステップ１０２）  ブランチ候補処理部１２は、集合Ｖ内の各ノードから発するリンクを選択し、当該リンクからブランチ候補を作成する。その際、直前のステップ１０４でブランチ終点が集合Eに属するマルチキャスト終点の場合 (ステップ１０４= yes) は当該リンクがそのままブランチ候補になるが、マルチキャスト終点でない場合(ステップ１０４ = no)は当該リンクを直前のステップ１０３で選択された最短ブランチ候補の後に繋げた経路がブランチ候補になる（請求項１に対応）。アルゴリズムの第１回目のルーチンでは、リンクがそのまま新規ブランチ候補になる。この新規ブランチ候補作成処理はV内のノードから発するすべてのリンクについて行われるが、ブランチ候補は"reached属性"=noのノード毎に最大１つ存在する。つまり、新規ブランチ候補の終点ノードが保持する"当該ノードまでの最短ブランチ候補"が空集合ではなく、既存の候補リストである"最短ブランチ候補コスト"より新規ブランチの経路コストが小さい場合のみ、候補の入れ替えがおきる。また、候補の入れ替えが生じた場合は、新規ブランチ候補の終点ノードの"当該ノードまでの最短ブランチ候補"に新規ブランチ候補が格納され、"最短ブランチ候補コスト"に新規ブランチ候補の経路コストが格納される。リンクの終点ノードの"reached属性"がyesの場合（請求項２に対応）は、そのノードはすでにマルチキャストツリーに含まれるということなので、ブランチ候補とならない（請求項３に対応）。"reached属性"がnoの場合で終点ノード属性の"最短ブランチ候補コスト"に格納されている経路コストが新規ブランチ候補の経路コストより大きい場合は新規ブランチ候補がブランチ候補記憶部（PQ）２３に登録される。もし、"最短ブランチ候補"が空集合の場合、ブランチ候補記憶部（PQ）２３から削除されるブランチ候補はないが（請求項７に対応）、"最短ブランチ候補"が存在する場合は、そのブランチ候補がブランチ候補記憶部（PQ）２３から削除される（請求項６に対応）。また、"最短ブランチ候補"と"最短ブランチ候補コスト"の値は新規ブランチ候補とその経路コストの値に置き換えられる（請求項６，７に対応）。"最短ブランチ候補コスト"に格納されている経路コストが新規ブランチ候補の経路コスト以下の場合は新規ブランチ候補はブランチ候補記憶部（PQ）２３に格納されず、ブランチ候補記憶部（PQ）２３から削除されるブランチ候補も存在しない。また当該ノードの"最短ブランチ候補"と"最短ブランチ候補コスト"の値に変化はない。
【００４１】
ステップ１０３）  ブランチ候補記憶部（PQ）２３内の最短ブランチ候補を取り出す。この際に、当該最短ブランチ候補の終点ノードの属性中の"当該ノードまでの最短ブランチ候補"を空集合に設定する。また、集合V内ノードを空集合にした後、当該最短ブランチ候補の終点ノードをVに格納する。
【００４２】
ステップ１０４）  ステップ１０４で選択した最短ブランチ候補の終点ノードが集合E内のマルチキャスト終点ノードとして存在するかどうかを判断し、Yesの場合はステップ１０５へ進み、Noの場合はステップ１０２へ進む。
【００４３】
ステップ１０５）  ステップ１０３で選択された最短ブランチ候補を新ブランチとしてブランチ記憶部２４の集合Rに格納するとともに、当該最短ブランチ候補の終点ノードを集合Eから削除する。
【００４４】
ステップ１０６）  集合Eが空集合かどうかを判断し、空集合であればすべてのマルチキャスト終点までのブランチが得られたことと同値であるため、アルゴリズムの終了となる。空集合でない場合は、ステップ１０７へ進む。
【００４５】
ステップ１０７）  現在新ブランチの終点ノードが格納されている集合V内のノード集合を新ブランチの始点を除くすべてのノード集合に置き換える（請求項１に対応）。また、集合V内のすべてのノードの"reached属性"をyesに設定する。
【００４６】
以下、図５〜図１０に上記のアルゴリズム適用動作例を、小規模ネットワークを用いて示す。これらの図において、左上のPQは、ブランチ候補記憶部２３にブランチ候補が格納される様子を示す。また、これらの図において、ノードAはマルチキャスト始点ノード、ノードB−Dはマルチキャスト終点ノード、ノードE，Fはその他のノードを示す。
【００４７】
図５において、各ノードでは、アルゴリズムの最初は"reached属性"=no，"最短ブランチ候補"= φ、"最短ブランチ候補コスト"＝∞に設定されている。
【００４８】
図６において、アルゴリズムの第１回目のルーチンのステップ１０２ではノードAからのリンクが最短ブランチ候補としてブランチ候補記憶部（PQ）２３に登録される。また各ブランチ候補の終点ノードの"最短ブランチ候補"、"最短ブランチ候補コスト"も、当該ブランチ候補の値に更新される。第１回目のルーチンのステップ１０３では、ブランチ候補記憶部（PQ）２３中の最短ブランチ候補であるノードＡ−Ｅ(コスト＝１)が選択され、ブランチ候補記憶部（PQ）２３から取り出される。ノードＥは終点ノードではないので、ノードＥの"reached属性"はnoのままである。
【００４９】
図７において、アルゴリズムの第２回目のルーチンの処理を示すが、ステップ１０２ではノードＥから出ているリンクであるL5，L7をL1に加えて新規ブランチ候補としてノードＢ，Ｄまでの既存のブランチ候補とのコスト比較を行う。その際、ブランチ候補Ａ−Ｅ−Ｂ（コスト＝３）は既存のＡ−Ｂ(コスト＝４)よりもコストが小さいため、ブランチ候補記憶部（PQ）２３内のブランチ候補の入れ替えが起きると共に、ノードＢの"最短ブランチ候補"、"最短ブランチ候補コスト"を新規ブランチ候補の値に入れ替える。Ａ−Ｅ−Ｄ(コスト＝４)はＡ−Ｄ(コスト＝３)よりもコストが大きいのでブランチ候補の入れ替えはおきない。ステップ１０３ではブランチ候補記憶部（PQ）２３内の最短ブランチ候補であるＡ−Ｆ(コスト＝２)が選択され、ブランチ候補記憶部（PQ）２３から取り出される。
【００５０】
図８において、アルゴリズムの第４回目のルーチンの処理を示すが、ステップ１０２ではリンクL3にノードＦから出ているリンクであるL6を加え、ブランチ候補記憶部（PQ）２３にブランチ候補Ａ−Ｆ−Ｃを加える。ステップ１０３ではブランチ候補記憶部（PQ）２３内の最短ブランチ候補をブランチ候補記憶部（PQ）２３から取り出すが、ノードＢがマルチキャスト終点のため、ステップ１０５でノードＡ−Ｅ−Ｂを集合Rに加える。第４回目のルーチンのステップ１０７では、集合V内のノード集合にノードＡ−Ｅ−Ｂの始点を除いたノードであるＥ，Ｂが入れられるとともに、Ｅ，Ｂの"reached属性"がyesに設定される。reached属性をyesに設定することにより、Ｅ，Ｂを終点とする新規ブランチ候補は作られなくなる。
【００５１】
図９では、アルゴリズムの第５から第６回目のルーチンのステップ１０２までの処理を示すが、第５回目のルーチンのステップ１０２ではノードＥとＢから出ているリンクを新規ブランチ候補としてブランチ候補記憶部（PQ）２３への登録を試みる。ノードＢから出ているリンクはないので登録されない。ノードＥ−ＢはすでにノードＥの"reached属性"がyesになっているため登録されない。ノードＥ−Ｄはコストが３であるが、ノードＤが持つ最短ブランチ候補Ａ−Ｄのコストも３であるため、登録されない。ステップ１０３ではブランチ候補記憶部（PQ）２３内の最小のブランチ候補Ａ−Ｄが選択され取り出され、ノードDはマルチキャスト終点のためＡ−Ｄがブランチ記憶部２４の集合Ｒに格納される。第５回目のルーチンのステップ１０７で終点Dが集合Vに格納され、第６回目のルーチンのステップ１０２でノードDから出ているリンクL8(D-C)が新規ブランチ候補となる。このブランチ候補Ｄ−Ｃのコスト(コスト＝２)はＣまでの既存のブランチ候補Ａ−Ｆ−Ｃのコスト６よりも小さいため、ブランチ候補記憶部（PQ）２３内のブランチ候補の入れ替えが起き、ブランチ候補Ｄ−Ｃがブランチ候補記憶部（PQ）２３に入る。
【００５２】
図１０は、第６回目のルーチンのステップ１０５が終わったときの状態を示す。ブランチ候補記憶部（PQ）２３内にはノードＤ−Ｃのみが第６回目のルーチンのステップ１０３時には存在するので、ブランチ候補記憶部（PQ）２３からブランチ候補Ｄ−Ｃが取り出されるが、ノードＣが終点のため、ブランチ候補Ｄ−Ｃがブランチ記憶部２４の集合Rに格納される。第６回目のルーチンのステップ１０６でノードＥが空集合になるのでアルゴリズムの終了となる。
【００５３】
上記のように、本発明の図４に示すアルゴリズムによる処理により、ダイクストラアルゴリズムの走行を終点数だけ繰り返すMPHに比べてPQのFibonacciヒープに対するアクセス数が大幅に減少するため、計算量が少なくなり処理速度の大幅な向上が得られる。
【００５４】
上記の実施の形態における図４のアルゴリズムをプログラムとして構築し、コンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００５５】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００５６】
１１  ネットワークトポロジ管理処理部
１２  ブランチ候補処理部
１３  最小気作成処理部
２１  リンク情報記憶部
２２  ノード情報記憶部
２３  ブランチ候補記憶部
２４  ブランチ記憶部
１００  ネットワークトポロジ管理部
２００  ブランチ候補管理部
３００  最小木作成部
【図１】
0005756049.tif 000002
【図２】
0005756049.tif 000003
【図３】
0005756049.tif 000004
【図４】
0005756049.tif 000005
【図５】
0005756049.tif 000006
【図６】
0005756049.tif 000007
【図７】
0005756049.tif 000008
【図８】
0005756049.tif 000009
【図９】
0005756049.tif 000010
【図１０】
0005756049.tif 000011