決定節点nを参照する要素節点の各々のペアi,jのそれぞれについて、終端ZSDDの要素又は決定ZSDDである場合に、参照関係にある節点に対応する値を与え、終端ZSDDの定数である場合に、所定の値を与えるようにペアi,jを初期化し、要素節点の各々について、vtreeにおける子孫から親まで順番に、所定の条件において、ペアのiが節点vの左の子節点、ペアのjが節点vの右の子節点に相当する場合に、決定節点nを省略するように、ZSDDを簡約化したCZSDD(Chain−reducedZSDD)を生成する。
台集合Eに含まれる各要素に対応する節点を葉節点として表現した完全二分木であるvtreeと、前記台集合Eの集合族を表す有向非巡回グラフであって、前記vtreeの前記葉節点ではない節点vに対応する決定節点と、前記台集合Eを部分集合X、Yへ分割したときの、前記台集合Eに含まれる要素若しくは定数である記号を表す終端ZSDD又は前記決定節点への矢印を表す決定ZSDDであるプライム及びサブのペアを表す要素節点とを含むZSDD(Zero−suppressed Sentential Decision Diagram)とを受け付け、
前記vtreeの前記節点vに対応する前記ZSDDの前記決定節点をnとし、前記プライムと前記サブとの値のペアをペアi,jとした場合に、決定節点nを参照する前記要素節点の各々のペアi,jのそれぞれについて、前記終端ZSDDの前記要素又は前記決定ZSDDである場合に、参照関係にある前記節点vに対応する値を与え、前記終端ZSDDの前記定数である場合に、所定の値を与えるように前記ペアi,jを初期化し、
前記決定節点nを参照する前記要素節点の各々について、前記vtreeにおける子孫から親まで順番に、所定の条件において、前記ペアのiが前記節点vの左の子節点、前記ペアのjが前記節点vの右の子節点に相当する場合に、前記決定節点nを省略するように、前記ZSDDを簡約化したCZSDD(Chain−reducedZSDD)を生成する簡約化部、
を含む集合族簡約化装置。
前記簡約化部は、前記所定の条件は、前記決定節点nが、前記ZSDDに含まれうる、集合族を項分岐によって表現した項分岐型グラフへの引数と、前記要素を含みうる集合とにより表される場合とする請求項1に記載の集合族簡約化装置。
台集合Eに含まれる各要素に対応する節点を葉節点として表現した完全二分木であるvtreeと、前記台集合Eの集合族を表す有向非巡回グラフであって、前記vtreeの前記葉節点ではない節点vに対応する決定節点と、前記台集合Eを部分集合X、Yへ分割したときの、前記台集合Eに含まれる要素若しくは定数である記号を表す終端ZSDD又は前記決定節点への矢印を表す決定ZSDDであるプライム及びサブのペアを表す要素節点とを含むZSDD(Zero−suppressed Sentential Decision Diagram)とを受け付け、
前記vtreeの前記節点vに対応する前記ZSDDの前記決定節点をnとし、前記プライムと前記サブとの値のペアをペアi,jとした場合に、決定節点nを参照する前記要素節点の各々のペアi,jのそれぞれについて、前記終端ZSDDの前記要素又は前記決定ZSDDである場合に、参照関係にある前記節点vに対応する値を与え、前記終端ZSDDの前記定数である場合に、所定の値を与えるように前記ペアi,jを初期化し、
前記決定節点nを参照する前記要素節点の各々について、前記vtreeにおける子孫から親まで順番に、所定の条件において、前記ペアのiが前記節点vの左の子節点、前記ペアのjが前記節点vの右の子節点に相当する場合に、前記決定節点nを省略するように、前記ZSDDを簡約化したCZSDD(Chain−reducedZSDD)を生成する、
ことを含む処理をコンピュータが実行することを特徴とする集合族簡約化方法。
前記所定の条件は、前記決定節点nが、前記ZSDDに含まれうる、集合族を項分岐によって表現した項分岐型グラフへの引数と、前記要素を含みうる集合とにより表される場合とする請求項4に記載の集合族簡約化方法。
台集合Eに含まれる各要素に対応する節点を葉節点として表現した完全二分木であるvtreeと、前記台集合Eの集合族を表す有向非巡回グラフであって、前記vtreeの前記葉節点ではない節点vに対応する決定節点と、前記台集合Eを部分集合X、Yへ分割したときの、前記台集合Eに含まれる要素若しくは定数である記号を表す終端ZSDD又は前記決定節点への矢印を表す決定ZSDDであるプライム及びサブのペアを表す要素節点とを含むZSDD(Zero−suppressed Sentential Decision Diagram)とを受け付け、
前記vtreeの前記節点vに対応する前記ZSDDの前記決定節点をnとし、前記プライムと前記サブとの値のペアをペアi,jとした場合に、決定節点nを参照する前記要素節点の各々のペアi,jのそれぞれについて、前記終端ZSDDの前記要素又は前記決定ZSDDである場合に、参照関係にある前記節点vに対応する値を与え、前記終端ZSDDの前記定数である場合に、所定の値を与えるように前記ペアi,jを初期化し、
前記決定節点nを参照する前記要素節点の各々について、前記vtreeにおける子孫から親まで順番に、所定の条件において、前記ペアのiが前記節点vの左の子節点、前記ペアのjが前記節点vの右の子節点に相当する場合に、前記決定節点nを省略するように、前記ZSDDを簡約化したCZSDD(Chain−reducedZSDD)を生成する、
ことをコンピュータに実行させる集合族簡約化プログラム。
【発明を実施するための形態】
【0011】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
<本開示の実施形態に係る概要>
【0012】
まず、本開示の実施形態における概要を説明する。
【0013】
本開示の実施形態では、ZSDDをさらに簡約化するための簡約化規則を導入する。新しい規則は特殊な形状の部分グラフが出現したときに、その部分グラフを単一の節点に置き換えることによってZSDDの大きさを削減する。新しい規則を適用して得られたZSDDをChain−reducedZSDD(CZSDD)とよぶ。CZSDDはZSDDよりも常に小さく、かつSDDと比べても定数倍にしか大きくならないという特徴をもつため、常に小さな表現を得る事が可能となる。
【0015】
次に、本開示の実施形態における原理を説明する。
【0016】
まず、集合族を定義する。集合族とは、ある台集合Z={A,B,C,...,}について、その部分集合S⊆Zを要素とするような集合のことである。例えばZ={A,B,C,D}とすると、{{A,B},{B},{B,C},{C,D}}はZを台集合とする集合族である。以下の記号は空集合を表す。
【0018】
記号2
ZはZのべき集合、すなわちZの可能な全ての部分集合から構成される集合族を表すとする。また、|Z|で集合の要素数を表す。
【0019】
集合族に対する演算をいくつか定義する。f,gを集合族とすると、f∩g={C|C∈fかつC∈g},f∪g={C|C∈fまたはC∈g},
,
として、以下の二項演算を定義する。
【0021】
次にZSDDについて説明する。ZSDDは集合族を再帰的な(X,Y)−分割によって分割し、その分割の様子をDAGとして表現したものになる。集合X,Yが台集合Zの分割、すなわち以下を満たすとする。
【0022】
すると、Zを台集合とする集合族f(Z)の(X,Y)分割は、以下(1)式で表される。
【0024】
ここでp
i(X)はXを台集合とする集合族、s
i(Y)はYを台集合とする集合族とする。(X,Y)−分割においては、全てのi,j:1<i<j≦nに対して
であり、かつ
を満たすとする。
【0025】
台集合をZ={A,B,C,D},X={A,B},Y={C,D}としたときの、集合族{{A,B},{B},{B,C},{C,D}}の(X,Y)−分割は以下(2)式となる。
【0027】
なお、以下では(X,Y)−分割を{(p
1,S
1),...,(p
n,s
n)}とも表す。またp
iをプライム(prime)、s
iをサブ(sub)とよぶ。(X,Y)−分割は集合族に対して再帰的に行うことができる。すなわち、例えば、上述の(X,Y)−分割におけるp
1={{A,B}}は、さらに(B,A)−分割によって以下のように分割することができる。
【0029】
続いてvtreeを導入する。vtreeは台集合に含まれる各アイテムに対応する節点を葉とするような完全二分木のことである。
図1は4つのアイテムA,B,C,Dに対するvtreeの例である。vtreeの中間節点(葉でない節点)vは、その部分木の葉節点からなる変数の集合の分割を表現している。すなわち、vを根とする部分木の葉節点に対応するアイテムの集合を、vの左側の子節点を根とする部分木(v
lとする)の葉節点に対応するアイテム集合と、vの右側の子節点を根とする部分木(v
rとする)の葉節点に対応するアイテム集合とに分割する。
図1のvtreeの根節点v
3(
図1中では単に3と記載されている。以下、同様である)は、A,BとC,Dへの分割に対応し、根の左側の子節点v
1はBとAへの分割に対応する。vtreeの節点のうち、左側の子節点が葉節点であるような節点を決定vtree節点とよぶ。決定vtree節点ではない節点を分割vtree節点とよぶ。
【0030】
ZSDDはあるvtreeが与えられたときに、そのvtreeにもとづいて集合族を再帰的に分割することによって、DAGとして表現したものである。αをZSDD、αが表す集合族を<α>とすると、以下のようにZSDDは再帰的に定義される。なお、ここでいうαは、後述する簡約化処理のαとは別の対象を指す。
【0032】
ここで
を定数ZSDDとよび、X、±XをリテラルZSDDとよぶ。{±X}はXを含みうる集合であり、X又は空集合である。定数ZSDDとリテラルZSDDとをあわせて終端ZSDDとよぶ。一方、ある(X,Y)-分割に対応するZSDDは分解ZSDDとよぶ。
図2に集合族{{A,B},{B},{B,C},{C,D}}を表すZSDDを示す。
図2中の丸節点は、その節点を根とするDAGが表現する分解ZSDDを表しており、丸節点を決定節点とよぶ。決定節点中の数字は対応するvtreeの節点を表している。決定節点を親節点とする四角い節点の対は要素節点とよばれ、(X,Y)分割{(p
1,s
1),...,(p
n,s
n)}における、あるプライムとサブのペア(p
i,s
i)を表している。
【0033】
対のうち左側の四角がプライムを、右側の四角がサブを表している。プライム、サブはそれぞれ別の終端ZSDDもしくは決定ZSDDであり、終端ZSDDの場合は四角中に対応する終端ZSDDの記号を表記して表し、決定ZSDDの場合は別の決定節点への矢印として表現している。ある決定節点と、その子節点である要素節点群とである(X,Y)分割を表現している。すなわち、各要素節点があるプライムとサブのペア(p,s)に対応している。なお、ZSDDではサブが
となるようなペアは省略する。
【0034】
ZSDD中に対応するような決定節点が存在するとする。
【0036】
その場合、前者はαに、後者は
にそれぞれ置き換える。
【0037】
図2のZSDDの計算機上での表現方法を
図3に示す。ZSDDは計算機上では、各中間vtree節点に対応する決定ZSDD節点の配列の集合として表現される。
図3では中間vtree節点1、3、5のそれぞれについて、要素数1の配列が格納されている様子が表されている。配列の各要素は1つの決定ZSDD節点を、[(p
1,s
1),...,(p
n,s
n)]としてその子節点である要素の集まりによって表している。p
i,s
iは終端ZSDDを表す場合はその終端ZSDDに対応する記号
として、そうでない場合にはp
i,s
iが対応する決定ZSDD節点の計算機中でのアドレスを保持する。
図3中ではアドレスはvtree節点IDと、そのvtree節点IDに対応する配列中での対象の決定ZSDDのインデックスのペアとして表現される。
【0038】
以下、本実施形態の構成について説明する。
【0039】
図4は、本実施形態の集合族簡約化装置の構成を示すブロック図である。
【0040】
図4に示すように、集合族簡約化装置100は、入力部110と、簡約化部120と、出力部130とを含んで構成されている。
【0041】
図5は、集合族簡約化装置100のハードウェア構成を示すブロック図である。
【0042】
図5に示すように、集合族簡約化装置100は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、ストレージ14、入力部15、表示部16及び通信インタフェース(I/F)17を有する。各構成は、バス19を介して相互に通信可能に接続されている。
【0043】
CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU11は、ROM12又はストレージ14からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12又はストレージ14に記憶されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。本実施形態では、ROM12又はストレージ14には、集合族簡約化プログラムが格納されている。
【0044】
ROM12は、各種プログラム及び各種データを格納する。RAM13は、作業領域として一時的にプログラム又はデータを記憶する。ストレージ14は、HDD(Hard Disk Drive)又はSSD(Solid State Drive)により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
【0045】
入力部15は、マウス等のポインティングデバイス、及びキーボードを含み、各種の入力を行うために使用される。
【0046】
表示部16は、例えば、液晶ディスプレイであり、各種の情報を表示する。表示部16は、タッチパネル方式を採用して、入力部15として機能してもよい。
【0047】
通信インタフェース17は、端末等の他の機器と通信するためのインタフェースであり、例えば、イーサネット(登録商標)、FDDI、Wi−Fi(登録商標)等の規格が用いられる。
【0048】
次に、集合族簡約化装置100の各機能構成について説明する。各機能構成は、CPU11がROM12又はストレージ14に記憶された集合族簡約化プログラムを読み出し、RAM13に展開して実行することにより実現される。
【0049】
入力部110は、入力として、vtreeと、ZSDDとを受け付ける。vtreeは、上述したように、台集合Eに含まれる各要素に対応する節点を葉節点として表現した完全二分木である。ZSDDは、上述したように、台集合Eの集合族を表す有向非巡回グラフである。また、vtreeの葉節点ではない節点vに対応する決定節点と、要素節点とを含む。要素節点は、台集合Eを部分集合X、Yへ分割したときの、台集合Eに含まれる要素若しくは定数である記号を表す終端ZSDD又は決定節点への矢印を表す決定ZSDDであるプライム及びサブのペアを表す。
【0050】
簡約化部120は、初期化処理と、簡約化処理とを行って、CZSDD(Chain−reducedZSDD)を生成する。ここで、vtreeの節点vに対応するZSDDの決定節点をnとし、プライムとサブとの値のペアをペアi,jとする。決定節点n毎にZSDDが構成される。初期化処理は、決定節点nを参照する要素節点の各々のペアi,jのそれぞれについて、終端ZSDDの要素又は決定ZSDDである場合に、参照関係にある節点vに対応する値を与え、終端ZSDDの定数である場合に、所定の値を与える。簡約化処理は、決定節点nを参照する要素節点の各々について、vtreeにおける子孫から親まで順番に処理し、ZSDDを簡約化したCZSDDを生成する。ZSDDを簡約化したCZSDDを生成は、所定の条件において、当該決定節点nを参照する要素節点のペアのiが節点vの左の子節点、ペアのjが節点vの右の子節点に相当する場合に、決定節点nを省略するようにして行う。所定の条件は後述する。
【0051】
出力部130は、簡約化部120が生成したCZSDDを外部に出力する。
【0052】
簡約化部120の具体的なアルゴリズムを説明する。
【0053】
アルゴリズムの入力について、ZSDDをZ、vtreeをVと表す。出力について、Zを簡約化して得られるCZSDDをCと表す。アルゴリズムでは、以下の<1>の初期化処理で、要素節点のプライムとサブとのペアi,j、すなわち葉節点であるすべての辺について、参照関係にあるvtreeの節点vを付与する。<2>の簡約化処理で、要素節点の各々について、子孫節点から親節点まで順番に2種類の節点に関する簡約化規則を適用し、CZSDDを生成する。
【0054】
<1>では、Zの決定節点n(分割節点とも呼ぶ)から当該分割節点nの子の要素節点であるプライム及びサブのペアi,jそれぞれの辺に対して、プライム及びサブのそれぞれが参照しているvtreeの節点vに対応する値を付与する。もしプライム又はサブが定数ZSDDである場合は特殊な値を付与する。
【0055】
<2>では、<1>の初期化処理によってペアi,jそれぞれに値が付与されたZSDDの要素節点に対して、以下<2−1>、<2−2>の簡約化規則を、vtreeの子孫から親まで順番に実行する。なお、α,βは、集合族を項分岐によって表現した項分岐型グラフ(SDD)への引数である。つまり、α,βは、別のSDDを参照するためのポインタを表す。
【0056】
<2−1>:vtreeの節点vに対応する決定節点nが{(±X,β)}かつ、±X,βを指す子の要素節点にあたるプライムとサブとのペアi,jのそれぞれの値が、iが節点vの左の子節点、jが節点vの右の子節点に相当する場合に簡約化する。この場合、決定節点nを削除し、決定節点nを指すすべての節点の指す先をβに変更することで簡約化を行う。
【0057】
<2−2>:vtreeの節点vに対応する決定節点nが
であり、かつ、α,±Xを指す子の要素節点にあたるプライムとサブとのペアi,jのそれぞれの値が、iが節点vの左の子節点、jが節点vの右の子節点に相当するならば、決定節点nを削除し、決定節点nを指すすべての節点の指す先をαに変更する。
【0058】
以上のように、簡約化部120における所定の条件は、決定節点nが、引数α又は引数βと、要素を含みうる集合{±X}とにより表される場合となる。<2−1>の条件は、決定節点nが{±X,β}の場合となる。<2−2>の条件は、決定節点nが{α,±X}を含む場合となる。
【0059】
次に、集合族簡約化装置100の作用について説明する。
【0060】
図6は、集合族簡約化装置100による集合族簡約化処理の流れを示すフローチャートである。CPU11がROM12又はストレージ14から集合族簡約化プログラムを読み出して、RAM13に展開して実行することにより、集合族簡約化処理が行なわれる。集合族簡約化装置100の入力部110は、入力として、vtreeと、ZSDDとを受け付けて以下の処理を行う。また、vtreeの節点vに対応するZSDDの決定節点をnとし、プライムとサブとの値のペアをペアi,jとする。
【0061】
ステップS100において、CPU11は、簡約化部120として、決定節点nを参照する要素節点の各々のペアi,jのそれぞれについて、ペアi,jを初期化する。ペアi,jの初期化は、ペアi,jのそれぞれについて、終端ZSDDの要素又は決定ZSDDである場合に、参照関係にある節点vに対応する値を与え、終端ZSDDの定数である場合に、所定の値を与える。本ステップは上記アルゴリズム<1>に相当する。
【0062】
ステップS102において、CPU11は、簡約化部120として、決定節点nを参照する要素節点の各々について、vtreeにおける子孫から親まで順番に処理し、ZSDDを簡約化したCZSDDを生成する。ZSDDを簡約化したCZSDDを生成は、所定の条件において、ペアのiが節点vの左の子節点、ペアのjが節点vの右の子節点に相当する場合に、決定節点nを省略するようにして行う。本ステップは上記アルゴリズム<2>に相当する。
【0063】
ステップS104において、CPU11は、出力部130として、生成したCZSDDを外部に出力し、処理を終了する。
【0064】
以上説明したように本実施形態の集合族簡約化装置100によれば、集合族に関する各種演算を高速に行うためのグラフを効率的に構築することができる。
【0065】
本実施形態を適用することで、集合族を計算機のメモリを利用する量を抑えながら簡潔にグラフとして表現することができる。また、CZSDDを用いればZSDDよりも計算機の使用メモリ量を抑えるだけでなく、集合族を表現するグラフの大きさに比例する処理時間で数え上げ、最適化、及び集合族のメンバシップ判定等の演算の高速化を実現できる。
【0066】
なお、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した集合族簡約化を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field−Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、集合族簡約化を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0067】
また、上記各実施形態では、集合族簡約化プログラムがストレージ14に予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD−ROM(Compact Disk Read Only Memory)、DVD−ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non−transitory)記憶媒体に記憶された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0068】
以上の実施形態に関し、更に以下の付記を開示する。
【0069】
(付記項1)
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
台集合Eに含まれる各要素に対応する節点を葉節点として表現した完全二分木であるvtreeと、前記台集合Eの集合族を表す有向非巡回グラフであって、前記vtreeの前記葉節点ではない節点vに対応する決定節点と、前記台集合Eを部分集合X、Yへ分割したときの、前記台集合Eに含まれる要素若しくは定数である記号を表す終端ZSDD又は前記決定節点への矢印を表す決定ZSDDであるプライム及びサブのペアを表す要素節点とを含むZSDD(Zero−suppressed Sentential Decision Diagram)とを受け付け、
前記vtreeの前記節点vに対応する前記ZSDDの前記決定節点をnとし、前記プライムと前記サブとの値のペアをペアi,jとした場合に、決定節点nを参照する前記要素節点の各々のペアi,jのそれぞれについて、前記終端ZSDDの前記要素又は前記決定ZSDDである場合に、参照関係にある前記節点vに対応する値を与え、前記終端ZSDDの前記定数である場合に、所定の値を与えるように前記ペアi,jを初期化し、
前記決定節点nを参照する前記要素節点の各々について、前記vtreeにおける子孫から親まで順番に、所定の条件において、前記ペアのiが前記節点vの左の子節点、前記ペアのjが前記節点vの右の子節点に相当する場合に、前記決定節点nを省略するように、前記ZSDDを簡約化したCZSDD(Chain−reducedZSDD)を生成する、
ように構成されている集合族簡約化装置。
【0070】
(付記項2)
台集合Eに含まれる各要素に対応する節点を葉節点として表現した完全二分木であるvtreeと、前記台集合Eの集合族を表す有向非巡回グラフであって、前記vtreeの前記葉節点ではない節点vに対応する決定節点と、前記台集合Eを部分集合X、Yへ分割したときの、前記台集合Eに含まれる要素若しくは定数である記号を表す終端ZSDD又は前記決定節点への矢印を表す決定ZSDDであるプライム及びサブのペアを表す要素節点とを含むZSDD(Zero−suppressed Sentential Decision Diagram)とを受け付け、
前記vtreeの前記節点vに対応する前記ZSDDの前記決定節点をnとし、前記プライムと前記サブとの値のペアをペアi,jとした場合に、決定節点nを参照する前記要素節点の各々のペアi,jのそれぞれについて、前記終端ZSDDの前記要素又は前記決定ZSDDである場合に、参照関係にある前記節点vに対応する値を与え、前記終端ZSDDの前記定数である場合に、所定の値を与えるように前記ペアi,jを初期化し、
前記決定節点nを参照する前記要素節点の各々について、前記vtreeにおける子孫から親まで順番に、所定の条件において、前記ペアのiが前記節点vの左の子節点、前記ペアのjが前記節点vの右の子節点に相当する場合に、前記決定節点nを省略するように、前記ZSDDを簡約化したCZSDD(Chain−reducedZSDD)を生成する、
ンピュータに実行させる集合族簡約化プログラムを記憶した非一時的記憶媒体。