(57)【要約】【課題】BBMCアルゴリズムを単純に適用した場合に比べ、より小さなコストのマルチキャスト経路を探索可能とする。【解決手段】基準エージェント(0) により決定ブランチが作成されるごとに、当該エージェント(0) から派生エージェント(k) （k=1,2,…）を作成するか否かを判定し、条件を満たした場合に当該派生エージェントを作成して経路探索を行う。また、上記派生エージェント(k) により決定ブランチが作成されるごとに、同様に派生エージェントの作成の可否を判定し、条件を満たした場合に派生エージェントを作成して経路探索を行う。そして、最終的にすべてのエージェントにより決定ブランチが得られた場合に、その中でマルチキャスト経路コストが最小のマルチキャスト経路を最終ツリーとして選択する。【選択図】図１
2016096432.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを通信リンクを介して相互に接続可能としたネットワークで使用され、前記複数のノードのうちマルチキャスト通信を行う任意の始点ノードから複数のマルチキャスト終点ノードまでの最適経路を探索するマルチキャスト経路探索装置であって、
基準エージェントにより、前記始点ノードから前記複数のマルチキャスト終点ノードに至る経路上における複数のブランチ候補を探索して基準ブランチ候補記憶部に保存し、当該基準ブランチ候補記憶部に保存された複数のブランチ候補の中から終点が前記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして基準ブランチ記憶部に保存する経路探索処理を、前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する手段と、
前記基準エージェントにより決定ブランチが得られるごとに、当該基準エージェントから派生する第１の派生エージェントを作成すると共に、この時点で前記基準ブランチ候補記憶部に保存されているすべてのブランチ候補を前記第１の派生エージェントの第１のブランチ候補記憶部にコピーし、かつ前記基準ブランチ記憶部に保存されたブランチのうち前記決定ブランチを除いたブランチを前記第１の派生エージェントの第１のブランチ記憶部にコピーする第１の派生エージェント作成手段と、
前記第１の派生エージェントにより、前記第１のブランチ候補記憶部に保存されたブランチ候補を基準にして前記複数のマルチキャスト終点ノードに至る経路上におけるブランチ候補を探索して前記第１のブランチ候補記憶部に保存し、当該第１のブランチ候補記憶部に保存されたブランチ候補の中から終点が前記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして第１のブランチ記憶部に保存する経路探索処理を、前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する手段と、
前記第１の派生エージェントにより決定ブランチが得られるごとに、当該第１の派生エージェントからさらに派生する第２の派生エージェントを作成すると共に、この時点で前記第１のブランチ候補記憶部に保存されているすべてのブランチ候補を前記第２の派生エージェントの第２のブランチ候補記憶部にコピーし、かつ前記第１のブランチ記憶部に保存されたブランチのうち前記決定ブランチを除いたブランチを前記第２の派生エージェントの第２のブランチ記憶部にコピーする第２の派生エージェント作成手段と、
前記第２の派生エージェントにより、前記第２のブランチ候補記憶部に保存されたブランチ候補を基準にして前記複数のマルチキャスト終点ノードに至る経路上におけるブランチ候補を探索して前記第２のブランチ候補記憶部に保存し、当該第２のブランチ候補記憶部に保存されたブランチ候補の中から終点が前記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして第２のブランチ記憶部に保存する経路探索処理を、前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する手段と、
前記第１及び第２の派生エージェント作成手段により作成された第１及び第２の派生エージェントのエージェントコストを含む属性情報を、派生エージェントリストを用いて管理する手段と、
最終的にすべてのエージェントにより前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られた場合に、前記基準エージェント、第１および第２の派生エージェントによりそれぞれ得られた決定ブランチに基づく各マルチキャスト経路コストを比較し、当該マルチキャスト経路コストが最も小さいマルチキャスト経路を最適経路として選択する手段と
を具備することを特徴とするマルチキャスト経路探索装置。
【請求項２】
前記第１および第２の派生エージェント作成手段は、
前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストと、新たな派生エージェントにより得られると予測されるマルチキャスト経路コストとのコスト差を算出し、当該算出されたコスト差に基づいて、前記新たな派生エージェントの作成が可能であるか否かを判定する第１の手段を備えることを特徴とする請求項１記載のマルチキャスト経路探索装置。
【請求項３】
前記第１および第２の派生エージェント作成手段は、
前記新たな派生エージェントの作成が可能と判定された場合に、前記派生エージェントリストをもとに、当該派生エージェントリスト内の作成済みの派生エージェント数が予め設定した上限値に達しているか否かを判定し、上限値に達していない場合に前記新たな派生エージェントを作成する第２の手段と、
前記派生エージェントリスト内の作成済みの派生エージェント数が上限値に達していると判定された場合には、前記派生エージェントリストに登録されている派生エージェントのエージェントコストのうちの最大値と、前記新たな派生エージェントのエージェントコストの予測値とを比較し、前記予測値が前記最大値より小さい場合に、前記新たな派生エージェントを作成して、前記エージェントコストが最大の派生エージェントを前記作成された新たな派生エージェントに入れ替える第３の手段と
を、さらに備えることを特徴とする請求項２記載のマルチキャスト経路探索装置。
【請求項４】
前記基準エージェント、前記第１および第２の派生エージェントは、
経路探索処理の過程においてノードごとに当該ノードまでの最短ブランチ候補に準じる準最短ブランチ候補とそのブランチコストを保存する手段と、
派生元エージェントが直前に選択した決定ブランチの終点ノードが保持する準最短ブランチ候補を、当該派生エージェントが新たなブランチ候補としてブランチ候補記憶部に格納する手段と
を有し、
前記第１及び第２の派生エージェント作成手段は、前記新たな派生エージェントによるマルチキャスト経路コストの予測値を｜dev_R(k)｜、当該新たな派生エージェントを作成する直前までに前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、未到達マルチキャスト終点の数をENDS、その係数をW（W≧０）、前記コスト差に基づいた評価値をEVA_VALUE 1とするとき、
前記予測値｜dev_R(k)｜を、前記新たな派生エージェントを作成する直前に前記派生元のエージェントにより得られた決定ブランチの終端ノードが保持する準最短ブランチ候補のブランチコストと、前記派生元のエージェントのブランチ候補記憶部に保存されているブランチ候補における最小のブランチコストとのうちの小さい方を、前記新たな派生エージェントを作成する直前に前記派生元のエージェントにより得られた決定ブランチを除いた決定ブランチに基づくマルチキャスト経路コストに加算することにより算出し、
前記評価値EVA_VALUE 1を、
EVA_VALUE 1＝｜dev_R(k)｜−｜R(0)｜−W×ENDS
により算出し、
前記算出された評価値EVA_VALUE 1が０以下の場合に前記新たな派生エージェントを作成可能と判定することを特徴とする請求項２記載のマルチキャスト経路探索装置。
【請求項５】
前記第１及び第２の派生エージェント作成手段の第３の手段は、前記新たな派生エージェントのエージェントコストの予測値をAGENT_COST 1、当該新たな派生エージェントにより得られると予測されるマルチキャスト経路コストの値を｜dev_R(k)｜、当該新たな派生エージェントの作成直前までに前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、当該派生エージェントの前記基準エージェントからの派生段階数をDEVS、その係数をW1（W1≧０）、当該派生エージェントが派生した時点の未到達マルチキャスト終点の数をENDS、その係数をW2（W2≧０）とするとき、
前記予測値｜dev_R(k)｜を、当該派生エージェントの作成直前に前記派生元のエージェントにより得られた決定ブランチの終端ノードが保持する準最短ブランチ候補のブランチコストと、前記派生元のエージェントのブランチ候補記憶部に保存されているブランチ候補における最小ブランチコストのうちの小さい方を、当該派生エージェントを作成する直前に前記派生元のエージェントにより得られた決定ブランチを除いた決定ブランチに基づくマルチキャスト経路コストに加算することにより算出し、
前記新たな派生エージェントのエージェントコストの予測値AGENT_COST 1 を
AGENT_COST 1＝｜dev_R(k)｜−｜R(0)｜＋W1×DEVS−W2×ENDS
により算出することを特徴とする請求項３記載のマルチキャスト経路探索装置。
【請求項６】
前記第１または第２の派生エージェントにより決定ブランチが得られるごとに、当該第１または第２の派生エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストと、前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストとのコスト差を算出し、当該算出されたコスト差に基づいて、当該第１または第２の派生エージェントを前記派生エージェントリストから削除する派生エージェント削除手段を、さらに具備することを特徴とする請求項１乃至３の何れかに記載のマルチキャスト経路探索装置。
【請求項７】
前記派生エージェント削除手段は、前記第１または第２の派生エージェントによるマルチキャスト経路コストを｜R(k)｜、この時点までに前記第１または第２の派生エージェントを作成する直前までに前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、未到達マルチキャスト終点の数をENDS、その係数をW（W≧０）、前記コスト差に基づいた評価値をEVA_VALUE 2とするとき、
前記評価値EVA_VALUE 2を、
EVA_VALUE 2＝｜R(k)｜−｜R(0)｜−W×ENDS
により算出し、
前記算出された評価値EVA_VALUE 2が０より大きい場合に前記第１または第２の派生エージェントを前記派生エージェントリストから削除することを特徴とする請求項６記載のマルチキャスト経路探索装置。
【請求項８】
前記第１または第２の派生エージェントにより決定ブランチが得られるごとに、前記派生エージェントリストに登録された派生エージェントのエージェントコストを更新するエージェントコスト更新手段を、さらに具備し、
前記エージェントコスト更新手段は、前記登録された派生エージェントのこの時点でのマルチキャスト経路コストを｜R(k)｜、この時点までに前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、当該派生エージェントの基準エージェントからの派生段階数をDEVS、その係数をW1（W1≧０）、当該派生エージェントが派生した時点の未到達マルチキャスト終点の数をENDS、その係数をW2（W2≧０）とするときに、更新するエージェントコストAGENT_COST 2を
AGENT_COST 2＝｜R(k)｜−｜R(0)｜＋W1×DEVS−W2×ENDS
により算出することを特徴とする請求項１乃至３の何れかに記載のマルチキャスト経路探索装置。
【請求項９】
複数のノードを通信リンクを介して相互に接続可能としたネットワークで使用されるマルチキャスト経路探索装置が、前記複数のノードのうちマルチキャスト通信を行う任意の始点ノードから複数のマルチキャスト終点ノードまでの最適経路を探索するマルチキャスト経路探索方法であって、
基準エージェントにより、前記始点ノードから前記複数のマルチキャスト終点ノードに至る経路上における複数のブランチ候補を探索して基準ブランチ候補記憶部に保存し、当該基準ブランチ候補記憶部に保存された複数のブランチ候補の中から終点が前記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして基準ブランチ記憶部に保存する経路探索処理を、前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する過程と、
前記基準エージェントにより決定ブランチが得られるごとに、当該基準エージェントから派生する第１の派生エージェントを作成すると共に、この時点で前記基準ブランチ候補記憶部に保存されているすべてのブランチ候補を前記第１の派生エージェントの第１のブランチ候補記憶部にコピーし、かつ前記基準ブランチ記憶部に保存されたブランチのうち前記決定ブランチを除いたブランチを前記第１の派生エージェントの第１のブランチ記憶部にコピーする過程と、
前記第１の派生エージェントにより、前記第１のブランチ候補記憶部に保存されたブランチ候補を基準にして前記複数のマルチキャスト終点ノードに至る経路上におけるブランチ候補を探索して前記第１のブランチ候補記憶部に保存し、当該第１のブランチ候補記憶部に保存されたブランチ候補の中から終点が前記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして第１のブランチ記憶部に保存する経路探索処理を、前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する過程と、
前記第１の派生エージェントにより決定ブランチが得られるごとに、当該第１の派生エージェントからさらに派生する第２の派生エージェントを作成すると共に、この時点で前記第１のブランチ候補記憶部に保存されているすべてのブランチ候補を前記第２の派生エージェントの第２のブランチ候補記憶部にコピーし、かつ前記第１のブランチ記憶部に保存されたブランチのうち前記決定ブランチを除いたブランチを前記第２の派生エージェントの第２のブランチ記憶部にコピーする過程と、
前記第２の派生エージェントにより、前記第２のブランチ候補記憶部に保存されたブランチ候補を基準にして前記複数のマルチキャスト終点ノードに至る経路上におけるブランチ候補を探索して前記第２のブランチ候補記憶部に保存し、当該第２のブランチ候補記憶部に保存されたブランチ候補の中から終点が前記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして第２のブランチ記憶部に保存する経路探索処理を、前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する過程と、
前記作成された第１及び第２の派生エージェントのエージェントコストを含む属性情報を、派生エージェントリストを用いて管理する過程と、
最終的にすべてのエージェントが前記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られた場合に、前記基準エージェント、第１および第２の派生エージェントによりそれぞれ得られた決定ブランチに基づく各マルチキャスト経路コストを比較し、当該マルチキャスト経路コストが最も小さいマルチキャスト経路を最適経路として選択する過程と
を具備することを特徴とするマルチキャスト経路探索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マルチキャスト通信で使用するマルチキャストツリーを生成するためのマルチキャスト経路探索装置および方法に関する。
【背景技術】
【０００２】
ＩＰ（Internet Protocol）ネットワークでは、マルチキャスト動画ストリーミングに代表される放送型サービスの要求が高まっており、この種のサービスを実施するにはツリーを構成するすべてのリンクコストの合計が最小になるようなマルチキャストツリーを作成する必要がある。
【０００３】
マルチキャストツリーを生成するアルゴリズムとしては、例えばBBMC（Branch-Based Multi-Cast）アルゴリズムが知られている。BBMCアルゴリズムは、複数のノードとこれら複数のノード間を接続する複数の方向性リンク（リンクの方向によりリンクコストが異なるリンク）とにより構成されるネットワーク上おいて、先ずマルチキャスト始点ノードのみから始まるマルチキャストツリーを定義し、当該マルチキャストツリーからまだ経路が決まっていないマルチキャスト終点ノード集合の１終点ノードに辿り着く最短経路を新ブランチとしてマルチキャストツリーに加え、この処理を最終的にすべてのマルチキャストツリーブランチが決まるまで繰り返すアルゴリズムである（例えば非特許文献１を参照）。
【０００４】
図６は、BBMCアルゴリズムの処理手順と処理内容を示すフローチャートである。先ずステップＳ１００において、アルゴリズムの初期条件として、マルチキャストの終点ノード集合Eと、リンクの始点ノードとしてステップＳ１０１で利用される始点ノード集合Vと、ブランチ候補の集合を表すBCL（Branch Candidate リスト）と、最終的なツリーを構成するブランチの集合Rが記憶部に記憶される。このうちBCLおよびRは、初期値として空集合に設定される。また、始点ノード集合Vにはマルチキャスト始点ノードのみが格納される。
【０００５】
マルチキャストツリーを作成するネットワークの各ノードの属性情報は、図５に示すBBMCルーティングモジュールに示すようにノード情報記憶部２０２に記憶される。“reached属性”は当該ノードがマルチキャストツリーの構成要素になったかを示すもので、アルゴリズムの最初では始点ノードのみがマルチキャストツリーに含まれるので“yes”に設定され、他ノードはすべて“no”に設定される。“ノードまでの最短ブランチ候補とそのコスト”は、アルゴリズム開始時の初期値として“最短ブランチ候補”＝φ、“最短ブランチ候補コスト”＝∞に設定される。
【０００６】
ステップＳ１０１では始点ノード集合V内の各ノードから発するリンクを選択し、当該リンクからブランチ候補を作成する。その際、ブランチ終点がマルチキャストの終点ノード集合Eに記憶されたマルチキャスト終点の場合、つまり直前のステップＳ１０３で“yes”と判定された場合には、当該リンクがそのままブランチ候補になる。これに対し、マルチキャスト終点でない場合、つまりステップＳ１０３＝“no”の場合には、当該リンクを直前のステップＳ１０２で選択された最短ブランチ候補の後に繋げた経路がブランチ候補になる。
【０００７】
アルゴリズムの第１ルーチンでは、リンクがそのまま新規ブランチ候補になる。この新規ブランチ候補の作成処理は、始点ノード集合Vに格納されたノードから発するすべてのリンクについて行われるが、リンクの終点ノードの“reached属性”が“yes”の場合には、そのノードはすでにマルチキャストツリーに含まれることになるので、ブランチ候補にはならない。
【０００８】
これに対し、“reached属性”が“no”の場合で、終点ノード属性の“最短ブランチ候補コスト”に格納されているブランチコストが新規ブランチ候補のブランチコストより大きい場合には、新規ブランチ候補がブランチ候補集合BCLに登録される。新規ブランチ候補がブランチ候補集合BCLに登録される場合、当該新規ブランチ候補の終点ノードの“最短ブランチ候補”が空集合の場合には、ブランチ候補の集合BCLから削除されるブランチ候補はない。しかし、“最短ブランチ候補”が存在する場合には、当該ブランチ候補がブランチ候補の集合BCLから削除される。また、上記新規ブランチ候補が登録されると、“最短ブランチ候補”および“最短ブランチ候補コスト”の値は、新規ブランチ候補とその経路コストの値に置き換えられる。
【０００９】
“最短ブランチ候補コスト”に格納されているブランチコストが新規ブランチ候補のブランチコスト以下の場合には、新規ブランチ候補はブランチ候補の集合BCLに格納されず、BCLから削除されるブランチ候補も存在しない。また、当該ノードの“最短ブランチ候補”と“最短ブランチ候補コスト”の値は変化しない。
【００１０】
ステップＳ１０２では、ブランチ候補の集合BCL内の最短ブランチ候補、つまりBCL内で最もブランチコストが小さいブランチ候補を取り出す。その際、当該最短ブランチ候補の終点ノードの属性中の“当該ノードまでの最短ブランチ候補”を空集合に設定する。また、当該最短ブランチ候補の終点ノードを始点ノード集合V内の既存ノード集合と置き換えてVに格納する。
【００１１】
ステップＳ１０３では、ステップＳ１０２で選択した最短ブランチ候補の終点ノードが、マルチキャストの終点ノード集合Eにマルチキャスト終点ノードとして存在するかどうかを判断し、存在すればステップＳ１０４へ進み、存在しなければステップＳ１０１に戻る。
【００１２】
ステップＳ１０４ではステップＳ１０２で選択された最短ブランチ候補を新ブランチとして集合Rに格納するとともに、当該新ブランチの終点ノードを終点ノード集合Eから削除する。
【００１３】
ステップＳ１０５では、終点ノード集合Eが空集合かどうかを判断し、空集合であればすべてのマルチキャスト終点までのブランチが得られたことと同値であるため、アルゴリズムを終了する。これに対し空集合でない場合には、ステップＳ１０６へ進む。
【００１４】
ステップＳ１０６では、現在新ブランチの終点ノードが格納されている始点ノード集合V内のノード集合を、ステップＳ１０４でブランチ集合Rに格納された新ブランチ上の始点を除くすべてのノード集合に置き換える。また、始点ノード集合V内のノード集合に含まれるすべてのノードの“reached属性”を“yes”に設定する。
【先行技術文献】
【非特許文献】
【００１５】
【非特許文献１】H. Matsuura, “Improvement of Steiner Tree Algorithm: Branch-Based Multi-Cast”, IEICE Transaction on Information and Systems, vol. E96-D, no. 12, pp. 2743-2752, Dec. 2013
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところが、上記のBBMCアルゴリズムは、時として最小木コストから程遠いツリーを作成してしまう場合がある。図７にその一例を示す。同図において、BBMCでマルチキャストツリーを作成する対象となるネットワークは、マルチキャストツリー始点ノードがｓ、終点ノードがｅ１〜ｅ３、その他のノードがｎ１〜ｎ４で示されている。各ノード間にはリンクがあるが、リンク上の矢印はそのリンクの方向を示し、リンクの横の数はそのリンクコストを示している。
【００１７】
図７（１）は、BBMCアルゴリズムがステップＳ１０１で始点ノード集合Vに設定されたノードｓから発するリンクをブランチ候補としてブランチ候補の集合BCLに登録した結果を示している。この場合、ブランチ候補ｓ−ｎ２が最もブランチコストが小さいブランチ候補なので、ｓ−ｎ２が図６に示すステップＳ１０２でブランチ候補の集合BCLから取り出されて、始点ノード集合Vがｎ２に置き換えられる。ステップＳ１０３でｎ２が終点ノードＥに属さないため、ステップＳ１０１に処理が移る。
【００１８】
図７（２）は、BBMCが２度目のステップＳ１０１でｎ２から発するリンクをｓ−ｎ２に繋げたブランチ候補をブランチ候補の集合BCLに登録する処理を示している。ｓ−ｎ２−ｅ２はｅ２までの初のブランチ候補なので、ブランチ候補の集合BCLに登録される。しかし、ｓ−ｎ２−ｎ１はブランチコストが“６”であり、すでにｎ１のノード情報記憶部２０２に格納されている最短ブランチ候補ｓ−ｎ１のブランチコスト“５”よりも大きいため、ブランチ候補の集合BCLに登録されない。ｓ−ｎ２−ｅ１はｅ１までの初のブランチ候補なので、ブランチ候補の集合BCLに登録される。結果として、ブランチ候補の集合BCLの中でｓ−ｎ２−ｅ１が最もブランチコストが小さいので、ブランチ候補の集合BCLから取り出され、ステップＳ１０３でｅ１がマルチキャスト終点ノードであるため、ステップＳ１０４でｓ−ｎ２−ｅ１がブランチ集合Rに格納される。この時点で終点ノード集合Eからｅ１が削除されるため、E＝｛ｅ２，ｅ３｝となるが、まだ空集合ではないのでステップＳ１０６に進み、始点ノード集合V内のノードにｎ２、ｅ１が格納され、結果としてV＝｛ｎ２，ｅ１｝となり、ステップＳ１０１に戻る。
【００１９】
図７（３）は、BBMCが３度目のステップＳ１０１でノードｎ２とｅ１から発するリンクを新ブランチ候補としてブランチ候補の集合BCLに登録する処理を示している。前のルーチンのステップＳ１０３で“yes”が選択されているので、各リンクは単独でブランチ候補となる。ｎ２−ｅ２はｅ２に登録されているブランチ候補ｓ−ｎ２−ｅ２よりもブランチコストが小さいため、ｓ−ｎ２−ｅ２を置き換え、ブランチ候補の集合BCLに登録される。ｎ２−ｎ１はｎ１に登録されているブランチ候補ｓ−ｎ１よりもブランチコストが小さいため、ｓ−ｎ１を置き換えてブランチ候補の集合BCLに登録される。結果として、ｎ２−ｅ２がｎ２−ｎ１と同じく最も小さいブランチコストを持つので、ブランチ候補の集合BCLから削除され、ｅ２が終点ノードであるため、ブランチ集合Rに格納される。
【００２０】
図７（４）は、BBMCが始点ノード集合Vに格納されているｅ２からのリンクを新ブランチ候補としてBCLに登録する処理を示している。結果として、ｅ２−ｎ４、ｅ２−ｅ３がブランチ候補の集合BCLに登録され、ｎ２−ｎ１が最も小さいブランチコストを持つブランチ候補なので、ブランチ候補の集合BCLから削除される。
【００２１】
このように探索処理を続けていくと最終的にブランチ集合Rに格納されるブランチはｓ−ｎ２−ｅ１、ｎ２−ｅ２、ｅ２−ｅ３の３つのブランチとなる。この合計のツリーコストは“１２”となり、コストの大きいツリーになってしまう。
【００２２】
この発明は上記事情に着目してなされたもので、その目的とするところは、BBMCアルゴリズムを単純に適用した場合に比べ、より小さなコストのマルチキャスト経路を探索可能としたマルチキャスト経路探索装置および方法を提供することにある。
【課題を解決するための手段】
【００２３】
上記目的を達成するためにこの発明は、以下のような各種態様を備える。  
（１）複数のノードを通信リンクを介して相互に接続可能としたネットワークで使用され、上記複数のノードのうちマルチキャスト通信を行う任意の始点ノードから複数のマルチキャスト終点ノードまでの最適経路を探索するマルチキャスト経路探索装置であって、基準エージェントにより、上記始点ノードから上記複数のマルチキャスト終点ノードに至る経路上における複数のブランチ候補を探索して基準ブランチ候補記憶部に保存し、当該基準ブランチ候補記憶部に保存された複数のブランチ候補の中から終点が上記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして基準ブランチ記憶部に保存する経路探索処理を、上記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する手段と、上記基準エージェントにより決定ブランチが得られるごとに、当該基準エージェントから派生する第１の派生エージェントを作成すると共に、この時点で上記基準ブランチ候補記憶部に保存されているすべてのブランチ候補を上記第１の派生エージェントの第１のブランチ候補記憶部にコピーし、かつ上記基準ブランチ記憶部に保存されたブランチのうち上記決定ブランチを除いたブランチを上記第１の派生エージェントの第１のブランチ記憶部にコピーする第１の派生エージェント作成手段と、上記第１の派生エージェントにより、上記第１のブランチ候補記憶部に保存されたブランチ候補を基準にして上記複数のマルチキャスト終点ノードに至る経路上におけるブランチ候補を探索して上記第１のブランチ候補記憶部に保存し、当該第１のブランチ候補記憶部に保存されたブランチ候補の中から終点が上記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして第１のブランチ記憶部に保存する経路探索処理を、上記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する手段と、上記第１の派生エージェントにより決定ブランチが得られるごとに、当該第１の派生エージェントからさらに派生する第２の派生エージェントを作成すると共に、この時点で上記第１のブランチ候補記憶部に保存されているすべてのブランチ候補を上記第２の派生エージェントの第２のブランチ候補記憶部にコピーし、かつ上記第１のブランチ記憶部に保存されたブランチのうち上記決定ブランチを除いたブランチを上記第２の派生エージェントの第２のブランチ記憶部にコピーする第２の派生エージェント作成手段と、上記第２の派生エージェントにより、上記第２のブランチ候補記憶部に保存されたブランチ候補を基準にして上記複数のマルチキャスト終点ノードに至る経路上におけるブランチ候補を探索して上記第２のブランチ候補記憶部に保存し、当該第２のブランチ候補記憶部に保存されたブランチ候補の中から終点が上記複数のマルチキャスト終点ノードのいずれかに到達しかつブランチコストが最小のブランチ候補を決定ブランチとして第２のブランチ記憶部に保存する経路探索処理を、上記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られるまで実行する手段と、上記第１及び第２の派生エージェント作成手段により作成された第１及び第２の派生エージェントのエージェントコストを含む属性情報を、派生エージェントリストを用いて管理する手段と、最終的にすべてのエージェントにより上記複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られた場合に、上記基準エージェント、第１および第２の派生エージェントによりそれぞれ得られた決定ブランチに基づく各マルチキャスト経路コストを比較し、当該マルチキャスト経路コストが最も小さいマルチキャスト経路を最適経路として選択する手段とを備える。
【００２４】
（２）（１）において、上記第１および第２の派生エージェント作成手段は、上記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストと、新たな派生エージェントにより得られると予測されるマルチキャスト経路コストとのコスト差を算出し、当該算出されたコスト差に基づいて、上記新たな派生エージェントの作成が可能であるか否かを判定する第１の手段を備える。
【００２５】
（３）（２）において、上記第１および第２の派生エージェント作成手段は、上記新たな派生エージェントの作成が可能と判定された場合に、上記派生エージェントリストをもとに、当該派生エージェントリスト内の作成済みの派生エージェント数が予め設定した上限値に達しているか否かを判定し、上限値に達していない場合に上記新たな派生エージェントを作成する第２の手段と、上記派生エージェントリストに登録されている作成済みの派生エージェント数が上限値に達していると判定された場合には、上記派生エージェントリストに登録されている派生エージェントのエージェントコストのうちの最大値と、上記新たな派生エージェントのエージェントコストの予測値とを比較し、上記予測値が上記最大値より小さい場合に、上記新たな派生エージェントを作成して、上記エージェントコストが最大の派生エージェントを上記作成された新たな派生エージェントに置き換える第３の手段を、さらに備える。
【００２６】
（４）（２）において、上記基準エージェント、上記第１および第２の派生エージェントは、経路探索処理の過程においてノードごとに当該ノードまでの最短ブランチ候補に準じる準最短ブランチ候補とそのブランチコストを保存する手段を有し、派生元エージェントが直前に選択した決定ブランチの終点ノードが保持する準最短ブランチ候補を、当該派生エージェントが、新たなブランチ候補としてブランチ候補記憶部に格納するとともに、上記第１及び第２の派生エージェント作成手段が、上記新たな派生エージェントによるマルチキャスト経路コストの予測値を｜dev_R(k)｜、当該新たな派生エージェントを作成する直前までに上記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、未到達マルチキャスト終点の数をENDS、その係数をW（W≧０）、上記コスト差に基づいた評価値をEVA_VALUE 1とするとき、上記予測値｜dev_R(k)｜を、上記新たな派生エージェントを作成する直前に上記派生元のエージェントにより得られた決定ブランチの終端ノードが保持する準最短ブランチ候補のブランチコストと、上記派生元のエージェントのブランチ候補記憶部に保存されているブランチ候補における最小のブランチコストとのうちの小さい方を、上記新たな派生エージェントを作成する直前に上記派生元のエージェントにより得られた決定ブランチを除いた決定ブランチに基づくマルチキャスト経路コストに加算することにより算出し、上記評価値EVA_VALUE 1 を、
EVA_VALUE 1＝｜dev_R(k)｜−｜R(0)｜−W×ENDS
により算出し、上記算出された評価値EVA_VALUE 1 が０以下の場合に上記新たな派生エージェントを作成可能と判定する。
【００２７】
（５）（３）において、上記第１及び第２の派生エージェント作成手段の第３の手段は、上記新たな派生エージェントのエージェントコストの予測値をAGENT_COST 1 、当該新たな派生エージェントにより得られると予測されるマルチキャスト経路コストの値を｜dev_R(k)｜、当該新たな派生エージェントの作成直前までに上記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、当該派生エージェントの上記基準エージェントからの派生段階数をDEVS、その係数をW1（W1≧０）、当該派生エージェントが派生した時点の未到達マルチキャスト終点の数をENDS、その係数をW2（W2≧０）とするとき、上記予測値｜dev_R(k)｜を、当該派生エージェントの作成直前に上記派生元のエージェントにより得られた決定ブランチの終端ノードが保持する準最短ブランチ候補のブランチコストと、上記派生元のエージェントのブランチ候補記憶部に保存されているブランチ候補における最小ブランチコストのうちの小さい方を、当該派生エージェントを作成する直前に上記派生元のエージェントにより得られた決定ブランチを除いた決定ブランチに基づくマルチキャスト経路コストに加算することにより算出し、上記新たな派生エージェントのエージェントコストの予測値AGENT_COST 1 を
AGENT_COST 1 ＝｜dev_R(k)｜−｜R(0)｜＋W1×DEVS−W2×ENDS
により算出する。
【００２８】
（６）（１）乃至（３）の何れかにおいて、上記第１または第２の派生エージェントにより決定ブランチが得られるごとに、当該第１または第２の派生エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストと、上記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストとのコスト差を算出し、当該算出されたコスト差に基づいて、当該第１または第２の派生エージェントを上記派生エージェントリストから削除する派生エージェント削除手段を、さらに具備する。
【００２９】
（７）（６）において、上記派生エージェント削除手段は、上記第１または第２の派生エージェントによるマルチキャスト経路コストを｜R(k)｜、この時点までに上記第１または第２の派生エージェントを作成する直前までに上記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、未到達マルチキャスト終点の数をENDS、その係数をW（W≧０）、上記コスト差に基づいた評価値をEVA_VALUE 2 とするとき、上記評価値EVA_VALUE 2 を、
EVA_VALUE 2 ＝｜R(k)｜−｜R(0)｜−W×ENDS
により算出し、上記算出された評価値EVA_VALUE 2 が０より大きい場合に上記第１または第２の派生エージェントを上記派生エージェントリストから削除する。
【００３０】
（８）（１）乃至（３）の何れかにおいて、上記第１または第２の派生エージェントにより決定ブランチが得られるごとに、上記派生エージェントリストに登録された派生エージェントのエージェントコストを更新するエージェントコスト更新手段を、さらに具備し、上記エージェントコスト更新手段は、上記登録された派生エージェントのこの時点でのマルチキャスト経路コストを｜R(k)｜、この時点までに上記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、当該派生エージェントの基準エージェントからの派生段階数をDEVS、その係数をW1（W1≧０）、当該派生エージェントが派生した時点の未到達マルチキャスト終点の数をENDS、その係数をW2（W2≧０）とするときに、更新するエージェントコストAGENT_COST 2 を
AGENT_COST 2 ＝｜R(k)｜−｜R(0)｜＋W1×DEVS−W2×ENDS
により算出する。
【発明の効果】
【００３１】
（１）基準エージェントにより決定ブランチが得られるごとに第１の派生エージェントが作成され、さらにこの第１の派生エージェントにより決定ブランチが得られるごとに第２の派生エージェントが作成される。そして、これらの派生エージェントにより、それぞれ派生元のエージェントから引き継いだブランチ候補およびブランチを基準にしてブランチの探索処理が行われる。すなわち、決定ブランチが得られるごとに段階的に新たな派生エージェントが作成され、これら複数のエージェントによりそれぞれブランチの探索処理が行われる。そして、最終的にすべてのエージェントにより複数のマルチキャスト終点ノードのすべてについて決定ブランチが得られた場合に、当該決定ブランチに基づくマルチキャスト経路コストの中で最もコストが小さいマルチキャスト経路が最適経路として選択される。  
このため、基準エージェントによる経路探索で見逃したマルチキャスト経路を第１及び第２の派生エージェントにより見つけることが可能となり、これにより基準エージェントによる経路探索処理のみを用いる場合に比べ、コストの小さいマルチキャスト経路を高い確率で探索することが可能となる。
【００３２】
（２）新たな派生エージェントを作成する際に、当該新たな派生エージェントにより得られると予測されるマルチキャスト経路コストと基準エージェントによるマルチキャスト経路コストとのコスト差を考慮して、上記新たな派生エージェントの作成の可否が判定される。このため、基準エージェントよりもコストの小さいマルチキャスト経路を探索できる確率が高い場合にのみ派生エージェントが作成されるため、最小木コストの経路をより高い確率で探索することが可能となる。
【００３３】
（３）新たな派生エージェントの作成が可能と判定された場合、派生エージェントリスト内の作成済みの派生エージェント数が上限値に達していない場合に新たな派生エージェントが作成される。一方、作成済みの派生エージェント数が上限値に達している場合には、派生エージェントリストに登録されている派生エージェントのエージェントコストのうちの最大値と、上記新たな派生エージェントのエージェントコストの予測値とが比較され、予測値が最大値より小さい場合に上記新たな派生エージェントが作成されて、派生エージェントリストのエントリが上記エージェントコストの最大の派生エージェントから上記新たな派生エージェントに入れ替えられる。
このため、新たな派生エージェントを作成する際には、派生エージェントリストに基づいて、その上限値の範囲内でエージェントコストのより小さい派生エージェントが作成されることになる。このため、コストがより小さいマルチキャスト経路を探索できる確率が高まる。また、派生エージェント数に上限が設けられるので、派生エージェント数に上限を設けない場合に比べ、経路探索に要する処理負荷を抑制することができる。
【００３４】
（４）新たな派生エージェントを作成するか否かを判定する際に、基準エージェントによるマルチキャスト経路コスト｜R(0)｜と、新たな派生エージェントによるマルチキャスト経路コストの予測値｜dev_R(k)｜とのコスト差だけでなく、まだブランチが辿り着いていないマルチキャスト終端点の数ENDSも考慮して、新たな派生エージェントの作成の可否が判定される。また、新たな派生エージェントによるマルチキャスト経路コストの予測値｜dev_R(k)｜を算出する際に、該当するノードが保持する準最短ブランチ候補のブランチコストも考慮されるため、予測値｜dev_R(k)｜をより正確に算出することが可能となる。その結果、新たな派生エージェントの作成の可否をより一層高精度に判定することが可能となる。
【００３５】
（５）エージェントコストをもとに新たな第２のエージェントの作成の可否を判定する際に、基準エージェントによるマルチキャスト経路コスト｜R(0)｜と、新たな派生エージェントによるマルチキャスト経路コストの予測値｜dev_R(k)｜とのコスト差だけでなく、派生エージェントの基準エージェントからの派生段階数DEVSと、派生時の未到達マルチキャスト終点の数ENDSを考慮して判定が行われる。また、予測値｜dev_R(k)｜を算出する際には、該当するノードが保持する準最短ブランチ候補のブランチコストも考慮されるため、より正確な予測値を算出することが可能となる。その結果、新たな派生エージェントの作成の可否を判定する際に、より一層精度の高い判定が可能となる。
【００３６】
（６）派生エージェントにより決定ブランチが得られるごとに、当該派生エージェントによるマルチキャスト経路コストと、基準エージェントによるマルチキャスト経路コストのコスト差に基づいた評価値が０より大きい場合には、当該派生エージェントが削除される。このため、基準エージェントにより得られるマルチキャスト経路コストより小さいマルチキャスト経路コストを得る可能性が高い派生エージェントのみを使用して、効果的なマルチキャスト経路探索を行うことができる。
【００３７】
（７）上記評価値を算出する際に、まだブランチが辿り着いていないマルチキャスト終点の数ENDSも考慮される。このため、派生エージェントによるマルチキャスト経路コスト｜R(k)｜と、基準エージェントによるマルチキャスト経路コスト｜R(0)｜のコスト差のみによりエージェントの削除の可否を判定する場合に比べ、エージェントの削除の可否をより正確に判定することが可能となる。
【００３８】
（８）派生エージェントにより決定ブランチが得られるごとに、派生エージェントリストに登録された派生エージェントのエージェントコストが更新される。このため、派生エージェントリストに登録された派生エージェントのエージェントコストを常に最新の状態に維持することができる。しかも、派生エージェントのエージェントコストを算出する際に、当該派生エージェントによるマルチキャスト経路コスト｜R(k)｜と、当該派生エージェントの作成直前までに基準エージェントにより得られたマルチキャスト経路コスト｜R(0)｜とのコスト差だけでなく、当該派生エージェントの基準エージェントからの派生段階数DEVSと、派生時の未到達マルチキャスト終点の数ENDSが考慮される。このため、派生エージェントのエージェントコストをより正確に算出することが可能となる。
【００３９】
すなわちこの発明によれば、BBMCアルゴリズムを単純に適用した場合に比べ、より小さなコストのマルチキャスト経路を探索可能としたマルチキャスト経路探索装置および方法を提供することができる。
【図面の簡単な説明】
【００４０】
【図１】この発明の一実施形態に係るマルチキャスト経路探索装置の機能構成を示すブロック図。
【図２】図１に示したマルチキャスト経路探索装置のルーティングモジュール構成を示す図。
【図３】図１に示したマルチキャスト経路探索装置により実行されるマルチキャスト経路探索動作の手順と内容を示すフローチャート。
【図４】図３に示したマルチキャスト経路探索動作の一例を示す図。
【図５】BBMCアルゴリズムを使用する従来のマルチキャスト経路探索装置のルーティングモジュール構成を示す図。
【図６】従来のマルチキャスト経路探索装置により実行されるマルチキャスト経路探索動作の手順と内容を示すフローチャート。
【図７】図６に示したマルチキャスト経路探索動作の一例を示す図。
【発明を実施するための形態】
【００４１】
以下、図面を参照してこの発明に係わる実施形態を説明する。  
［一実施形態］
（構成）
図１は、この発明の一実施形態に係るマルチキャスト経路探索装置の機能構成を示すブロック図であり、ＲＳＶはマルチキャスト経路探索装置としてのルーティングサーバを示している。また、図２は当該ルーティングサーバＲＳＶのモジュール構成を示す。
【００４２】
ルーティングサーバＲＳＶは、Multi agent BBMCアルゴリズムを用いて経路探索処理を実行するもので、制御ユニット１と、データベース２と、エージェントメモリ３ａ０〜３ａｎと、共有メモリ４と、通信インタフェースユニット５を備えている。通信インタフェースユニット５は、制御ユニット１の制御の下でネットワークＮＷとの間で通信を行う。ネットワークＮＷはＩＰネットワークからなり、通信リンクにより相互に接続された複数のノードを含む。
【００４３】
データベース２は、リンク情報記憶部２１と、ノード情報記憶部２２を備える。リンク情報記憶部２１には、上記複数のノード間を接続する各通信リンクを表す情報に対応付けてそのリンクコストが記憶される。ノード情報記憶部２２には、上記複数のノードのそれぞれについて、当該ノードに接続される通信リンクを表す情報と、始点ノードから当該ノードまでの最短ブランチ候補とそのコスト、準最短ブランチ候補とそのコスト、“reached属性”（yes ／no）が格納される。“reached属性”は、当該ノードがマルチキャストツリーの構成要素になったかを示すもので、経路探索が開始される前の初期状態では始点ノードのみがマルチキャストツリーに含まれるので“yes”に設定され、他ノードはすべて“no”に設定される。
【００４４】
なお、データベース２は、ルーティングサーバＲＳＶ内に設けずに、当該ルーティングサーバＲＳＶに対し独立して設けられたデータベースサーバやクラウドシステムに設け、これらに対しルーティングサーバＲＳＶからネットワークを介してアクセスして必要な情報をダウンロードするようにしてもよい。
【００４５】
エージェントメモリ３ａ０〜３ａｎには、ブランチ候補記憶部３１と、ブランチ記憶部３２が設けられる。これらのブランチ候補記憶部３１およびブランチ記憶部３２は何れもエージェントごとに領域が分けられている。ブランチ候補記憶部３１の各領域には、エージェントごとにその経路探索処理により生成されたブランチ候補が格納される。ブランチ記憶部３２の各領域には、エージェントごとにその経路探索処理により決定されたブランチが格納される。
【００４６】
共有メモリ４は、各エージェントが共有するもので、エージェントリスト記憶部４１を備えている。エージェントリスト記憶部４１には、エージェントコストによってソートされた複数のエージェントへのポインタが記憶される。エージェントリスト記憶部４１に格納されるエージェントのポインタの数には上限値が設定されている。
【００４７】
制御ユニット１は、主制御部として中央処理ユニット（ＣＰＵ；Central Processing Unit）を備え、この実施形態に係るMulti agent BBMCアルゴリズムを実行する上で必要な制御機能として、ネットワークトポロジ管理処理部１１と、ブランチ候補処理部１２と、最小木作成処理部１３と、エージェント処理部１４と、最終ツリー決定部１５を有している。これらの制御機能は何れも図示しないプログラムメモリに格納されたプログラムを上記ＣＰＵに実行させることにより実現される。
【００４８】
ネットワークトポロジ管理処理部１１は、ネットワークＮＷにおける複数のノードと、これらのノード間を接続する通信リンクを管理するもので、リンクごとにそのリンク情報を上記リンク情報記憶部２１で管理すると共に、ノードごとにそのノード情報を上記ノード情報記憶部２２で管理する。リンク情報は、ノード間を接続するすべてのリンクについてそれぞれその方向（ＡＺ／ＺＡ）ごとにコスト（cost）を管理する。またノード情報は、上記複数のノードのそれぞれについて、当該ノードまでの最短ブランチ候補とそのコスト、準最短ブランチ候補とそのコスト、“reached属性”（yes／no）をそれぞれ管理する。
【００４９】
最小木作成処理部１３は、BBMCアルゴリズムを用いて、エージェントごとに、上記ネットワークトポロジ管理処理部１１で管理されているリンク情報およびノード情報を利用して、ノード間の最短ブランチ候補を探索する。また、上記ブランチ候補記憶部３１に記憶されたブランチ候補をもとに、マルチキャスト終点ノードに到達したブランチコストが最小のブランチ候補を選択して当該ブランチ候補を決定ブランチとしてブランチ記憶部３２に格納する処理を行う。
【００５０】
ブランチ候補処理部１２は、上記最小木作成処理部１３の指示に従い、当該最小木作成処理部１３により探索されたブランチ候補をブランチ候補記憶部３１に記憶させると共に、ブランチ候補記憶部３１からブランチ候補を読み出して上記最小木作成処理部１３へ出力する処理を行う。
【００５１】
エージェント処理部１４は、エージェントリスト記憶部４１を用いて各エージェントを共有管理するもので、各エージェントの最小木作成処理部１３が新たなブランチを作成するごとに、当該エージェントをエージェントリスト記憶部４１内に保持し続けるかエージェントを削除するかを決定する。また、当該エージェントから新たなエージェントを派生させるか否かを判定する。
【００５２】
最終ツリー決定部１５は、エージェントリスト記憶部４１にアクセスして各エージェントの最終的なツリーコストを取得し、最もツリーコストの小さいツリーを選択する処理を行う。
【００５３】
（動作）
次に、以上のように構成されたルーティングサーバＲＳＶにより実行される、Multi agent BBMCアルゴリズムを用いたマルチキャスト経路探索動作を説明する。図３はその処理手順と処理内容を示すフローチャートである。
【００５４】
ステップＳ０では、基準エージェントとしてのエージェント(0) がBBMCアルゴリズムを実行する際に利用する種々データの初期化が行われる。すなわち、マルチキャスト終点集合E(0) には、まだ基準エージェント(0) が到達していないマルチキャスト終点ノードが格納されるので、初期値としてはすべてのマルチキャスト終点ノードが格納される。V(0) は基準エージェント(0) がステップＳ３で扱う始点ノード集合であり、初期値としてマルチキャスト始点ノードが格納される。基準エージェントのブランチ候補記憶部３１はブランチ候補リストBCL(0)で表され、基準エージェント(0)が扱う各ノードまでのブランチ候補がブランチコストによりソートされた状態で記憶されるが、初期状態では基準エージェント(0) ではまだブランチ候補が得られていないので空集合に設定される。ブランチ記憶部３２に記憶されるブランチ集合R(0) には基準エージェント(0) が決定したブランチが格納されるが、最初は空集合で設定される。
【００５５】
また、ノード情報記憶部２２には、図２に示すように各ノードの“reached属性”が記憶されるが、マルチキャスト始点ノード以外のノードにはまだブランチが行き着いていないので、マルチキャスト始点ノードのみ“yes”が設定され、その他のノードについては“no”が設定される。また、各ノードの“最短ブランチ候補”および“準最短ブランチ候補”はそれぞれ空集合に設定され、かつそれらのブランチコストは“∞”に設定される。基準エージェント(0) 以外の派生エージェントのデータの初期化はステップＳ０では行われない。
【００５６】
さて、以上のようにデータの初期設定が終了すると、ステップＳ１でk=０ に設定される。ここで、k はエージェントの番号を示す。したがって、ここでは基準エージェント(0)が動作対象として選択される。次にステップＳ２では、マルチキャスト終点集合E(0)内の終点数｜E(0)｜が“０”より大きいかどうかを判断する。ここで、｜E(0)｜＝０である場合は、基準エージェント(0) によってすべてのマルチキャスト終点ノードまでのブランチが決定していることを表すので、Multi agent BBMCアルゴリズムを用いたマルチキャスト経路探索処理は終了となる。
【００５７】
一方、マルチキャスト終点集合E(0)内に終点ノードが残っている場合には、ステップＳ３に移行する。以降の説明においてエージェント(k) はk=０の場合は基準エージェントを示し、k≧１の場合は派生エージェントを示す。ステップＳ３では、派生エージェント(k) のマルチキャスト始点集合V(k)に登録されているノードから発しているリンクを最終ホップとするブランチ候補が作成される。また、必要に応じてブランチ候補リストBCL(k)を更新する処理が行われる。この処理は、図６に示したBBMCアルゴリズムを用いたステップＳ１０１の処理に相当する。すなわち、k=０の場合は、基準エージェント(0) により当該基準エージェント(0) に割り当てられたメモリにおいて、図６のステップＳ１０１で述べた処理と同じ処理が行われる。k の値が１以上の場合には、派生エージェント(k) により当該派生エージェント(k) に割り当てられたメモリにおいて同様の処理が行われる。
【００５８】
ステップＳ３では、派生エージェント(k) のマルチキャスト始点集合V(k)に登録されているノードから発しているリンクを最終ホップとするブランチ候補を作成し、ブランチ候補リストBCL(k)を更新する処理が行われる。この処理は、図６のBBMCアルゴリズムにおけるステップＳ１０１の処理に相当する。すなわち、k＝０の場合には、基準エージェント(0) が図６に示したステップＳ１０１に記載したブランチ候補探索処理を当該エージェント(0) に割り当てられたメモリ領域３ａ０を使用して実行し、ｋ≧１の場合には派生エージェント(k) が図６のステップＳ１０１に記載したブランチ候補探索処理と同じ処理を当該エージェント(k) に割り当てられたメモリ領域３ａ１〜３ａｎを使用して実行する。
【００５９】
上記対象とされるリンクの終端ノードに対しては、エージェントごとに、当該ノードを終端とする最短ブランチ候補と準最短ブランチ候補が保持されている。最短ブランチ候補は、新規ブランチ候補が既存の最短ブランチ候補のブランチコストより小さければ、新規ブランチ候補に置き換えられる。またそれと共に、ブランチ候補リストBCL(k)内のブランチ候補も新規ブランチ候補に置き換えられる。このとき、準最短ブランチ候補はブランチ候補リストBCL(k)には登録されず、マルチキャスト終点ノードでのみ保持される。この準最短ブランチ候補は、新規ブランチ候補のブランチコストが既存のブランチ候補のブランチコスト以上で、かつ既存の準最短ブランチ候補のブランチコストより小さい場合に、新規ブランチ候補に置き換えられる。
【００６０】
ステップＳ４では、エージェント(k) がブランチ候補リストBCL(k)中の最短ブランチ候補を選択し、始点集合V(k)内のノードを当該選択した最短ブランチ候補の終点に置き換える処理を行う。この処理は、図６に示したステップＳ１０２においてBBMCアルゴリズムを用いた処理をエージェント(k) に割り当てられたメモリ環境で実行するものに相当する。
【００６１】
ステップＳ５では、ステップＳ４で選択された最短ブランチ候補の終点がマルチキャスト終点ノードか否かの判定が行われる。この判定の結果、もしマルチキャスト終点ノードだった場合にはステップＳ６に進む。これに対し、マルチキャスト終点ノードでなければステップＳ３に戻る。つまり、ステップＳ５でYESと判定されるまで、同じエージェント(k) によりマルチキャスト終点ノードに至るブランチを探索する処理が繰り返し実行される。
【００６２】
ステップＳ６では、直前にステップＳ４で選択されたブランチ候補を、そのマルチキャスト終点ノードまでの新規の決定ブランチとしてブランチ記憶部３２のR(k)に格納すると共に、当該マルチキャスト終点ノードをマルチキャスト終点集合E(k)から削除する処理が行われる。
【００６３】
ステップＳ７では、始点ノード集合V(k)を空にした後、ステップＳ６において新規に作成されたブランチ上の始点を除くすべてのノードを始点ノード集合V(k)に格納する処理が行われる。そして、既にマルチキャストツリーがこれらのノードに辿り着いたことになるので、始点ノード集合V(k)内に格納されたノードの“reached属性”は“yes”に設定される。
【００６４】
ステップＳ８では、エージェント処理部１４において、削除候補となるエージェント(k) をエージェントリストから削除するか否かの判定が行われる。ただし、k＝０の場合は基準エージェント(0) であるため、削除の対象から除外する。k≧１の場合には、派生エージェントであるため、当該派生エージェント(k) のツリーコスト｜R(k)｜（R(k)のすべてのブランチのブランチコストの合計）と、基準エージェント(0) のツリーコスト｜R(0)｜と、ENDS （この時点でのE(k)内のマルチキャスト終点数）と、その係数W（W≧０）とから、
EVA_VALUE 2 ＝｜R(k)｜−｜R(0)｜−W×ENDS
が計算される。そして、EVA_VALUE 2 ≦０の場合には上記削除候補のエージェント(k) の削除は行われない。
【００６５】
これに対し、EVA_VALUE 2 ＞０の場合には、派生エージェント(k) は削除される。その理由は、｜R(k)｜の値が基準値である｜R(0)｜よりも十分大きい場合は、この派生エージェント(k) でこれ以上ツリー作成を進めても、最終的にBBMCアルゴリズムで作成する｜R(0)｜よりも小さなコストのツリーを作成できる可能性が低いからである。
【００６６】
派生エージェント(k) が削除された場合には、当該派生エージェント(k) から派生するエージェントは作成されず、ステップＳ１１に移行する。その理由は、削除されるほどの効率の悪いエージェントのデータを引き継いで新しいエージェントを作成しても、新エージェントでコストの小さいツリーを作成できる可能性が低いからである。
【００６７】
エージェント(k) が削除されなかった場合にはステップＳ９に移行する。そして、ステップＳ９において、先ずエージェント(k) から派生する新エージェントの作成の可否がエージェント処理部１４により判定される。但し、その前にエージェント(k) に関する属性情報をエージェントリスト記憶部４１に再登録する処理、つまりエージェントリスト記憶部４１の更新処理が行われる。その理由は、エージェント(k) は新たなブランチができるたびにそのエージェントコストが変化するため、当該エージェント(k) のエージェントリスト記憶部４１における配列位置（エージェントコストが小さい順に配列されている）が変化する可能性があるからである。
【００６８】
本実施形態では、エージェント(k) 登録されている派生エージェントのこの時点でのマルチキャスト経路コストを｜R(k)｜、この時点までに当該派生エージェントの作成直前までに基準エージェント(0) により得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、エージェント(k) の基準エージェントからの派生段階数をDEVS、その係数をW1（W1≧０）、エージェント(k) が派生した時点の未到達マルチキャスト終点の数をENDS、その係数をW2（W2≧０）とするとき、上記エージェント(k) のエージェントコストAGENT_COST 2は、
AGENT_COST 2 ＝｜R(k)｜−｜R(0)｜＋W1×DEVS−W2×ENDS
のように求められる。そして、この算出されたエージェントコストAGENT_COST 2の値をもとに上記エージェントリスト記憶部４１における登録エージェント(k) の再登録が行われる。
【００６９】
次にステップＳ９では、エージェント(k) から派生する新規エージェントの作成の可否が以下のように判定される。すなわち、判定のための評価値EVA_VALUE 1が
EVA_VALUE 1 ＝｜dev_R(k)｜−｜R(0)｜−W×ENDS
により算出され、この算出された予測値が“０”より大きい場合には新規エージェントの作成は行われない。これに対し上記算出された予測値が“０”以下の場合には、新規エージェントを作成する可能性があると判定される。
【００７０】
ここで、新規エージェントのマルチキャスト経路コストの予測値｜dev_R(k)｜は以下のように求められる。すなわち、ステップＳ６で最後に格納されたブランチはR(k)から除かれるため、R(k)内のブランチ数はR(0)内のブランチ数よりも１つ少ない数となる。このため、直前のステップＳ６で格納されたブランチの終点ノードの“準最短ブランチ”のブランチコストと、ブランチ候補リストBCL(k)内の最小ブランチコストとのうちの小さい値を選択し、この選択された値を｜R(k)｜からステップＳ６で格納されたブランチを除いたツリーコストに加えた値を求め、この値を上記｜dev_R(k)｜とする。
【００７１】
また、上記新規エージェントのエージェントコストが“０”以下の場合、つまり新規エージェントを作成する可能性があると判定された場合でも、以下の条件を満たさなければ新規エージェントの作成を行わない。すなわち、エージェントリスト記憶部４１に登録されている派生エージェント数が、予め設定された派生エージェントの上限数に達しているか否かを判定し、既に当該上限数に相当する数の派生エージェントがエージェントリスト記憶部４１にまだ登録されていなければ、新規エージェントの作成が可能と判断し、ステップＳ１０に移行する。
【００７２】
これに対し、エージェントリスト記憶部４１に登録された派生エージェント数が上記上限値に達していた場合には、エージェントリスト記憶部４１に登録されている派生エージェントのエージェントコストのうちの最大値と、上記新たに作成しようとする派生エージェントのエージェントコストの予測値AGENT_COST 1とを比較する。そして、当該予測値AGENT_COST 1が上記最大値より小さければ、上記新たな派生エージェントを作成し、上記エージェントリスト記憶部４１に登録されたエージェントコストが最大の派生エージェントへのポインタを、上記新たに作成された派生エージェントへのポインタに置き換える。
【００７３】
なお、上記新たな作成しようとする派生エージェントのエージェントリストの予測値AGENT_COST 1 は、新たな派生エージェントにより得られると予測されるマルチキャスト経路コストの値を｜dev_R(k)｜、この時点までに当該新たな派生エージェントの作成直前までに前記基準エージェントにより得られた決定ブランチに基づくマルチキャスト経路コストを｜R(0)｜、当該派生エージェントの前記基準エージェントからの派生段階数をDEVS、その係数をW1（W1≧０）、当該派生エージェントが派生した時点の未到達マルチキャスト終点の数をENDS、その係数をW2（W2≧０）とするとき、
AGENT_COST 1＝｜dev_R(k)｜−｜R(0)｜＋W1×DEVS−W2×ENDS
により算出される。
【００７４】
但し、上記｜dev_R(k)｜は、派生エージェントの作成直前に派生元のエージェントにより得られた決定ブランチの終端ノードが保持する準最短ブランチ候補のブランチコストと、上記派生元のエージェントのブランチ候補リストBCL(k) に保存されているブランチ候補における最小ブランチコストのうちの小さい方を、当該派生エージェントを作成する直前に上記派生元のエージェントにより得られた決定ブランチを除いた決定ブランチに基づくマルチキャスト経路コストに加算することにより算出される。
【００７５】
ステップＳ９において新規エージェントを作成するべきと判断されると、ステップＳ１０によりエージェント(k) から派生した新規エージェントの作成が行われる。その際、直前のステップＳ６で作成されたブランチをR(k)から削除し、その結果残ったブランチを、エージェント(k) から派生した新規エージェントのブランチ記憶部dev_R(k)にコピーする。また、各ノード情報記憶部２２の“reached属性”、“最短ブランチ候補とそのブランチコスト”、“準最短ブランチ候補とそのブランチコスト”をエージェント(k) から新規エージェント用のメモリにコピーする。その際、直前にステップＳ６で作成されたブランチ上の始点以外のノードの“reached属性”を“no”にリセットし、これらのノードの“最短ブランチ候補とそのブランチコスト”に“準最短ブランチ候補とそのブランチコスト”の値を設定する。その後“準最短ブランチ候補”は空集合、そのブランチコストは“∞”に設定する。最後に、各ノードで“reached属性”が“no”の“最短ブランチ候補”をブランチコストに従いソートしてブランチ候補リストBCLに登録し直す。
【００７６】
以上のエージェント(k) から新規エージェントへデータを引き継ぐ一連の処理により、直前のステップＳ６で作成したブランチ以外のすべてのブランチを新規エージェントに引き継ぐだけでなく、エージェント(k) のブランチ候補についても前記“準最短ブランチ候補”とともに、新規エージェントのブランチ候補リストBCLに引き継ぐことが可能になる。
【００７７】
また、上記新規エージェントは、すべての既存エージェントの最後に配置される。つまり、エージェント(m) が最後のエージェントの場合はエージェント(m+1) として設定される。すなわち、エージェントがステップＳ１１で最後のエージェントであると判断された場合には、すべてのエージェントのR(k)内のブランチ数が同じになるようにする。
【００７８】
ステップＳ１１において、エージェント(k) は自身が最後のエージェントかどうかを判断する。そして、最後のエージェントの場合はステップＳ１に戻り、基準エージェント(0) に処理を依頼する。これに対しエージェント(k) が最後のエージェントではない場合には、ステップＳ１２でk＝k＋1とし、派生エージェント(k+1)に処理を依頼する。このアルゴリズムの処理はステップＳ２で基準エージェント(0) のマルチキャスト終点がなくなるまで繰り返し実行される。各エージェントは必ず１ブランチずつ作成していくので、ステップＳ２において基準エージェント(0) でマルチキャスト終点がなくなったということは、他のエージェントもマルチキャスト終点がなくなっていることを意味する。すなわち、すべてのエージェントがマルチキャストツリーの生成を終えたことになる。
【００７９】
上記ステップＳ２において、基準エージェントと複数の派生エージェントを含むすべてのエージェントによるマルチキャストツリーの生成が終了したと判定されると、ステップＳ１３に移行する。ステップＳ１３では、すべてのエージェントが作成したマルチキャストツリーの中で最小木を選択し、当該選択した最小木のマルチキャストツリーをMulti agent BBMCアルゴリズムのアウトプットとしてリターンする。
【００８０】
（動作の具体例）
次に、以上述べた動作の具体例を図４を用いて説明する。なお、図４において前記図７と処理内容が同一の部分（例えば図４（１））については詳しい説明を省略する。  
なお、ここではBBMCアルゴリズムを用いてツリー探索を実行する基準エージェント(0) に対して、追加する派生エージェントの上限数を“１”とする。また、EVA_VALUE 1 ，EVA_VALUE 2の中で使われている係数Wと、AGENT_COST 1，AGENT_COST 2の中で使われている係数W1、W2はすべて“２”に設定する。
【００８１】
図４（２）に示すように、基準エージェント(0) において最初の決定ブランチ（ｓ−ｎ２−ｅ１）が作成されると、図３のステップＳ９において当該基準エージェント(0) から新たに派生エージェント(1) を作成するか否かの判定が以下のように行われる。
【００８２】
すなわち、最初に派生エージェント(1) のEVA_VALUE 1 が
EVA_VALUE 1 ＝｜dev_R(0)｜−｜R(0)｜−｜E(0)｜
＝5−3−2×2
＝−2
のように算出される。
【００８３】
ここで、｜dev_R(0)｜は、基準エージェント(0) のブランチ候補リストBCL(0)に保存されたブランチ候補ｓ−ｎ２−ｅ１（３）が除かれた後の最短ブランチ候補ｓ−ｎ３のブランチコスト＝５としている。またこのとき、もしマルチキャスト終点ノードｅ１が準最短ブランチを保持していれば、そのブランチコストと上記ｓ−ｎ３のブランチコスト“５”のうちの小さい方となる。しかし、この時点でマルチキャスト終点ノードｅ１は準最短ブランチを保持しないので、上記ｓ−ｎ３のブランチコスト“５”が選択される。また、｜R(0)｜はR(0)内の決定ブランチのブランチコストの合計であり、この時点ではｓ−ｎ２−ｅ１（３）が唯一のブランチである。また｜E(0)｜はこの時点でE(0)に残っているマルチキャスト終点数となり、ｅ２とｅ３の２個である。このEVA_VALUE 1 の値が上記計算の結果−２であり、“０”以下であることから派生エージェント(1) は有効と判断されて削除されない。
【００８４】
次に、新たに作成しようとする派生エージェント(1) のエージェントコストが算出される。このエージェントコストは
AGENT_COST 1 ＝｜dev_R(0)｜−｜R(0)｜＋2×DEVS−2×ENDS
＝5−3＋2×1−2×2
＝0
となる。
【００８５】
ここで、DEVSは当該新たに作成しようとする派生エージェント(1) の上記基準エージェント(0) からの派生段階数であるので、ここでは“１”になる。また、ENDSは当該派生エージェント(1) が最後に派生した時点での未到達マルチキャスト終点の数、つまりE(0)内のノード数であり、“２”となる。冒頭の動作条件で述べたように、基準エージェント(0) 以外の派生エージェントの上限数は“１”としており、まだこの段階では派生エージェントがエージェントリスト記憶部４１に存在しないことから、上記派生エージェント(1) が作成され、そのエージェントコスト＝０がエージェントリスト記憶部４１に登録される。
【００８６】
また、上記派生エージェント(1) の作成に伴い、決定ブランチｓ−ｎ２−ｅ１を除いたブランチがR(0)からR(1)に引き継がれるが、この段階ではR(0)にはｓ−ｎ２−ｅ１しか登録されていないので、R(1)は図４（１′）のように空となる。また、マルチキャスト終点ノードｅ１が準最短ブランチ候補を保持している場合には、当該準最短ブランチ候補がマルチキャスト終点ノードｅ１までの最短ブランチ候補になり、これが派生エージェント(1) のブランチ候補リストBCL(1)への登録候補となる。しかし、この段階ではまだマルチキャスト終点ノードｅ１に準最短ブランチ候補が登録されていないため、派生エージェント(1) のブランチ候補リストBCL(1)には基準エージェント(0) のブランチ候補リストBCL(0)と同じブランチ候補がコピーされる。
【００８７】
その結果、図４（１′）では派生エージェント(1) のブランチ候補リストBCL(1)の中でブランチコストが最も小さいブランチ候補ｓ−ｎ３が削除され、ノードｎ３はマルチキャスト終点ノードではないため、ノードｎ３を経由した１ホップ先までのブランチ候補が図４（２′）で作成される。これらのブランチ候補ｓ−ｎ３−ｅ１、ｓ−ｎ３−ｅ３のブランチコストは何れも“６”であり、マルチキャスト終点ノードｅ１、ｅ３までのそれぞれ派生エージェント(1) が辿り着いた最初のブランチ候補であるため、ブランチ候補リストBCL(1)に登録される。
【００８８】
図４（２′）の結果として、派生エージェント(1) のブランチ候補リストBCL(1)の中でブランチ候補ｓ−ｎ１が最もブランチコストが小さいので、図４（３′）ではノードｎ１を経由した１ホップ先までのブランチ候補が検討される。その際、ノードｎ２の“最短ブランチコスト”属性には、基準エージェント(0) が以前に保持していたｓ−ｎ２のブランコスト＝２が引き継がれており、ｓ−ｎ１−ｎ２はそのブランチコストより大きいため登録されない。ｓ−ｎ１−ｎ４はノードｎ４までの最初のブランチ候補のため、最短ブランチ候補としてブランチ候補リストBCL(1)に登録される。結果として、コストが“６”のブランチ候補がBCL(1)には３つ登録されていることになるが、この場合は任意にその中で一つのブランチ候補が選択される。図６（３′）の例ではｓ−ｎ３−ｅ１が選択され、ノードｅ１がマルチキャスト終点ノードのためR(1)に格納される。
【００８９】
派生エージェント(1) により最初のブランチが決定したこの時点で、当該派生エージェント(1) を使い続けるか削除するかがステップＳ８で以下のように判定される。すなわち、派生エージェント(1) のEVA_VALUE 2 は
EVA_VALUE 2 ＝｜R(1)｜−｜R(0)｜−2｜E(1)｜
＝6−3−2×2
＝−1
となり、EVA_VALUE 2 は“０”以下となる。このため、派生エージェント(1) の削除は行われない。
【００９０】
次に、ステップＳ９において上記派生エージェント(1) にとって代わる新規エージェントを作成するか否かが判定される。この場合、先ず派生エージェント(1) のエージェントコストのアップデートが行われる。派生エージェント(1) のエージェントコストは、
AGENT_COST 2 ＝｜R(1)｜−｜R(0)｜＋2×DEVS−2×ENDS 
＝6−3＋2×1−2×2
＝1
となる。このため、派生エージェント(1) は再度エージェントリスト記憶部４１にエージェントコスト＝１として再設定される。なお、このときエージェントリスト記憶部４１に複数のエージェントが記憶されていれば、これらのエージェントはそのエージェントコストの値が小さい順にソートされる。
【００９１】
上記派生エージェント(1) からさらに派生するエージェントをエージェント(2) とすると、当該新たな派生エージェント(2) のエージェントコストは、
AGENT_COST 1 ＝｜dev_R(1)｜−｜R(0)｜＋2×DEVS−2×ENDS 
＝6−3＋2×2−2×2
＝3
となる。
【００９２】
ここで、｜dev_R(1)｜は、マルチキャスト終点モードｅ１までの準最短ブランチ候補のブランチコストと、エージェント(1) のブランチ候補リストBCL(1)に保持されている最短ブランチ候補であるｓ−ｎ３−ｅ３（６）とのうちのブランチコストが小さい方となる。しかし、マルチキャスト終点ノードｅ１までの準最短ブランチ候補は現時点では存在しないので、｜dev_R(1)｜は“６”となる。DEVSは派生エージェント(1) がすでに基準エージェント(0) から１回の派生をしたものであるため、“２”となる。ENDSは現時点でE(1)に２つのマルチキャスト終点ノードｅ２、ｅ３が存在するので、“２”となる。結果として、新たな派生エージェント(2) のエージェントコストは派生元のエージェント(1) よりも大きく、またエージェントリストのエージェント数の上限値も“１”であるため、エージェント(2) は新規エージェントとして作成されない。
【００９３】
図４（４′）は、派生エージェント(1) による２本目のブランチの生成動作を示している。この段階では、ステップＳ３において基準エージェント(0) により先ず２本目のブランチｎ２−ｅ２が図７の（３）と同様の手順で作成される。始点ノード集合V(1)には、派生エージェント(1) の最初のブランチｓ−ｎ３−ｅ１上のノードｎ３、ｅ１が格納されているので、これら２つのノードｎ３、ｅ１から発するリンクがブランチ候補となるか否か検討される。ノードｎ３からは終点ノードｅ３までのリンクが存在し、そのリンクコストは“１”なので、マルチキャスト終点ノードｅ３までの最短ブランチ候補はｎ３−ｅ３に置き換えられる。
【００９４】
また、マルチキャスト終点ノードｅ３はマルチキャスト終点ノードのため、既存の最短ブランチ候補ｓ−ｎ３−ｅ３は準最短ブランチ候補としてマルチキャスト終点ノードｅ３で保持される。さらに、マルチキャスト終点ノードｅ１からはマルチキャスト終点ノードｅ２までのリンクが存在し、そのリンクコストは“１”なので、マルチキャスト終点ノードｅ２までの最短ブランチ候補はｅ１−ｅ２に置き換えられる。ノードｅ２はマルチキャスト終点ノードのため、既存の最短ブランチ候補ｓ−ｎ２−ｅ２は準最短ブランチ候補としてマルチキャスト終点ノードｅ２で保持される。その結果、ｎ３−ｅ３が最もブランチコストが小さいブランチ候補リストBCL(1)内のブランチ候補となるため、ｎ３−ｅ３が第２のブランチとして決定され、R(1)に格納される。
【００９５】
続いてステップＳ８において、派生エージェント(1) を使い続けるか削除するかが判定される。この場合、派生エージェント(1) のEVA_VALUE 2 は、
EVA_VALUE 2 ＝｜R(1)｜−｜R(0)｜−2｜E(1)｜
＝7−7−2×1
＝−2
となり、EVA_VALUE 2 は“０”以下となるので、上記派生エージェント(1) は削除されず維持される。
【００９６】
ここで、｜R(0)｜は、図７の（３）と同じ結果となり、R(0)にｓ−ｎ２−ｅ１、ｎ２−ｅ２を保持するので“７”となる。また、エージェント(1) のマルチキャスト終点集合E(1)にはＥ２のみが保持されるので、｜E(1)｜＝１となる。
【００９７】
次に、ステップＳ９において、派生エージェント(1) からさらに派生するエージェント(2) を作成するか否かが判定される。しかし、エージェント(2) のEVA_VALUE 1 は、
EVA_VALUE 1 ＝｜dev_R(1)｜−｜R(0)｜−2｜E(1)｜
＝11−7−2×1
＝2
となり、EVA_VALUE 1 が“０”より大きくなるため作成されない。
【００９８】
ここで、｜dev_R(1)｜は、マルチキャスト終点ノードｅ３までの準最短ブランチと、エージェント(1) のブランチ候補リストBCL(1)に保持された最短ブランチｅ１−ｅ２とのうちのブランチコストの小さい方となるので“５”となり、この値がｓ−ｎ３−ｅ１（６）に加算されるため、｜dev_R(1)｜は“１１”となる。
【００９９】
図４（４′）に示した処理が終了すると、ブランチ候補ｅ３−ｅ２が終点ノードｅ３から出ているリンクとして存在し、そのリンクコストが“１”であることから、上記ブランチ候補ｅ３−ｅ２は最終ブランチとしてR(1)に格納される。この結果、Multi-agent BBMCアルゴリズムが最終的に生成するマルチキャストツリーコストは“８”となる。このマルチキャストツリーコストは、図７において説明したように、BBMCアルゴリズムを用いて１つのエージェントのみにより経路探索を行った場合のマルチキャストツリーコスト“１２”より大幅に小さくなる。
【０１００】
（効果）
以上詳述したように本実施形態では、BBMCアルゴリズムを使用した基準エージェント(0) により決定ブランチが作成されるごとに、当該基準エージェント(0) から派生するエージェント(k) （k=1,2,…）を新たに作成するか否かを判定し、所定の条件を満たした場合に順次派生エージェントを作成して、これらの基準エージェント(0) と複数の派生エージェント(k) （k=1,2,…）によりそれぞれ経路探索を行う。そして、これら複数のエージェントにより作成されたマルチキャストツリーのコストを比較して、当該コストが最小のツリーを最終マルチキャストツリーとして選択するようにしている。このため、基準エージェント(0) による経路探索で見逃したツリーを、当該基準エージェント(0) から派生した複数の派生エージェント(k) （k=1,2,…）により探索することが可能となり、これにより基準エージェント(0) による探索処理のみを用いる場合に比べ、よりコストの小さいマルチキャストツリーを探索することが可能となる。
【０１０１】
また、上記派生エージェント(k) （k=1,2,…）の作成の可否を判定する際に、先ず派生エージェントによるマルチキャスト経路コストの予測値と基準エージェント(0) によるマルチキャスト経路コストのコスト差に基づくEVA_VALUE 1が“０”以下であり、かつエージェントリスト記憶部４１に作成済みのエージェントが存在しなければ、上記派生エージェントを作成する。また、当該派生エージェントによるEVA_VALUE 1が“０”以下と判定された場合でも、エージェントリスト記憶部４１に登録済みの派生エージェント数が上限値に達している場合は、当該エージェントリスト記憶部が持つエージェントコストの中で最大のエージェントコストよりも当該派生エージェントのエージェントコストが小さい場合に、当該派生エージェントを最大のエージェントコストを持つエージェントと置き換える形でエージェントリスト記憶部４１に登録するようにしている。すなわち、エージェントリスト記憶部に登録済のエージェントの何れよりも小コストのマルチキャスツリーを探索する確率が高い場合にのみ、新たな派生エージェントを作成するようにしている。このため、小コストのマルチキャストツリーを探索できる確率をさらに高めることができる。また、派生エージェントの登録数が上限値を超えていない場合にのみ新たな派生エージェントが作成されるので、エージェントの登録数に上限を設けない場合に比べ、経路探索に要する処理負荷を抑制することができる。
【０１０２】
さらに、ある派生エージェントにより決定ブランチが作成されるごとに、当該派生エージェントにより作成された決定ブランチに基づくマルチキャスト経路コストと、基準エージェントにより得られる決定ブランチに基づくマルチキャスト経路コストとのコスト差を基準とした評価値EVA_VALUE 2 を算出し、EVA_VALUE 2 が“０”より大きい場合は、上記作成済みのエージェントを削除するようにしている。このため、作成済みの派生エージェントのうちマルチキャスト経路コストの大きいエージェントによる経路探索処理が際限なく実行される不具合を防止することができ、これにより経路コストの小さいエージェントを用いた効果的な経路探索を行うことができる。
【０１０３】
さらに、評価値EVA_VALUE 2 を算出する際に、まだブランチが辿り着いていないマルチキャスト終点の数ENDSも考慮して、作成済みの派生エージェントの削除の可否を判定するようにしている。このため、削除対象となるエージェントの削除の可否をより一層高精度に判定することが可能となる。
【０１０４】
さらに、エージェントリスト記憶部４１に登録済の派生エージェントのエージェントコストをAGENT_COST 2 として新規ブランチが生成される度に更新し、当該エージェントコストが最も大きい登録済みの派生エージェントを当該エージェントリスト記憶部からの削除対象として選択するようにしている。このため、エージェントコストが高く最小木コストの経路探索に寄与しないエージェントから順に削除することができ、これによりエージェントコストが小さく最小木コストの経路探索に対する貢献度が高いエージェントを優先的に残して経路探索処理を行うことが可能となる。
【０１０５】
［他の実施形態］
この発明は上記一実施形態に限定されるものではない。例えば、前記一実施形態ではノード群とは別にルーティングサーバＲＳＶを設けた場合を例にとって説明したが、ルーティングサーバの機能をノードの１つまたは複数に持たせるようにしてもよい。
【０１０６】
その他、ネットワークの構成、マルチキャスト終点ノードの数、ルーティングサーバＲＳＶの構成と最短木作成処理の手順と内容等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【０１０７】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１０８】
ＲＳＶ…ルーティングサーバ、ＮＷ…ネットワーク、１…制御ユニット、２…データベース、３ａ０〜３ａｎ…エージェントメモリ、４…共有メモリ、５…通信インタフェースユニット、１１…ネットワークトポロジ管理処理部、１２…ブランチ候補処理部、１３…最小木作成処理部、１４…エージェント処理部、１５…最終ツリー決定部、２１…リンク情報記憶部、２２…ノード情報記憶部、３１…ブランチ候補記憶部、３２…ブランチ記憶部、４１…エージェントリスト記憶部。
【図１】
2016096432.tif 000003
【図２】
2016096432.tif 000004
【図３】
2016096432.tif 000005
【図４】
2016096432.tif 000006
【図５】
2016096432.tif 000007
【図６】
2016096432.tif 000008
【図７】
2016096432.tif 000009