(57)【特許請求の範囲】
【請求項１】
節点の集合と辺の集合とを含む、ネットワークを表現するグラフについて、前記節点の集合の中から選択された第１の節点及び第２の節点の間が接続可能となるための辺の組み合わせを表す論理関数を生成する第１の生成部と、
前記論理関数に基づく、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、各辺が正常である確率を辺ごとに異なる文字列によって表現して、前記計算における演算を、前記文字列と演算子との結合によって表現することで、前記第１の節点及び前記第２の節点の間が正常に接続される確率を、前記文字列を変数とした計算式として生成する第２の生成部と、
を有し、
前記第１の生成部は、前記ネットワークに対して追加される可能性が有る辺の集合をも含むグラフについて、前記第１の節点及び前記第２の節点の間が接続可能となるための辺の組み合わせを表す論理関数を生成し、
前記第２の生成部は、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、前記追加される可能性が有る辺のうち、追加されないことが指定された辺については、当該辺が無いものとして前記計算式を生成する、
ことを特徴とする計算式生成装置。
【請求項２】
前記第１の生成部は、前記第１の節点及び前記第２の節点の間が接続可能となるための辺及び節点の組み合わせを表す論理関数を生成し、
前記第２の生成部は、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、各辺が正常である確率を辺ごとに異なる文字列によって表現し、各節点が正常である確率を節点ごとに異なる文字列によって表現して、前記計算における演算を、前記文字列と演算子との結合によって表現することで、前記第１の節点及び前記第２の節点の間が正常に接続される確率を、前記文字列を変数とした計算式として生成する、
ことを特徴とする請求項１記載の計算式生成装置。
【請求項３】
前記第２の生成部は、前記文字列を含む計算式を縮約する、
ことを特徴とする請求項１又は２記載の計算式生成装置。
【請求項４】
前記第２の生成部は、前記辺の集合のうちの一部の辺については、当該辺に対して与えられた、当該辺が正常である確率を示す数値を用いて前記計算式を生成する、
ことを特徴とする請求項１乃至３いずれか一項記載の計算式生成装置。
【請求項５】
前記第２の生成部は、前記辺の集合のうちの一部の辺又は前記節点の集合のうちの一部の節点については、当該辺又は当該節点に対して与えられた、当該辺又は当該節点が正常である確率を示す数値を用いて前記計算式を生成する、
ことを特徴とする請求項２記載の計算式生成装置。
【請求項６】
コンピュータが、
節点の集合と辺の集合とを含む、ネットワークを表現するグラフについて、前記節点の集合の中から選択された第１の節点及び第２の節点の間が接続可能となるための辺の組み合わせを表す論理関数を生成する第１の生成手順と、
前記論理関数に基づく、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、各辺が正常である確率を辺ごとに異なる文字列によって表現して、前記計算における演算を、前記文字列と演算子との結合によって表現することで、前記第１の節点及び前記第２の節点の間が正常に接続される確率を、前記文字列を変数とした計算式として生成する第２の生成手順と、
を実行し、
前記第１の生成手順は、前記ネットワークに対して追加される可能性が有る辺の集合をも含むグラフについて、前記第１の節点及び前記第２の節点の間が接続可能となるための辺の組み合わせを表す論理関数を生成し、
前記第２の生成手順は、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、前記追加される可能性が有る辺のうち、追加されないことが指定された辺については、当該辺が無いものとして前記計算式を生成する、
ことを特徴とする計算式生成方法。
【請求項７】
コンピュータを、請求項１乃至５いずれか一項記載の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算式生成装置、計算式生成方法、及びプログラムに関する。
【背景技術】
【０００２】
各種のライフライン等のネットワークを構成する設備においては、設備（例えば、通信用のネットワークであれば、ルータやケーブル等の設備）の故障を想定した上で、拠点間で正常に接続（例えば、通信）が行える度合いを求める信頼性評価が重要となる。一般に、信頼性評価において、接続拠点（例えば、通信用のネットワークに関しては、ルータ等）をノードとみなし、接続設備（例えば、通信用のネットワークに関して、ケーブル等）をリンクとみなしたグラフを想定し、ノードやリンクが正常である確率（以下、「正常確率」という。）を与え、予め指定した複数ノード間が正常なノード及びリンクによって接続される確率（以下、「接続確率」という。）が、正常に接続される「信頼性」として計算される。
【０００３】
信頼性の計算手法については、これまでに多くの方法が提案されており、例えば、通信機能が正常となるために正常である必要があるノード及びリンクの組合せを、二分決定グラフを用いた論理関数として表すことで、信頼性を計算する手法などが有る（例えば、非特許文献１、非特許文献２参照）。このような信頼性評価を利用して、例えば、通信用のネットワークであれば、災害警報に基づき、災害によって他の拠点との接続確率が低くなるようなサーバ上のデータや機能を、事前に他サーバに移行するような技術が提案されている（例えば、非特許文献３参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】林, 阿部,"通信ネットワークの信頼性," 社団法人電子情報通信学会, 2010.
【非特許文献２】S. Y. Kuo et al., "Efficient and Exact Reliability Evaluation for Networks With Imperfect Vertices," IEEE Transactions on Reliability, Vol. 56, No. 2, June 2007.
【非特許文献３】H. Saito et al., "Proposal of disaster avoidance control.," Telecommunications Network Strategy and Planning Symposium (Networks), 2014 16th International. IEEE, 2014.
【非特許文献４】Mathematica、［online］、［平成２７年６月２５日検索］、インターネット（URL：https://www.wolfram.com/index.ja.php）
【非特許文献５】Sympy、［online］、［平成２７年６月２５日検索］、インターネット（URL：http://www.sympy.org/en/index.html）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、台風や竜巻のような災害を想定した信頼性評価においては、台風や竜巻等の移動に応じて被災対象となる拠点が時々刻々と変化するため、ノードやリンクの正常確率も時間と共に変化する。ノードやリンクの正常確率が変化すれば、信頼性（例えば、上記の拠点間の接続確率）の計算を再実行する必要があるが、信頼性計算アルゴリズムは、ネットワークの規模が大きくなるにつれてその計算量も増加するため、大規模なネットワークが対象となった場合、求められる時間内に計算が終了しないことが想定される。
【０００６】
一方で、信頼性は、各ノードやリンクの正常確率を変数とみなした場合、その変数の関数として与えられる。関数の形状は、ネットワークトポロジや経路にのみ依存するため、信頼性を、ノードやリンクの正常確率を変数とした計算式として予め求めておけば、正常確率が変化した際には、単純に新たな正常確率を計算式に代入して計算することで、再度アルゴリズムを実行する場合に比べて信頼性の計算時間を短縮することができる。
【０００７】
記号を含む計算式の生成を行うツールとしてＭａｔｈｅｍａｔｉｃａ（非特許文献４）やＳｙｍｐｙ（非特許文献５）のような数式処理システムが有るが、そのようなシステムが行える数式処理は、四則演算や微積分等の一般的な数学的計算に関するものであり、信頼性計算のようなアルゴリズムの出力を、記号を含む計算式として表現するような仕組みは導入されていない。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、ネットワークにおける信頼性計算において、ネットワークのトポロジが与えられた場合に、任意の２拠点間が正常に接続される確率を、各リンクが正常に動作する確率を表す変数を用いた計算式として出力可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、計算式生成装置は、節点の集合と辺の集合とを含む、ネットワークを表現するグラフについて、前記節点の集合の中から選択された第１の節点及び第２の節点の間が接続可能となるための辺の組み合わせを表す論理関数を生成する第１の生成部と、前記論理関数に基づく、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、各辺が正常である確率を辺ごとに異なる文字列によって表現して、前記計算における演算を、前記文字列と演算子との結合によって表現することで、前記第１の節点及び前記第２の節点の間が正常に接続される確率を、前記文字列を変数とした計算式として生成する第２の生成部と、を有し、前記第１の生成部は、前記ネットワークに対して追加される可能性が有る辺の集合をも含むグラフについて、前記第１の節点及び前記第２の節点の間が接続可能となるための辺の組み合わせを表す論理関数を生成し、前記第２の生成部は、前記第１の節点及び前記第２の節点の間が正常に接続される確率の計算において、前記追加される可能性が有る辺のうち、追加されないことが指定された辺については、当該辺が無いものとして前記計算式を生成する。
【発明の効果】
【００１０】
ネットワークにおける信頼性計算において、ネットワークのトポロジが与えられた場合に、任意の２拠点間が正常に接続される確率を、各リンクが正常に動作する確率を表す変数を用いた計算式として出力可能とすることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態における計算式生成装置のハードウェア構成例を示す図である。
【図２】第１の実施の形態における計算式生成装置の機能構成例を示す図である。
【図３】第１の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【図４】グラフの一例を示す図である。
【図５】短絡除去を説明するための図である。
【図６】ネットワークのパス関数を示すＢＤＤグラフの一例を示す図である。
【図７】ＢＤＤを用いた計算式の生成結果の一例を示す図である。
【図８】第２の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【図９】第２の実施の形態においてパス関数の変換をＢＤＤで行う際のイメージ図である。
【図１０】第５の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【図１１】第６の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【図１２】第７の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【図１３】本実施の形態の効果の検証に用いたネットワーク構成例を示す図である。
【図１４】第１の実施の形態を用いて生成した計算式を示す図である。
【図１５】第３の実施の形態を用いて生成した計算式を示す図である。
【図１６】第３の実施の形態及び第５の実施の形態を用いて生成した確率計算式を示す図である。
【図１７】第１、第３、及び第５の各実施の形態を用いて計算を行った際の計算時間の比較結果である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、第１の実施の形態における計算式生成装置のハードウェア構成例を示す図である。図１の計算式生成装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１３】
計算式生成装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１４】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って計算式生成装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１５】
図２は、第１の実施の形態における計算式生成装置の機能構成例を示す図である。図２において、計算式生成装置１０は、入力部１１、パス関数生成部１２、確率計算部１３、及び出力部１４等を有する。これら各部は、計算式生成装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００１６】
第１の実施の形態においては、ネットワークを構成する設備のトポロジを表現するグラフとして、節点集合Ｖと辺集合Ｅから構成されるグラフＧ＝（Ｖ，Ｅ）が与えられる。各辺ｅ∈Ｖには、辺ｅが正常状態にある確率がそれぞれ定義可能であるとする。節点集合Ｖのうちのいずれか２つの節点ｓ，ｔが指定され、ｓ−ｔ節点間が正常な辺によって連結している状態を「ｓ−ｔ間で接続が可能」状態であると定義する。この定義の下で、ｓ−ｔ間で接続（例えば、通信）が可能である確率Ｒｓ，ｔ（Ｇ）（以下、「接続確率Ｒｓ，ｔ（Ｇ）」という。）を計算式として出力する。出力方法としては、各辺ｅが正常である確率（正常確率ｐ（ｅ））が数値で与えられている際に接続確率Ｒｓ，ｔ（Ｇ）を計算する方法において、各辺ｅの正常確率ｐ（ｅ）を、数値ではなく文字列として表現し、四則演算の結果を数値計算ではなく、'ｐ（ｅ＿１）＋ｐ（ｅ＿２）'や'ｐ（ｅ＿１）＊ｐ（ｅ＿２）'のような文字列の結合として出力することで、最終的に接続確率Ｒｓ，ｔ（Ｇ）を表現する計算式を出力する。
【００１７】
以下、第１の実施の形態において計算式生成装置１０が実行する処理手順について説明する。図３は、第１の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。
【００１８】
ステップＳ１１０において、入力部１１は、グラフＧ＝（Ｖ，Ｅ）、及び接続可能（例えば、通信可能）である確率を求める２節点ｓ，ｔの入力を受け付ける。２節点ｓ，ｔは、節点集合Ｅの中から任意に選択される。
【００１９】
続いて、パス関数生成部１２は、グラフＧ上でｓ−ｔ間が接続可能であるための条件を表すパス関数Ｓｔを生成する（ステップＳ１２０）。パス関数Ｓｔは、ｓ−ｔ間が接続可能となるための辺の組合せを表し、具体的には各辺の状態を表す変数による論理関数である（非特許文献１）。例えば、図４に示されるグラフに対するパス関数Ｓｔは、以下の通りである。
Ｓｔ＝ｅ＿１（ｅ＿３ｅ＿５∪ｅ＿４）∪ｅ＿２（ｅ＿５∪ｅ＿３ｅ＿４）
ここで、ｅ＿ｉは各辺を表し、「ｅ＿１が正常で、かつ、ｅ＿３とｅ＿５とが正常若しくはｅ＿４が正常」、又は「ｅ＿２が正常で、かつ、ｅ＿５が正常若しくはｅ＿３とｅ＿４とが正常」であれば、ｓ−ｔ間が接続可能であることを示す。このようなパス関数Ｓｔを導く方法として、ＰＡＴＨＦ（）（非特許文献１）を以下に示す。なお、ＰＡＴＨＦ（）の手順中、テーブルＨ１には、途中で生成されたグラフとそれに対応するパス関数とを対にして記憶しておく。こうすることで、一度生成したパス関数Ｓｔの再利用を行う。
ＰＡＴＨＦ（）
入力：Ｇ，ｓ，ｔ
出力：パス関数Ｓｔ
手順１）入力されたグラフＧにおいて、接続する辺の数が１本であり、かつ、ｓでもｔでもない節点がある場合、当該節点と、当該節点に接続する辺とをグラフＧから取り除く。また、両端の節点が単一節点であるループとなるような辺（すなわち、両端の節点が同一である辺）が有る場合、当該辺もグラフＧから取り除く。
【００２０】
手順２）テーブルＨ１に対象のグラフＧが記憶されていれば、対として記憶されているパス関数Ｓｔを出力する。そうでなければ、手順２に進む。
【００２１】
手順３）対象のグラフＧが、節点ｔのみからなるグラフであれば１を出力する。そうでなければ、手順４に進む。
【００２２】
手順４）節点ｓに接続する全ての辺（ｅ＿１，ｅ＿２，・・・，ｅ＿ｎｓ）を抽出し、抽出された辺ｅ＿ｉ（ｉ＝１，２，・・・，ｎｓ）ごとに、次を実行する。対象のグラフＧにおいて、抽出された辺からｅ＿ｉを除く辺（ｅ＿１，ｅ＿２，・・・，ｅ＿｛ｉ−１｝，ｅ＿｛ｉ＋１｝，・・・，ｅ＿ｎｓ）を取り除いた後、辺ｅ＿ｉを短絡除去して得られるグラフを生成し、生成されたグラフをＧ◇ｅ＿ｉとする。例えば、図４のグラフがグラフＧである場合、辺ｅ＿１及び辺ｅ＿２が抽出される。ｉ＝１のとき、辺ｅ＿２が取り除かれて、辺ｅ＿１が短絡除去される。また、ｉ＝２のとき、辺ｅ＿１が取り除かれて、辺ｅ＿２が短絡除去される。なお、辺の短絡除去とは、当該辺の両端の節点を一つの節点に統合することをいう。
【００２３】
図５は、短絡除去を説明するための図である。図５において、（１）は、図４のグラフから辺ｅ＿２が除去され、更に、辺ｅ＿１が短絡除去された例を示す。したがって、（１）に示されるグラフは、グラフＧ◇ｅ＿１に相当する。また、（２）は、図４のグラフから辺ｅ＿１が除去され、更に、辺ｅ＿２が短絡除去された例を示す。したがって、（１）に示されるグラフは、グラフＧ◇ｅ＿２に相当する。
【００２４】
なお、短絡除去によって統合された節点は、節点ｓとされる。
【００２５】
抽出された全ての辺ｅ＿ｉについて、辺ｅ＿ｉ以外の除去及び辺ｅ＿ｉの短絡除去が終了すると、手順５に進む。
【００２６】
手順５）パス関数Ｓｔ＝（ｅ＿１∩ＰＡＴＨＦ（Ｇ◇ｅ＿１））∪（ｅ＿２∩ＰＡＴＨＦ（Ｇ◇ｅ＿２））∪・・・∪（ｅ＿ｎｓ∩ＰＡＴＨＦ（Ｇ◇ｅ＿ｎｓ））を出力する。この際、テーブルＨ１に、対象のグラフＧと当該パス関数Ｓｔとが対として記憶される。すなわち、手順５では、ＰＡＴＨＦ（）が再帰的に呼び出される。なお、手順４の結果が、図５に示される通りである場合、手順５では、パス関数Ｓｔ＝（ｅ＿１∩ＰＡＴＨＦ（Ｇ◇ｅ＿１））∪（ｅ＿２∩ＰＡＴＨＦ（Ｇ◇ｅ＿２））が出力される。
【００２７】
第１の実施の形態では、パス関数Ｓｔが、二分決定グラフ（ＢＤＤ：binary decision diagram）を用いて表現される（非特許文献１、非特許文献２）。ＢＤＤは、グラフ構造による論理関数の表現である。例えば、論理関数Ｆ（ｅ＿１，ｅ＿２，ｅ＿３，ｅ＿４，ｅ＿５）＝ｅ＿１（ｅ＿３ｅ＿５∪ｅ＿４）∪ｅ＿２（ｅ＿５∪ｅ＿３ｅ＿４）に対するＢＤＤは、図６に示される通りである。これは、論理関数の値を全ての変数について場合分けした結果を二分決定木で表し、それを縮約することにより得られる。図６において、ｅ＿１，...，ｅ＿５を囲む丸印から下に向かって実線（１枝とよぶ）と点線（０枝とよぶ）が伸びているが、１枝がｅ＿ｉ＝１、０枝がｅ＿ｉ＝０とすることに対応する。頂点（図６では、ｅ＿１）から下方へ向けて辿り、終端ノード１（図６において□で囲まれた１）に至る場合が、論理関数の値が１となるような変数の値の組となる。例えば、ｅ＿１＝１，ｅ＿２＝１，ｅ＿４＝１のとき、Ｆ＝１となる。終端ノード０（図６において□で囲まれた０）に至る場合は、論理関数の値が０となるような変数の値の組となる。ＢＤＤでは、論理関数をコンパクトに表現でき、また、２つのＢＤＤを入力としてそれらの２項論理演算（ＡＮＤ，ＯＲなど）の結果を表すＢＤＤを直接生成する計算方法が存在する。そのため、上記で示したＰＡＴＨＦ（）において、パス関数ＳｔをＢＤＤで表現することで、ＰＡＴＨＦ（）の手順５を効率的に行える。
【００２８】
図３に戻る。ステップＳ１２０に続いて、確率計算部１３は、ステップＳ１２０において生成されたパス関数Ｓｔにおいて、辺ｅ＿ｉの正常確率をｐ（ｅ＿ｉ）として表した場合に、接続確率Ｒｓ，ｔ（Ｇ）を表す計算式を、ｐ（ｅ＿ｉ）（ｉ＝１，...，｜Ｅ｜）を含んだ文字式として生成する（ステップＳ１３０）。ここで、｜Ｅ｜は、辺集合Ｅの要素数を示す。
【００２９】
ここでは、パス関数Ｓｔが、ＢＤＤで表現されているとし、ＢＤＤにおいて、深さｉに辺ｅ＿ｉが有るとする。また、Ｓｔ１（ｅ＿ｉ）（又はＳｔ０（ｅ＿ｉ））は、パス関数Ｓｔを論理関数とみなしたときに、ｅ＿ｉ＝１（又はｅ＿ｉ＝０）とすることに相当し、それは、ＢＤＤにおいて、ｅ＿ｉから１枝（又は０枝）が伸びた先に位置する辺ｅを頂点とした部分グラフに対応する。
【００３０】
パス関数Ｓｔを入力とし、接続確率Ｒｓ，ｔ（Ｇ）を出力する関数であるＲＥＬ（）（非特許文献１）における計算手順を以下に示す。非特許文献１において、ＲＥＬ（）は、数値を用いて計算する手順であるのに対し、以下では、各辺の正常確率は、文字列の配列ｐとして与えられる。具体的には、ｐは、ｉ番目の要素が辺ｅ＿ｉの正常確率ｐ（ｅ＿ｉ）を文字列として保持する配列ｐ＝［'ｐ（ｅ＿１）'，'ｐ（ｅ＿２）'，・・・，'ｐ（ｅ＿｜Ｅ｜）'］である。なお、ＲＥＬ（）の手順中、テーブルＨ２には、途中で生成されたパス関数Ｓｔと、それに対応する文字列とを対にして記憶しておく。こうすることで、一度生成した文字列の再利用を行う。
ＲＥＬ（）
入力：パス関数Ｓｔ
出力：接続確率Ｒｓ，ｔ（Ｇ）＝Ｐ［Ｓｔ］
手順１）入力されたパス関数Ｓｔ＝１ならば文字列'１'を出力する。すなわち、入力されたパス関数Ｓｔが、図６における終端ノード１に対応する場合、文字列'１'が出力される。そうでない場合、手順２に進む。なお、図６に示されるＢＤＤが対象である場合、最初に手順１が実行される時点において、パス関数Ｓｔ＝１ではないため、手順２に進む。後述より明らかなように、ＲＥＬ（）の再帰的な呼び出しにおいて、パス関数Ｓｔ＝１となる状況が発生する。
【００３１】
手順２）入力されたパス関数Ｓｔ＝０ならば文字列'０'を出力する。すなわち、入力されたパス関数Ｓｔが、図６における終端ノード０に対応する場合、文字列'０'が出力される。そうでない場合、手順３に進む。なお、図６に示されるＢＤＤが対象である場合、最初に手順２が実行される時点において、パス関数Ｓｔ＝０ではないため、手順３に進む。後述より明らかなように、ＲＥＬ（）の再帰的な呼び出しにおいて、パス関数Ｓｔ＝０となる状況が発生する。
【００３２】
手順３）テーブルＨ２に、パス関数Ｓｔが含まれていれば、対として記憶されている文字列を出力する。そうでなければ、手順４に進む。
【００３３】
手順４）パス関数Ｓｔの頂点に位置する辺ｅのインデックスｉｄを特定し、ｐ＿ｉｄ＝ｐ［ｉ］として、手順５に進む。ｐ＿ｉｄ＝ｐ［ｉ］は、ｐ＿ｉｄに対するｐ［ｉ］の代入を示す。なお、図６に示されるＢＤＤが対象である場合、最初に手順４が実行される時点において、パス関数Ｓｔの頂点に位置する辺ｅは、辺ｅ＿１である。
【００３４】
手順５）ＲＥＬ（Ｓｔ１（ｅ））により出力される文字列をｘ＿１に代入し、ＲＥＬ（Ｓｔ０（ｅ））により出力される文字列をｘ＿０に代入する。すなわち、ＲＥＬ（）が再帰的に呼び出される。続いて、以下の条件判定に基づいて、処理が分岐する。
・ｉｆ（ｘ＿１＝'１'かつｘ＿０＝'０'）：文字列ｐ＿ｉｄを出力する。
・ｅｌｓｅｉｆ（ｘ＿１＝'１'）：文字列ｐ＿ｉｄ，'＋（１−'，ｐ＿ｉｄ，'）＊（'，ｘ＿０，'）'を結合して構成される文字列を出力する。
・ｅｌｓｅｉｆ（ｘ０＝'０'）：文字列ｐ＿ｉｄ，'＊（'，ｘ＿１，'）を結合して構成される文字列を出力する。
・ｅｌｓｅ：文字列ｐ＿ｉｄ，'＊（'，ｘ＿１，'）＋（１−'，ｐ＿ｉｄ，'）＊（'，ｘ＿０，'）'を結合して構成される文字列を出力する。
【００３５】
上記のいずれの分岐先においても、パス関数Ｓｔと出力対象の文字列との対がテーブルＨ２に記憶される。再帰的な呼び出しにおける階層構造において、最上層の手順５が終了すると、各辺の正常確率が辺ごとに異なる文字列によって表現され、接続確率Ｒｓ，ｔ（Ｇ）の計算における演算が、当該文字列と演算子との結合によって表現された計算式が出生成される。したがって、当該計算式では、各辺の正常確率は、変数となる。
【００３６】
図７は、ＢＤＤを用いた計算式の生成結果の一例を示す図である。図７において、ｐ（ｉ）＝ｐ（ｅ＿ｉ）であり、ｑ（ｉ）＝１−ｐ（ｅ＿ｉ）である。辺ｅ＿１以外の辺に付与されている計算式は、ＲＥＬ（）の再帰的な呼び出しにおいて生成される計算式である。すなわち、図７の例では、辺ｅ＿１に付与されている計算式が、ＲＥＬ（）の出力として得られる計算式である。
【００３７】
続いて、出力部１４は、ＲＥＬ（）の出力結果を、接続確率Ｒｓ，ｔ（Ｇ）を表す計算式として出力する（ステップＳ１４０）。例えば、当該計算式が、補助記憶装置１０２に記憶されてもよい。
【００３８】
上述したように、第１の実施の形態によれば、ネットワークのトポロジが与えられた場合に、任意の２拠点間（２つの節点間）が正常に接続される確率を、各リンク（各辺）が正常に動作する確率を表す変数を用いた計算式として出力可能とすることができる。
【００３９】
次に、第２の実施の形態について説明する。第２の実施の形態では第１の実施の形態と異なる点について説明する。第２の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００４０】
第２の実施の形態においては、辺だけではなく各節点ｖについても、ｖが正常状態にある確率として、ｐ（ｖ）が設定される。２つの節点ｓ，ｔを指定し、ｓ−ｔ節点間が正常な辺及び節点によって連結している状態を「ｓ−ｔ間で接続が可能」状態であると定義する。この定義の下で、ｓ−ｔ間で接続が可能である接続確率Ｒｓ，ｔ（Ｇ）を、ｐ（ｅ）及びｐ（ｖ）を文字列として表現することで、最終的に接続確率Ｒｓ，ｔ（Ｇ）を表現する計算式を出力する。
【００４１】
図８は、第２の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。図８中、図３と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
【００４２】
図８では、ステップＳ１２０とステップＳ１３０との間に、ステップＳ１２５が追加されている。ステップＳ１２５において、パス関数生成部１２は、ステップＳ１２０において生成されたパス関数Ｓｔを、節点の正常確率をも考慮したパス関数Ｓｔへ変換する。
【００４３】
辺ｅ＿ｍの両端の節点を、ｖ＿ａ及びｖ＿ｂとした場合に、辺ｅ＿ｍを用いた接続を可能とするためには、ｖ＿ａ及びｖ＿ｂについても正常である必要がある。したがって、ステップＳ１２５では、パス関数Ｓｔについて、ｅ＿ｍ→ｖ＿ａ∩ｅ＿ｍ∩ｖ＿ｂといった置き換えが行われる（非特許文献２）。パス関数ＳｔをＢＤＤで表現する場合、辺ｅ＿ｍの１枝の先のグラフをｆ｜ｅ＿ｍ＝１とし、０枝の先のグラフをｆ｜ｅ＿ｍ＝０としたときに、置き換えが行われたグラフは、
｛（ｖ＿ａ∩ｅ＿ｍ∩ｖ＿ｂ）∩ｆ｜ｅ＿ｍ＝１｝∪｛（ＮＯＴ（ｖ＿ａ∩ｅ＿ｍ∩ｖ＿ｂ））∩ｆ｜ｅ＿ｍ＝０｝
として表される（図９）。ここで、ＮＯＴ（Ｘ）は、Ｘの否定を示す。このような置き換えは、ＢＤＤの頂点から下方に向けて、全ての辺について行われる。
【００４４】
続くステップＳ１３０では、このような置き換えが行われたパス関数Ｓｔが入力とされて、確率計算部１３によって、接続確率Ｒｓ，ｔ（Ｇ）を表現する計算式が生成される。計算式の生成においては、第１の実施の形態における「辺」が「辺又は節点」に置き換えられて、第１の実施の形態と同様に行われればよい。
【００４５】
上述したように、第２の実施の形態によれば、ネットワークのトポロジが与えられた場合に、任意の２拠点間（２つの節点間）が正常に接続される確率を、各リンク（各辺）及び各拠点（節点）が正常に動作する確率を表す変数を用いた計算式として出力可能とすることができる。
【００４６】
次に、第３の実施の形態について説明する。第３の実施の形態では第１の実施の形態と異なる点について説明する。第３の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００４７】
第３の実施の形態においては、第１の実施の形態における接続確率Ｒｓ，ｔ（Ｇ）の計算において文字列を出力する際に、文字列を数式とみなして縮約が行われる。それにより、縮約された計算式を、接続確率Ｒｓ，ｔ（Ｇ）として出力する。
【００４８】
具体的には、図３のステップＳ１３０において実行されるＲＥＬ（）の手順５において、確率計算部１３は、出力対象の文字列がテーブルＨ２に記憶する際に、当該文字列を数式とみなして縮約を行い、縮約した結果として生成される文字列を、テーブルＨ２に記憶する。
【００４９】
例えば、縮約として単純な数式展開を用いる場合、生成された文字列が「ｐ（ｅ＿１）＊ｐ（ｅ＿２）＊（１−ｐ（ｅ＿３））＋（１−ｐ（ｅ＿２））＊ｐ（ｅ＿３）＋（１−ｐ（ｅ＿１））＊ｐ（ｅ＿２）」であれば、縮約の結果は「−ｐ（ｅ＿１）＊ｐ（ｅ＿２）＊ｐ（ｅ＿３）＋ｐ（ｅ＿３）−ｐ（ｅ＿２）＊ｐ（ｅ＿３）＋ｐ（ｅ＿２）」となる。
【００５０】
次に、第４の実施の形態について説明する。第４の実施の形態では第２の実施の形態と異なる点について説明する。第４の実施の形態において特に言及されない点については、第２の実施の形態と同様でもよい。
【００５１】
第４の実施の形態においては、第２の実施の形態における接続確率Ｒｓ，ｔ（Ｇ）の計算において、文字列を出力する際に、文字列を数式とみなして縮約を行った上で文字列として出力する。それにより、縮約された計算式を接続確率Ｒｓ，ｔ（Ｇ）として出力する。
【００５２】
具体的には、図８のステップＳ１３０において実行されるＲＥＬ（）の手順５において、第３の実施の形態と同様に縮約が行われる。
【００５３】
次に、第５の実施の形態について説明する。第５の実施の形態では第１の実施の形態と異なる点について説明する。第５の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００５４】
第５の実施の形態においては、第１の実施の形態に対して、一部の辺ｅの正常確率ｐ（ｅ）を文字列として表現し、その他の辺の正常確率を数値として与えることで、文字列で与えられた確率を変数とするような文字式として接続確率Ｒｓ，ｔ（Ｇ）を表現する。接続確率Ｒｓ，ｔ（Ｇ）の計算において、文字列同士の四則演算は、第１の実施の形態のように表現されるが、数値同士の四則演算については、通常の数値計算結果を出力とし、数値と文字列の四則演算については、文字列を数式とみなした場合の計算結果を文字列として出力する。
【００５５】
図１０は、第５の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。図１０中、図３と同一ステップには同一ステップ番号を付し、その説明は省略する。
【００５６】
図１０では、ステップＳ１１０がステップＳ１１０ａに変更されている。ステップＳ１１０ａにおいて、入力部１１は、対象のグラフＧ＝（Ｖ，Ｅ）、及び接続可能である確率を求める２節点ｓ，ｔ、に加え、各辺の正常確率ｐの入力を受け付ける。ここで、ｐは、ｉ番目の要素が辺ｅ＿ｉの正常確率ｐ（ｅ＿ｉ）となる配列であるが、一部の要素については第１の実施の形態と同様に文字列が与えられ、残りの要素については数値が与えられている。
【００５７】
また、ステップＳ１３０がステップＳ１３０ａに変更されている。ステップＳ１３０ａにおいて、確率計算部１３は、ＲＥＬ（）の手順５において、ｘ＿１，ｘ＿０，ｐ＿ｉｄが数値を含まない文字列である場合には、第１の実施の形態と同様の処理を実行するが、数値を含む文字列である場合には、生成された文字列を数式とみなし、四則演算を行った上での計算結果を出力する。例えば、生成された文字列が「０．９９＊（１−０．９９）＋（１−０．９９）＊ｐ（ｅ＿１）」であれば、ＲＥＬ（）の出力は「０．００９９＋０．０１＊ｐ（ｅ＿１）」となる。
【００５８】
上述したように、第５の実施の形態によれば、一部の辺について正常確率が数値として与えられている場合に、当該数値を利用した計算式を生成することができる。なお、第５の実施の形態に対して、第３の実施の形態が組み合わされてもよい。
【００５９】
次に、第６の実施の形態について説明する。第６の実施の形態では第２の実施の形態と異なる点について説明する。第６の実施の形態において特に言及されない点については、第２の実施の形態と同様でもよい。
【００６０】
第６の実施の形態においては、第２の実施の形態に対して、一部の辺ｅの正常確率ｐ（ｅ）及び一部の節点ｖの正常確率ｐ（ｖ）を文字列として表現し、その他の辺及び節点の正常確率を数値として与え、第４の実施の形態と同様に接続確率Ｒｓ，ｔ（Ｇ）を表現する。
【００６１】
図１１は、第６の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。図１１中、図８又は図１０と同一ステップには同一ステップ番号を付し、その説明は省略する。
【００６２】
図１１では、ステップＳ１１０がステップＳ１１０ａに変更されている。ステップＳ１１０ａでは、図１０のステップＳ１１０ａと同様の処理が実行される。
【００６３】
また、ステップＳ１３０がステップＳ１３０ｂに変更されている。ステップＳ１３０ｂでは、図１０のステップＳ１３０ａと同様の処理が行われる。但し、ステップＳ１３０ｂでは、「辺」だけではなく「辺及び節点」について計算が行われる。
【００６４】
上述したように、第６の実施の形態によれば、一部の辺及び節点について正常確率が数値として与えられている場合に、当該数値を利用した計算式を生成することができる。なお、第６の実施の形態に対して、第４の実施の形態が組み合わされてもよい。
【００６５】
次に、第７の実施の形態について説明する。第７の実施の形態では第１の実施の形態と異なる点について説明する。第７の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００６６】
第７の実施の形態においては、第１の実施の形態に対して、元のグラフＧに対して追加される可能性のある辺の集合Ｆを考え、Ｆを含んだグラフＧ'＝（Ｖ，Ｅ∪Ｆ）について第１の実施の形態と同様にＲｓ，ｔ（Ｇ'）を求める。その後、辺ｆの正常確率を表す文字列を'ｐ（ｆ）'とした場合に、辺ｆをグラフＧに追加する場合には、そのまま'ｐ（ｆ）'を含んだ計算式を出力し、辺ｆをグラフＧに追加しない場合には、計算式において'ｐ（ｆ）'を０とみなした（すなわち、辺ｆが無いものとみなした）計算式を出力する。
【００６７】
図１２は、第７の実施の形態において計算式生成装置が実行する処理手順の一例を説明するためのフローチャートである。図１２中、図３と同一ステップについては同一ステップ番号を付し、その説明は省略する。
【００６８】
図１２では、ステップＳ１１０がステップＳ１１０ｂに変更されている。ステップＳ１１０ｂにおいて、入力部１１は、対象のグラフＧへの追加の可能性がある辺の集合Ｆを全て含んだとみなしたグラフＧ'＝（Ｖ，Ｅ∪Ｆ）、及び接続可能である確率を求める２節点ｓ，ｔの入力を受け付ける。その後、第１の実施の形態と同様に、Ｒｓ，ｔ（Ｇ'）を表す計算式が生成される。
【００６９】
続いて、任意のタイミングで、集合Ｆ内の全ての辺について、ステップＳ１３１が実行される。任意のタイミングとは、例えば、集合Ｆ内のいずれかの辺について、追加が決定された際や、集合Ｆ内のいずれかの辺が追加された場合の計算式の生成が指示された際等である。この場合、集合Ｆの中で追加対象とされる辺が、ユーザによって指定されてもよい。
【００７０】
ステップＳ１３１において、確率計算部１３は、集合Ｆ内の各辺ｆ＿ｉ∈Ｆについて、対象のグラフＧへの追加対象であるか否かを判定する。辺ｆ＿ｉが、対象のグラフＧへの追加対象である場合（Ｓ１３１でＹｅｓ）、確率計算部１３は、ｆ＿ｉの正常確率を表す文字列'ｐ（ｆ＿ｉ）'を、Ｒｓ，ｔ（Ｇ'）を表す計算式に残したままとする。一方、辺ｆ＿ｉが、対象のグラフＧへの追加対象でない場合（Ｓ１３１でＹｅｓ）、確率計算部１３は、Ｒｓ，ｔ（Ｇ'）を表す計算式において、'ｐ（ｆ＿ｉ）'を０とみなして計算式を再構成する（ステップＳ１３２）。
【００７１】
例えば、Ｒｓ，ｔ（Ｇ'）を表す計算式が「'ｐ（ｅ＿１）＊ｐ（ｅ＿２）＋ｐ（ｆ＿１）'」である場合、辺ｆ＿１をグラフＧに追加する場合には、そのまま「'ｐ（ｅ＿１）＊ｐ（ｅ＿２）＋ｐ（ｆ＿１）'」が出力結果となる。一方、辺ｆ＿１を対象のグラフＧに追加しない場合には、計算式は「'ｐ（ｅ＿１）＊ｐ（ｅ＿２）'」として再構成される。
【００７２】
なお、第７の実施の形態に対して、第３の実施の形態、又は第５の実施の形態が組み合わされてもよい。また、第２の実施の形態、第４の実施の形態、又は第６の実施の形態が、第７の実施の形態に組み合わされてもよい。
【００７３】
上述したように、第７の実施の形態によれば、辺の追加の有無に応じて、計算式を再構成することができる。
【００７４】
なお、上記各実施の形態において「ネットワーク」は、通信用のネットワークに限られない。例えば、道路網、鉄道網、電力網、又は上下水道網等、ネットワーク状のライフラインを表すグラフに関して、本実施の形態が適用されてもよい。
【００７５】
次に、図１３のネットワークに関して、第１、第３、及び第５の実施の形態を用いて接続確率の計算式及び接続確率を求めた結果を示す。
【００７６】
パス関数の導出にはＢＤＤ作成ツールであるｐｙｃｕｄｄを使用し、文字列としての計算式の生成にはｓｙｍｐｙを使用した。第１の実施の形態を用いて求めた計算式を図１４、第３の実施の形態を用いて縮約した計算式を図１５、辺ｅ＿１，ｅ＿３，ｅ＿７，ｅ＿９以外の辺の正常確率を０．９として与えた上で第３の実施の形態及び第５の実施の形態を用いて求めた縮約した計算式を図１６に示す。図１４、図１５、及び図１６において、ｐ１，ｐ２，...，ｐ１２は、それぞれｐ（ｅ＿１），ｐ（ｅ＿２），...，ｐ（ｅ＿１２）を表す。
【００７７】
また、第１、第３、及び第５の各実施の形態において、計算式の生成に要した時間（秒）及び計算式を用いて接続確率の計算を行った際の計算時間（秒）を図１７に示す。図１７では、比較手法として、ＢＤＤを用いて確率計算を行った結果も「ＢＤＤ」の列に示されている。比較手法は、第５の実施の形態において全ての確率を数値として与えて計算式の作成を行う手順に相当する。
【００７８】
図１７より、計算式の生成には比較手法の計算時間に比べて時間を要するが、計算時間については、生成された計算式を用いることにより第１の実施の形態では約９０．０％削減できており、また、計算式を縮約した第３の実施の形態では約９１．０％削減できている。また、第３の実施の形態及び第５の実施の形態のように一部の辺のみの正常確率を変数とした場合、計算時間を約９９．６％削減できている。１つのネットワークトポロジに対して計算式の生成が必要となるのは一度なので、接続確率の計算を繰り返し行う場合、本実施の形態が有効であるといえる。
【００７９】
なお、上記各実施の形態において、パス関数生成部１２は、第１の生成部の一例である。確率計算部１３は、第２の生成部の一例である。
【００８０】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００８１】
１０          計算式生成装置
１１          入力部
１２          パス関数生成部
１３          確率計算部
１４          出力部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
Ｂ            バス
【図１】
0006389808.tif 000002
【図２】
0006389808.tif 000003
【図３】
0006389808.tif 000004
【図４】
0006389808.tif 000005
【図５】
0006389808.tif 000006
【図６】
0006389808.tif 000007
【図７】
0006389808.tif 000008
【図８】
0006389808.tif 000009
【図９】
0006389808.tif 000010
【図１０】
0006389808.tif 000011
【図１１】
0006389808.tif 000012
【図１２】
0006389808.tif 000013
【図１３】
0006389808.tif 000014
【図１４】
0006389808.tif 000015
【図１５】
0006389808.tif 000016
【図１６】
0006389808.tif 000017
【図１７】
0006389808.tif 000018