JP7494945B2 - 厳密被覆計算方法、厳密被覆計算装置及びプログラム - Google Patents
厳密被覆計算方法、厳密被覆計算装置及びプログラム Download PDFInfo
- Publication number
- JP7494945B2 JP7494945B2 JP2022577940A JP2022577940A JP7494945B2 JP 7494945 B2 JP7494945 B2 JP 7494945B2 JP 2022577940 A JP2022577940 A JP 2022577940A JP 2022577940 A JP2022577940 A JP 2022577940A JP 7494945 B2 JP7494945 B2 JP 7494945B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- strict
- item
- cell
- line
- 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
Links
- 238000004364 calculation method Methods 0.000 title claims description 69
- 238000000034 method Methods 0.000 claims description 29
- 238000010586 diagram Methods 0.000 claims description 24
- 238000010845 search algorithm Methods 0.000 claims description 6
- 239000011159 matrix material Substances 0.000 description 17
- 239000013598 vector Substances 0.000 description 13
- 238000004891 communication Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 201000003231 brachydactyly type D Diseases 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000012925 reference material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N99/00—Subject matter not provided for in other groups of this subclass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Mathematical Physics (AREA)
- Development Economics (AREA)
- Software Systems (AREA)
- Game Theory and Decision Science (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、厳密被覆計算方法、厳密被覆計算装置及びプログラムに関する。
厳密被覆問題とは、ある集合Dと、その部分集合からなる集合族Sとが与えられたときに、Sの要素X∈Sをいくつか選択して、∪X∈FX=D、かつ、すべての異なるX,X'∈Fに対してX∩X'=φを満たすようなFを求める問題である。ここで、Xは、X⊆Dである。
例えば、ポリオミノパズルの解を求める問題や数独の解を求める問題等は厳密被覆問題に帰着して解くことができる。
集合DとDの部分集合族Sとが与えられたときに、厳密被覆問題の可能な解Fをすべて求めるための効率的な解法として、DLXが知られている(例えば、非特許文献1参照)。
Donald E. Knuth, "Dancing Links", Millennial Perspectives in Computer Science, 2000, 187-214.
しかしながら、DLXには、厳密被覆問題の入力のサイズが大きなときは効率的な計算ができないという課題がある。すなわち、DLXでは解の探索に集合族Sの大きさに比例する時間を要するため、入力として与えられた集合族Sに含まれる集合の数が膨大になると、計算効率が低下する。
本発明の一実施形態は、上記の点に鑑みてなされたもので、厳密被覆問題の解を効率的に計算することを目的とする。
上記目的を達成するため、一実施形態に係る厳密被覆計算方法は、厳密被覆問題の解を計算する厳密被覆計算方法であって、前記厳密被覆問題の対象となる集合と、前記集合の部分集合で構成される集合族とのゼロサプレス型二分決定グラフ表現を入力する入力手順と、前記ゼロサプレス型二分決定グラフ表現に基づいて、所定のデータ構造のデータを作成する作成手順と、前記データを用いて、DLXに基づく探索アルゴリズムにより、前記厳密被覆問題の解を計算する計算手順と、をコンピュータが実行する。
厳密被覆問題の解を効率的に計算することができる。
以下、本発明の一実施形態について説明する。本実施形態では、厳密被覆問題の解を効率的に計算することが可能な厳密被覆計算装置10について説明する。
<準備>
まず、DLXとゼロサプレス型二分決定グラフ(ZDD:Zero-suppressed Binary Decision Diagrams)について説明する。
まず、DLXとゼロサプレス型二分決定グラフ(ZDD:Zero-suppressed Binary Decision Diagrams)について説明する。
≪DLX≫
厳密被覆問題の入力となる集合族Sは二値行列を用いて表現することができる。二値行列の各列が集合Dの各要素に対応し、各行ベクトルがSに含まれる集合Xを表す。二値行列による厳密被覆問題の一例を図1に示す。図1に示す例では、集合DはD={a,b,c,d,e,f}であり、行列の各列に対応する要素の集合である。また、集合族SはS={{a,b,c,e},{a,b},{d,f},{c,d,f},{c,e}}である。つまり、集合族Sに含まれる各要素は二値行列の行ベクトルに対応する。例えば、{a,b,c,e}は二値行列の1行目の行ベクトルにおいて値が1の要素からなる集合である。
厳密被覆問題の入力となる集合族Sは二値行列を用いて表現することができる。二値行列の各列が集合Dの各要素に対応し、各行ベクトルがSに含まれる集合Xを表す。二値行列による厳密被覆問題の一例を図1に示す。図1に示す例では、集合DはD={a,b,c,d,e,f}であり、行列の各列に対応する要素の集合である。また、集合族SはS={{a,b,c,e},{a,b},{d,f},{c,d,f},{c,e}}である。つまり、集合族Sに含まれる各要素は二値行列の行ベクトルに対応する。例えば、{a,b,c,e}は二値行列の1行目の行ベクトルにおいて値が1の要素からなる集合である。
このとき、厳密被覆問題の解は、いくつかの行ベクトルを取り出したものとして表現される。例えば、F={{a,b,c,e},{d,f}}は厳密被覆問題の解であり、1行目と3行目を取り出したものである。また、例えば、F={{a,b},{d,f},{c,e}}も厳密被覆問題の解であり、2行目と3行目と5行目を取り出したものである。以下では、集合族Sに含まれる各集合のことをoption又はオプションともいい、集合Dの各要素のことをitem又はアイテムともいう。
DLXは厳密被覆問題の解をすべて探索するためのアルゴリズムである。DLXは厳密被覆問題の入力Sを2種類のセル(構成単位)を用いたデータ構造で表現する。2種類のセルはそれぞれアイテムセル、ノードセルと呼ばれる。
アイテムセルは集合Dに含まれる1つの要素に対応し、left,right,up,downの4つのポインタと、整数値lenとを持つ。left,right,up,downのそれぞれの値はアイテムセル又はノードセルのアドレスであり、アイテムセルiが持つleft,right,up,downをそれぞれleft(i),right(i),up(i),down(i)とする。left(i),right(i)には、アイテムセルのみからなる二重連結リストにおけるアイテムセルiの1つ前のアイテムセルと1つ後のアイテムセルのアドレスがそれぞれ格納される。up(i),down(i)には、集合Dの要素のうち、アイテムセルiと同じ要素に対応するノードセルのアドレスが格納される。lenには、アイテムセルからdownの値を辿ることによって到達できるノードセルの個数が格納される。
ノードセルは、up,down,itemの3つのポインタを持つ。あるノードセルpのitem(p)には、集合Dの要素のうち、ノードセルpが対応する要素に対応するアイテムセルのアドレスが格納される。up(p),down(p)には、item(p)に同じアイテムセルのアドレスが可能されているノードセルからなる連結リストにおける1つ前のセル(アイテムセル又はノードセル)と1つ後のセル(アイテムセル又はノードセル)のアドレスがそれぞれ格納される。
DLXで用いるデータ構造では、上記の2種類のセルを用いて集合Dと集合族Sとを表現する。
まず、集合Dに含まれる各要素に対応するアイテムセルを作成し、それらをleft,rightのポインタで連結した二重連結リストを作成する。ただし、この二重連結リストの先頭には、HEADと呼ばれる要素を追加する。HEADもleft,rightの2つポインタを持っており、二重連結リストの最後のアイテムセルとHEADの1つ後のアイテムセルのアドレスがそれぞれ格納される。したがって、アイテムセルの二重連結リストは、HEADを先頭の要素とする二重連結リストで表現される。
次に、集合族Sの二値行列表現における各行ベクトルを、ノードセルの配列として表現する。配列の要素数は行ベクトルに含まれる非ゼロの値の個数と等しく、配列に含まれる各ノードセルは行ベクトルの非ゼロ要素にそれぞれ対応する。すなわち、ある行ベクトルに対応する配列に含まれるノードセルpは、この行ベクトルの非ゼロ要素に対応するアイテムセルのアドレスが格納されているitem(p)を持ち、かつ、他の行ベクトルに対応する配列に含まれるノードセルであって、item(p)と同じアドレスが格納されているitemを持つノードセルのアドレスが格納されているup(p)及びdown(p)を持つ。ただし、up(p),down(p)にはアイテムセルのアドレスが格納されることもある。
DLXで用いるデータ構造の一例を図2に示す。図2に示すデータ構造は、図1に示す二値行列を、DLXで用いるデータ構造で表現したものである。図2の上段にあるa~fまでの文字が記載された長方形がアイテムセルを表しており、文字が記載されていない左上にある長方形がHEADを表している。また、各アイテムセル及びHEADから左右に伸びている矢印が、それぞれleft,rightの値を表している。例えば、文字aが記載されたアイテムセルの左側の矢印はHEAD、右側の矢印は文字bが記載されたアイテムセルを指しているが、これは、文字aが記載されたアイテムセルが持つleftにはHEADのアドレスが、rightには文字bが記載されたアイテムセルのアドレスが格納されていることを表している。
また、アイテムセルから上向き、下向きに伸びている矢印はそれぞれup,downの値を表している。なお、アイテムセルのlenの値は図2中には明示的に表されていないが、下向きの矢印を辿ることによって到達できるノードセルの個数である。例えば、文字aが記載されたアイテムセルが持つlenの値は2であり、文字cが記載されたアイテムセルが持つlenの値は3である。
水平の線分で繋がれたノードセル同士は、二値行列のある行ベクトルに対応する配列に含まれていることを表している。例えば、文字aが記載されたノードセルと文字bが記載されたノードセルとが水平の線分で繋がれているが、これは、2行目の行ベクトルに対応する配列の要素であることを表している。
また、ノードセルに記載されている文字は、このノードセルが持つitemに格納されているアドレスが指すアイテムセルに対応する要素を表している。更に、ノードセルから上向き、下向きに伸びている矢印はそれぞれup,downの値を表している。
図2より、HEADからleft又はrightを繰り返すことで到達できるアイテムセルは、集合Dを二重連結リストとして表現したものであることがわかる。また、各アイテムセルからup又はdownを繰り返すことで到達できるノードセルは、二値行列の列ベクトルに出現するアイテムの集合を表してる。
なお、以下では、簡単のため、セル(アイテムセル又はノードセル)とそのセルを指すアドレスとを同一視し、同一の記号で表すことがある。例えば、記号「X」でセル自体を表すこともあれば、セルのアドレスを表すこともある。
次に、DLXのアルゴリズムを図3に示す。図3に示すように、DLXは、二値行列Sを入力して、Search(S,φ)により厳密被覆問題の解を探索する(16行目)。Search(A,R)ではAが空集合であればRを出力し(2行目~3行目)、そうでなければMRV(Minimum Remaining Values)ヒューリスティックによりアイテムiを選択し(4行目)、集合族Aに含まれるオプションのうち、アイテムiが含まれるオプションの集合をOとする(5行目)。続いて、Cover(i,A)を呼び出し(6行目)、各X∈Oに対して8行目~14行目の繰り返しを実行した後(7行目)、Uncover(i,A)を呼び出す(15行目)。8行目~14行目の繰り返しでは、XをRに追加し(8行目)、j≠iなるj∈Xに対してCover(j,A)を繰り返した後(9行目~10行目)、Search(A,R)を再帰的に呼び出し(11行目)、その後、j≠iなるj∈Xに対してUncover(j,A)を繰り返した後(12行目~13行目)、RからXを削除する(14行目)。
次に、Cover及びUncoverのアルゴリズムを図4に示す。DLXで用いるデータ構造は、アイテムセルとノードセルを使用した複数の二重連結リストにより二値行列Sを表現している。Cover及びUncoverでは、これらの二重連結リストを操作することで、二値行列からのオプションの削除や復元を実現する。例えば、Xを二重連結リストに含まれるあるセルとする。Xは2つの値left(X),right(X)を持ち、それぞれXの1つ前のセル、1つ後のセルのアドレスが格納されているものとする。
このとき、二重連結リストからXを削除する操作(以下、「削除操作」ともいう。)は、
right(left(X))←right(X)
left(right(X))←left(X)
となる。また、この操作によって削除されたXを二重連結リストに復元する操作(以下、「復元操作」ともいう。)は、
right(left(X))←X
left(right(X))←X
となる。
right(left(X))←right(X)
left(right(X))←left(X)
となる。また、この操作によって削除されたXを二重連結リストに復元する操作(以下、「復元操作」ともいう。)は、
right(left(X))←X
left(right(X))←X
となる。
Coverは削除操作によりデータ構造からオプションを削除する手続きであり、Uncoverは復元操作によりデータ構造にオプションを復元する手続きである。
図4に示すように、Cover(i)では、上記の削除操作を行ってアイテムiに対応するアイテムセルを、アイテムセルの二重連結リストから削除し(2行目~3行目)、pにdown(i)を代入した後(4行目)、p≠iである間、6行目~13行目の繰り返しを実行する(5行目)。
6行目~13行目の繰り返しでは、pが含まれる配列でpの1つ後のノードセルをqとし(6行目)、q≠pである間、8行目~12行目の繰り返しを実行し(7行目)、その後、p←down(p)とする(13行目)。ただし、6行目では、pが配列の最後の要素である場合は、配列の先頭のノードセルをqとする。
8行目~12行目の繰り返しでは、x←item(q)とした後(8行目)、アイテムセルxのlen(x)の値を1つ減少させる(9行目)。また、down(up(q))←down(q)及びup(down(q))←up(q)によって同じアイテムに対応するノードセルの二重連結リストからqを削除する(10行目~11行目)。そして、qを、同じオプションに対応する配列中におけるqの1つ後に要素に更新する(12行目)。これにより、当該オプションに含まれるノードセルのうち、pと異なるすべてのノードセルqが二重連結リストから削除される。
以上の手続きにより、Cover(i)では、アイテムiに対応するアイテムセルと、iを含むオプション中のすべてのノードセルとがデータ構造から削除される。
図4に示すように、Uncover(i)では、上記の復元操作を行ってアイテムセルiを、アイテムセルの二重連結リストに復元し(15行目~16行目)、pにup(i)を代入した後(17行目)、p≠iである間、19行目~26行目の繰り返しを実行する(18行目)。
19行目~26行目の繰り返しでは、pが含まれる配列でpの1つ前のノードセルをqとし(19行目)、q≠pである間、20行目~25行目の繰り返しを実行し(20行目)、p←up(p)とする(26行目)。
20行目~25行目の繰り返しでは、x←item(q)とした後(21行目)、アイテムセルxのlen(x)の値を1つ増加させる(22行目)。また、down(up(q))←q及びup(down(q))←qによって同じアイテムに対応するノードセルの二重連結リストにqを追加する(23行目~24行目)。そして、qを、同じオプションに対応する配列中におけるqの1つ前の要素に更新する(25行目)。これにより、当該オプションに含まれるノードセルのうち、pと異なるすべてのノードセルqが二重連結リストに復元される。
以上の手続きにより、Uncover(i)では、Cover(i)で削除されたセルが復元され、Cover(i)が実行される前の状態のデータ構造に戻る。
図2に示すデータ構造に対してCover(a)を実行した後のデータ構造を図5に示す。図5に示すように、Cover(a)の実行により、アイテムセルaと、アイテムaを含むオプションに対応する配列中のすべてのノードセルとが二重連結リストから削除されていることがわかる。なお、図5に示すデータ構造に対してUncover(a)を実行すると、図2に示すデータ構造が得られる。
≪ZDD≫
ZDDは、集合族を有向非巡回グラフとして表現するデータ構造である。ZDDとして表現することで、集合族を効率よく圧縮することが可能となる。なお、ZDDの詳細については、例えば、参考文献「Shin-ichi Minato, "Zero-suppressed BDDs for Set Manipulation in Combinatorial Problems", DAC'93:Proceedings of the 30th international conference on Design automation, 1993」等を参照されたい。
ZDDは、集合族を有向非巡回グラフとして表現するデータ構造である。ZDDとして表現することで、集合族を効率よく圧縮することが可能となる。なお、ZDDの詳細については、例えば、参考文献「Shin-ichi Minato, "Zero-suppressed BDDs for Set Manipulation in Combinatorial Problems", DAC'93:Proceedings of the 30th international conference on Design automation, 1993」等を参照されたい。
一例として、全体集合{1,2,3}の部分集合からなる集合族{{1,2},{1,3},{2,3}}を表現するZDDを図6に示す。
ZDDは終端ノードと分岐ノードの2種類のノードを持つ。終端ノードはそのノードを始点するエッジ(枝)を持たないノードであり、図6では四角で表現されている。終端ノードには⊥終端ノードと、
分岐ノードは終端ノードではないノードのことであり、各分岐ノードには、全体集合の要素の中でそのノードが対応する要素を表すラベルが付与される。また、各分岐ノードにはそのノードを始点とするエッジ(枝)が必ず2つ存在し、それぞれlo枝、hi枝と呼ばれる。図6では各分岐ノードは円で表現され、hi枝は実線、lo枝は破線で表現されている。例えば、ノードn1は分岐ノードであり、全体集合の要素「1」がラベルとして付与されており、ノードn1のlo枝はノードn2を、hi枝はノードn3をそれぞれ指している。
また、ZDDでは親を持たないノードが必ず1つのみ存在し、根ノードと呼ばれる。根ノードから第2の終端ノードまでの各経路が、ZDDが表現する集合族に含まれる各部分集合に対応している。また、hi枝は始点するノードに付与されているラベルによって表される要素が部分集合に含まれることを表し、lo枝は当該要素が部分集合に含まれないことを表す。図6に示すZDDでは根ノードから第2の終端ノードまで3種類の経路が存在し、それらの経路がそれぞれ部分集合{1,2},{1,3},{2,3}に対応している。
ZDD中の各ノードは、そのノードを根ノードとする部分ZDDを表現している。例えば、図6では、ノードn2を根ノードとする部分ZDDは全体集合{2,3}の部分集合からなる集合族{{2,3}}を表現している。また、例えば、ノードn3を根ノードとする部分ZDDは全体集合{2,3}の部分集合からなる集合族{{2},{3}}を表現している。
ZDDでは、各ノードに関して(ノードのID,ラベル,hi枝の指すノードのID,lo枝の指すノードのID)の4つの組を用意することで表現できる。例えば、図6に示すZDDは6つのノードを持つため、
<厳密被覆計算装置10のハードウェア構成>
次に、本実施形態に係る厳密被覆計算装置10のハードウェア構成を図7に示す。図7に示すように、本実施形態に係る厳密被覆計算装置10は一般的なコンピュータ又はコンピュータシステムのハードウェア構成で実現され、入力装置101と、表示装置102と、外部I/F103と、通信I/F104と、プロセッサ105と、メモリ装置106とを有する。これらの各ハードウェアは、それぞれがバス107により通信可能に接続される。
次に、本実施形態に係る厳密被覆計算装置10のハードウェア構成を図7に示す。図7に示すように、本実施形態に係る厳密被覆計算装置10は一般的なコンピュータ又はコンピュータシステムのハードウェア構成で実現され、入力装置101と、表示装置102と、外部I/F103と、通信I/F104と、プロセッサ105と、メモリ装置106とを有する。これらの各ハードウェアは、それぞれがバス107により通信可能に接続される。
入力装置101は、例えば、キーボードやマウス、タッチパネル等である。表示装置102は、例えば、ディスプレイ等である。なお、厳密被覆計算装置10は、例えば、入力装置101及び表示装置102のうちの少なくとも一方を有していなくてもよい。
外部I/F103は、記録媒体103a等の外部装置とのインタフェースである。厳密被覆計算装置10は、外部I/F103を介して、記録媒体103aの読み取りや書き込み等を行うことができる。なお、記録媒体103aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
通信I/F104は、厳密被覆計算装置10を通信ネットワークに接続するためのインタフェースである。プロセッサ105は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の各種演算装置である。メモリ装置106は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。
本実施形態に係る厳密被覆計算装置10は、図7に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図7に示すハードウェア構成は一例であって、厳密被覆計算装置10は、他のハードウェア構成を有していてもよい。例えば、厳密被覆計算装置10は、複数のプロセッサ105を有していてもよいし、複数のメモリ装置106を有していてもよい。
<厳密被覆計算装置10の機能構成>
次に、本実施形態に係る厳密被覆計算装置10の機能構成を図8に示す。図8に示すように、本実施形態に係る厳密被覆計算装置10は、問題入力部201と、入力形式作成部202と、厳密被覆計算部203と、計算結果出力部204とを有する。これら各部は、例えば、厳密被覆計算装置10にインストールされた1以上のプログラムがプロセッサ105に実行させる処理により実現される。
次に、本実施形態に係る厳密被覆計算装置10の機能構成を図8に示す。図8に示すように、本実施形態に係る厳密被覆計算装置10は、問題入力部201と、入力形式作成部202と、厳密被覆計算部203と、計算結果出力部204とを有する。これら各部は、例えば、厳密被覆計算装置10にインストールされた1以上のプログラムがプロセッサ105に実行させる処理により実現される。
問題入力部201は、厳密被覆計算装置10に与えられた厳密被覆問題の入力を読み込む。厳密被覆問題の入力はアイテムの集合Dとオプションの集合Sである。ここで、オプションの集合SはZDDで表現されているものとする。なお、オプションの集合SをZDDとして表現する方法については後述する。
入力形式作成部202は、問題入力部201が読み込んだSのZDD表現に基づいて、厳密被覆問題の解の探索アルゴリズムで用いるデータ構造を作成する。
厳密被覆計算部203は、入力形式作成部202で作成されたデータ構造を用いて厳密被覆問題のすべての解を探索する。
計算結果出力部204は、厳密被覆計算部203で計算された解を予め決められた任意の出力先にする。なお、解の出力先としては、例えば、表示装置102やメモリ装置106であってもよいし、通信I/F104を介して接続されるサーバや端末等であってもよい。
<厳密被覆計算装置10が実行する全体処理の流れ>
次に、本実施形態に係る厳密被覆計算装置10が実行する全体処理の流れを図9に示す。図9に示すように、本実施形態に係る厳密被覆計算装置10は、ステップS101~ステップS104の各処理を実行する。
次に、本実施形態に係る厳密被覆計算装置10が実行する全体処理の流れを図9に示す。図9に示すように、本実施形態に係る厳密被覆計算装置10は、ステップS101~ステップS104の各処理を実行する。
ステップS101:まず、問題入力部201は、与えられた厳密被覆問題の入力を読み込む。厳密被覆問題の入力はアイテムの集合Dとオプションの集合Sであり、上述したように、SはZDD表現で与えられる。厳密被覆問題の入力であるオプションの集合Sはアイテムの集合Dの部分集合を集めた集合族であり、これはZDDで表現することが可能である。つまり、アイテムの集合Dとその部分集合(オプション)を集めた集合族SはZDDとして表現することが可能である。
例えば、図1に示す二値行列で表現される厳密被覆問題の入力は、図10に示すZDDで表現される。図1に示す二値行列は集合族S={{a,b,c,e},{a,b},{d,f},{c,d,f},{c,e}}を表しており、ZDDは、この集合族を有向非巡回グラフの形で表現する。集合族を表現するZDDを求める方法は多数存在するが、例えば、Apply演算等のZDD演算により複数のZDDの合成を繰り返すことでZDDを求めてもよい。
ステップS102:次に、入力形式作成部202は、上記のステップS101で読み込んだZDDに基づいて、厳密被覆問題の解の探索アルゴリズムで用いるデータ構造を作成する。言い換えれば、入力形式作成部202は、上記のステップS101で読み込んだZDDを、当該データ構造のデータに変換する。このデータ構造は、DLXで用いられるデータ構造と同様に、アイテムセルとノードセルの2種類のセルで構成される。アイテムセルは、DLXで用いられるデータ構造と同様に、left,right,up,down,lenの5つの値を持つ。ノードセルは、DLXで用いられるデータ構造と同様のup,down,itemの3つの値に加えて、lo,hi,parents,plen,llen,hlenの6つの値を持つ。
ノードセルはZDDの1つのノード(ZDDノード)に対応付けられ、lo及びhiには、当該ノードセルに対応付けられているZDDノードのlo枝及びhi枝がそれぞれ指すZDDノードに対応するノードセルのアドレスが格納される。parentsには、ノードセルに対応するZDDノードの親ノードに対応するノードセルのアドレスと、親ノードからlo枝又はhi枝のいずれで指されているかを示す情報とが格納される。あるZDDノードには複数の親ノードが存在し得るため、parentsにも複数の親ノードのアドレスとlo枝又はhi枝のいずれで指されているかを示す情報とがリストとして格納される。plen,llen,hlenには、ZDDにおける特定のノード間の経路の数が格納される。plenには、ZDDの根ノードからlo枝又はhi枝を辿って、当該ノードセルに対応するZDDノードまで到達可能な経路の数が格納される。llenには、当該ノードセルに対応するZDDノードのlo枝が指す子ノードから、第2の終端ノードまでの経路の数が格納される。hlenには、当該ノードセルに対応するZDDノードのhi枝が指す子ノードから、第2の終端ノードまでの経路の数が格納される。plen,llen,hlenは、アイテムセルのlenの値を更新するために用いられる。itemには、当該ノードセルに対応するZDDノードのラベルが表すアイテムに対応するアイテムノードのアドレスが格納されている。
本実施形態で用いるデータ構造は、上記のアイテムセル及びノードセルを用いて作成される。すなわち、本実施形態で用いるデータ構造では、DLXで用いられるデータ構造と同様に、HEADとアイテムセルとがleft,rightによって連結された二重連結リストでアイテムの集合Dが表現される。また、ノードセルはオプションの集合Sを表現するZDDの各ノードに対応し、自身の親ノードのアドレスとlo枝又はhi枝のいずれで指されているかを示す情報とがparentsに格納されており、自身の子ノード(lo枝及びhi枝でそれぞれ指すノード)のアドレスがlo及びhiに格納されている。また、ラベルが表すアイテムに対応するアイテムセルのアドレスがitemに格納されている。同一のアイテムセルのアドレスがitemに格納されているノードセル同士は、up,downによって連結された二重連結リストを構成する。
図10に示すZDD(つまり、図1に示す二値行列で表現される厳密被覆問題)から作成したデータ構造の一例を図11に示す。図11の上段にあるa~fまでの文字が記載された横長の長方形がアイテムセルを表しており、文字が記載されていない左上にある横長の長方形がHEADを表している。一方で、縦長の長方形がノードセルを表している。
DLXで用いられるデータ構造と同様に、HEADからleft又はrightを繰り返すことで到達できるアイテムセルは、アイテムの集合Dを二重連結リストとして表現したものであることがわかる。また、ノードセル中の文字は、そのノードセルのitemに格納されているアドレスが指すアイテムセルに対応するアイテムを表現している。
あるノードセルから右方向に伸びている、別のノードセルを指す実線及び破線の矢印はそれぞれ当該ノードセルのhi枝及びlo枝を表現している。また、同じ文字が記載されたノードセル間を繋ぐ矢印は、up及びdownを表現している。更に、あるノードセルから左方向に伸びている、別のノードセルを指す矢印はparentsに格納されているアドレスが指す親ノードとその親ノードからhi枝又はlo枝のいずれで指されているかを表現しており、実線はhi枝、破線はlo枝で指されていることを表している。なお、hi枝又はlo枝を表す矢印が存在すれば、その逆向きの矢印も存在する。
ノードセルと、そのhi枝及びlo枝をそれぞれ表す矢印とを取り出すと、図10に示すZDDと一致するグラフが得られることがわかる。
plen,llen,hlenは図11中では省略されているが、例えば、文字cが記載されている2つのノードセルのうち、下段にあるノードセルのplen,llen,hlenの値はそれぞれ1,1,2となる。
ステップS103:次に、厳密被覆計算部203は、上記のステップS102で作成されたデータ構造を用いて、厳密被覆計算処理によって厳密被覆問題のすべての解を探索する。この厳密被覆計算処理のアルゴリズムを図12に示す。このアルゴリズムはDLXのアルゴリズムといくつかの点で共通する。
図12に示すように、まず、厳密被覆計算部203は、引数R=φとして、再帰関数であるSearchZDD(φ)を呼び出す(17行目)。Rは再帰的なSearchZDDの呼び出し時点で選択されているオプションの集合を表し、初期状態では空集合である。
SearchZDD(R)を呼び出すと、厳密被覆計算部203は、アイテムセルの二重連結リストが空であるかどうかを判定し、空であれば現在のRを厳密被覆問題の解として出力する(2行目)。一方で、空でない場合、厳密被覆計算部203は、MRVヒューリスティックによりアイテムiを選択し(3行目)、CoverZDD(i)を呼び出し(4行目)、p←down(i)によりポインタpを初期化する(5行目)。その後、厳密被覆計算部203は、p≠iである間、7行目~15行目の繰り返しを実行した後(6行目)、UncoverZDD(i)を呼び出す(16行目)。なお、CoverZDD及びUncoverZDDの詳細については後述する。
7行目~15行目の繰り返しでは、X←NextOption(p)として、各Xに対して8行目~14行目の繰り返しを実行した後(7行目)、p←down(p)によりpを更新する(15行目)。ここで、NextOption(p)は、ZDDの根ノードからhi枝又はlo枝を辿って第2の終端ノードに到達するまでの経路のうち、ノードセルpに対応するZDDノードのhi枝を通過する経路に対応するオプションを1つ取り出す関数又はサブルーチンである。なお、このような経路に対応するオプションが取り出せない場合(つまり、既に取り出し終わった場合や存在しない場合)、厳密被覆計算部203は、8行目~14行目の繰り返しを抜ける。
8行目~14行目の繰り返しでは、厳密被覆計算部203は、オプションXをRに追加し(8行目)、j≠iなるj∈Xに対してCoverZDD(j)を繰り返した後(9行目~10行目)、SearchZDD(R)を再帰的に呼び出し(11行目)、その後、j≠iなるj∈Xに対してUncoverZDD(j)を繰り返した後(12行目~13行目)、RからXを削除する(14行目)。
なお、9行目~10行目はi以外のアイテムjがオプションXに含まれる場合、CoverZDD(j)を実行することを意味し、その結果、オプションの集合を表すZDDから、Xに含まれるいずれかのアイテムを含むオプションがすべて削除されることになる。また、12行目~13行目はCoverZDD(j)を実行したj∈Xに対してUncoverZDD(j)を実行することを意味し、CoverZDD(j)で削除されたオプションが復元されることになる。
次に、CoverZDD及びUncoverZDDのアルゴリズムを図13に示す。DLXのCover及びUncoverと同様に、CoverZDD及びUncoverZDDは、データ構造中の二重連結リストの操作によって、オプションの集合を表現するZDDからオプションの削除及び復元を実現する。
CoverZDD(i)について説明する。図13に示すように、厳密被覆計算部203は、上述した削除操作を行ってアイテムiに対応するアイテムセルを、アイテムセルの二重連結リストから削除し(2行目~3行目)、pにdown(i)を代入すると共にRを空のリストに初期化する(4行目)。その後、厳密被覆計算部203は、p≠iである間、R←R∪{p}とp←down(p)とを繰り返す(5行目~7行目)。この5行目~7行目の繰り返しにより、Rは、アイテムセルiからdownを繰り返し辿ることで到達可能なノードセルの集合となる。
次に、厳密被覆計算部203は、CoverUpper(R)とCoverLower(R)を実行した後(8行目~9行目)、各p∈Rに対して11行目~16行目の繰り返しを実行する(10行目)。CoverUpper(R)及びCoverLower(R)では、Rに含まれるノードセルのhi枝がZDDから削除されたものとみなして、各ノードセルのplen,llen,hlenの値を更新する処理を行う。また、その結果としてplen,hlenの値がゼロとなるノードセルがあれば、そのノードセルを二重結合リストから削除する操作を行う。なお、CoverUpper(R)及びCoverLower(R)の詳細については後述する。
11行目~16行目の繰り返しでは、厳密被覆計算部203は、各(q,t)∈Parents(p)に対して12行目~14行目の繰り返しを実行した後(11行目)、Parents(hi(p))から(p,HI)を削除すると共にParents(lo(p))から(p,LO)を削除する(15行目~16行目)。ここで、Parents(p)はノードセルpが持つparentsを表し、(q,t)は親ノードに対応するノードセルq(のアドレス)と親ノードからlo枝又はhi枝のいずれで指されているかを示す情報tとの組である。また、lo(p)及びhi(p)は、それぞれノードセルpに対応するZDDノードがlo枝及びhi枝で指すノード(子ノード)のノードセルを表す。また、HIはhi枝であることを示す定数、LOはlo枝であることを示す定数である。
12行目~14行目の繰り返しでは、厳密被覆計算部203は、(q,t)をParents(lo(p))に追加した後(12行目)、t=LOであればlo(q)←lo(p)とし(13行目)、そうでなければhi(q)←lo(p)とする(14行目)。
UncoverZDD(i)について説明する。図13に示すように、厳密被覆計算部203は、上述した復元操作を行ってアイテムセルiを、アイテムセルの二重連結リストに復元し(18行目~19行目)、pにdown(i)を代入すると共にRを空のリストに初期化する(20行目)。その後、厳密被覆計算部203は、p≠iである間、R←R∪{p}とp←down(p)とを繰り返す(21行目~23行目)。この21行目~23行目の繰り返しにより、Rは、アイテムセルiからdownを繰り返し辿ることで到達可能なノードセルの集合となる。
次に、厳密被覆計算部203は、各p∈Rに対して25行目~30行目の繰り返しを実行した後(24行目)、UncoverLower(R)とUncoverUpper(R)を実行する(31行目~32行目)。ただし、24行目では、厳密被覆計算部203は、CoverZDDの10行目でp∈Rにアクセスしたときの逆順でp∈Rにアクセスする。UncoverLower(R)及びUncoverUpper(R)はそれぞれCoverLower(R)及びCoverUpper(R)で行った操作を取り消す処理を行う。なお、UncoverLower(R)及びUncoverUpper(R)の詳細については後述する。
25行目~30行目を繰り返しでは、厳密被覆計算部203は、(p,HI)をParents(hi(p))に追加すると共に(p,LO)をParents(lo(p))に追加し(25行目~26行目)、各(q,t)∈Parents(p)に対して28行目~30行目を繰り返す(27行目)。
28行目~30行目を繰り返しでは、厳密被覆計算部203は、(q,t)をParents(lo(p))から削除した後(28行目)、t=LOであればlo(q)←pとし(29行目)、そうでなければhi(q)←pとする(30行目)。
次に、CoverLower(R)及びUncoverLower(R)のアルゴリズムを図14に示す。CoverLower(R)は、Rに含まれるノードセルのhi枝がZDDから削除されたものとみなして、当該ノードセルからlo枝又はhi枝を辿って到達可能なノードセルのplenの値を更新する処理である。また、plenの値の更新によってその値がゼロになった場合、そのノードセルに他のセルから到達不能とするための操作を行う。一方で、UncoverLower(R)はCoverLower(R)で行われた計算や操作を取り消す処理である。
CoverLower(R)について説明する。図14に示すように、厳密被覆計算部203は、Rに含まれるノードセルに対応するZDDノードの子孫ノード(つまり、子ノード以下のZDDノード)をトポロジカル順序に従ってVに格納し(2行目)、各p∈Vに対して4行目~12行目の繰り返しを実行する(3行目)。
4行目~12行目の繰り返しでは、厳密被覆計算部203は、l←plen(p)とした後(4行目)、Rに含まれるすべてのqでhi枝が削除されたと仮定してplen(p)を更新する(5行目)。また、厳密被覆計算部203は、i←item(p)とlen(i)←len(i)-(l-plen(p))・hlen(p)と更新する(6行目~7行目)。そして、厳密被覆計算部203は、5行目の更新によってplen(p)=0となった場合、down(up(p))←down(p)とup(down(p))←up(p)と更新し、(p,HI)をParents(hi(p))から削除すると共に(p,LO)をParents(lo(p))から削除する(8行目~12行目)。9行目~12行目の操作により、ノードセルpが他のセルから到達不能となる。
UncoverLower(R)について説明する。図14に示すように、厳密被覆計算部203は、Rに含まれるノードセルに対応するZDDノードの子孫ノードをトポロジカル順序に従ってVに格納すると共にHを空のリストとし(14行目~15行目)、各p∈Vに対して17行目~21行目の繰り返しを実行した後(16行目)、各p∈Hに対して23行目~26行目の繰り返しを実行する(22行目)。ただし、22行目では、Hに対してpを追加しときの逆順で23行目~26行目の繰り返しを実行する。
17行目~21行目の繰り返しでは、厳密被覆計算部203は、l←plen(p)とした後(17行目)、Rに含まれるすべてのqでhi枝が復元されたと仮定してplen(p)を更新する(18行目)。また、厳密被覆計算部203は、i←item(p)とlen(i)←len(i)+(plen(p)-l)・hlen(p)と更新し(19行目~20行目)、l=0かつplen(p)>0である場合はpをHに追加する(21行目)。
23行目~26行目の繰り返しでは、厳密被覆計算部203は、down(up(p))←pとup(down(p))←pと更新し、(p,HI)をParents(hi(p))に追加すると共に(p,LO)をParents(lo(p))に追加する(23行目~26行目)。23行目~26行目の操作により、plenの値がゼロから非ゼロに変化したノードセルpが他のセルから到達可能となる。
次に、CoverUpper(R)及びUncoverUpper(R)のアルゴリズムを図15に示す。CoverUpper(R)は、CoverLower(R)と同様に、Rに含まれるノードセルのhi枝がZDDから削除されたものとみなして、当該ノードセルからlo枝又はhi枝を辿って到達可能なノードセルのllen及びhlenの値を更新する処理である。また、hlenの値の更新によってその値がゼロになった場合、そのノードセルに他のセルから到達不能とするための操作を行う。一方で、UncoverUpper(R)はCoverUpper(R)で行われた計算や操作を取り消す処理である。
CoverUpper(R)について説明する。図15に示すように、厳密被覆計算部203は、Rに含まれるノードセルに対応するZDDノードの祖先ノード(つまり、親ノード以上のZDDノード)をトポロジカル順序の逆順に従ってVに格納すると共にHを空のリストし(2行目~3行目)、各p∈Vに対して5行目~9行目の繰り返しを実行した後(4行目)、各p∈Hに対して11行目~18行目の繰り返しを実行する(10行目)。ただし、10行目では、Hに対してpを追加しときの逆順で11行目~18行目の繰り返しを実行する。
5行目~9行目の繰り返しでは、厳密被覆計算部203は、l←hlen(p)とした後(5行目)、Rに含まれるすべてのqでhi枝が削除されたと仮定してhlen(p)及びllen(p)を更新する(6行目。)また、厳密被覆計算部203は、i←item(p)とlen(i)←len(i)-plen(p)・(l-hlen(p))と更新し(7行目~8行目)、l>0かつhlen(p)>0である場合はpをHに追加する(9行目)。
11行目~18行目の繰り返しでは、厳密被覆計算部203は、down(up(p))←down(p)とup(down(p))←up(p)と更新し(11行目~12行目)、各(q,t)∈Parents(p)に対して14行目~16行目の繰り返しを実行し(13行目)、(p,HI)をParents(hi(p))から削除すると共に(p,LO)をParents(lo(p))から削除する(17行目~18行目)。
14行目~16行目の繰り返しでは、厳密被覆計算部203は、(q,t)をParents(lo(p))に追加した後(14行目)、t=LOであればlo(q)←lo(p)とし(15行目)、そうでなければhi(q)←lo(p)とする(16行目)。
UncoverUpper(R)について説明する。図15に示すように、厳密被覆計算部203は、現在実行しているUncoverUpper(R)に対応するCoverUpper(R)で作成されたノードリスト(つまり、当該CoverUpper(R)で作成されたH)をHとし(20行目)、各p∈Hに対して22行目~29行目の繰り返しを実行する(21行目)。その後、厳密被覆計算部203は、Rに含まれるノードセルに対応するZDDノードの祖先ノードをトポロジカル順序の逆順に従ってVに格納し(30行目)、各p∈Vに対して32行目~35行目の繰り返しを実行する(31行目)。
22行目~29行目の繰り返しでは、厳密被覆計算部203は、down(up(p))←pとup(down(p))←pと更新し(22行目~23行目)、各(q,t)∈Parents(p)に対して25行目~27行目の繰り返しを実行した後(24行目)、(p,HI)をParents(hi(p))に追加すると共に(p,LO)をParents(lo(p))に追加する(28行目~29行目)。
25行目~27行目の繰り返しでは、厳密被覆計算部203は、(q,t)をParents(lo(p))から削除した後(25行目)、t=LOであればlo(q)←pとし(26行目)、そうでなければhi(q)←pとする(27行目)。
32行目~35行目の繰り返しでは、厳密被覆計算部203は、l←hlen(p)とした後(32行目)、Rに含まれるすべてのqでhi枝が復元されたと仮定してhlen(p)及びllen(p)を更新する(33行目。)また、厳密被覆計算部203は、i←item(p)とlen(i)←len(i)+plen(p)・(hlen(p)-l)と更新する(34行目~35行目)。
ステップS104:最後に、計算結果出力部204は、上記のステップS103で計算された解を予め決められた任意の出力先に出力する。
<まとめ>
以上のように、本実施形態に係る厳密被覆計算装置10は、ZDDで表現された厳密被覆問題を入力として、DLXに基づくアルゴリズムにより、その解を効率的に計算することができる。これは、DLXは集合族の大きさに比例する計算時間が必要である一方で、本実施形態に係る厳密被覆計算装置10は、集合族を効率よく圧縮した表現であるZDDを入力とするため、当該集合族に含まれる集合数が膨大であった場合でも高速に解を探索することが可能なためである。
以上のように、本実施形態に係る厳密被覆計算装置10は、ZDDで表現された厳密被覆問題を入力として、DLXに基づくアルゴリズムにより、その解を効率的に計算することができる。これは、DLXは集合族の大きさに比例する計算時間が必要である一方で、本実施形態に係る厳密被覆計算装置10は、集合族を効率よく圧縮した表現であるZDDを入力とするため、当該集合族に含まれる集合数が膨大であった場合でも高速に解を探索することが可能なためである。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
10 厳密被覆計算装置
101 入力装置
102 表示装置
103 外部I/F
103a 記録媒体
104 通信I/F
105 プロセッサ
106 メモリ装置
107 バス
201 問題入力部
202 入力形式作成部
203 厳密被覆計算部
204 計算結果出力部
101 入力装置
102 表示装置
103 外部I/F
103a 記録媒体
104 通信I/F
105 プロセッサ
106 メモリ装置
107 バス
201 問題入力部
202 入力形式作成部
203 厳密被覆計算部
204 計算結果出力部
Claims (6)
- 厳密被覆問題の解を計算する厳密被覆計算方法であって、
前記厳密被覆問題の対象となる集合と、前記集合の部分集合で構成される集合族とのゼロサプレス型二分決定グラフ表現を入力する入力手順と、
前記ゼロサプレス型二分決定グラフ表現に基づいて、所定のデータ構造のデータを作成する作成手順と、
前記データを用いて、DLXに基づく探索アルゴリズムにより、前記厳密被覆問題の解を計算する計算手順と、
をコンピュータが実行する厳密被覆計算方法。 - 前記作成手順は、
前記集合に含まれるアイテムを表すアイテムセルの二重連結リストと、前記集合族を表現するゼロサプレス型二分決定グラフのノードを表すノードセルとで構成されるデータ構造のデータを作成する、請求項1に記載の厳密被覆計算方法。 - 前記作成手順は、
前記二重連結リストと、前記集合族を表現するゼロサプレス型二分決定グラフのノード間の関係を表すポインタと前記ゼロサプレス型二分決定グラフの特定のノード間の経路の数が格納される変数とを持つノードセルとで構成されるデータ構造のデータを作成する、請求項2に記載の厳密被覆計算方法。 - 前記計算手順は、
DLXのCover手続きとUncover手続きをゼロサプレス型二分決定グラフにそれぞれ拡張したCoverZDD手続きとUncoverZDDを含む探索アルゴリズムにより、前記厳密被覆問題の解を計算する、請求項1乃至3の何れか一項に記載の厳密被覆計算方法。 - 厳密被覆問題の解を計算する厳密被覆計算装置であって、
前記厳密被覆問題の対象となる集合と、前記集合の部分集合で構成される集合族とのゼロサプレス型二分決定グラフ表現を入力する入力部と、
前記ゼロサプレス型二分決定グラフ表現に基づいて、所定のデータ構造のデータを作成する作成部と、
前記データを用いて、DLXに基づく探索アルゴリズムにより、前記厳密被覆問題の解を計算する計算部と、
を有する厳密被覆計算装置。 - コンピュータに、請求項1乃至4の何れか一項に記載の厳密被覆計算方法を実行させるプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2021/003179 WO2022162860A1 (ja) | 2021-01-29 | 2021-01-29 | 厳密被覆計算方法、厳密被覆計算装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2022162860A1 JPWO2022162860A1 (ja) | 2022-08-04 |
JP7494945B2 true JP7494945B2 (ja) | 2024-06-04 |
Family
ID=82652804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022577940A Active JP7494945B2 (ja) | 2021-01-29 | 2021-01-29 | 厳密被覆計算方法、厳密被覆計算装置及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7494945B2 (ja) |
WO (1) | WO2022162860A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018112784A (ja) | 2017-01-06 | 2018-07-19 | 日本電信電話株式会社 | 厳密敷き詰め計算装置、方法、及びプログラム |
-
2021
- 2021-01-29 JP JP2022577940A patent/JP7494945B2/ja active Active
- 2021-01-29 WO PCT/JP2021/003179 patent/WO2022162860A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018112784A (ja) | 2017-01-06 | 2018-07-19 | 日本電信電話株式会社 | 厳密敷き詰め計算装置、方法、及びプログラム |
Non-Patent Citations (1)
Title |
---|
NISHINO, Masaaki et al.,"Dancing with Decision Diagrams: A Combined Approach to Exact Cover",Proceedings of the AAAI Conference on Artificial Intelligence [online],Associaction for the Advancement of Artificial Intelligence,2017年02月12日,Vol. 31, No. 1,pp. 868-874,[検索日 2021.03.26], インターネット: <URL: https://ojs.aaai.org/index.php/AAAI/article/view/10662> |
Also Published As
Publication number | Publication date |
---|---|
JPWO2022162860A1 (ja) | 2022-08-04 |
WO2022162860A1 (ja) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Khaouid et al. | K-core decomposition of large networks on a single PC | |
Kissinger et al. | CNOT circuit extraction for topologically-constrained quantum memories | |
CN109685204B (zh) | 图像处理方法及装置、存储介质及电子设备 | |
EP3029614B1 (en) | Parallel development and deployment for machine learning models | |
US11010527B2 (en) | Optimization of a quantum circuit by inserting swap gates | |
Weigt et al. | Message passing for vertex covers | |
JP2023546040A (ja) | データ処理方法、装置、電子機器、及びコンピュータプログラム | |
Iverson et al. | Evaluation of connected-component labeling algorithms for distributed-memory systems | |
CN109189327B (zh) | 区块链数据的压缩处理方法和装置 | |
CN116822422A (zh) | 数字逻辑电路的分析优化方法及相关设备 | |
JP7494945B2 (ja) | 厳密被覆計算方法、厳密被覆計算装置及びプログラム | |
CN116932988B (zh) | 组合优化问题求解方法、装置、存储介质和电子设备 | |
Wang et al. | Lnetwork: an efficient and effective method for constructing phylogenetic networks | |
Ahmed et al. | ISSP-tree: an improved fast algorithm for constructing a complete prefix tree using single database scan | |
CN111028092A (zh) | 基于Louvain算法的社区发现方法、计算机设备及其可读存储介质 | |
JP6709740B2 (ja) | 厳密敷き詰め計算装置、方法、及びプログラム | |
Gendreau et al. | An efficient implicit enumeration algorithm for the maximum clique problem | |
CN115983392A (zh) | 量子程序映射关系的确定方法、装置、介质及电子装置 | |
Gill et al. | Comparative study of ant colony and genetic algorithms for VLSI circuit partitioning | |
WO2023017565A1 (ja) | 信頼性計算方法、信頼性計算装置、及びプログラム | |
Bogle et al. | A parallel graph algorithm for detecting mesh singularities in distributed memory ice sheet simulations | |
JP5736336B2 (ja) | 行列ベクトル積演算装置、行列ベクトル積演算方法、及び行列ベクトル積演算プログラム | |
JP2009301557A (ja) | 学習システム | |
Lamm et al. | Communication-efficient Massively Distributed Connected Components | |
JP7491390B2 (ja) | 秘密グループ分け装置、秘密グループ分けシステム、秘密グループ分け方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230516 |
|
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: 20240423 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240506 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7494945 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |