JP6558864B2 - Zsdd構築装置、方法、及びプログラム - Google Patents

Zsdd構築装置、方法、及びプログラム Download PDF

Info

Publication number
JP6558864B2
JP6558864B2 JP2016173031A JP2016173031A JP6558864B2 JP 6558864 B2 JP6558864 B2 JP 6558864B2 JP 2016173031 A JP2016173031 A JP 2016173031A JP 2016173031 A JP2016173031 A JP 2016173031A JP 6558864 B2 JP6558864 B2 JP 6558864B2
Authority
JP
Japan
Prior art keywords
zsdd
node
vtree
representing
decision
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.)
Active
Application number
JP2016173031A
Other languages
English (en)
Other versions
JP2018041161A (ja
Inventor
正彬 西野
正彬 西野
宜仁 安田
宜仁 安田
真一 湊
真一 湊
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016173031A priority Critical patent/JP6558864B2/ja
Publication of JP2018041161A publication Critical patent/JP2018041161A/ja
Application granted granted Critical
Publication of JP6558864B2 publication Critical patent/JP6558864B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Description

本発明は、ZSDD構築装置、方法、及びプログラムに係り、特に、集合族をグラフとして計算機上に表現し、さらに表現した集合族間の演算を計算機上で実行するためのZSDD構築装置、方法、及びプログラムに関する。
集合Sが与えられたとき、Sの部分集合を要素とするような集合は集合族とよばれる。様々な問題は、集合族を対象とした計算問題に帰着して解くことができる。たとえば、グラフG=(V,E)が与えられたとき、グラフのマッチングとはEの部分集合のうち、端点を共有するものが存在しないもののことをいう。そのため、マッチングの集合はEを台集合とした集合族として表現することが可能である。マッチングのうち最大のものを選択する問題は最大マッチング問題とよばれ、多くの応用問題が最大マッチング問題に帰着して解かれている。最大マッチング問題は、可能なマッチングの集合が集合族として表現されているのであれば、集合族の中から最大のものを選択する問題として解くことができる。グラフを対象とした問題のほかにも、処理の対象が集合族として表現されるケースは多数存在する。
Shin-ichi Minato, "Zero-suppressed BDDs for set manipulation in combinatorial problems", In Proceedings of the 30th Design Automation Conference, pp 272-277, 1993. Masaaki Nishino, Norihito Yasuda, Shin-ichi Minato and Masaaki Nagata, "Zero-suppressed Sentential Decision Diagrams", In Proceedings of the 30th AAAI Conference on Articial Intelligence, pp 1058-1066, 2016.
集合族を対象とした計算は、集合族の大きさが膨大になると効率的に行うことが困難となる。前述のマッチングの個数は、グラフのエッジの総数|E|に対して最悪で指数倍となる可能性があるため、マッチングの集合を明示的に求めてそれに対して処理を行うことは非効率的である。
このような点を鑑みて、集合族を計算に適したデータ構造に変換して保持することによって、集合族を対象とした各種演算を高速に実行するアプローチが存在する。そのようなデータ構造の代表的なものとして、ゼロサプレス型二分決定グラフ(ZDD)(非特許文献1)がある。ZDDは集合族を有向非巡回グラフ(DAG)として表現することによって、集合族の要素数と比べてノード数が少ないグラフとして圧縮して表現し、処理することができるデータ構造である。対象によっては、指数個の部分集合からなるような集合族を、台集合のノードに対して多項式オーダーのノード数からなるZDDとして表現することも可能である。ZDDは集合族を圧縮して表現したうえで、様々な演算を実行可能であることを特徴とする。たとえば、集合族から要素数最大の部分集合を発見したり、集合族に含まれる部分集合の数を数え上げたりするような処理を、ZDDのサイズに比例する計算時間で実行することが可能である。
ZDDを用いた集合族の処理においてボトルネックとなるのが、集合族を表現するZDDを構築する手続きである。ZDDは集合族に対する演算を効率的に実行できるという特徴があるため、演算を繰り返すことで所望の集合族を段階的に構築するアプローチが一般的にはとられる。しかし、その場合には表現したい対象によっては演算の回数が指数的に増加したり、あるいは所望のZDDを構築する課程で生成される中間生成物であるZDDのサイズが非常に大きくなり、演算が効率的に行えなくなるなどの課題がある。
ZDDの構築が非効率的になる課題に対処するため、演算を複数回繰り返すことなくZDDを構築する、トップダウン構築とよばれるZDD構築法が考案された(非特許文献3参照)。
[非特許文献3]湊:「BDD/ZDD を用いたグラフ列挙索引化技法」オペレーションズ・リサーチ : 経営の科学 57(11), 597-603, 2012-11-01.
トップダウン構築法は、入力として与えられたグラフに対するマッチングの集合や、要素数Kの部分集合からなる集合族を表現するZDDを構築するために用いることができる。トップダウン構築を用いると、一度の演算で所望の集合族を表現するZDDを構築することができ、かつその計算時間は構築されたZDDのノード数に対して多項式時間となるため、従来の集合族間の演算を繰り返してZDDを構築する手法と比較して、効率的なZDDの構築を実現できる。
一方、ZDDを集合族を表現するための索引として用いる際の課題として、表現する対象によってはZDDのノード数が増大するという点が挙げられる。ZDDを用いた処理はZDDのノード数に比例する計算時間がかかるため、ZDDのサイズが増大すると処理が非効率的であるという課題があった。
集合族を索引化するための第二のアプローチとして、Zero-suppressed Sentential Decision Diagram (ZSDD)(非特許文献2)を用いて集合族を表現する方法が挙げられる。ZSDDはZDDと同様に集合族をDAGとして表現するが、ZDDと比較してノード数が少ないDAGとして集合族を表現できることが可能である。さらに、ZDDと同様に、ZSDDは集合族を対象とした様々な演算をZSDDのノード数に比例する時間で実行可能である。すなわち、ZSDDをZDDの代替として用いることによって、ZDDを用いたときと比較して高速に集合族を対象とした処理を実行することが可能である。
一方で、ZSDDを用いたときの課題として、ZSDDを用いて集合族を対象とした演算を実行しようとした場合、ZDDを用いたときと同様にZSDDの構築が大きな問題となる。ZSDDもZDDと同様に集合族間の演算を効率的に実行可能であるため、演算を繰り返し適用することによって、任意の集合族を表現するZSDDを構築することができる。しかし、ZDDの場合と同様に演算の実行回数が指数的に増加したり、また中間生成物として得られるZSDDが非常に巨大になり、処理が非効率的になるといった課題がある。さらに、ZDDの場合と異なり、ZSDDには効率的なトップダウン構築法が存在しないという課題がある。
本発明は、上記問題点を解決するために成されたものであり、集合族間の各種演算を高速に行うためのZSDDを効率的に構築することができるZSDD構築装置、方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、第1の発明に係るZSDD構築装置は、入力されたグラフに基づいて、ノードとエッジとからなる完全二分木であって、前記グラフのエッジ集合Eに含まれる各要素に対応するノードを葉ノードとして表現したvtreeを構築するvtree構築部と、前記グラフと、前記構築されたvtreeと、に基づいて、前記グラフのマッチングを表す前記エッジ集合Eの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記エッジ集合Eを部分集合X、Yへ分割したときの、前記エッジ集合Eに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するZSDD構築部と、を含み、前記ZSDD構築部は、前記構築されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築する。
また、第2の発明に係るZSDD構築装置は、入力された、台集合Sと、ノードとエッジとからなる完全二分木であって、前記台集合Sに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、予め定められた要素数Kとなる、前記台集合Sの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記台集合Sを部分集合X、Yへ分割したときの、前記台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するZSDD構築部と、を含み、前記ZSDD構築部は、前記入力されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築する。
第3の発明に係るZSDD構築方法は、vtree構築部が、入力されたグラフに基づいて、ノードとエッジとからなる完全二分木であって、前記グラフのエッジ集合Eに含まれる各要素に対応するノードを葉ノードとして表現したvtreeを構築するステップと、ZSDD構築部が、前記グラフと、前記構築されたvtreeと、に基づいて、前記グラフのマッチングを表す前記エッジ集合Eの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記エッジ集合Eを部分集合X、Yへ分割したときの、前記エッジ集合Eに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するステップと、を含んで実行することを特徴とし、前記ZSDD構築部が構築するステップは、前記構築されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築する。
第4の発明に係るZSDD構築方法は、ZSDD構築部が、入力された、台集合Sと、ノードとエッジとからなる完全二分木であって、前記台集合Sに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、予め定められた要素数Kとなる、前記台集合Sの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記台集合Sを部分集合X、Yへ分割したときの、前記台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するステップ、を含んで実行することを特徴とし、前記ZSDD構築部が構築するステップは、前記入力されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築する。
第5の発明に係るプログラムは、コンピュータを、第1又は第2の発明に係るZSDD構築装置の各部として機能させるためのプログラムである。
本発明のZSDD構築装置、方法、及びプログラムによれば、vtreeのノードに対応する決定ノードと、集合を部分集合X、Yへ分割したときの、集合に含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含む、前記グラフのマッチングを表す前記エッジ集合Eの部分集合の各々からなる集合である集合族、又は予め定められた要素数Kとなる、前記台集合Sの部分集合の各々からなる集合である集合族を表すZSDDを構築する際に、vtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築することにより、集合族間の各種演算を高速に行うためのZSDDを効率的に構築することができる、という効果が得られる。
vtreeの一例を示す図である。 ZSDDの一例を示す図である。 ZSDDの計算機上での表現の一例を示す図である。 本発明の第1の実施の形態に係るZSDD構築装置の構成を示すブロック図である。 vtreeを構築する手続きを説明したAlgorithmの一例を示す図である。 第1の実施の形態のZSDDを構築する手続きを説明したAlgorithmの一例を示す図である。 recursiveBuildの処理を説明したAlgorithmの一例を示す図である。 第1の実施の形態のgetRootの処理を説明したAlgorithmの一例を示す図である。 第1の実施の形態のbuildDecisionLevelの処理を説明したAlgorithmの一例を示す図である。 第1の実施の形態のbuildDecompositionLevel(v,z)の処理を説明したAlgorithmの一例を示す図である。 insert(Z,u,z) の処理を説明したAlgorithmの一例を示す図である。 本発明の第1の実施の形態に係るZSDD構築装置におけるZSDD構築処理ルーチンを示すフローチャートである。 本発明の第2の実施の形態に係るZSDD構築装置の構成を示すブロック図である。 第2の実施の形態のZSDDを構築する手続きを説明したAlgorithmの一例を示す図である。 第2の実施の形態のgetRootの処理を説明したAlgorithmの一例を示す図である。 第2の実施の形態のbuildDecisionLevelの処理を説明したAlgorithmの一例を示す図である。 第2の実施の形態のbuildDecompositionLevelの処理を説明したAlgorithmの一例を示す図である。 本発明の第2の実施の形態に係るZSDD構築装置におけるZSDD構築処理ルーチンを示すフローチャートである。
以下、図面を参照して本発明の実施の形態を詳細に説明する。
<本発明の実施の形態に係る概要>
まず、本発明の実施の形態における概要を説明する。
本発明の実施の形態では、ZSDDのためのトップダウン構築法を新たに考案する。提案する構築法はZDDのためのトップダウン構築法を、ZSDDの事情にあわせて拡張したものである。本手法を用いることによって、ZDDのトップダウン構築と同様に単一の手続きで、かつ構築されるZSDDのサイズに対して線形の時間・空間計算量でZSDDを構築することが可能である。本発明の実施の形態では、グラフのマッチングの集合を表すZSDDを構築するためのトップダウン構築法と、K要素からなる部分集合全てからなるZSDDを構築するためのトップダウン構築法を示す。
<本発明の実施の形態に係る原理>
次に、本発明の実施の形態における原理を説明する。
はじめに以下で利用する記号および概念を導入する。G=(V,E)をグラフとする。Vはノードの集合、Eはエッジの集合とする。グラフのマッチングとは、Eの部分集合であり、端点を共有しないようなエッジの集合である。
集合族とは、ある台集合Z={A,B,C,...,}について、その部分集合S⊆Zを要素とするような集合のことである。例えばZ={A,B,C,D}とすると、{{A,B},{B},{B,C},{C,D}}はZを台集合とする集合族である。記号
は空集合を表すとし、記号2はZのべき集合、すなわちZの可能な全ての部分集合から構成される集合族を表すとする。また、|Z|で集合の要素数を表す。
集合族に対する演算をいくつか定義する。f,gを集合族とすると、f∩g={C|C∈fかつC∈g},f∪g={C|C∈fまたはC∈g},
として、二項演算
を定義する。
次にZSDDについて説明する。ZSDDは集合族を再帰的な(X,Y)-分割によって分割し、その分割の様子をDAGとして表現したものになる。集合X,Yが台集合Zの分割、すなわち
を満たすとすると、Zを台集合とする集合族f(Z)の(X,Y)分割は、

・・・(1)
と表される。ここでp(X)はXを台集合とする集合族、s(Y)はYを台集合とする集合族とする。(X,Y)-分割においては、全てのi,j:1<i<j≦nに対して
であり、かつ
を満たすとする。台集合をZ={A,B,C,D},X={A,B},Y={C,D}としたときの、集合族{{A,B},{B},{B,C},{C,D}}の(X,Y)-分割は

・・・(2)
となる。なお、以下では(X,Y)-分割を{(p,S),...,(p,s)}とも表す。またpをプライム、sをサブとよぶ。(X,Y)-分割は集合族に対して再帰的に行うことができる。すなわち、例えば、上述の(X,Y)-分割におけるp={{A,B}}は、さらに(B,A)-分割によって
と分割することができる。
続いてvtreeを導入する。vtreeは台集合に含まれる各アイテムに対応するノードを葉とするような完全二分木のことである。図1は4つのアイテムA,B,C,Dに対するvtreeの例である。vtreeの中間ノード(葉でないノード)vは、その部分木の葉ノードからなる変数の集合の分割を表現している。すなわち、vを根とする部分木の葉ノードに対応するアイテムの集合を、vの左側の子ノードを根とする部分木(vとする)の葉ノードに対応するアイテム集合と、vの右側の子ノードを根とする部分木(vとする)の葉ノードに対応するアイテム集合とに分割する。図1のvtreeの根ノードvは、A,BとC,Dへの分割に対応し、根の左側の子ノードvはBとAへの分割に対応する。vtreeのノードのうち、左側の子ノードが葉ノードであるようなノードを決定vtreeノードとよぶ。決定vtreeノードではないノードを分割vtreeノードとよぶ。
ZSDDはあるvtreeが与えられたときに、そのvtreeにもとづいて集合族を再帰的に分割することによって、DAGとして表現したものである。αをZSDD、αが表す集合族を<α>とすると、以下のようにZSDDは再帰的に定義される。

ここで
を定数ZSDDとよび、X、±XをリテラルZSDDとよぶ。定数ZSDDとリテラルZSDDとをあわせて終端ZSDDとよぶ。一方、ある(X,Y)-分割に対応するZSDDは分解ZSDDとよぶ。図2に集合族{{A,B},{B},{B,C},{C,D}}を表すZSDDを示す。図2中の丸ノードは、そのノードを根とするDAGが表現する分解ZSDDを表しており、丸ノードを決定ノードとよぶ。決定ノード中の数字は対応するvtreeのノードを表している。決定ノードを親ノードとする四角いノードの対は要素ノードとよばれ、(X,Y)分割{(p,s),...,(p,s)}における、あるプライムとサブのペア(p,s)を表している。
対のうち左側の四角がプライムを、右側の四角がサブを表している。プライム、サブはそれぞれ別の終端ZSDDもしくは決定ZSDDであり、終端ZSDDの場合は四角中に対応する終端ZSDDの記号を表記して表し、決定ZSDDの場合は別の決定ノードへの矢印として表現している。ある決定ノードと、その子ノードである要素ノード群とである(X,Y)分割を表現している。すなわち、各要素ノードがあるプライムとサブのペア(p,s)に対応している。なお、ZSDDではサブが
となるようなペアは省略する。ZSDD中に
に対応するような決定ノードが存在したならば、前者はαに、後者は
にそれぞれ置き換える。
図2のZSDDの計算機上での表現方法を図3に示す。ZSDDは計算機上では、各中間vtreeノードに対応する決定ZSDDノードの配列の集合として表現される。図3では中間vtreeノード1、3、5のそれぞれについて、要素数1の配列が格納されている様子が表されている。配列の各要素は1つの決定ZSDDノードを、[(p,s),...,(p,s)]としてその子ノードである要素の集まりによって表している。p,sは終端ZSDDを表す場合はその終端ZSDDに対応する記号
として、そうでない場合にはp,sが対応する決定ZSDDノードの計算機中でのアドレスを保持する。図3中ではアドレスはvtreeノードIDと、そのvtreeノードIDに対応する配列中での対象の決定ZSDDのインデックスのペアとして表現される。
<本発明の第1の実施の形態に係るZSDD構築装置の構成>
次に、本発明の第1の実施の形態に係るZSDD構築装置の構成について説明する。図4に示すように、本発明の第1の実施の形態に係るZSDD構築装置100は、CPUと、RAMと、後述するZSDD構築処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。このZSDD構築装置100は、機能的には図4に示すように入力部10と、演算部20と、出力部50とを備えている。
入力部10は、マッチングの集合を、計算する対象となるグラフG=(V,E)として受け付ける。
演算部20は、vtree構築部30と、ZSDD構築部32とを含んで構成されている。
vtree構築部30は、以下に説明するように、入力されたグラフGに基づいて、ノードとエッジとからなる完全二分木であって、グラフのエッジ集合Eに含まれる各要素に対応するノードを葉ノードとして表現したvtreeを構築する。
vtreeを構築する手続きについて図5のAlgorithm1に示す。まずステップ1として、グラフのbranch decompositionを計算する。グラフG=(V,E)のbranch decompositionとは、木の葉ノードがEの各辺に対応するような、2|E|−1ノードからなる完全二分木である(非特許文献4参照)。
[非特許文献4]Neil Robertson and P. D. Seymour, "Graph Minors. X. Obstructionsto Tree Decomposition", Journal of Combonatorial Theory B (52), pp 153-190,1991.
グラフが与えられたときに、そのbranch decompositionを求める方法として、例えば非特許文献5にある方法などが利用できる。
[非特許文献5]William Cook and Paul Seymour, "Tour Merging via Branchdecomposition", INFORMS Journal on Computing 15 (3), pp 233-248,2003.
次にステップ2として、あるエッジe∈Eを任意に定める。次にステップ3として、完全二分木であるbranch decompositionに、eが相当する葉ノードと、その隣接するノードとの間に新たにノードを追加し、かつ追加したノードを根とする根付き二分木を構築する。そのような根付き木は容易に求めることができる。得られた根付き二分木の葉ノードを除く各ノードは必ず2つの子ノードをもつことになる。次にステップ4で得られた根付き部分木の各中間ノードに対して、二つの子ノードを根とする部分木の大きさを調べ、小さな子ノードを左側部分木、大きな子ノードを右側部分木として設定する。こうして構築された根付き木はvtreeとなるため、ステップ5で得られたvtreeを出力する。また、各vtreeノードvについてfrontier(v)を定義する。frontier(v)はグラフのエッジの集合Eの分割であるエッジの集合EとEのそれぞれの誘導グラフに共通して含まれるノードの集合とする。ここでEとEは、vtreeからノードvを除いて得られる2つの木に含まれる葉ノードに対応するグラフのエッジの集合である。
ZSDD構築部32は、以下に説明するように、入力されたグラフGと、構築されたvtreeと、に基づいて、グラフのマッチングを表すエッジ集合Eの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、エッジ集合Eを部分集合X、Yへ分割したときの、エッジ集合Eに含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDDを構築する。ここで、構築されたvtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築し、構築したZSDDを出力部50に出力する。
ZSDDを構築する手続きについて図6のAlgorithm2を用いて説明する。まず入力としてグラフG=(V,E)と、構築されたvtreeとを受け取ったあとに、ステップ1、2で配列Zの各要素を初期化する。配列Zは上記図3に示す、ZSDDの計算機内での表現に用いられる配列である。なお、図3ではZ[v]に対応する配列の要素は決定ZSDDノードを表すとし、かつ決定ZSDDノードはその子ノードである要素ZSDDノードのリストによって表現されるとしたが、以下では各決定ZSDDノードはmate配列とよばれる配列を追加で保持するものとする。mate配列は|V|次元の整数値を保持する配列であり、ZSDD構築の途中段階における、決定ZSDDノードの状態を表現するために用いられる。配列Zを初期化したのち、ステップ4でサブルーチンgetRootを呼び出す。getRootはZSDDの根に相当する決定ZSDDノードを生成する手続きである。処理の詳細は後述する。getRootで生成される決定ZSDDノードはmate配列を要素として持つが、子ノードは保持しない。子ノードは以降のトップダウン構築手続きで逐次構築される。ステップ5で再帰的なZSDD構築手続きであるrecursiveBuildに、vrootとZを引数として与えることで、冗長なノードを含むZSDDを構築する。recursiveBuildについては後述する。ステップ6で構築したZSDDを簡約化する。簡約化の手続きとしては非特許文献2に記載のtrimmingのための手続きを用いることができる。ステップ7でZSDDを出力し、処理を終了する。
次に、上記Algorithm2におけるrecursiveBuildについて図7に示すAlgorithm3をもとに説明する。recursiveBuildの挙動は、引数として与えられた対象ノードとしてのvtreeノードが決定vtreeノードであるかどうかによって異なる。ステップ1で与えられたvtreeノードvが決定vtreeノードであるかを判定し、決定vtreeノードであったならステップ2〜ステップ25を実行し、そうでなければステップ27〜ステップ31を実行する。vが決定vtreeノードであったならば、Z[v]に格納されている各決定ノードzについて、まず空の配列elemsを準備する(ステップ3)。その後、b∈{ftrue,false}について、buildDecisionLevel(v,z,b)を実行する(ステップ5)。buildDecisionLevelは決定ZSDDノードzの子ノードである要素ノードのsubに相当するノードsを生成するための手続きである。処理については後述する。ステップ6でsが終端ノード
であるかを判定し、もし
であるならばステップ4に遷移する(ステップ7)。次にステップ8でsが終端ZSDDノードかどうかを確認し、もしsが終端ZSDDノードでないならばステップ9の処理を実行する。ここで処理insert(Z,u,z)は図11に示すAlgorithm7に記載の処理を行い、Z[u]に既にzが含まれているならそのアドレスを、そうでないならZ[u]にzを追加したうえでそのアドレスを返す処理である。ステップ11でbがtrueかどうかを確認し、trueであるならばステップ12でpにεを設定し、そうでないならばステップ14でpに
を設定する。ステップ16でelemsに(p,s)の対からなる要素ノードを追加する。ステップ18で、elemsが要素ノード
のみを要素として含むのならば、それらを削除して代わりに
をelemsに加える。ステップ21でelemsに含まれる要素ノード群をzの子ノードとして設定する。全てのz∈Z[v]について処理が終了したならば、ステップ23でvが葉ノードであるかどうかを確認し、葉ノードでない場合にはステップ24でrecursiveBuild(v,Z)を呼び出す。vtreeノードvが決定vtreeノードでない場合は、ステップ27〜ステップ30で全てのz∈Z[v]について、buildDecompositionLevel(v,z)を呼び出してzの子ノード群elemsを計算し、zの子ノードとして設定する。buildDecompositionLevel(v,z)の具体的な処理内容については後述する。その後、ステップ30、31でv,vをそれぞれ引数としてrecursiveBuildを呼び出す。全ての計算が終わるとZに計算済みのZSDDが格納されているため、これを出力として取り出して処理を終了する。
次にgetRootの処理について図8に示すAlgorithm4をもとに説明する。Algorithm4では、ステップ1、2でmate配列mの全ての要素にシンボルUntouchを格納し、ステップ4でmのみを要素として含むリストを出力する。
次にbuildDecisionLevelの処理について図9に示すAlgorithm5をもとに説明する。まずステップ1でzのmate配列をmにコピーする。ステップ2でbがtrueかどうかを確認して、trueであった場合にはステップ3〜ステップ8を実行する。ステップ3ではvがvtreeの葉ノードであることを利用して、vに相当するグラフのエッジの両端点u1,u2を取り出す。ステップ4でm[u]=Touchまたはm[u]=Touchを満たすかを調べ、もし満たす場合には終端ZSDD
を出力して処理を終了する。ステップ7、8でm[u]、m[u]のそれぞれに記号Touchを設定する。ステップ10で、frontier(v)に含まれていて、かつfrontier(v)に含まれないmate配列の要素の各インデックスuについて、m[u]=Reserveであるかを調べ(ステップ11)、もし条件を満たすならば
を出力し処理を終了する。そうでないならばm[u]にFinishを設定する(ステップ14)。ステップ17でvが終端vtreeノードであるかを調べる。もし終端vtreeノードでないのであれば、mをmate配列に設定した、新しいZSDDノードを出力する(ステップ29)。もしvが終端vtreeノードであるのならばステップ18に進み、(u,u)をvに相当するエッジの端点に設定する。ステップ19〜ステップ27で、m[u]とm[u]の値の組合せに応じた終端ZSDDを出力して処理を終了する。
次にbuildDecompositionLevel(v,z)で行う処理について図10に示すAlgorithm6を用いて説明する。ステップ1で空の配列elemsを用意する。次にステップ2、3でzのmate配列をコピーした配列mpとmsを作成する。次にステップ4〜ステップ6でfrontier(v)−frontier(v)の各要素についてmp[u]をFinishedに設定する。ステップ7〜ステップ9でfrontier(v)−frontier(v)の各要素についてms[u]をFinishedに設定する。ステップ10でfrontier(v)とfrontier(v)に共通なノードの集合commonを計算する。ステップ11−18で、mate配列mpとmsの、commonに含まれるノードに対応する要素への可能な割り当てパターンを全て列挙し、その割り当てパターンに応じてm'p、m'sの値を設定し、elemsの要素を設定する。commonへ含まれる要素への可能な割り当てパターンは各u∈commonに対応する要素への割り当て方の組合せによって以下のように設定する。zのmate配列のuに対応する値がReservedの場合、可能な割り当てパターンはm'p[u]=Reservedかつm's[u]=Touchまたはm'p[u]=Touchかつm's[u]=Reservedとなる。zのmate配列のuに対応する値がTouchの場合、可能な割り当てパターンはm'p[u]=Touchかつm' s[u]=Touchとなる。zのmate配列のuに対応する値がUntouchの場合、可能な割り当てパターンはm'p[u]=Reservedかつm' s[u]=Touchまたはm'p[u]=Touchかつm's[u]=Untouchとなる。各パターンは(u,a,b)の3つ組の集合として表される。ここでuはノードの値、aはm'p[u]の値、bはm's[u]の値である。これらの各パターンについて、ステップ12、13でmp,msをコピーしたm'p,m'sを作成し、ステップ14−16でm'p,m'sの各要素をパターンに応じて更新する。ステップ18、19でmp,msを最終的に更新する。
<本発明の第1の実施の形態に係るZSDD構築装置の作用>
次に、本発明の第1の実施の形態に係るZSDD構築装置100の作用について説明する。入力部10においてマッチングの集合を計算する対象となるグラフG=(V,E)を受け付けると、ZSDD構築装置100は、図12に示すZSDD構築処理ルーチンを実行する。
まず、ステップS100では、入力部10で受け付けたグラフGに基づいて、ノードとエッジとからなる完全二分木であって、グラフのエッジ集合Eに含まれる各要素に対応するノードを葉ノードとして表現したvtreeを構築する。
次に、ステップS102では、入力部10で受け付けたグラフGと、ステップS100で構築されたvtreeと、に基づいて、グラフのマッチングを表すエッジ集合Eの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、エッジ集合Eを部分集合X、Yへ分割したときの、エッジ集合Eに含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDDを構築する。ここで、構築されたvtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築し(Algrithm2,Algrithm3参照)、構築したZSDDを出力部50に出力する。
以上説明したように、本発明の第1の実施の形態に係るZSDD構築装置によれば、構築されたvtreeのノードに対応する決定ノードと、エッジ集合を部分集合X、Yへ分割したときの、エッジ集合に含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDDを構築する際に、vtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築することにより、集合族間の各種演算を高速に行うための、グラフのマッチングを表すエッジ集合Eの部分集合の各々からなる集合である集合族を表すZSDDを効率的に構築することができる。
<本発明の第2の実施の形態に係るZSDD構築装置の構成>
次に、本発明の第2の実施の形態に係るZSDD構築装置の構成について説明する。なお、第1の実施の形態と同様となる箇所については同一符号を付して説明を省略する。
第2の実施の形態では、台集合Sの要素数Kからなる部分集合からなる集合族を表すZSDDを構築する手続きを行う。第1の実施の形態におけるマッチングの場合と類似であるが、グラフを入力として受け取らない点が異なる。また、第2の実施の形態では、vtreeは任意のvtreeを外部から与えられるとする。ただし、与えられたvtreeでは、vが葉ノードであるような分岐vtreeノードは含まれないとする。
図13に示すように、本発明の第2の実施の形態に係るZSDD構築装置200は、CPUと、RAMと、後述するZSDD構築処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。このZSDD構築装置200は、機能的には図13に示すように入力部210と、演算部220と、出力部250とを備えている。
入力部210は、台集合S、及びvtreeの入力を受け付ける。vtreeは、ノードとエッジとからなる完全二分木であって、台集合Sに含まれる各要素に対応するノードを葉ノードとして表現したものである。
演算部220は、ZSDD構築部232を含んで構成されている。
ZSDD構築部232は、以下に説明するように入力された、台集合Sと、vtreeと、に基づいて、予め定められた要素数Kとなる、台集合Sの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、台集合Sを部分集合X、Yへ分割したときの、台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDDを構築する。ここで、入力されたvtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築し、構築したZSDDを出力部250に出力する。
第2の実施の形態のZSDD構築処理について、図14に示すAlgorithm8を用いて説明する。まずステップ1〜ステップ3で全てのvtreeノードvに対してZ[v]を初期化する。ステップ4でZ[vroot]をgetRootの実行結果で初期化する。getRootの処理については後述する。次にステップ4でrecursive-Build(Algorithm3、マッチングの場合と同様)を実行し、ステップ5でReduce処理(マッチングの場合と同様)を実行する。getRoot、buildDecisionLevel、buildDecompo-sitionLevelはマッチングの場合と異なる手続きを実行する。それぞれの処理について以下に説明する。なお、以下の手続きでは、ZSDDの状態は自然数cで表現する。
getRoot手続きについて図15に示すAlgorithm9に示す。ステップ1でcにKを代入して、ステップ2でcを状態とする1つのZSDDノードからなる集合を出力する。
buildDecisionLevelの手続きについて図16に示すAlgorithm10で説明する。まずステップ1でcにZSDDノードzの状態をコピーする。もしb=trueの場合(ステップ2)、c=0であれば
を出力し、(ステップ3、4)そうでないならばcをc−1に更新する。ステップ9でc=0であったならば、εを出力する。もしvが葉ノードであったならば、c=1のときに
を出力し、そうでない場合に
を出力する(ステップ12−17)。もしvが葉ノードでなければ、cを状態とするZSDDノードを出力して処理を終了する(ステップ19)。
buildDecompositionLevel手続きについて図17に示すAlgorithm11を用いて説明する。まずステップ1でcにzの状態をコピーする。次にelemsを初期化する(ステップ2)。ステップ3〜ステップ17でiを0からcまでの各値に設定して処理を行う。ステップ4、5でc,cの値をiの値に応じて設定する。ステップ6〜ステップ16では、c,cの値に応じて処理を分岐する。c=0の場合、c=0の場合、それ以外の場合について、それぞれelemsに(ε,z),(z,ε)、(z,z)を追加する。ここでz,zはそれぞれc,cを状態としてもつユニークなZSDDノードのアドレスである。最後にステップ18でelemsを出力して処理を終了する。
<本発明の第2の実施の形態に係るZSDD構築装置の作用>
次に、本発明の第2の実施の形態に係るZSDD構築装置200の作用について説明する。入力部210において台集合S、及びvtreeを受け付けると、ZSDD構築装置200は、図18に示すZSDD構築処理ルーチンを実行する。
ステップS200では、入力部210で受け付けた台集合Sと、vtreeと、に基づいて、予め定められた要素数Kとなる、台集合Sの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、vtreeのノードに対応する決定ノードと、台集合Sを部分集合X、Yへ分割したときの、台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDDを構築する。ここで、入力されたvtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築し(Algorithm8参照)、構築したZSDDを出力部250に出力する。
以上説明したように、本発明の第2の実施の形態に係るZSDD構築装置によれば、入力されたvtreeのノードに対応する決定ノードと、台集合Sを部分集合X、Yへ分割したときの、台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDDを構築する際に、vtreeの各ノードを、根ノードから順番に対象ノードとし、vtreeの対象ノードを参照して、再帰的にZSDDを構築することにより、集合族間の各種演算を高速に行うための、予め定められた要素数Kとなる、台集合Sの部分集合の各々からなる集合である集合族を表すZSDDを効率的に構築することができる。
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
10、210 入力部
20、220 演算部
30 vtree構築部
32、232 ZSDD構築部
50、250 出力部
100、200 ZSDD構築装置

Claims (5)

  1. 入力されたグラフに基づいて、ノードとエッジとからなる完全二分木であって、前記グラフのエッジ集合Eに含まれる各要素に対応するノードを葉ノードとして表現したvtreeを構築するvtree構築部と、
    前記グラフと、前記構築されたvtreeと、に基づいて、前記グラフのマッチングを表す前記エッジ集合Eの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記エッジ集合Eを部分集合X、Yへ分割したときの、前記エッジ集合Eに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するZSDD構築部と、
    を含み、
    前記ZSDD構築部は、前記構築されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築するZSDD構築装置。
  2. 入力された、台集合Sと、ノードとエッジとからなる完全二分木であって、前記台集合Sに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、予め定められた要素数Kとなる、前記台集合Sの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記台集合Sを部分集合X、Yへ分割したときの、前記台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するZSDD構築部と、
    を含み、
    前記ZSDD構築部は、前記入力されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築するZSDD構築装置。
  3. vtree構築部が、入力されたグラフに基づいて、ノードとエッジとからなる完全二分木であって、前記グラフのエッジ集合Eに含まれる各要素に対応するノードを葉ノードとして表現したvtreeを構築するステップと、
    ZSDD構築部が、前記グラフと、前記構築されたvtreeと、に基づいて、前記グラフのマッチングを表す前記エッジ集合Eの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記エッジ集合Eを部分集合X、Yへ分割したときの、前記エッジ集合Eに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するステップと、
    を含み、
    前記ZSDD構築部が構築するステップは、前記構築されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築するZSDD構築方法。
  4. ZSDD構築部が、入力された、台集合Sと、ノードとエッジとからなる完全二分木であって、前記台集合Sに含まれる各要素に対応するノードを葉ノードとして表現したvtreeと、に基づいて、予め定められた要素数Kとなる、前記台集合Sの部分集合の各々からなる集合である集合族を表す有向非巡回グラフであって、前記vtreeのノードに対応する決定ノードと、前記台集合Sを部分集合X、Yへ分割したときの、前記台集合Sに含まれる要素又は定数である記号を表す終端ZSDD又は前記決定ノードへの矢印を表す決定ZSDDであるプライムとサブとのペアを表す要素ノードとを含むZSDD(Zero-suppressed Sentential Decision Diagram)を構築するステップ、
    を含み、
    前記ZSDD構築部が構築するステップは、前記入力されたvtreeの各ノードを、根ノードから順番に対象ノードとし、前記vtreeの対象ノードを参照して、再帰的にZSDDを構築するZSDD構築方法。
  5. コンピュータを、請求項1又は2記載のZSDD構築装置の各部として機能させるためのプログラム。
JP2016173031A 2016-09-05 2016-09-05 Zsdd構築装置、方法、及びプログラム Active JP6558864B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016173031A JP6558864B2 (ja) 2016-09-05 2016-09-05 Zsdd構築装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016173031A JP6558864B2 (ja) 2016-09-05 2016-09-05 Zsdd構築装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2018041161A JP2018041161A (ja) 2018-03-15
JP6558864B2 true JP6558864B2 (ja) 2019-08-14

Family

ID=61626188

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016173031A Active JP6558864B2 (ja) 2016-09-05 2016-09-05 Zsdd構築装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6558864B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7126208B2 (ja) * 2019-06-18 2022-08-26 日本電信電話株式会社 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
JP7377493B2 (ja) * 2020-04-20 2023-11-10 日本電信電話株式会社 Zsdd構築装置、zsdd構築方法及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2985922B2 (ja) * 1992-10-28 1999-12-06 日本電信電話株式会社 論理関数データ処理装置
JP6451997B2 (ja) * 2015-12-16 2019-01-16 日本電信電話株式会社 演算実行装置、方法、及びプログラム

Also Published As

Publication number Publication date
JP2018041161A (ja) 2018-03-15

Similar Documents

Publication Publication Date Title
Moalic et al. Variations on memetic algorithms for graph coloring problems
EP3029614B1 (en) Parallel development and deployment for machine learning models
US20170109207A1 (en) Data mining method and node
CN111915011B (zh) 一种单振幅量子计算模拟方法
JP6558864B2 (ja) Zsdd構築装置、方法、及びプログラム
Whidden et al. Fixed-parameter and approximation algorithms for maximum agreement forests of multifurcating trees
JP6451997B2 (ja) 演算実行装置、方法、及びプログラム
van Iersel et al. Approximation algorithms for nonbinary agreement forests
Aravind et al. On structural parameterizations of the matching cut problem
Lee et al. Non-parametric Bayesian sum-product networks
Della Giustina et al. A new linear-time algorithm for centroid decomposition
Srinivasan et al. Application of graph sparsification in developing parallel algorithms for updating connected components
US9361588B2 (en) Construction of tree-shaped bayesian network
Du et al. Combining quantum-behaved PSO and K2 algorithm for enhancing gene network construction
Ediger et al. Computational graph analytics for massive streaming data
Abdolazimi et al. Connected components of big graphs in fixed mapreduce rounds
CN106991195B (zh) 一种分布式的子图枚举方法
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
Wang et al. Parallel ordinal decision tree algorithm and its implementation in framework of MapReduce
CN114490799A (zh) 单个图的频繁子图挖掘方法及装置
Arleo et al. GraphRay: Distributed pathfinder network scaling
Shi et al. Algorithms for parameterized maximum agreement forest problem on multiple trees
Kasarkin et al. New iteration parallel-based method for solving graph NP-complete problems with reconfigurable computer systems
JP7126208B2 (ja) 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
JP7048032B2 (ja) データ生成装置、データ生成方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180809

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180809

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190531

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: 20190709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190715

R150 Certificate of patent or registration of utility model

Ref document number: 6558864

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150