JP2017111622A - 演算実行装置、方法、及びプログラム - Google Patents

演算実行装置、方法、及びプログラム Download PDF

Info

Publication number
JP2017111622A
JP2017111622A JP2015245478A JP2015245478A JP2017111622A JP 2017111622 A JP2017111622 A JP 2017111622A JP 2015245478 A JP2015245478 A JP 2015245478A JP 2015245478 A JP2015245478 A JP 2015245478A JP 2017111622 A JP2017111622 A JP 2017111622A
Authority
JP
Japan
Prior art keywords
zsdd
node
argument
vtree
arithmetic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015245478A
Other languages
English (en)
Other versions
JP6451997B2 (ja
Inventor
正彬 西野
Masaaki Nishino
正彬 西野
真一 湊
Shinichi Minato
真一 湊
宜仁 安田
Yoshihito Yasuda
宜仁 安田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hokkaido University NUC
Nippon Telegraph and Telephone Corp
Original Assignee
Hokkaido University NUC
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hokkaido University NUC, Nippon Telegraph and Telephone Corp filed Critical Hokkaido University NUC
Priority to JP2015245478A priority Critical patent/JP6451997B2/ja
Publication of JP2017111622A publication Critical patent/JP2017111622A/ja
Application granted granted Critical
Publication of JP6451997B2 publication Critical patent/JP6451997B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

【課題】集合族間の各種演算を高速に行う。【解決手段】演算処理部24により、入力された演算命令と、ノードとエッジとからなる完全二分木であって、集合Zに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、前記演算命令の結果である、前記vtreeから求まる前記集合Zの部分集合の各々からなる集合である集合族f(Z)を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記集合Zを分割した部分集合X、Yに分けて、前記部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、前記集合族f(Z)を表現したときの、前記結合演算を表す要素ノードとを含む、空集合との結合演算で表わされる要素ノードが省略されて表されるZSDDを演算する。【選択図】図4

Description

本発明は、集合族をグラフとして計算機上に表現し、さらに表現した集合族間の演算を計算機上で実行するための演算実行装置、方法、及びプログラムに関するものである。
計算機上で集合族を表現するための従来技術として、Zero-suppressed Binary Decision Diagram(以後、ZDDとする)がある(非特許文献1)。ZDDは、集合族を有向非巡回グラフ(Directed Acyclic Graph:以後DAGとする)として表現し、グラフのノード数にほぼ比例する計算時間で、集合族間の演算処理を実行することが可能である。
また、ZDDのほかにも、同様に集合族をDAGとして表現できる技術として、Binary Decision Diagram(以後、BDDとする)、及びSentential Decision Diagram(以後、SDDとする)がある(非特許文献2、非特許文献3)。
ここで、ZDDとBDDとを比べると、ZDDのほうが集合族をよりノード数の少ないグラフとして表現できる傾向がある。また、SDDとBDDとを比べると、SDDはBDDを一般化した技術であり、SDDの方がよりノード数の少ないグラフとして集合族を表現できる。
Minato, S. 1993. Zero-suppressed BDDs fro set manipulation in combinatorial problems, In proceedings of the 30th ACM/IEEE Design Automation Conference,pp. 272-277. Bryant, R. E. 1986. Graph-based algorithms for boolean function manipulation. IEEE trans. on computers, C-35 (8): pp 677-691. Darwiche, A. 2011. SDD: A new canonical representation of propositional knowledge bases, In proceedings of the 22nd international joint conference on Artificial Intelligence.
しかし、上述したZDDは、グラフのノード数にほぼ比例する計算時間で、集合族間の演算処理を実行することから、ノード数が多い場合には、演算処理に時間がかかるという問題がある。
本発明では、上記問題点を解決するために成されたものであり、集合族間の各種演算を高速に行うことができる演算実行装置、方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、第1の発明に係る演算実行装置は、入力された演算命令と、ノードとエッジとからなる完全二分木であって、集合Zに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、前記演算命令の結果である、前記vtreeから求まる前記集合Zの部分集合の各々からなる集合である集合族f(Z)を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記集合Zを分割した部分集合X、Yに分けて、前記部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、前記集合族f(Z)を表現したときの、前記結合演算を表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を演算する演算処理部を含んで構成され、前記ZSDDは、空集合との結合演算で表わされる要素ノードが省略されて表される。
第2の発明に係る演算実行方法は、演算処理部を含む、演算実行装置における演算実行方法であって、前記演算処理部は、入力された演算命令と、ノードとエッジとからなる完全二分木であって、集合Zに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、前記演算命令の結果である、前記vtreeから求まる前記集合Zの部分集合の各々からなる集合である集合族f(Z)を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記集合Zを分割した部分集合X、Yに分けて、前記部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、前記集合族f(Z)を表現したときの、前記結合演算を表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を演算し、前記ZSDDは、空集合との結合演算で表わされる要素ノードが省略されて表される。
第1及び第2の発明によれば、演算処理部により、入力された演算命令と、ノードとエッジとからなる完全二分木であって、集合Zに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、演算命令の結果である、vtreeから求まる集合Zの部分集合の各々からなる集合である集合族f(Z)を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、集合Zを分割した部分集合X、Yに分けて、部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、集合族f(Z)を表現したときの、結合演算を表す要素ノードとを含む、空集合との結合演算で表わされる要素ノードが省略されて表されるZSDDを演算する。
このように、入力された演算命令と、vtreeとに基づいて、演算命令の結果である、集合族f(Z)を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、集合Zを分割した部分集合X、Yに分けて、部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、集合族f(Z)を表現したときの、結合演算を表す要素ノードとを含む、空集合との結合演算で表わされる要素ノードが省略されて表されるZSDDを演算することにより、集合族間の各種演算を高速に行うことができる。
また、第1の発明において、前記演算処理部は、前記演算命令と、前記vtreeと、前記演算命令の引数となる前記ZSDD、及び変数の少なくとも一方とに基づいて、前記演算命令の結果であるZSDDを演算してもよい。
また、第1の発明において、前記演算処理部は、前記入力された演算命令が、定数でない前記ZSDDが引数αとなり、前記vtreeのノードを引数vとする演算命令Expandある場合に、前記引数αであるZSDDに対応する前記vtreeのノードをノードuとし、前記ノードuと、前記引数vであるノードとの関係に応じて、前記引数αである前記ZSDD、
であるZSDD、及び
であるZSDDの何れか一つを返してもよい。
また、第1の発明において、前記演算処理部は、前記入力された演算命令が、前記要素ノードの集合が引数γとなる演算命令UniqueDである場合に、前記引数γとなる前記要素ノードの集合に要素ノードが含まれなければ、定数ZSDDである⊥を返し、前記引数γとなる前記要素ノードの集合が、
、又は
であれば、ZSDDであるαを返し、前記引数γとなる前記要素ノードの集合が、
及び
の何れでもなければ、前記引数γとなる前記要素ノードの集合に対応する前記決定ノードを作成して、決定ノードテーブルに格納してもよい。
また、第1の発明において、前記演算処理部は、前記入力された演算命令が、ZSDDが引数αとなる演算命令Compressである場合に、前記引数αとなるZSDDに含まれる要素のノードの集合{(p1,s1),・・・,(p,s)}のうち、s=sとなる要素ノードのペア(pi,si),(pj,sj)を、piが表す集合族とpjが表す集合族との和であるUnion(pi,pj)を用いた(Union(pi,pj),s)に置き換えた、前記引数αとなるZSDDを返してもよい。
また、本発明のプログラムは、コンピュータを、上記の演算実行装置を構成する各部として機能させるためのプログラムである。
以上説明したように、本発明の演算実行装置、方法、及びプログラムによれば、入力された演算命令と、vtreeとに基づいて、演算命令の結果である、集合族f(Z)を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、集合Zを分割した部分集合X、Yに分けて、部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、集合族f(Z)を表現したときの、結合演算を表す要素ノードとを含む、空集合との結合演算で表わされる要素ノードが省略されて表されるZSDDを演算することにより、集合族間の各種演算を高速に行うことができる。
vtreeの一例を示す図である。 ZSDDを再帰的に定義する例を示す図である。 ZSDDの一例を示す図である。 本実施形態に係る演算実行装置の機能的構成を示すブロック図である。 本実施形態に係る演算実行装置において用いる演算の例を示す図である。 決定ノードテーブルの一例を示す図である。 メモの一例を示す図である。 Intersection(α,β)のアルゴリズムの一例を示す図である。 Expand(α,v)のアルゴリズムの一例を示す図である。 Compress(α)のアルゴリズムの一例を示す図である。 UniqueD(γ)のアルゴリズムの一例を示す図である。 Union (α,β)のアルゴリズムの一例を示す図である。 Difference (α,β)のアルゴリズムの一例を示す図である。 Change(α,x)のアルゴリズムの一例を示す図である。 本実施形態に係る演算実行装置における演算実行処理ルーチンの一例を示すフローチャートである。
以下、図面を参照して本発明の実施形態を詳細に説明する。
<本実施形態の概要>
まず、本実施形態の概要について説明する。
上述のZDD、BDD、及びSDDは、ともに集合族をノード数の少ないDAGとして表現するための技術であるが、ZDD、BDD、及びSDDの手法は、より少ないノード数からなるDAGとして表現可能であるほど、ZDD、BDD、及びSDDを用いた各種問い合わせに対して高速な処理が可能であるという特徴がある。したがって、演算が実行であるという性質を満たしつつ、よりノード数が少ないグラフとして表現できる技術の価値が高いといえる。
本実施形態においては、新たなDAGに基づく集合族の表現方法、Zero-suppressed Sentential Decision Diagram(以後、ZSDDとする)を用いる。ZSDDはSDDの変種であり、SDDで用いられていた、BDDと類似のグラフの簡約化のための規則を、ZDDと類似の簡約化規則で置き換えることで得られる。
ZSDDはZDDと同様に集合族間の演算を実行可能である。また、ZSDDはZDDの一般化であり、かつZDDよりも少ない節点数で集合族を表現することが可能である。さらに、ZSDDはSDDよりも少ないノード数で集合族を表現することが可能である。そのため、ZSDDのポイントは、従来技術の方法より少ないノードからなるDAGを得るために利用する簡約化規則にある。
ここで、ZSDDは、ある部分ZSDDが空集合のみを要素として持つ組合せ集合
を表現しているときに、ノードを削除するような簡約化規則を用いることによって、ZSDDはSDDよりも少ないノード数からなるDAGとして集合族を表現することができる。
次に、後述する演算実行装置の説明において用いる文言の定義について説明する。
まず、本実施形態における集合族とは、ある集合Z={A,B,C,...,}について、その部分集合S⊆Zからなる集合のことである。例えば、Z={A,B,C,D}に対して、
は集合族である。ここで、記号
は空集合を表すとし、記号2はZの可能なすべての部分集合からなる集合族を表すとする。また、|Z|は、集合の要素数を表す。
次に、集合族に対する演算を定義する。ここで、f、及びgを集合族とすると、f∩g={S|S∈fかつS∈g}、f∪g={S|S∈fまたはS∈g}、
として、演算
を定義する。
更に、集合族は論理関数f(x,x,...,x|Z|)により表現することができる。x,x,...,x|Z|は0もしくは1の値をとる二値変数であり、fは|Z|個の二値変数を入力として受け取り、0若しくは1の値と出力する関数である。
ある集合族は、集合族に含まれる各部分集合に対応する入力が与えられたときにのみ1を返す論理関数として表現できる。例えば、上記の集合族であれば、4引数の関数f(x,x,x,x)として表現でき、例えば、{A,B}に対応する入力として(x,x,x,x)=(1,1,0,0)が与えられときに1を返す。そのほかにも、{B}{B,C},{C,D},
に対応する入力、すなわち、(0,1,0,0)、(0,1,1,0)、(0,0,1,1)、及び(0,0,0,0)が与えられたときにのみ1を返し、それ以外の入力に対しては0を返す関数である。
ここで、集合族f(Z)の(X,Y)分割とは、集合Zを、別々の集合Xと集合Yとに分割したうえで、f(Z)を
として表現する方法である。ここで、p(X)は、集合Xの部分集合からなる集合族、s(Y)は、集合Yの部分集合からなる集合族とする。また、pは、すべての
について、
であり、かつ
を満たすとする。さらに、
であるとする。また、s(Y)は、
について、s≠sを満たすとする。そのため、上記のA、B,C、及びDについて、(AB,CD)分割を行うと、
となる。なお、以下、(X,Y)分割を、{(p,s),...,(p,s)}とする。
次に、vtreeを定義する。vtreeとは、集合に含まれる各アイテムに対応するノードを葉ノードとし、各ノードをエッジで結んでいるような完全二分木のことである。図1に4つのアイテムA、B、C、及びDに対するvtreeの例を示す。
vtreeの葉でないノードである各中間ノードvは、集合のある分割を表現している。すなわち、ノードvを根とする木の葉ノードに対応するアイテムの集合を、ノードvの左側の子ノードを根とする部分木(以後、vとする)の葉ノードに対応するアイテム集合と、ノードvの右側の子ノードを根とする部分木(以後、vとする)の葉ノードに対応するアイテム集合とに分割する。図1の根ノードは、(AB,CD)分割に対応している。
次に、ZSDDを定義する。ZSDDは、あるvtreeが与えられたときに、当該vtreeに基づいて再帰的に組合せ集合を(X,Y)分割によって分割することにより、DAGとして組合せ集合を表現する。分割された組合せ集合と、ZSDDの構造との対応を図2に示す。ここで、図2のαをZSDD、αが表現する集合族を<α>とすると、図2の様にZSDDは再帰的に定義される。
ここで、⊥、及びεを定数ZSDDとし、x、及び±xをリテラルZSDDとする。なお、εは、
であり、⊥は、
である。また、±xは、
のように、{x}と空集合とを要素とする集合族である。
また、定数ZSDD、及びリテラルZSDDをあわせて終端ZSDDとする。一方、ある(X,Y)分割を表現するZSDDを分割ZSDDとする。
図3に集合族
を表現するZSDDを表す。図3の丸ノードは、当該ノードを根とするDAGが表現する分割ZSDDを表現しており、丸ノードを決定ノードとする。決定ノード中の数字は、対応するvtreeノードを表している。
また、決定ノードを親に持つ四角ノードは、あるペア(p,s)を表現しており、これを要素ノードとする。要素ノードの左側がpであり、右側がsに対応しており、それぞれの終端ZSDDか、分割ZSDDに対応している。
また、決定ノードとその子ノードである要素ノード群とで、ある(X,Y)分割を表している。なお、(X,Y)分割
を表わす分割ZSDDでは、(p,⊥)に対応する要素ノードはZSDD中では明示的に持たないものとする。また、ZSDDは、{(ε,α)}、{(α,ε)}、及び{}の形の分割ZSDDをもたない。ZSDD中にこれらの形の分割ZSDDが存在していた場合、前者はαに、後者は⊥にそれぞれ置き換えるものとする。当該、決定ノードを削除する規則により、ZSDDは集合族をコンパクトに表現することができる。
<本発明の実施形態に係る演算実行装置の構成>
次に、本発明の実施形態に係る演算実行装置の構成について説明する。図4に示すように、本実施形態に係る演算実行装置100は、CPUと、RAMと、後述する演算実行処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。この演算実行装置100は、機能的には図4に示すように入力部10と、演算部20と、出力部90とを含んで構成されている。
入力部10は、対象となるvtreeを受け付ける。なお、入力部10はvtreeを他の入力よりも先に受け付けるものとする。
また、入力部10は、ZSDD間の演算命令を受け付け、更に、当該演算命令において引数が必要な場合には当該引数を受け付ける。なお、本実施形態において対象となる演算を図5に示す。
演算部20は、ZSDD記憶部22と、演算処理部24とを含んで構成されている。
ZSDD記憶部22には、入力部10において受け付けたvtreeと、例えば、図6に示すZSDDの決定ノードを記憶する決定ノードテーブルと、例えば、図7に示す演算効率化のためのメモとが記憶されている。
ここで、図6に示すZSDDの決定ノードを記憶する決定ノードテーブルは、各決定ノードについて、当該決定ノードのノードID、当該決定ノードIDに対応するvtreeのノードのノードID、及び当該決定ノードの子要素ノードの集合が記憶されている。なお、決定ノードテーブル内で、vtreeノードID、及び子要素ノードの集合が一致する決定ノードは一意であるものとする。
また、図7に示す演算効率化のためのメモは、演算命令及び当該演算命令の引数からなるタプルをキーとし、当該演算命令の結果のZSDDのノードID(図7のメモ内においては「値」の欄において示す)を保持する。
なお、分割ZSDDは、当該分割ZSDDの根ノードに対応する決定ノードのアドレスによって表現される。また、終端ZSDDは、計算機中ではε、⊥、x、±xに対応する定数として表現される。
演算処理部24は、ZSDDに記憶部22に記憶されているvtree、決定ノードテーブル、及びメモと、入力部10において受け付けた演算命令、及び引数とに基づいて、演算を行い、演算結果をZSDD記憶部22に記憶すると共に、出力部90から出力する。
以下、具体的に演算毎の処理の説明をする。
まず、演算命令がEmptyFamily()である場合には、対象となる終端ZSDDεを作成する。
また、演算命令がEmpty()である場合には、対象となる終端ZSDD⊥を作成する。
また、演算命令がLiteral(x)である場合には、入力部10において受け付けた引数xであるZSDDに基づいて、終端ZSDDxを作成する。
また、演算命令がLiteralEmpty(x)である場合には、入力部10において受け付けた引数xであるZSDDに基づいて、終端ZSDD±xを作成する。
また、演算命令がIntersection(α,β)である場合には、ZSDD記憶部22に記憶されているvtree、決定ノードテーブル、及びメモと、入力部10において受け付けた引数であるZSDDα、及びZSDDβとに基づいて、図8に示すアルゴリズムを実行し、<α>∩<β>を表すZSDDを作成する。
ここで、図8に示すアルゴリズムについて詳述する。
図8に示すアルゴリズムにおいて、まず、1行目で、入力部10において受け付けたZSDDα、及びZSDDβ共に定数又はリテラルであるか否かを判定し、両ZSDDが共に定数又はリテラルである場合には、当該Intersection(α,β)は、定数又はリテラルとなることから容易に計算することができ、アルゴリズムの2行目に示すように当該計算を行い、結果を出力する。
一方、両ZSDDの何れか一方が定数又はリテラルでない場合には、ZSDD記憶部22に記憶されている決定ノードテーブルに当該Intersection(α,β)に対応する演算結果が格納されているか否かを判定し、格納されている場合には、当該アルゴリズムの3行目、及び4行目に示すように当該演算結果を出力する。また、格納されていない場合には、実際に演算を行う。
実際の演算処理を図8のアルゴリズムの6行目から21行目までに示す。まず、6行目において、新しい分割γを{}として初期化する。次に、7行目において、入力部10において受け付けたZSDDαとZSDDβとの各々において、当該ZSDDに対応するvtreeのノードの共通の祖先のうち、最も深いノードvを取得する。ここで、ZSDDα、及びZSDDβのどちらかがεもしくは⊥である場合には、εもしくは⊥が示す定数でないZSDDが対応するvtreeのノードをノードvとする。
次に、8行目及び9行目に示すように、Expand(α,v)、及びExpand(β,v)を各々計算する。このExpandは入力されたZSDDを、ノードvに対応する(X,Y)分割によって分割した分割ZSDDに変換したものを出力するものである。なお、Expandの処理の詳細については、後述する。
次に、10行目から18行目に示すように、Expandによりよって得られた分割ZSDDに含まれる要素ノード(p,s),(q,r)の各ペアについて、再帰的にIntersectionを計算し、計算結果をγに追加する。
次に、20行目に示すように、γをCompress(γ)で置き換える。次に、21行目に示すように、UniqueD(γ)を計算し、当該計算結果を、ZSDD記憶部22に記憶されているメモに登録し、計算結果を出力して処理を終了する。なお、Compress(γ)及びUniqueD(γ)の処理の詳細については、後述する。
次に、Expandについて説明する。ここでは、Expand(α,v)について説明するが、Expand(β,v)についても同様の処理を行う。図9に示すように、Expand(α,v)は、ノードvとZSDDαとの関係から、演算のための一時的な分割ZSDDを生成する処理である。
Expand(α,v)は、図9の1行目に示すように、ZSDDαが⊥である場合には{}を返す。一方、4行目に示すように、ZSDDαがεである場合には、{(ε,ε)}を返す。また、7行目から14行目に示すように、ZSDDαが⊥及びεのどちらでもない場合には、ZSDDαに対応するvtreeノードuと、ノードvとの関係に応じて、
の何れかを出力する。
次に、Compress(α)について説明する。ここでは、Compress(α)として説明するが、Compress(γ)も同様の処理となる。図10に示すように、Compress(α)は、ZSDDαの要素ノードの集合{(p,s),...,(p,s)}を、全てのi≠jについてs≠sとなるように変換する処理である。Compress(α)の処理は、図10に示すように、s=sとなるような要素ノードのペア(p,s),(p,s)を、(Union(p,p),s)で置き換えることを繰り返すことで、s=sとなるような要素ノードのペアを全て消去し、出力する。
次に、UniqueD(γ)について説明する。UniqueD(γ)は、図11に示すように、要素ノードの集合γから、対応するZSDDを作成し、出力する処理である。図11の2行目に示すように、要素ノードの集合γ中に要素ノードが含まれない場合、終端ZSDD⊥を出力する。一方、4行目に示すように、要素ノードの集合γが{(ε,α)}または{(α,ε)}である場合には、ZSDDαを出力して処理を終了する。また、要素ノードの集合γ中に要素ノードが含まれ、かつ要素ノードの集合γが{(ε,α)}及び{(α,ε)}の何れでもない場合には、要素ノードの集合γと同等の決定ノードが、決定ノードテーブルに含まれていないかを判定し、含まれていないと判定された場合には、要素ノードの集合γに対応する決定ノードを作成してZSDD記憶部22に記憶されている決定ノードテーブルに格納する。そして、決定ノードテーブルに格納した要素ノードの集合γに対応するZSDDを出力して処理を終了する。
また、演算命令がUnion(α,β)である場合には、ZSDD記憶部22に記憶されているvtree、決定ノードテーブル、及びメモと、入力部10において受け付けた引数であるZSDDα、及びZSDDβとに基づいて、図12に示すアルゴリズムを実行し、<α>∪<β>を表すZSDDを作成する。なお、Union(α,β)は、上述したIntersection(α,β)と処理はほぼ同等となり、γの候補を作成するときの再帰的な処理の部分の処理が異なる。具体的には、図12のアルゴリズムの19行目から39行目である。
また、演算命令がDifference(α,β)である場合には、ZSDD記憶部22に記憶されているvtree、決定ノードテーブル、及びメモと、入力部10において受け付けた引数であるZSDDα、及びZSDDβとに基づいて、図13に示すアルゴリズムを実行し、<α>−<β>を表すZSDDを作成する。なお、Difference (α,β)は、上述したIntersection(α,β)と処理はほぼ同等となり、γの候補を作成するときの再帰的な処理の部分の処理が異なる。具体的には、図13のアルゴリズムの19行目から30行目である。
また、演算命令がChange(α,x)である場合には、ZSDD記憶部22に記憶されているvtree、決定ノードテーブル、及びメモと、入力部10において受け付けた引数であるZSDDα、及びアイテムxとに基づいて、図14に示すアルゴリズムを実行し、集合族<α>に出現するアイテムxを反転させたZSDDを出力する。具体的には、Change(α,x)は、ZSDDαが表す集合族に含まれる各集合S∈<α>について、x∈SならばSをs−{x}で置き換え、xがSに含まれないならば、SをS∪{x}で置き換えて得られる集合族を表現するZSDDを返す処理である。
例えば、
に対して、Change(α,C)を適用すると、{{A,B},{A,C},{C}}を表すZSDDが出力される。
図14にChange(α,x)の処理のアルゴリズムを示す。
まず、図14の2行目に示すように、ZSDDαが定数またはリテラルであるか判定し、ZSDDαが定数またはリテラルである場合には、Changeを適用した結果も定数またはリテラルになるため、計算して出力する。一方、4行目に示すように、Changeの計算結果がZSDD記憶部22に記憶されているメモに格納されている場合には、当該計算結果を出力して処理を終了する。また、6行目に示すように、Changeの計算結果がZSDD記憶部22に記憶されているメモに格納されていない場合には、要素ノードの集合γを初期化し、7行目に示すように、ノードvを決定する。
そして、8行目から16行目に示すように、Expand(α,v)の各要素について、再帰的にChangeを適用し、適用した結果をγに格納する。最後に、17行目に示すように、UniqueD(γ)によって対応するZSDDを計算し、結果をメモに格納して、結果を出力する。
<本発明の実施形態に係る演算実行装置の作用>
次に、本発明の実施形態に係る演算実行装置100の作用について説明する。演算実行装置100は、まず、入力部10において受け付けた、対象となるvtreeを受け付けると当該vtreeをZSDD記憶部22に記憶する。また、演算実行装置100は、入力部10において、EmptyFamily()、又はEmpty()の演算命令を受け付けると、対象となる終端ZSDDε又は終端ZSDD⊥を作成し、出力部90から出力する。
また、演算実行装置100は、入力部10において、Literal(x)、又はLiteralEmpty(x)の演算命令と引数xとを受け付けると、対象となる終端ZSDDx又は終端ZSDD±xを作成し、出力部90から出力する。
また、演算実行装置100は、入力部10において、Intersection(α,β)、Union(α,β)、Difference(α,β)、又はChange(α,x)の演算命令と、当該演算命令における引数とを受け付けると、演算実行装置100によって、図15に示す演算実行処理ルーチンが実行される。
まず、図15に示す演算実行処理ルーチンのステップS100では、ZSDD記憶部22に記憶されているvtree、決定ノードテーブル、及びメモを読み込む。
次に、ステップS102では、入力部10において受け付けた演算命令に応じて、ステップS100において取得したvtree、決定ノードテーブル、及びメモと、入力部10において受け付けた演算命令及び引数とに基づいて、上述に詳細を示した当該演算命令を実行し、演算結果であるZSDDを取得する。
次に、ステップS104では、ステップS102において取得したZSDDをZSDD記憶部22に記憶すると共に、出力部90から出力し、演算実行処理ルーチンを終了する。
以上説明したように、本発明の実施形態に係る演算実行装置によれば、入力された演算命令と、vtreeとに基づいて、演算命令の結果である、集合族f(Z)を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、集合Zを分割した部分集合X、Yに分けて、部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、集合族f(Z)を表現したときの、結合演算を表す要素ノードとを含む、空集合との結合演算で表わされる要素ノードが省略されて表されるZSDDを演算することにより、集合族間の各種演算を高速に行うことができる。
また、集合族をノード数が少ないDAGとして表現し、また、集合族間の各種演算を実行することができる。
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
例えば、本実施形態においては、入力した演算命令に必要な引数を入力する場合について説明したが、これに限定されるものではなく、入力されたvtreeに基づいて、図5に示す演算命令(EmptyFamily()、Empty()、Literal(x)、及びLiteralEmpty(x))を演算することにより、対象となる演算命令に必要となるZSDDの引数を作成し、ZSDD記憶部に記憶しておいてもよい。その場合、対象となる演算命令に基づいて、ZSDD記憶部に記憶されている対象となるZSDDを読み込む。なお、Literal(x)、及びLiteralEmpty(x)の演算命令を実行する場合には、必要な引数xは入力する。
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。
10 入力部
20 演算部
22 ZSDD記憶部
24 演算処理部
90 出力部
100 演算実行装置

Claims (7)

  1. 入力された演算命令と、ノードとエッジとからなる完全二分木であって、集合Zに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、前記演算命令の結果である、前記vtreeから求まる前記集合Zの部分集合の各々からなる集合である集合族f(Z)を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記集合Zを分割した部分集合X、Yに分けて、前記部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、前記集合族f(Z)を表現したときの、前記結合演算を表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を演算する演算処理部
    を含み、
    前記ZSDDは、空集合との結合演算で表わされる要素ノードが省略されて表される演算実行装置。
  2. 前記演算処理部は、前記演算命令と、前記vtreeと、前記演算命令の引数となる前記ZSDD、及び変数の少なくとも一方とに基づいて、前記演算命令の結果であるZSDDを演算する請求項1記載の演算実行装置。
  3. 前記演算処理部は、
    前記入力された演算命令が、定数でない前記ZSDDが引数αとなり、前記vtreeのノードを引数vとする演算命令Expandある場合に、前記引数αであるZSDDに対応する前記vtreeのノードをノードuとし、
    前記ノードuと、前記引数vであるノードとの関係に応じて、前記引数αである前記ZSDD、

    であるZSDD、及び

    であるZSDDの何れか一つを返す請求項1又は2記載の演算実行装置。
  4. 前記演算処理部は、
    前記入力された演算命令が、前記要素ノードの集合が引数γとなる演算命令UniqueDである場合に、前記引数γとなる前記要素ノードの集合に要素ノードが含まれなければ、定数ZSDDである⊥を返し、
    前記引数γとなる前記要素ノードの集合が、

    、又は

    であれば、ZSDDであるαを返し、
    前記引数γとなる前記要素ノードの集合が、

    及び

    の何れでもなければ、前記引数γとなる前記要素ノードの集合に対応する前記決定ノードを作成して、決定ノードテーブルに格納する請求項3記載の演算実行装置。
  5. 前記演算処理部は、前記入力された演算命令が、ZSDDが引数αとなる演算命令Compressである場合に、前記引数αとなるZSDDに含まれる要素のノードの集合{(p1,s1),・・・,(p,s)}のうち、s=sとなる要素ノードのペア(pi,si),(pj,sj)を、piが表す集合族とpjが表す集合族との和であるUnion(pi,pj)を用いた(Union(pi,pj),s)に置き換えた、前記引数αとなるZSDDを返す請求項4記載の演算実行装置。
  6. 演算処理部を含む、演算実行装置における演算実行方法であって、
    前記演算処理部は、入力された演算命令と、ノードとエッジとからなる完全二分木であって、集合Zに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、前記演算命令の結果である、前記vtreeから求まる前記集合Zの部分集合の各々からなる集合である集合族f(Z)を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記集合Zを分割した部分集合X、Yに分けて、前記部分集合Xの部分集合からなる集合族と部分集合Yの部分集合からなる集合族との結合演算を用いて、前記集合族f(Z)を表現したときの、前記結合演算を表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を演算し、

    前記ZSDDは、空集合との結合演算で表わされる要素ノードが省略されて表される演算実行方法。
  7. コンピュータを、請求項1から請求項5の何れか1項記載の演算実行装置の各部として機能させるためのプログラム。
JP2015245478A 2015-12-16 2015-12-16 演算実行装置、方法、及びプログラム Active JP6451997B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015245478A JP6451997B2 (ja) 2015-12-16 2015-12-16 演算実行装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015245478A JP6451997B2 (ja) 2015-12-16 2015-12-16 演算実行装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017111622A true JP2017111622A (ja) 2017-06-22
JP6451997B2 JP6451997B2 (ja) 2019-01-16

Family

ID=59079725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015245478A Active JP6451997B2 (ja) 2015-12-16 2015-12-16 演算実行装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6451997B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041161A (ja) * 2016-09-05 2018-03-15 日本電信電話株式会社 Zsdd構築装置、方法、及びプログラム
JP2020204938A (ja) * 2019-06-18 2020-12-24 日本電信電話株式会社 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
JP7377493B2 (ja) 2020-04-20 2023-11-10 日本電信電話株式会社 Zsdd構築装置、zsdd構築方法及びプログラム
JP7429389B2 (ja) 2020-12-01 2024-02-08 日本電信電話株式会社 ダイアグラム生成方法、ダイアグラム生成装置及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215065A (ja) * 1992-10-28 1994-08-05 Nippon Telegr & Teleph Corp <Ntt> 論理関数データ処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215065A (ja) * 1992-10-28 1994-08-05 Nippon Telegr & Teleph Corp <Ntt> 論理関数データ処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ADNAN DARWICHE: ""SDD: A New Canonical Representation of Propositional Knowledge Bases",[online]", IJCAI'11 PROCEEDINGS OF THE TWENTY-SECOND INTERNATIONAL JOINT CONFERENCE ON ARTIFICIAL INTELLIGENCE, vol. Volume 2, JPN6018033505, 16 July 2011 (2011-07-16), US, pages 819-826 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041161A (ja) * 2016-09-05 2018-03-15 日本電信電話株式会社 Zsdd構築装置、方法、及びプログラム
JP2020204938A (ja) * 2019-06-18 2020-12-24 日本電信電話株式会社 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
JP7126208B2 (ja) 2019-06-18 2022-08-26 日本電信電話株式会社 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
JP7377493B2 (ja) 2020-04-20 2023-11-10 日本電信電話株式会社 Zsdd構築装置、zsdd構築方法及びプログラム
JP7429389B2 (ja) 2020-12-01 2024-02-08 日本電信電話株式会社 ダイアグラム生成方法、ダイアグラム生成装置及びプログラム

Also Published As

Publication number Publication date
JP6451997B2 (ja) 2019-01-16

Similar Documents

Publication Publication Date Title
US10313177B2 (en) Data lineage summarization
Sengupta et al. Graphin: An online high performance incremental graph processing framework
JP6451997B2 (ja) 演算実行装置、方法、及びプログラム
US20200225921A1 (en) Lookup table optimization for programming languages that target synchronous digital circuits
Lodi The heuristic (dark) side of MIP solvers
Sørensen Geometric classification of simple graph algebras
CN112131515A (zh) 将高阶多项式转换成二次多项式的方法和计算机可读介质
Kremer et al. Fully incremental cylindrical algebraic decomposition
Perez et al. Constructions and in-place operations for MDDs based constraints
Liu et al. Unified framework for construction of rule based classification systems
JP6558864B2 (ja) Zsdd構築装置、方法、及びプログラム
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
Abdolazimi et al. Connected components of big graphs in fixed mapreduce rounds
Hao et al. cSketch: a novel framework for capturing cliques from big graph
JP6802109B2 (ja) ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法
JP7196903B2 (ja) 推移閉包情報生成装置、推移閉包情報生成方法およびプログラム
JP7126208B2 (ja) 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
JP6668271B2 (ja) 業務仕様分析支援装置、業務仕様分析支援方法、及びプログラム
Janicki Property-driven rough sets approximations of relations
Feferman Theses for computation and recursion on concrete and abstract structures
JP5741705B2 (ja) 最適領域抽出方法およびその装置
Jansson et al. An efficient algorithm for the rooted triplet distance between galled trees
KR101085967B1 (ko) 선형 시간 Top-k 정렬방법
Fedin et al. Automated proofs of upper bounds on the running time of splitting algorithms
JP7377493B2 (ja) Zsdd構築装置、zsdd構築方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20171218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181128

R150 Certificate of patent or registration of utility model

Ref document number: 6451997

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350