【文献】
Gary Hardy, et al.,K-Terminal Network Reliability Measures With Binary Decision Diagrams,IEEE Transactions on Reliability,Volume: 56, Issue: 3,2007年09月04日,Pages: 506 - 515
【文献】
西野 正彬 MASAAKI NISHINO,未来への羅針盤としてのコミュニケーション科学 ご予算に合う最高の詰合せをすぐにつくれます 二分決定グラフを用いた組合せ最適化,NTT技術ジャーナル 第27巻 第9号 ,一般社団法人電気通信協会,2015年09月01日,第27巻
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0013】
二分決定グラフ(Binary Decision Diagram, BDD)とよばれるデータ構造を用いて、ネットワークが動作可能な全ての故障パターンの集合を表現する。さらに、そのBDD上でA
*探索アルゴリズムを実行することで、規模の大きなネットワークの設計においても効率的に最適解を発見することを可能とする。
【0015】
ここで、本発明の実施の形態における原理を説明する。
【0016】
まず以下で用いる記号を導入する。通信ネットワークはグラフG=(V;E)で与えられるとする。ここでVは頂点の集合、Eは辺の集合である。辺の総数をMとする。Eの部分集合Fが与えられたとき、Eによって導出される誘導部分グラフをG[F]とあらわす。Vの部分集合T⊆Vを端点とよぶ。各辺をe
1,...,e
Mとする。辺e
iは確率p
iで動作し、確率1−p
iで故障するとする(以下、p
iを辺e
iの動作確率という)。二値変数y
i∈{0,1}を用いて、辺e
iが動作しているかどうかを表す。すなわち、y
i=1ならばe
iは動作しているとし、y
i=0ならば故障しているとする。ネットワークの信頼度は以下(1)式として計算できる。
【0018】
ここで、yは各要素が0または1の何れかの値をとるM次元ベクトルであり、{0,1}
Mは、各要素が0または1の何れかの値をとるM次元ベクトルの集合である。ここでI(y)は、yによって表現される故障していない辺の集合(y
i=1であるy
iに対応する辺e
iの集合)によって、端点Tに含まれるすべての頂点が接続されているならば1、そうでないならば0を返す関数である。
【0019】
ネットワークの設計問題は以下のように定義される。
【0020】
【数2】
・・・(2)
・・・(3)
【0021】
ここでc
iは辺e
iを通信ネットワークに追加するためにかかるコスト、Cはコストの上限である。すなわち、信頼性を最大化する問題とは、ネットワークに追加できる辺の候補の集合Eから、コストの総和が上限値Cを超えない範囲で辺を選択して追加することで、得られたネットワークG[E′]の信頼性を最大化する問題である。ここで、e
i∈E′ならばx
i=1、
【0022】
【数3】
ならばx
i=0であるような二値変数x
1,...,x
Mを導入すると、上記の最適化問題は以下(4)式のように書くことができる。
【0024】
ここでx=(x
1,...,x
M)である。つまり、x
iは辺e
iを通信ネットワークに追加するか否かを示す変数である。R(x)は信頼度をxの関数として定義したものであり、以下(5)式のように定義される。
【0026】
BDDは論理関数を有向非巡回グラフとして表現するデータ構造である。論理関数(x
1∧x
2)∨(x
1∧x
3)∨(x
2∧x
3)を表現するBDDの例を
図1に示す。BDDは終端ノードと分岐ノードの2種類のノードをもつ。BDDにおいて、ノードとノードとを繋ぐ線を「アーク」または「枝」と呼ぶ。終端ノードはそのノードを始点とするアークを持たないノードであり、
図1中では四角で表現される。
【0027】
【数6】
終端ノード(以下「第2終端ノード」という)と
【数7】
終端ノード(以下「第1終端ノード」という)の2種類の終端ノードがあり、一つのBDDには各終端ノードは高々一つずつ存在する。分岐ノードは終端ノードではないノードのことである。各分岐ノードには、そのノードを始点とするアークが必ず2つ存在し、それぞれlo枝、hi枝とよばれる。また、各分岐ノードには論理関数の引数が1つラベルとして対応付けられる。
図1中では各分岐ノードは円として表現され、hi枝は実線、lo枝は点線によって表現される。
図1中のノードb1は分岐ノードであり、要素x1がラベルとして付与され、lo枝はb2を、hi枝はb3を指している。BDD中では親をもたないノードが必ず1つのみ存在し、根ノードとよばれる。
【0028】
根ノードから第1終端ノードまでの各経路が、BDDが表現する論理関数を真とするような変数の割り当てに対応している。
【0029】
図1のBDDでは根ノードb1から第1終端ノードに至る3種類の経路が存在する。
図1のBDDが3引数の論理関数を表しているため3つの変数で経路が表現できるものとしている。もしBDDが表す関数の引数がN個であれば、N個の変数の0,1で経路が表現される。
【0030】
経路を3つの変数(x
1,x
2,x
3)で表すものとし、x
iをノードラベルiのノードにおいて枝lo枝とhi枝のどちらを辿るかを示す変数とすると、根ノードb1から第1終端ノードに至る3種類の経路は(1,1,*),(1,0,1),(0,1,1)と表現できる。なお*はx3に対応するノードが経路中に出現しないことを示す。各経路がそれぞれ真となる変数の割当に対応する。なお、経路中に対応するノードが出現しなかった変数については、その変数に0もしくは1のどちらを割り当てても真となる。
図1のBDDの例では、経路(1,1,*)は、(1,1,0),(1,1,1)の二種類の変数に対する値の割当を示している。したがって、(1,1,0),(1,1,1),(1,0,1),(0,1,1)が、BDDが表現する論理関数を真とするような変数の割り当てである。
【0031】
なお、以下ではBDDのノードはB個存在するとし、各ノードをb
1,...,b
Bとあらわす。なお、b
1は根ノードに対応し、b
j,b
kについてj<kならばb
jはb
kの子になりえないとする。なお、b
Bは第1終端ノード、b
B-1は第2終端ノードであるとする。また、D
iを高さiでのカットノードの添字の集合とし、BDDノードのうち、ラベルが1,...,i−1のいずれかではなく、かつ1,...,i−1のいずれかをラベルとするような親ノードをもつものの添字の集合とする。
【0032】
BDDは、各ノードについて、(ノードのID、ラベル、hi枝の指すノード、lo枝の指すノード)の4つ組を用意することで表現できる。例のBDDは6つのノードをもつため、[(b1,1,b3,b2),(b2,2,b4,b5),(b3,2,b6,b4),(b4,3,b6,b5),(b5,
【数9】
,−,−),(b6,
【数10】
,−,−)]というテーブルを用意することで表現することができる。
【0033】
本発明では、通信ネットワークに対応するグラフ(以下「入力グラフ」と呼ぶ)からBDDを構築する。
【0034】
入力グラフでは、通信ネットワークを構成する通信機器が各頂点に対応し、各通信機器間の通信リンクが辺に対応する。
【0035】
構築されるBDDは、各ノードが入力グラフの各辺に対応するラベルを持つ。そして、入力グラフのある部分構造(部分グラフ)が辺e
i(i=1,・・・,M)を含む場合には当該iをラベルとするノードからhi枝を辿り、辺e
iを含まない場合には当該iをラベルとするノードからlo枝を辿る。よって、根ノードから終端ノードまでの各経路は、それぞれ入力グラフの部分構造に対応する。
【0036】
「BDDが表現する論理関数を真とするような変数の割り当て」の各々は、入力グラフの部分構造に対応する。この部分構造は、通信ネットワークにおいて故障したリンクを取り除いて得られるネットワークに対応したグラフを表現している。故障しているリンクを取り除いて得られた通信ネットワークにおいて全ての端点間において通信が可能となったときに、論理関数が真となる。
【0037】
<本発明の実施の形態に係るネットワーク設計装置の構成>
【0038】
次に、本発明の実施の形態に係るネットワーク設計装置の構成について説明する。
図2に示すように、本発明の実施の形態に係るネットワーク設計装置100は、CPUと、RAMと、後述するネットワーク設計処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。このネットワーク設計装置100は、機能的には
図2に示すように入力部10と、演算部20と、出力部50とを備えている。
【0039】
入力部10は、入力として、通信ネットワークに対応するグラフの頂点集合V={v
1,v
2,・・・,v
N}(Nは頂点の総数)、端点の集合T⊆V、通信ネットワークに追加できる辺の集合E={e
1,e
2,・・・,e
M}(Mは辺の総数)、各辺のコストc
1,...,c
M(c
iは辺e
iのコスト)、各辺の動作確率p
1,...,p
M(p
iは辺e
iの動作確率)、コスト上限Cを入力として受け取る。ここで、辺e
iのコストとは、通信ネットワークに辺e
iに対応する通信リンクを追加するのに要するコストを表す。
【0040】
演算部20は、BDD構築部30と、インデックス計算部32と、最適化計算部34と、記憶部40とを含んで構成されている。
【0041】
BDD構築部30は、入力部10で受け付けた、ネットワークの頂点集合Vと、ネットワークに追加できる辺の集合Eと、頂点集合Vのうちの端点の集合Tとに基づいて、グラフG=(V,E)において、全ての端点が接続される辺の組み合わせである故障パターンの集合を表現した二分決定グラフ(BDD)を構築する。
【0042】
結果としてBDDの各経路は、集合Vに含まれる頂点からなるグラフであって、当該経路により特定される辺で頂点を接続したグラフである。つまり、BDDの各経路は、G=(V;E)に対応するグラフのうち、一部または全部の辺が欠けているグラフに対応する。欠けている辺は、通信ネットワークにおいて故障している通信リンクを表すので、例えば、辺e
iが欠けているグラフは、辺e
iに対応する通信リンクが故障しているような故障パターンに対応する。すなわち、BDDの経路の集合は、グラフGに対応する通信ネットワークにおいて取りうるすべての故障パターンの集合を表すものとなる。
【0043】
そして、根ノードから第1終端ノードに至る各経路が、一部の辺が欠けた(通信リンクが故障した)としても、全ての端点がネットワークによる通信が可能である故障パターンに対応する。根ノードから第1終端ノードに至る経路の集合は、全ての端点がネットワークによる通信が可能であるようなすべての故障パターンの集合をあらわす。
【0044】
なお、BDDの構築は、上記非特許文献2に記載されている方法を用いることにより行う。
【0045】
インデックス計算部32は、BDD構築部30にて構築されたBDDと、追加に必要な各辺の各々のコストc
1,...,c
Mと、各辺の各々の動作確率p
1,...,p
Mとに基づいて、BDDのノードb
iと終端ノードからノードb
iまでの部分構造に対応する通信ネットワークにおけるコスト(s=0,1,2,・・・,C)の組み合わせの各々に対し、インデックスを計算する。ここで、b
iとsの組に対応するインデックスは、終端ノードからノードb
iに至る経路の各々に対応するグラフのうち、コストがs以下となるような辺の組み合わせを選択したときの、当該辺の組み合わせに対応する通信ネットワークの信頼度の上限値である。インデックス計算部32の処理の詳細については後述する。
【0046】
最適化計算部34は、インデックス計算部32で計算されたインデックスと、各辺のコストc
1,...,c
Mと、各辺の各々の動作確率p
1,...,p
Mと、コストの上限Cとに基づいて、上記(4)式で表されるコストに関する所定の制約を満たすような辺の組み合わせを選択することにより、ネットワークを設計する。具体的には、最適化計算部34は、選択する辺の組み合わせのコストがコスト上限C以下となる制約を満たし、かつ、信頼度が最大となるように、辺の組み合わせを選択し、その組み合わせの信頼度を最大化するようなネットワークの構成を特定する情報として出力部50により出力する。
【0047】
記憶部40には、最適化計算部34において辺の組み合わせの候補毎に計算される、当該組み合わせに対応する通信ネットワークの最大の信頼度(信頼度の上限)の推定値が対応付けられて記憶される。
【0048】
次に、インデックス計算部32のインデックス構築処理の詳細について、
図3を用いて説明する。インデックス計算部32では、入力として、BDD構築部30で構築されたBDD、コストの最大値C、辺の動作確率p
1,...,p
M、辺のコストc
1,...,c
Mを受け取り、インデックスAを計算する。インデックスAはB×(C+1)個の要素からなるテーブルであり、テーブルのj行s列目の要素をA[i][s]とする。A[i][s]は、BDDの終端ノードからノードb
iまでの経路の各々に対応するグラフのうち、コストがs以下となるように辺を選択したときの、信頼度の推定値(上限値)を保持している。なお、BDDのi番目のノードにラベルとして対応づけられているネットワークの辺をe
kとする。
【0049】
図3の処理では、まず各i=1,...,B、s=0,1,...,Cに対して、A[i][s]に値0を設定してインデックスを初期化する。次にすべてのs=0,1,...,CについてA[B][s]←1.0に設定する。以降では、全てのi,sの組合せについてA[i][s]の値を再帰的に計算する。
【0050】
次に最適化計算部34の最適化処理の詳細について、
図4を用いて説明する。なお、以下ではxのi番目以下(つまり、x
1,x
2,・・・,x
i)の要素にのみ値を割り当てた部分ベクトルをx
≦iとして表現する。また、x
≦iにおける各要素の取りうる値の組み合わせの各々を「状態」と呼ぶ。例えば、x
≦2であれば、(0,0),(0,1),(1,0),(1,1)の各々が「状態」である。
【0051】
最適化計算部34は、
図4のステップ1で状態の集合を格納するリストOpenを初期化する。ステップ2で初期状態をOpenに追加する。次に、Openが空でない限り、スコアを最大とする状態x
≦jを一つ選択する(ステップ3,4)。ここで、各状態におけるスコアとは、部分ベクトルx
≦jの各要素の値が当該状態であるとしたときの通信ネットワークの信頼度の推定値である。詳しくは後述する。もしその状態x
≦jに対応する部分ベクトルの大きさがMであったならば、それを解として出力して処理を終了する(ステップ6)。ここで、部分ベクトルの大きさとは、部分ベクトルの要素数であり、x
≦jの大きさはjである。そうでないならば、x
≦jのj+1番目の要素を1に設定した新しいベクトルx
≦j+1(1)と、j+1番目の要素を0に設定した新しいベクトルx
≦j+1(0)を作成する。それぞれについてスコアを計算してOpenに追加する(ステップ8〜13)。
【0052】
上記の手順を繰り返し、ステップ3,4でOpenから取り出したスコア最大の部分ベクトルx
≦jの大きさがMであったときに処理を終了する。各x
jは0または1の何れかの値をとり、x
j=1であれば通信ネットワークに辺e
jを追加することを意味する。よって、x
≦Mのうちx
j=1となる辺e
jが、通信ネットワークに追加する辺となる。
【0053】
すなわち、最適化計算部34は、辺の組み合わせ方の候補(x
≦jのうちx
i=1となる辺e
iの組み合わせ)を、その組合せ方に対する最大信頼度の推定値とともにOpenに格納し、信頼度の推定値が大きいものから順番に展開・伸張させていく最良優先探索を実行することにより、通信ネットワークに追加する辺の組み合わせを選択する。このように、最良優先探索を実行し、通信ネットワークに追加する辺の組み合わせを選択する処理が、探索手段による処理(辺の集合に含まれる先頭の辺から順に、各辺を追加するか否かを決定することにより辺の組み合わせを求める処理)の一例である。また、Openへの格納が、記憶部40に、辺の組み合わせの候補毎に、当該組み合わせに対応する通信ネットワークの信頼度が対応付けて記憶されることの一例である。
【0054】
図4ステップ10、13のスコアの計算について、
図5の関数評価処理フローを用いて説明する。
【0055】
まず
図5のステップ1、2で部分ベクトルx
≦jに対応するコストの和sを計算し、辺動作確率p′
jを設定する。次に、ステップ3で、
図6の前向き計算フローの処理を用いて、カットノード集合D
jに相当する配列F
j[i]の値を求める。その後、ステップ4で、インデックスAの値とF
j[i]の値を用いて信頼度のスコアを算出する。
【0056】
<本発明の実施の形態に係るネットワーク設計装置の作用>
【0057】
次に、本発明の実施の形態に係るネットワーク設計装置100の作用について説明する。入力部10において通信ネットワークの頂点集合V、端点の集合T⊆V、ネットワークに追加できる辺の集合E、各辺を追加するのに必要なコストc
1,...,c
M、各辺の動作確率p
1,...,p
M、コスト合計の上限値Cを受け付けると、ネットワーク設計装置100は、
図7に示すネットワーク設計処理ルーチンを実行する。
【0058】
まず、ステップS100では、入力部10で受け付けた、ネットワークの頂点集合Vと、ネットワークに追加できる辺の集合Eと、頂点集合Vのうちの端点の集合Tとに基づいて、グラフG=(V,E)において、全ての端点が接続される辺の組み合わせである故障パターンの集合を表現したBDDを構築する。
【0059】
次に、ステップS102では、ステップS100で構築されたBDDと、グラフGに各辺を追加する際に必要なコストc
1,...,c
Mと、各辺の各々の動作確率p
1,...,p
Mとに基づいて、上記
図3に示すアルゴリズムに従って、BDDのノードb
iとコストsの組み合わせの各々に対し、ノードb
iに対応し、かつ、コストの合計がコストs以下となるように追加する辺の組み合わせを選択したときの信頼度の上限を表す値を格納したインデックスを計算する。
【0060】
ステップS104では、ステップS102で計算されたインデックスと、各辺の追加に必要なコストc
1,...,c
Mと、各辺の各々の動作確率p
1,...,p
Mと、コストの上限Cとに基づいて、選択する辺の組み合わせのコストがコスト上限C以下となる制約を満たし、かつ、信頼度が最大となるように、ネットワークに追加する辺の組み合わせを選択する。ここでは、上記
図4に示すアルゴリズムに従って最良優先探索を行い、ネットワークに追加する辺の組み合わせを選択することにより、ネットワークを設計する。
【0061】
ステップS106では、ステップS104で設計された信頼度を最大化するようなネットワークの構成を出力部50により出力し、処理を終了する。
【0062】
以上説明したように、本発明の実施の形態に係るネットワーク設計装置によれば、構築されたBDDと、各辺の追加に必要なコストと、各辺の各々の動作確率とに基づいて、BDDのノードb
iとコストsの組み合わせの各々に対し、ノードb
iに対応し、かつ、コストの合計がコストs以下となるように追加する辺の組み合わせを選択したときの信頼度の上限を表す値を格納したインデックスを計算するインデックス計算部と、計算されたインデックスと、追加に必要な各辺の各々のコストと、各辺の各々の動作確率と、コストの上限Cとに基づいて、選択する辺の組み合わせのコストがコスト上限C以下となる制約を満たすようにネットワークに追加する辺の組み合わせを選択することにより、コスト制約を満たしつつ、通信の信頼度を最大化するネットワークを設計することができる。これにより、より耐障害性能の高いネットワークの設計に寄与することができる。
【0063】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。