特開2017-208001(P2017-208001A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人電気通信大学の特許一覧

特開2017-208001状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム
<>
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000003
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000004
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000005
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000006
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000007
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000008
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000009
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000010
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000011
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000012
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000013
  • 特開2017208001-状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2017-208001(P2017-208001A)
(43)【公開日】2017年11月24日
(54)【発明の名称】状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラム
(51)【国際特許分類】
   G06F 11/22 20060101AFI20171027BHJP
【FI】
   G06F11/22 675C
   G06F11/22 647
【審査請求】未請求
【請求項の数】5
【出願形態】OL
【全頁数】12
(21)【出願番号】特願2016-101190(P2016-101190)
(22)【出願日】2016年5月20日
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504133110
【氏名又は名称】国立大学法人電気通信大学
(74)【代理人】
【識別番号】100119677
【弁理士】
【氏名又は名称】岡田 賢治
(74)【代理人】
【識別番号】100115794
【弁理士】
【氏名又は名称】今下 勝博
(72)【発明者】
【氏名】井上 武
(72)【発明者】
【氏名】戸田 貴久
【テーマコード(参考)】
5B048
【Fターム(参考)】
5B048FF02
(57)【要約】
【課題】本開示は、状態遷移評価を行うに際し、計算時間とメモリ使用量を削減することを目的とする。
【解決手段】本開示は、状態遷移が節ごとの論理式で表された連言標準形(CNF)の状態遷移情報を取得すると、論理式に用いられている変数を節点とし、当該変数が論理式に含まれている節について当該変数を割り当てるか否かを充足状態とする二分決定図(BDD:Binary Decision Diagram)を構築する二分決定図構築部(15)を備え、各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う状態遷移評価装置である。
【選択図】図8
【特許請求の範囲】
【請求項1】
状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数を節点とし、当該変数が論理式に含まれている前記節について当該変数を割り当てるか否かを充足状態とする二分決定図を構築する二分決定図構築部を備え、
各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う状態遷移評価装置。
【請求項2】
前記二分決定図構築部は、前記充足状態が一致する2以上の前記節点を1つにまとめる、
請求項1に記載の状態遷移評価装置。
【請求項3】
前記論理式に用いられている変数と当該変数を論理式に含む節との組を前記変数ごとに抽出し、前記節をhyper−vertexとし、前記論理式に含まれる変数をhyper−edgeとすることによって前記状態遷移情報をハイパーグラフに変換するハイパーグラフ生成部をさらに備え、
前記ハイパーグラフ生成部は、前記論理式に含まれる第1の変数が他の第2の変数に従属している場合、抽出した前記第1の変数の節の節番号を前記第2の変数の節の節番号に含めて前記第1の変数を省略し、
前記二分決定図構築部は、前記ハイパーグラフ生成部によって抽出された前記変数と前記節との組を用いて前記二分決定図を構築する、
請求項1又は2に記載の状態遷移評価装置。
【請求項4】
状態遷移評価装置が、状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数を節点とし、当該変数が論理式に含まれている前記節について当該変数を割り当てるか否かを充足状態とする二分決定図を構築する二分決定図構築手順を備え、
各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う状態遷移評価方法。
【請求項5】
コンピュータに、請求項1から3のいずれかに記載の各機能部を実現させるための状態遷移評価プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、状態遷移評価装置、状態遷移評価方法及び状態遷移評価プログラムに関する。
【背景技術】
【0002】
多くのICT(Information and Communication Technology)システムは状態遷移機械として表現できる。本開示は、状態遷移の検証技術を想定し、特にコアエンジンとなる論理式の求解方法について述べる。
【0003】
ここでの「検証」とは、状態遷移と不正な状態が与えられたとき、様々な初期状態から不正な状態に到達してしまうかどうかを調べることである。ICTシステムにおける「状態」とは、装置が管理しているトラフィック情報やパケットヘッダのビットパターン(アドレスなど)のことであり、システムはこれらの「状態」に従ってアクションを決定し、次の状態へと遷移する(たとえばパケットを転送すると、隣接スイッチの受信状態が更新される)。何万、何億という状態の組合せが存在するとき、それらの遷移先を人手で網羅的に調べることは不可能であり、一般にコンピュータによって検査を行う。
【0004】
すぐ後に簡単な例を示すように、状態遷移と不正状態は「連言標準形(CNF)」と呼ばれる形式の論理式に変換できる。まず、CNFについて簡単に説明する。CNFは、「論理変数(0/1の2値のみをとる変数)」からなる論理式である。いくつかの論理変数のOR“∨”からなる「節(clause)」を、AND“∧”でつなぐ。たとえば、x1、x2、x3という3つの論理変数があったとき、CNFの例としては、(x1∨x2)∧(¬x1∨3)や¬x2∧(¬x1∨x2)∧(x2∨¬x3)などがある。前者は2つの節、後者は3つの節を持つ。
【0005】
状態遷移と不正状態を表すCNFが同時に成立するのであれば、つまりCNFがそのような解を持つのであれば、不正な状態に到達可能な初期状態が存在するということになる。このようにして、検証技術を用いることで、実際にシステムを動作させる前に不具合を発見できる。すると、状態遷移を修正するなどして事前に不具合を取り除き、システムの信頼性を高められる。
【0006】
図1に状態遷移を表すプログラムコードからCNFへの変換例を示す。この図は2回のループまでの状態遷移を表しており、変数の下添え字はループ回数を表す。コード中のassert文は、「満たさなければならない条件」を表す。2回までのいずれのループでも変数aの値が0でなければならない。このassertの否定が「不正状態」に相当する。つまり、いずれかのループで、aの値が1になってしまうかどうかを検査すればよい。そのようなCNFを真にしてしまう変数割り当てが存在すれば、それは不正な状態への遷移仮定を表す。この例であれば、(a0,a1,a2,b0,b1)=(0,0,1,1,0)などの割り当てによってCNFが真になり、不正な状態への遷移が存在するとわかる。
【0007】
本稿では、状態遷移や不正状態を表すCNFがすでに与えられていると仮定し、CNFの解を算出する。たとえば、(x∨x)∧(¬x∨x)というCNFが与えられたとき、これを満たす解(x,x,x)=(0,1,★),(1,★,1)を求める。ただし、★は0でも1でもよいことを表す。参考までに、図2に,変数割り当てとCNFの値を挙げておく。┬はCNFが真であり、┴はCNFが偽であることを意味する。
【0008】
CNFは人工知能分野の研究者によって非常によく研究されており、いくつかの効率的な求解方法が知られている。例えば、二分決定図(Binary Decision Diagram)演算法、及び、SAT solver (SATisability solver)法が例示できる。
【0009】
以前は、BDDというデータ構造を用いて、「AND」、「OR」及び「NOT」といったCNFが表す演算をひとつずつ実行し、最終的にすべての解を表すBDDを算出していた[例えば、非特許文献1参照]。図3にBDDによるCNF演算例を示す。しかし、演算を一つずつ実行するため時間がかかり、またそれに伴ってメモリ使用量も大きくなるという課題があった。
【0010】
近年ではSAT solverというツールを用いて、より高速に、解を「ひとつだけ」求めるアプローチも普及している[例えば、非特許文献2参照。]。たとえば、不正な状態に到達するパケットヘッダのビットパターンを知ることができる。しかし、不正な状態に到達するのが特定のアドレスだけなのか(1.2.3.4のみなのか)、いくつかのアドレス範囲なのか(1.2.3.0/24および1.2.5.0/24なのか)によって、システムの修正方法は大きく異なる。このため、ネットワークにおいてはBDDのようにすべての解を求められることが望ましい。
【先行技術文献】
【非特許文献】
【0011】
【非特許文献1】R. Bryant, “Graph−based algorithms for boolean function manipulation”,IEEE Transactions on Computers, vol. C−35, no. 8, pp. 677 − 691, 1986.
【非特許文献2】A. Biere, A. Cimatti, E. Clarke, and Y. Zhu, Symbolic model checking without BDDs. Springer, 1999.
【発明の概要】
【発明が解決しようとする課題】
【0012】
前記課題を解決するために、本開示は、状態遷移評価を行うに際し、計算時間とメモリ使用量を削減することを目的とする。
【課題を解決するための手段】
【0013】
上記目的を達成するために、本開示は、CNFの充足状態を管理しながら、BDDをトップダウンに構築する。また、従属変数を明示的にBDD節点とせずに、充足状態評価のみに用いる。
【0014】
具体的には、本開示に係る状態遷移評価装置は、
状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数を節点とし、当該変数が論理式に含まれている前記節について当該変数を割り当てるか否かを充足状態とする二分決定図を構築する二分決定図構築部を備え、
各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う。
【0015】
本開示に係る状態遷移評価装置では、前記二分決定図構築部は、前記充足状態が一致する2以上の前記節点を1つにまとめてもよい。
【0016】
本開示に係る状態遷移評価装置では、
前記論理式に用いられている変数と当該変数を論理式に含む節との組を前記変数ごとに抽出し、前記節をhyper−vertexとし、前記論理式に含まれる変数をhyper−edgeとすることによって前記状態遷移情報をハイパーグラフに変換するハイパーグラフ生成部をさらに備え、
前記ハイパーグラフ生成部は、前記論理式に含まれる第1の変数が他の第2の変数に従属している場合、抽出した前記第1の変数の節の節番号を前記第2の変数の節の節番号に含めて前記第1の変数を省略し、
前記二分決定図構築部は、前記ハイパーグラフ生成部によって抽出された前記変数と前記節との組を用いて前記二分決定図を構築してもよい。
【0017】
具体的には、本開示に係る状態遷移評価方法は、
状態遷移評価装置が、状態遷移が節ごとの論理式で表された状態遷移情報を取得すると、前記論理式に用いられている変数を節点とし、当該変数が論理式に含まれている前記節について当該変数を割り当てるか否かを充足状態とする二分決定図を構築する二分決定図構築手順を備え、
各節点における充足状態を評価することによって前記論理式の状態遷移の評価を行う。
【0018】
具体的には、本開示に係る状態遷移評価プログラムは、本開示に係る状態遷移評価装置に備わる各機能部をコンピュータに実現させるためのプログラムであり、本開示に係る状態遷移評価方法に備わる各手順をコンピュータに実行させるためのプログラムである。
【0019】
なお、上記各開示は、可能な限り組み合わせることができる。
【発明の効果】
【0020】
本開示によれば、状態遷移評価を行うに際し、状態遷移を表すCNFが与えられたとき、演算を繰り返すことなくBDDを構築するため、計算時間とメモリ使用量を削減することができる。
【図面の簡単な説明】
【0021】
図1】状態遷移からCNFへの変換例を示す。
図2】CNFの一例を示す。
図3】BDDによるCNFの演算例を示す。
図4】CNFにおける節番号、節及び変数番号の一例を示す。
図5図4に示すCNFのハイパーグラフ表現例を示す。
図6】実施形態に係る状態遷移評価装置の構成例を示す。
図7】実施形態に係る状態遷移評価方法の一例を示すフローチャートである。
図8】BDD構築過程の一例を示す。
図9】従属変数を含むCNFにおける節番号、節及び変数番号の一例を示す。
図10】従属変数を含むCNFのハイパーグラフ表現例を示す。
図11】従属変数を省略したBDD構築過程の一例を示す。
図12】従属変数を含むBDD構築過程の一例を示す。
【発明を実施するための形態】
【0022】
以下、本開示の実施形態について、図面を参照しながら詳細に説明する。なお、本開示は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本開示は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0023】
(1)BDD構築法
本実施形態では、最終的なBDDをいきなり構築する。従来のBDD演算法のように演算を一つずつ行うことなくBDDを構築する。これにより、本実施形態に係る状態遷移評価装置は、計算時間やメモリ使用量に優れる。また、SATsolver法と異なり、すべての解を得られる。
【0024】
実施形態の一例として、CNFがhyper−graph(以下、ハイパーグラフと表記する。)である場合について説明する。以下において、CNFにおける節をhyper−vertex、CNFにおける変数をhyper−edgeとする。たとえば、次のCNFをハイパーグラフとみなす。
(数1)
(x1∨x2∨¬x3)∧(x2∨x3)∧(x1∨x3∨x4∨x5)∧(x4∨¬x5∨x6)∧(x5∨¬x6) 式(1)
【0025】
このCNFは、図4左に示す節番号と論理式で表される。このCNFをハイパーグラフで表すと、図5のようになる。このとき、図4右のように、論理式に用いられている変数番号と変数を論理式に含む節番号との組の一覧を作っておくと、図8に示すBDDとの対応関係を理解しやすい。図4右の表に引いた下線は、その変数の番号が最大になるような節を表す。たとえば、節c1、c2は、x3より大きな番号の変数を持たない。このような節は、後ほど構築時に利用する。なお、ハイパーグラフでは、変数が否定されているかどうか(¬が付いているかどうか)は気にしないでよい。
【0026】
ここで、ハイパーグラフについて説明する。通常のグラフにおける辺とは、2つの頂点の組合せである。ハイパーグラフでは、2つ以上の任意の数の頂点を組合せ、辺として扱う(一般化グラフとも呼ばれる)。このような辺をハイパーエッジと呼ぶ。ハイパーエッジを図で示すときは、任意の数の組合せを表現するために、図5に示すように、直線ではなく「点を囲む領域」として表している。
【0027】
図6に、本実施形態に係る状態遷移評価装置の構成図を示す。本実施形態に係る状態遷移評価装置は、情報処理部及び記憶部を備える。情報処理部は、例えばCPU(Central Processing Unit)であり、CNF情報入力部11、ハイパーグラフ生成部13及びBDD構築部15として機能する。記憶部は、例えばメモリであり、CNF情報のデータベース12、ハイパーグラフのデータベース14、BDDのデータベース16として機能する。
【0028】
本実施形態に係る状態遷移評価方法は、ハイパーグラフ生成手順と、二分決定図構築手順と、を順に有する。
【0029】
CNF情報入力部11は、状態遷移と不正状態の情報をCNF情報のDB12に保存する。CNF情報は、例えば、図4に示すハイパーグラフにおける節番号及び論理式である。
ハイパーグラフ生成手順では、ハイパーグラフ生成部13が、CNF情報を用いて図5に示すハイパーグラフを生成し、ハイパーグラフのDB14に保存する。
二分決定図構築手順では、BDD構築部15が、図7のフローチャートに従って、ハイパーグラフから図8に示すBDDを構築し、BDDのDB16に保存する。
【0030】
以下で、BDDの構築方法を説明する。各BDD節点の充足状態をみながら、BDDをトップダウンに構築していく。図8に構築過程と完成したBDDを示す。構築開始時は最上位の根節点のみであり、図4に示したx1〜x6の各変数の値を割り当てながら残りの節点を上から順に作成していく。
【0031】
各BDD節点では、それまで変数割り当てにおけるBDD節点の充足状態を括弧表記で示す。ただし、この括弧表記は次のような意味を持つ。BDDの各節点にはふたつの角括弧が付与され、左側の括弧には未充足の節を並べ、右側の*付きの括弧には充足済みの節を並べる。
【0032】
初期化を行う(S101)。このとき、根節点V1を作成し、根節点集合に追加する。最上位の根節点V1では、いずれの変数も未決定であるため、すべての節は未充足であり、すべての節が*のない左括弧に置かれている。根節点V1の変数x1の値をx1=1のように割り当てると、根節点V1から実線矢印を辿って右側の節点V2を作成する。ここで、実線矢印は変数に1を割り当てるため1枝と呼び、点線矢印は0を割り当てるため0枝と呼ぶ。x1=1のように値を決めると、図4右の表より、節c1及び節c3が充足される。この場合、節点V22に示すように、節c1及び節c3を右括弧に移動する。一方、x1=0とした場合は、いずれの節も充足されないため、節点V21のように充足状態は変わらない。
【0033】
同様にして、各変数xi(S102)、節点集合の各節点(S103)に対し、0枝の充足状態を評価し(S111〜S116)、1枝の充足状態を評価する(S121〜S126)。
【0034】
例えば、節点V21及びV22の変数x2に値を割り当てる。変数x2の節はc1及びc2であるため、変数がx3の4つの節点V31,V32,V33,V34を作成する。例えば、節点V21においてx2=1の場合、節c1及びc2が右括弧に移動する。これによって、それぞれ、図8に示したように別々の充足状態を持つ。
【0035】
次に、変数x3に値を割り当て、0枝および1枝を作っていく。変数x3の節点V31〜V34では、図4右の表に示したように、下線を引かれた節c1、c2の充足性を決定する。つまり、変数x3に値を割り当てた時点で節c1及びc2が充足されていなければ、CNFは充足されないことに決まってしまう。
【0036】
まず、もっとも左のx3節点V31から0枝と1枝を生成する過程を説明する。節点V31では、いずれの節も充足されていない。x3=1を割り当てると、節c1は充足されるが節c2は充足されないまま残ってしまう。このため、節点V31からの0枝を┴終端節点に接続する。なお、図8ではスペースの都合で┴終端節点への枝を省略している。x3=0を割り当てると、節c2は充足されるが節c1は充足されないため、1枝も┴終端節点に接続する。つまり、節点V31から先に解はないということである。
【0037】
残りのx3節点V32〜V34についても同様に処理を進めると、5本の枝が┴終端節点に接続されることなく、新たな節点を生成する。ここで、x3節点V33は、0枝が節c2を充足できないため、┴終端節点に接続される。このうち4本の枝は、x4節点V42に接続され、[c4,c5][c1,c2,c3]という同じ充足状態になる。このように充足状態が一致するときは、CNFの充足性について区別する必要がないため、ひとつのBDD節点V42としてまとめて処理してよい。
【0038】
最後に、x5節点V52から出る1枝について説明する。節点V52の充足状態は[c5][c1,c2,c3,c4]である。ここで、x5=1を割り当てると節c5が充足され、変数x6を待たずしてCNF全体が充足できる。このようにCNF全体が充足に決まったときは、残りの変数をスキップして┬終端節点に接続してよい。以上の処理を、図7のフローチャートにまとめる。
【0039】
BDDでは、根節点V1から┬終端節点へのパスが、それぞれ別の解を表す。たとえば、一番右側のパスを辿ると、(x1,x2,x3,x4,x5,x6)=(1,1,1,0,1,1)という解を得る。左側のパスを辿ると、(x1,x2,x3,x4,x5,x6)=(0,1,0,1,0,0)という解を得る。このようにしてBDDを構築することで、CNFを充足するすべての解を求められる。
【0040】
(2)BDD縮小法
CNFによっては、BDDが大きくなりすぎて構築できないことがある。ただし、「従属変数」がある場合、他の変数の値からそれらの値を決められるため、BDDから省略してしまってもよい。なお、「変数が従属している」とは、たとえばx1とx2の値が与えられるとx3の値を一意に決められるような状況を指す。この従属性を利用して、BDDを縮小する方法を述べる。なお、変数間の従属関係は既知とする。
【0041】
たとえば、次の論理式で表される図9に示すCNFを考える。
(数2)
¬x1∧(¬x2∨¬x3)∧(x2∨x3)∧(¬x4∨¬x5)∧(x4∨x5)∧(x1∨x2∨x4) 式(2)
【0042】
このCNFは、図9左に示す節番号と論理式で表される。このCNFをハイパーグラフで表すと、図10のようになる。このCNFにおいて、x2の値はx3によって一意に決まる。x3=0のときはx2=1でなければならない。逆に、x3=1であれば必ずx2=0になる。同様に、x4の値もx5によって一意に決まる。
【0043】
このCNFは、図10に示すような、節番号c1〜c6を有するハイパーグラフで表される。従属変数であるx2とx4は、それぞれx3とx5とともに処理することにする。このため、図9右に示すように、x3の節番号にx2と関係するc6も含め、抽出した変数番号の一覧からx2を省略している。x5とc6も同様に、抽出した変数番号の一覧からx4を省略する。
【0044】
BDD構築過程を図11に示す。x3の値を決めたとき、従属変数であるx2の値も同時に決まる。このため、充足状態を決定するとき、x3だけでなく、ともに決まったx2の値も考慮できる。そこで、節点からx2を省略する。同様に、x5の値を決めたとき、同時に決定されたx4の値も用いて充足状態を定めることで、節点からx4を省略する。図7に示すフローチャートであれば、0枝又は1枝の充足状態を決定するステップS111又はS121において、従属変数の値も含めて充足状態を決定する。
【0045】
図12に、すべての変数を用いて構築した場合のBDDを示す。図12のBDDが8つの節点を持つのに対し(終端節点を除く)、変数の従属関係を利用して縮小した図11のBDDは4つの節点しか持たない。
【0046】
BDDを辿って解を得るときは、得られたx3、x5の値に従ってx2、x4の値を決めればよい。
【0047】
(実施形態によって生じる効果)
状態遷移を表すCNFが与えられたとき、演算を繰り返すことなくBDDを構築することで、計算時間とメモリ使用量を削減することができる。また、従属変数を含まずにBDDを構築することでBDDを縮小し、計算時間とメモリ使用量をさらに削減することができる。なお、本開示の装置は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【産業上の利用可能性】
【0048】
本開示は情報通信産業に適用することができる。
【符号の説明】
【0049】
11:CNF情報入力部
12:CNF情報のデータベース
13:ハイパーグラフ生成部
14:ハイパーグラフのデータベース
15:BDD構築部
16:BDDのデータベース
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12