(57)【特許請求の範囲】
【請求項１】
状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数と当該変数を論理式に含む前記節との組を前記変数ごとに抽出し、前記節をｈｙｐｅｒ−ｖｅｒｔｅｘとし、前記変数をｈｙｐｅｒ−ｅｄｇｅとすることによって前記状態遷移情報をハイパーグラフに変換するハイパーグラフ生成部と、
前記変数を節点とし、前記節点の変数がとり得る各値に対応した枝を有し、前記節点に前記論理式それぞれの充足状態を対応付けた二分決定図を構築する二分決定図構築部と
を備え、
前記ハイパーグラフ生成部は、第１の変数と他の第２の変数のみが含まれる前記論理式が複数存在し、かつ複数の当該論理式がいずれも真となる条件で前記第２の変数の値が与えられると前記第１の変数の値を一意に決められる場合、抽出した前記第１の変数の節の節番号を前記第２の変数の節の節番号に含めて前記第１の変数を省略し、
前記二分決定図構築部は、前記ハイパーグラフ生成部によって抽出された前記変数と前記節との組を用いて前記二分決定図を構築し、
各節点における前記充足状態を評価することによって前記状態遷移情報が表す状態遷移の評価を行う状態遷移評価装置。
【請求項２】
前記二分決定図構築部は、前記充足状態が一致する２以上の前記節点を１つにまとめる、
請求項１に記載の状態遷移評価装置。
【請求項３】
状態遷移評価装置が、
状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数と当該変数を論理式に含む前記節との組を前記変数ごとに抽出し、前記節をｈｙｐｅｒ−ｖｅｒｔｅｘとし、前記変数をｈｙｐｅｒ−ｅｄｇｅとすることによって前記状態遷移情報をハイパーグラフに変換するハイパーグラフ生成手順と、
前記変数を節点とし、前記節点の変数がとり得る各値に対応した枝を有し、前記節点に前記論理式それぞれの充足状態を対応付けた二分決定図を構築する二分決定図構築手順と
を実行し、
前記ハイパーグラフ生成手順では、第１の変数と他の第２の変数のみが含まれる前記論理式が複数存在し、かつ複数の当該論理式がいずれも真となる条件で前記第２の変数の値が与えられると前記第１の変数の値を一意に決められる場合、抽出した前記第１の変数の節の節番号を前記第２の変数の節の節番号に含めて前記第１の変数を省略し、
前記二分決定図構築手順では、前記ハイパーグラフ生成手順によって抽出された前記変数と前記節との組を用いて前記二分決定図を構築し、
各節点における前記充足状態を評価することによって前記状態遷移情報が表す状態遷移の評価を行う状態遷移評価方法。
【請求項４】
コンピュータに、請求項１又は２に記載の状態遷移評価装置に備わる各機能部を実現させるための状態遷移評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラムに関する。
【背景技術】
【０００２】
多くのＩＣＴ（Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）システムは状態遷移機械として表現できる。本開示は、状態遷移の検証技術を想定し、特にコアエンジンとなる論理式の求解方法について述べる。
【０００３】
ここでの「検証」とは、状態遷移と不正な状態が与えられたとき、様々な初期状態から不正な状態に到達してしまうかどうかを調べることである。ＩＣＴシステムにおける「状態」とは、装置が管理しているトラフィック情報やパケットヘッダのビットパターン（アドレスなど）のことであり、システムはこれらの「状態」に従ってアクションを決定し、次の状態へと遷移する（たとえばパケットを転送すると、隣接スイッチの受信状態が更新される）。何万、何億という状態の組合せが存在するとき、それらの遷移先を人手で網羅的に調べることは不可能であり、一般にコンピュータによって検査を行う。
【０００４】
すぐ後に簡単な例を示すように、状態遷移と不正状態は「連言標準形（ＣＮＦ）」と呼ばれる形式の論理式に変換できる。まず、ＣＮＦについて簡単に説明する。ＣＮＦは、「論理変数（０／１の２値のみをとる変数）」からなる論理式である。いくつかの論理変数のＯＲ“∨”からなる「節（ｃｌａｕｓｅ）」を、ＡＮＤ“∧”でつなぐ。たとえば、ｘ１、ｘ２、ｘ３という３つの論理変数があったとき、ＣＮＦの例としては、（ｘ１∨ｘ２）∧（¬ｘ１∨３）や¬ｘ２∧（¬ｘ１∨ｘ２）∧（ｘ２∨¬ｘ３）などがある。前者は２つの節、後者は３つの節を持つ。
【０００５】
状態遷移と不正状態を表すＣＮＦが同時に成立するのであれば、つまりＣＮＦがそのような解を持つのであれば、不正な状態に到達可能な初期状態が存在するということになる。このようにして、検証技術を用いることで、実際にシステムを動作させる前に不具合を発見できる。すると、状態遷移を修正するなどして事前に不具合を取り除き、システムの信頼性を高められる。
【０００６】
図１に状態遷移を表すプログラムコードからＣＮＦへの変換例を示す。この図は２回のループまでの状態遷移を表しており、変数の下添え字はループ回数を表す。コード中のａｓｓｅｒｔ文は、「満たさなければならない条件」を表す。２回までのいずれのループでも変数ａの値が０でなければならない。このａｓｓｅｒｔの否定が「不正状態」に相当する。つまり、いずれかのループで、ａの値が１になってしまうかどうかを検査すればよい。そのようなＣＮＦを真にしてしまう変数割り当てが存在すれば、それは不正な状態への遷移仮定を表す。この例であれば、（ａ０，ａ１，ａ２，ｂ０，ｂ１）＝（０，０，１，１，０）などの割り当てによってＣＮＦが真になり、不正な状態への遷移が存在するとわかる。
【０００７】
本稿では、状態遷移や不正状態を表すＣＮＦがすでに与えられていると仮定し、ＣＮＦの解を算出する。たとえば、（ｘ１∨ｘ２）∧（¬ｘ１∨ｘ３）というＣＮＦが与えられたとき、これを満たす解（ｘ１，ｘ２，ｘ３）＝（０，１，★），（１，★，１）を求める。ただし、★は０でも１でもよいことを表す。参考までに、図２に，変数割り当てとＣＮＦの値を挙げておく。┬はＣＮＦが真であり、┴はＣＮＦが偽であることを意味する。
【０００８】
ＣＮＦは人工知能分野の研究者によって非常によく研究されており、いくつかの効率的な求解方法が知られている。例えば、二分決定図（Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）演算法、及び、ＳＡＴ  ｓｏｌｖｅｒ  （ＳＡＴｉｓａｂｉｌｉｔｙ  ｓｏｌｖｅｒ）法が例示できる。
【０００９】
以前は、ＢＤＤというデータ構造を用いて、「ＡＮＤ」、「ＯＲ」及び「ＮＯＴ」といったＣＮＦが表す演算をひとつずつ実行し、最終的にすべての解を表すＢＤＤを算出していた［例えば、非特許文献１参照］。図３にＢＤＤによるＣＮＦ演算例を示す。しかし、演算を一つずつ実行するため時間がかかり、またそれに伴ってメモリ使用量も大きくなるという課題があった。
【００１０】
近年ではＳＡＴ  ｓｏｌｖｅｒというツールを用いて、より高速に、解を「ひとつだけ」求めるアプローチも普及している［例えば、非特許文献２参照。］。たとえば、不正な状態に到達するパケットヘッダのビットパターンを知ることができる。しかし、不正な状態に到達するのが特定のアドレスだけなのか（１．２．３．４のみなのか）、いくつかのアドレス範囲なのか（１．２．３．０／２４および１．２．５．０／２４なのか）によって、システムの修正方法は大きく異なる。このため、ネットワークにおいてはＢＤＤのようにすべての解を求められることが望ましい。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Ｒ．  Ｂｒｙａｎｔ，  “Ｇｒａｐｈ−ｂａｓｅｄ  ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  ｂｏｏｌｅａｎ  ｆｕｎｃｔｉｏｎ  ｍａｎｉｐｕｌａｔｉｏｎ”，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒｓ，  ｖｏｌ．  Ｃ−３５，  ｎｏ．  ８，  ｐｐ．  ６７７  −  ６９１，  １９８６．
【非特許文献２】Ａ．  Ｂｉｅｒｅ，  Ａ．  Ｃｉｍａｔｔｉ，  Ｅ．  Ｃｌａｒｋｅ，  ａｎｄ  Ｙ．  Ｚｈｕ，  Ｓｙｍｂｏｌｉｃ  ｍｏｄｅｌ  ｃｈｅｃｋｉｎｇ  ｗｉｔｈｏｕｔ  ＢＤＤｓ．  Ｓｐｒｉｎｇｅｒ，  １９９９．
【発明の概要】
【発明が解決しようとする課題】
【００１２】
前記課題を解決するために、本開示は、状態遷移評価を行うに際し、計算時間とメモリ使用量を削減することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本開示は、ＣＮＦの充足状態を管理しながら、ＢＤＤをトップダウンに構築する。また、従属変数を明示的にＢＤＤ節点とせずに、充足状態評価のみに用いる。
【００１４】
具体的には、本開示に係る状態遷移評価装置は、
状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数を節点とし、当該変数が論理式に含まれている前記節について当該変数を割り当てるか否かを充足状態とする二分決定図を構築する二分決定図構築部を備え、
各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う。
【００１５】
本開示に係る状態遷移評価装置では、前記二分決定図構築部は、前記充足状態が一致する２以上の前記節点を１つにまとめてもよい。
【００１６】
本開示に係る状態遷移評価装置では、
前記論理式に用いられている変数と当該変数を論理式に含む節との組を前記変数ごとに抽出し、前記節をｈｙｐｅｒ−ｖｅｒｔｅｘとし、前記論理式に含まれる変数をｈｙｐｅｒ−ｅｄｇｅとすることによって前記状態遷移情報をハイパーグラフに変換するハイパーグラフ生成部をさらに備え、
前記ハイパーグラフ生成部は、前記論理式に含まれる第１の変数が他の第２の変数に従属している場合、抽出した前記第１の変数の節の節番号を前記第２の変数の節の節番号に含めて前記第１の変数を省略し、
前記二分決定図構築部は、前記ハイパーグラフ生成部によって抽出された前記変数と前記節との組を用いて前記二分決定図を構築してもよい。
【００１７】
具体的には、本開示に係る状態遷移評価方法は、
状態遷移評価装置が、状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数を節点とし、当該変数が論理式に含まれている前記節について当該変数を割り当てるか否かを充足状態とする二分決定図を構築する二分決定図構築手順を備え、
各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う。
【００１８】
具体的には、本開示に係る状態遷移評価プログラムは、本開示に係る状態遷移評価装置に備わる各機能部をコンピュータに実現させるためのプログラムであり、本開示に係る状態遷移評価方法に備わる各手順をコンピュータに実行させるためのプログラムである。
【００１９】
なお、上記各開示は、可能な限り組み合わせることができる。
【発明の効果】
【００２０】
本開示によれば、状態遷移評価を行うに際し、状態遷移を表すＣＮＦが与えられたとき、演算を繰り返すことなくＢＤＤを構築するため、計算時間とメモリ使用量を削減することができる。
【図面の簡単な説明】
【００２１】
【図１】状態遷移からＣＮＦへの変換例を示す。
【図２】ＣＮＦの一例を示す。
【図３】ＢＤＤによるＣＮＦの演算例を示す。
【図４】ＣＮＦにおける節番号、節及び変数番号の一例を示す。
【図５】図４に示すＣＮＦのハイパーグラフ表現例を示す。
【図６】実施形態に係る状態遷移評価装置の構成例を示す。
【図７】実施形態に係る状態遷移評価方法の一例を示すフローチャートである。
【図８】ＢＤＤ構築過程の一例を示す。
【図９】従属変数を含むＣＮＦにおける節番号、節及び変数番号の一例を示す。
【図１０】従属変数を含むＣＮＦのハイパーグラフ表現例を示す。
【図１１】従属変数を省略したＢＤＤ構築過程の一例を示す。
【図１２】従属変数を含むＢＤＤ構築過程の一例を示す。
【発明を実施するための形態】
【００２２】
以下、本開示の実施形態について、図面を参照しながら詳細に説明する。なお、本開示は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本開示は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００２３】
（１）ＢＤＤ構築法
本実施形態では、最終的なＢＤＤをいきなり構築する。従来のＢＤＤ演算法のように演算を一つずつ行うことなくＢＤＤを構築する。これにより、本実施形態に係る状態遷移評価装置は、計算時間やメモリ使用量に優れる。また、ＳＡＴｓｏｌｖｅｒ法と異なり、すべての解を得られる。
【００２４】
実施形態の一例として、ＣＮＦがｈｙｐｅｒ−ｇｒａｐｈ（以下、ハイパーグラフと表記する。）である場合について説明する。以下において、ＣＮＦにおける節をｈｙｐｅｒ−ｖｅｒｔｅｘ、ＣＮＦにおける変数をｈｙｐｅｒ−ｅｄｇｅとする。たとえば、次のＣＮＦをハイパーグラフとみなす。
（数１）
（ｘ１∨ｘ２∨¬ｘ３）∧（ｘ２∨ｘ３）∧（ｘ１∨ｘ３∨ｘ４∨ｘ５）∧（ｘ４∨¬ｘ５∨ｘ６）∧（ｘ５∨¬ｘ６）    式（１）
【００２５】
このＣＮＦは、図４左に示す節番号と論理式で表される。このＣＮＦをハイパーグラフで表すと、図５のようになる。このとき、図４右のように、論理式に用いられている変数番号と変数を論理式に含む節番号との組の一覧を作っておくと、図８に示すＢＤＤとの対応関係を理解しやすい。図４右の表に引いた下線は、その変数の番号が最大になるような節を表す。たとえば、節ｃ１、ｃ２は、ｘ３より大きな番号の変数を持たない。このような節は、後ほど構築時に利用する。なお、ハイパーグラフでは、変数が否定されているかどうか（¬が付いているかどうか）は気にしないでよい。
【００２６】
ここで、ハイパーグラフについて説明する。通常のグラフにおける辺とは、２つの頂点の組合せである。ハイパーグラフでは、２つ以上の任意の数の頂点を組合せ、辺として扱う（一般化グラフとも呼ばれる）。このような辺をハイパーエッジと呼ぶ。ハイパーエッジを図で示すときは、任意の数の組合せを表現するために、図５に示すように、直線ではなく「点を囲む領域」として表している。
【００２７】
図６に、本実施形態に係る状態遷移評価装置の構成図を示す。本実施形態に係る状態遷移評価装置は、情報処理部及び記憶部を備える。情報処理部は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、ＣＮＦ情報入力部１１、ハイパーグラフ生成部１３及びＢＤＤ構築部１５として機能する。記憶部は、例えばメモリであり、ＣＮＦ情報のデータベース１２、ハイパーグラフのデータベース１４、ＢＤＤのデータベース１６として機能する。
【００２８】
本実施形態に係る状態遷移評価方法は、ハイパーグラフ生成手順と、二分決定図構築手順と、を順に有する。
【００２９】
ＣＮＦ情報入力部１１は、状態遷移と不正状態の情報をＣＮＦ情報のＤＢ１２に保存する。ＣＮＦ情報は、例えば、図４に示すハイパーグラフにおける節番号及び論理式である。
ハイパーグラフ生成手順では、ハイパーグラフ生成部１３が、ＣＮＦ情報を用いて図５に示すハイパーグラフを生成し、ハイパーグラフのＤＢ１４に保存する。
二分決定図構築手順では、ＢＤＤ構築部１５が、図７のフローチャートに従って、ハイパーグラフから図８に示すＢＤＤを構築し、ＢＤＤのＤＢ１６に保存する。
【００３０】
以下で、ＢＤＤの構築方法を説明する。各ＢＤＤ節点の充足状態をみながら、ＢＤＤをトップダウンに構築していく。図８に構築過程と完成したＢＤＤを示す。構築開始時は最上位の根節点のみであり、図４に示したｘ１〜ｘ６の各変数の値を割り当てながら残りの節点を上から順に作成していく。
【００３１】
各ＢＤＤ節点では、それまで変数割り当てにおけるＢＤＤ節点の充足状態を括弧表記で示す。ただし、この括弧表記は次のような意味を持つ。ＢＤＤの各節点にはふたつの角括弧が付与され、左側の括弧には未充足の節を並べ、右側の＊付きの括弧には充足済みの節を並べる。
【００３２】
初期化を行う（Ｓ１０１）。このとき、根節点Ｖ１を作成し、根節点集合に追加する。最上位の根節点Ｖ１では、いずれの変数も未決定であるため、すべての節は未充足であり、すべての節が＊のない左括弧に置かれている。根節点Ｖ１の変数ｘ１の値をｘ１＝１のように割り当てると、根節点Ｖ１から実線矢印を辿って右側の節点Ｖ２を作成する。ここで、実線矢印は変数に１を割り当てるため１枝と呼び、点線矢印は０を割り当てるため０枝と呼ぶ。ｘ１＝１のように値を決めると、図４右の表より、節ｃ１及び節ｃ３が充足される。この場合、節点Ｖ２２に示すように、節ｃ１及び節ｃ３を右括弧に移動する。一方、ｘ１＝０とした場合は、いずれの節も充足されないため、節点Ｖ２１のように充足状態は変わらない。
【００３３】
同様にして、各変数ｘｉ（Ｓ１０２）、節点集合の各節点（Ｓ１０３）に対し、０枝の充足状態を評価し（Ｓ１１１〜Ｓ１１６）、１枝の充足状態を評価する（Ｓ１２１〜Ｓ１２６）。
【００３４】
例えば、節点Ｖ２１及びＶ２２の変数ｘ２に値を割り当てる。変数ｘ２の節はｃ１及びｃ２であるため、変数がｘ３の４つの節点Ｖ３１，Ｖ３２，Ｖ３３，Ｖ３４を作成する。例えば、節点Ｖ２１においてｘ２＝１の場合、節ｃ１及びｃ２が右括弧に移動する。これによって、それぞれ、図８に示したように別々の充足状態を持つ。
【００３５】
次に、変数ｘ３に値を割り当て、０枝および１枝を作っていく。変数ｘ３の節点Ｖ３１〜Ｖ３４では、図４右の表に示したように、下線を引かれた節ｃ１、ｃ２の充足性を決定する。つまり、変数ｘ３に値を割り当てた時点で節ｃ１及びｃ２が充足されていなければ、ＣＮＦは充足されないことに決まってしまう。
【００３６】
まず、もっとも左のｘ３節点Ｖ３１から０枝と１枝を生成する過程を説明する。節点Ｖ３１では、いずれの節も充足されていない。ｘ３＝１を割り当てると、節ｃ１は充足されるが節ｃ２は充足されないまま残ってしまう。このため、節点Ｖ３１からの０枝を┴終端節点に接続する。なお、図８ではスペースの都合で┴終端節点への枝を省略している。ｘ３＝０を割り当てると、節ｃ２は充足されるが節ｃ１は充足されないため、１枝も┴終端節点に接続する。つまり、節点Ｖ３１から先に解はないということである。
【００３７】
残りのｘ３節点Ｖ３２〜Ｖ３４についても同様に処理を進めると、５本の枝が┴終端節点に接続されることなく、新たな節点を生成する。ここで、ｘ３節点Ｖ３３は、０枝が節ｃ２を充足できないため、┴終端節点に接続される。このうち４本の枝は、ｘ４節点Ｖ４２に接続され、［ｃ４，ｃ５］［ｃ１，ｃ２，ｃ３］＊という同じ充足状態になる。このように充足状態が一致するときは、ＣＮＦの充足性について区別する必要がないため、ひとつのＢＤＤ節点Ｖ４２としてまとめて処理してよい。
【００３８】
最後に、ｘ５節点Ｖ５２から出る１枝について説明する。節点Ｖ５２の充足状態は［ｃ５］［ｃ１，ｃ２，ｃ３，ｃ４］＊である。ここで、ｘ５＝１を割り当てると節ｃ５が充足され、変数ｘ６を待たずしてＣＮＦ全体が充足できる。このようにＣＮＦ全体が充足に決まったときは、残りの変数をスキップして┬終端節点に接続してよい。以上の処理を、図７のフローチャートにまとめる。
【００３９】
ＢＤＤでは、根節点Ｖ１から┬終端節点へのパスが、それぞれ別の解を表す。たとえば、一番右側のパスを辿ると、（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）＝（１，１，１，０，１，１）という解を得る。左側のパスを辿ると、（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）＝（０，１，０，１，０，０）という解を得る。このようにしてＢＤＤを構築することで、ＣＮＦを充足するすべての解を求められる。
【００４０】
（２）ＢＤＤ縮小法
ＣＮＦによっては、ＢＤＤが大きくなりすぎて構築できないことがある。ただし、「従属変数」がある場合、他の変数の値からそれらの値を決められるため、ＢＤＤから省略してしまってもよい。なお、「変数が従属している」とは、たとえばｘ１とｘ２の値が与えられるとｘ３の値を一意に決められるような状況を指す。この従属性を利用して、ＢＤＤを縮小する方法を述べる。なお、変数間の従属関係は既知とする。
【００４１】
たとえば、次の論理式で表される図９に示すＣＮＦを考える。
（数２）
¬ｘ１∧（¬ｘ２∨¬ｘ３）∧（ｘ２∨ｘ３）∧（¬ｘ４∨¬ｘ５）∧（ｘ４∨ｘ５）∧（ｘ１∨ｘ２∨ｘ４）    式（２）
【００４２】
このＣＮＦは、図９左に示す節番号と論理式で表される。このＣＮＦをハイパーグラフで表すと、図１０のようになる。このＣＮＦにおいて、ｘ２の値はｘ３によって一意に決まる。ｘ３＝０のときはｘ２＝１でなければならない。逆に、ｘ３＝１であれば必ずｘ２＝０になる。同様に、ｘ４の値もｘ５によって一意に決まる。
【００４３】
このＣＮＦは、図１０に示すような、節番号ｃ１〜ｃ６を有するハイパーグラフで表される。従属変数であるｘ２とｘ４は、それぞれｘ３とｘ５とともに処理することにする。このため、図９右に示すように、ｘ３の節番号にｘ２と関係するｃ６も含め、抽出した変数番号の一覧からｘ２を省略している。ｘ５とｃ６も同様に、抽出した変数番号の一覧からｘ４を省略する。
【００４４】
ＢＤＤ構築過程を図１１に示す。ｘ３の値を決めたとき、従属変数であるｘ２の値も同時に決まる。このため、充足状態を決定するとき、ｘ３だけでなく、ともに決まったｘ２の値も考慮できる。そこで、節点からｘ２を省略する。同様に、ｘ５の値を決めたとき、同時に決定されたｘ４の値も用いて充足状態を定めることで、節点からｘ４を省略する。図７に示すフローチャートであれば、０枝又は１枝の充足状態を決定するステップＳ１１１又はＳ１２１において、従属変数の値も含めて充足状態を決定する。
【００４５】
図１２に、すべての変数を用いて構築した場合のＢＤＤを示す。図１２のＢＤＤが８つの節点を持つのに対し（終端節点を除く）、変数の従属関係を利用して縮小した図１１のＢＤＤは４つの節点しか持たない。
【００４６】
ＢＤＤを辿って解を得るときは、得られたｘ３、ｘ５の値に従ってｘ２、ｘ４の値を決めればよい。
【００４７】
（実施形態によって生じる効果）
状態遷移を表すＣＮＦが与えられたとき、演算を繰り返すことなくＢＤＤを構築することで、計算時間とメモリ使用量を削減することができる。また、従属変数を含まずにＢＤＤを構築することでＢＤＤを縮小し、計算時間とメモリ使用量をさらに削減することができる。なお、本開示の装置は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【産業上の利用可能性】
【００４８】
本開示は情報通信産業に適用することができる。
【符号の説明】
【００４９】
１１：ＣＮＦ情報入力部
１２：ＣＮＦ情報のデータベース
１３：ハイパーグラフ生成部
１４：ハイパーグラフのデータベース
１５：ＢＤＤ構築部
１６：ＢＤＤのデータベース
【図１】
0006602259.tif 000002
【図２】
0006602259.tif 000003
【図３】
0006602259.tif 000004
【図４】
0006602259.tif 000005
【図５】
0006602259.tif 000006
【図６】
0006602259.tif 000007
【図７】
0006602259.tif 000008
【図８】
0006602259.tif 000009
【図９】
0006602259.tif 000010
【図１０】
0006602259.tif 000011
【図１１】
0006602259.tif 000012
【図１２】
0006602259.tif 000013