JP2018112784A - 厳密敷き詰め計算装置、方法、及びプログラム - Google Patents
厳密敷き詰め計算装置、方法、及びプログラム Download PDFInfo
- Publication number
- JP2018112784A JP2018112784A JP2017001284A JP2017001284A JP2018112784A JP 2018112784 A JP2018112784 A JP 2018112784A JP 2017001284 A JP2017001284 A JP 2017001284A JP 2017001284 A JP2017001284 A JP 2017001284A JP 2018112784 A JP2018112784 A JP 2018112784A
- Authority
- JP
- Japan
- Prior art keywords
- node
- strict
- subproblem
- branch
- zdd
- 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
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 120
- 238000000034 method Methods 0.000 title abstract description 28
- 239000011159 matrix material Substances 0.000 claims abstract description 39
- 238000010276 construction Methods 0.000 claims description 47
- 238000010586 diagram Methods 0.000 claims description 15
- 230000001629 suppression Effects 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 description 49
- 230000006870 function Effects 0.000 description 7
- 239000013598 vector Substances 0.000 description 4
- 201000003231 brachydactyly type D Diseases 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
Description
に対して
を満たすようなS*⊆Sを見つける問題である。
であるような集合U,U’に対して、U∪U’の部分集合からなる集合族Sの部分集合のうち、
を満たすようなS*⊆Sを見つける問題である。
又は直前の前記行番号に対する部分問題を解いたときに前記ZDD構築演算部により格納された前記ノードをlo枝の指すノードとした前記3つ組データを、前記ZDD構築演算部に入力し、前記部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び、前記ZDD構築演算部により格納された前記ノードを示すエントリのペアを、前記キャッシュテーブルに格納する再帰計算部と、を備える。
又は直前の前記行番号に対する部分問題を解いたときに前記ZDD構築演算部により格納された前記ノードをlo枝の指すノードとした前記3つ組データを、前記ZDD構築演算部に入力し、前記部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び前記ZDD構築演算部により格納された前記ノードを示すエントリのペアを、前記キャッシュテーブルに格納するステップと、を含む。
又は直前の行番号に対する部分問題を解いたときにZDD構築演算部により格納されたノードをlo枝の指すノードとした3つ組データを、ZDD構築演算部に入力し、部分問題を表す部分行列中に存在する列番号の集合を示すキー、及びZDD構築演算部により格納されたノードを示すエントリのペアを、キャッシュテーブルに格納する。
本実施形態においては、DLXを実行しながら、キャッシュテーブルを用いて、厳密敷き詰め問題、もしくは、一般化厳密敷き詰め問題の解の集合を表現するZDDを構築する。構築されたZDDは、全ての解集合を有向非巡回グラフとして表現する。このZDDは、DLXの実行中に出現する部分問題の全ての解の集合を部分グラフとして含んでいる。そのため、部分問題の解を格納するキャッシュテーブルは、部分問題の解集合を表す部分グラフの根ノードを記憶しておけばよく、キャッシュテーブルの記憶容量の増大を抑制することができる。また、ZDDを用いることで部分問題の部分解の集合から主問題の解を求めることも定数時間で実行できるため、DLXを高速化することが可能となる。
図1に示すように、厳密敷き詰め問題は、二値行列を用いて表現することができる。
図2に示すように、DLXは手続きSearch(A,R)を、Aを更新しながら再帰的に実行することによって、全ての可能な解を発見する。一例として、図1に示す行列を入力としてDLXを実行したときの処理を示す。
が得られる。
が得られる。
ZDDは、集合族を有向非巡回グラフとして表現するデータ構造である。
終端ノードと
終端ノードの2種類の終端ノードがあり、1つのZDDには各終端ノードが高々1つずつ存在する。分岐ノードは、終端ノードではないノードのことであり、各分岐ノードにはそのノードが対応する全体集合の要素を表すラベルが付与される。また、各分岐ノードにはそのノードを始点とするアークが必ず2つ存在し、それぞれlo枝、hi枝と呼ぶ。図3では各分岐ノードは円として表現され、hi枝は実線、lo枝は点線によって表現される。
終端ノードまでの各経路が、ZDDが表現する集合族に含まれる各部分集合に対応している。
というテーブルを用意することで表現することができる。
図4は、第1の実施形態に係る厳密敷き詰め計算装置10の機能的な構成の一例を示すブロック図である。
図4に示すように、厳密敷き詰め計算装置10は、問題入力部12と、再帰計算部14と、ZDD構築演算部16と、一時計算結果記憶部18と、計算結果出力部20と、を備えている。本第1の実施形態においては、厳密敷き詰め問題の場合を例示して説明する。
又は直前の行番号に対する部分問題を解いたときにZDD構築演算部16により格納されたノードをlo枝の指すノードとした3つ組を、ZDD構築演算部16に入力する。
また、再帰計算部14は、部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び、ZDD構築演算部16により格納されたノードを示すエントリのペアを、キャッシュテーブル18Aに格納する。
図6に示す厳密敷き詰め計算アルゴリズムは、上記ステップ102の処理を行うためのアルゴリズムであり、再帰計算部14において処理される。
図7に示すサブルーチンは、図6に示す厳密敷き詰め計算アルゴリズムの処理中にZDD構築演算部16において処理される。
そして、再帰計算部14は、入力された二値行列Xを入力として、Search(X)を実行し(メインアルゴリズム20行目)、実行結果として出力されたノードzを根ノードとするZDDを、厳密敷き詰め問題の全ての解の集合を表現するZDDとして出力する。
再帰計算部14は、メインアルゴリズム4行目で二値行列Aが空であるか否かを判定し、Aが空である場合、ZDD構築演算部16でサブアルゴリズム1行目のサブルーチンTop()を呼び出し、ZDDノード
を出力する。一方、Aが空でない場合、ZDD構築演算部16でサブアルゴリズム5行目のサブルーチンCheckCache(col(A),C)を呼び出す。そして、ZDD構築演算部16は、サブアルゴリズム6行目に示すように、キーの値がcol(A)と一致する要素(キー,エントリ)のペアがキャッシュテーブルC中に存在しないか否かを調べる。
で初期化する以外はDLXと同一である。
yが、
でない場合には、解に含めた行rをラベルとし、部分問題の解を表すZDDの根ノードyをhi枝の指すノードとし、
又は直前の行番号に対する部分問題を解いたときにZDD構築演算部16により格納されたノードxをlo枝の指すノードとした3つ組を入力として、Unique(r、x、y、Z)を実行し、当該3つ組に対応するZDDノードを、xとする。そして、11、13行目の処理でAから削除された行、列を復元し、列cを1とする他の行rについて、上述したメインアルゴリズム9〜17行目の処理を繰り返す。
上記第1の実施形態では、厳密敷き詰め問題を例示して説明したが、本第2の実施形態では、一般化厳密敷き詰め問題を例示して説明する。一般化厳密敷き詰め問題を計算する場合における厳密敷き詰め計算装置の構成及び全体処理フローについても、上記第1の実施形態に係る厳密敷き詰め計算装置10と略同様である。
12 問題入力部
14 再帰計算部
16 ZDD構築演算部
18 一時計算結果記憶部
18A キャッシュテーブル
18B ユニークテーブル
20 計算結果出力部
Claims (5)
- 二値行列により表される厳密敷き詰め問題又は一般化厳密敷き詰め問題の部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び、前記部分問題の解となる行番号の集合からなる集合族を表すゼロサプレス型二分決定グラフ(Zero-suppressed Binary Decision Diagram)の根ノードを示すエントリのペアを保持するキャッシュテーブルと、
前記厳密敷き詰め問題又は一般化厳密敷き詰め問題の解となる行番号の集合からなる集合族を表すゼロサプレス型二分決定グラフに関する各ノードの情報を保持するユニークテーブルと、
ラベル、hi枝の指すノード、及びlo枝の指すノードの3つの項目を1組とする3つ組データを入力とし、前記3つ組データに対応するノードの情報を前記ユニークテーブルに格納するZDD構築演算部と、
厳密敷き詰め問題又は一般化厳密敷き詰め問題を表す二値行列の入力を受け付ける問題入力部と、
前記問題入力部により入力を受け付けた二値行列に基づいて、選択される列番号を1とする行番号の各々に対し、
前記行番号を解に含めたときに得られる前記部分問題を求め、前記求められた部分問題を再帰的に解く再帰計算部であって、
前記求められた部分問題を解くときに、前記部分問題を表す部分行列中に存在する列番号の集合に対応するキーを用いて、前記キャッシュテーブルから検索し、前記キーに対応する前記ペアが検索された場合、前記ペアのエントリを、前記部分問題の解を表すゼロサプレス型二分決定グラフの根ノードとし、
前記キーに対応する前記ペアが検索されなかった場合、前記部分問題を表す部分行列に基づいて、選択される列番号を1とする行番号の各々に対し、前記行番号を解に含めたときに得られる前記部分問題を求め、前記求められた部分問題を解き、前記解に含めた前記行番号をラベルとし、前記部分問題の解を表す前記ゼロサプレス型二分決定グラフの根ノードをhi枝の指すノードとし、
又は直前の前記行番号に対する部分問題を解いたときに前記ZDD構築演算部により格納された前記ノードをlo枝の指すノードとした前記3つ組データを、前記ZDD構築演算部に入力し、
前記部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び、前記ZDD構築演算部により格納された前記ノードを示すエントリのペアを、前記キャッシュテーブルに格納する再帰計算部と、
を備えた厳密敷き詰め計算装置。 - 前記ユニークテーブルは、前記ノードの情報として、ノードID、ラベル、hi枝の指すノード、及びlo枝の指すノードの4つの項目を1組とする4つ組データを保持し、
前記ZDD構築演算部は、ラベル、hi枝の指すノード、及びlo枝の指すノードの3つの項目を1組とする3つ組データを入力とし、前記3つ組データに対応するノードの情報を前記ユニークテーブルから検索し、
前記3つ組データに対応する前記ノードの情報が検索されなかった場合、前記3つ組データに対応するノードを作成して、前記ノードの情報を、前記ユニークテーブルに格納する請求項1に記載の厳密敷き詰め計算装置。 - 前記再帰計算部は、前記キャッシュテーブルに保持されている複数のペアの個数が上限に達している状態において新しいペアを追加する場合、前記複数のペアの1つに代えて、前記新しいペアを追加する請求項1又は2に記載の厳密敷き詰め計算装置。
- 二値行列により表される厳密敷き詰め問題又は一般化厳密敷き詰め問題の部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び、前記部分問題の解となる行番号の集合からなる集合族を表すゼロサプレス型二分決定グラフ(Zero-suppressed Binary Decision Diagram)の根ノードを示すエントリのペアを保持するキャッシュテーブルと、
前記厳密敷き詰め問題又は一般化厳密敷き詰め問題の解となる行番号の集合からなる集合族を表すゼロサプレス型二分決定グラフに関する各ノードの情報を保持するユニークテーブルと、を備えた厳密敷き詰め計算装置における厳密敷き詰め計算方法であって、
ZDD構築演算部が、ラベル、hi枝の指すノード、及びlo枝の指すノードの3つの項目を1組とする3つ組データを入力とし、前記3つ組データに対応するノードの情報を前記ユニークテーブルに格納するステップと、
問題入力部が、厳密敷き詰め問題又は一般化厳密敷き詰め問題を表す二値行列の入力を受け付けるステップと、
再帰計算部が、前記問題入力部により入力を受け付けた二値行列に基づいて、選択される列番号を1とする行番号の各々に対し、
前記行番号を解に含めたときに得られる前記部分問題を求め、前記求められた部分問題を再帰的に解く場合において、
前記求められた部分問題を解くときに、前記部分問題を表す部分行列中に存在する列番号の集合に対応するキーを用いて、前記キャッシュテーブルから検索し、前記キーに対応する前記ペアが検索された場合、前記ペアのエントリを、前記部分問題の解を表すゼロサプレス型二分決定グラフの根ノードとし、
前記キーに対応する前記ペアが検索されなかった場合、前記部分問題を表す部分行列に基づいて、選択される列番号を1とする行番号の各々に対し、前記行番号を解に含めたときに得られる前記部分問題を求め、前記求められた部分問題を解き、前記解に含めた前記行番号をラベルとし、前記部分問題の解を表す前記ゼロサプレス型二分決定グラフの根ノードをhi枝の指すノードとし、
又は直前の前記行番号に対する部分問題を解いたときに前記ZDD構築演算部により格納された前記ノードをlo枝の指すノードとした前記3つ組データを、前記ZDD構築演算部に入力し、
前記部分問題を表す部分行列中に存在する列番号の集合を示すキー、及び、前記ZDD構築演算部により格納された前記ノードを示すエントリのペアを、前記キャッシュテーブルに格納するステップと
を含む厳密敷き詰め計算方法。 - コンピュータを、請求項1〜3のいずれか1項に記載の厳密敷き詰め計算装置の各部として機能させるための厳密敷き詰め計算プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017001284A JP6709740B2 (ja) | 2017-01-06 | 2017-01-06 | 厳密敷き詰め計算装置、方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017001284A JP6709740B2 (ja) | 2017-01-06 | 2017-01-06 | 厳密敷き詰め計算装置、方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018112784A true JP2018112784A (ja) | 2018-07-19 |
JP6709740B2 JP6709740B2 (ja) | 2020-06-17 |
Family
ID=62912279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017001284A Active JP6709740B2 (ja) | 2017-01-06 | 2017-01-06 | 厳密敷き詰め計算装置、方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6709740B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022162860A1 (ja) * | 2021-01-29 | 2022-08-04 | 日本電信電話株式会社 | 厳密被覆計算方法、厳密被覆計算装置及びプログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06215065A (ja) * | 1992-10-28 | 1994-08-05 | Nippon Telegr & Teleph Corp <Ntt> | 論理関数データ処理装置 |
JP2012243040A (ja) * | 2011-05-18 | 2012-12-10 | Nippon Telegr & Teleph Corp <Ntt> | 演算装置、演算方法および演算プログラム |
-
2017
- 2017-01-06 JP JP2017001284A patent/JP6709740B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06215065A (ja) * | 1992-10-28 | 1994-08-05 | Nippon Telegr & Teleph Corp <Ntt> | 論理関数データ処理装置 |
JP2012243040A (ja) * | 2011-05-18 | 2012-12-10 | Nippon Telegr & Teleph Corp <Ntt> | 演算装置、演算方法および演算プログラム |
Non-Patent Citations (7)
Title |
---|
DONALD E. KNUTH: "Dancing Links", [ONLINE], JPN6019050943, 15 November 2000 (2000-11-15), pages 26, ISSN: 0004182932 * |
SHIN-ICHI MINATO: "Zero-Suppressed BDDs for Set Manipulation in Combinatorial Problems", PROCEEDINGS OF THE 30TH INTERNATIONAL DESIGN AUTOMATION CONFERENCE(DAC'93), JPN7019004156, 14 June 1993 (1993-06-14), pages 272 - 277, XP000371320, ISSN: 0004182933 * |
伝住周平,津田宏治,有村博紀,湊真一: "DAGによる文字列集合の圧縮表現に対する効率的な索引アルゴリズム", 第92回人工知能基本問題研究会資料(SIG-FPAI-B303), JPN6019050936, 27 January 2014 (2014-01-27), JP, pages 79 - 84, ISSN: 0004182929 * |
奥乃博,湊真一: "二分決定グラフによる制約充足問題の解法", 情報処理学会論文誌, vol. 36, no. 8, JPN6019050938, 15 August 1995 (1995-08-15), JP, pages 1789 - 1799, ISSN: 0004182930 * |
松永涼,斎藤寿樹,近藤広樹,中野浩太郎: "ZDDを用いたExact Cover問題に対するパレート最適な解の列挙", 情報処理学会研究報告, vol. Vol.2014-AL-147,No.16, JPN6019050933, 24 February 2014 (2014-02-24), JP, pages 1 - 8, ISSN: 0004182928 * |
湊真一: "計算機上でのBDDの処理手法", 情報処理, vol. 第34巻,第5号,(通巻339号), JPN6019050941, 15 May 1993 (1993-05-15), JP, pages 593 - 599, ISSN: 0004182931 * |
菅谷輝治,戸田貴久,湊真一: "ハイパーグラフにおける極大独立集合列挙のためのZDD構築手法", 電子情報通信学会技術研究報告, vol. Vol.114,No.509,(COMP2014-42〜51), JPN6019050930, 2 March 2015 (2015-03-02), JP, pages 19 - 27, ISSN: 0004182927 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022162860A1 (ja) * | 2021-01-29 | 2022-08-04 | 日本電信電話株式会社 | 厳密被覆計算方法、厳密被覆計算装置及びプログラム |
JP7494945B2 (ja) | 2021-01-29 | 2024-06-04 | 日本電信電話株式会社 | 厳密被覆計算方法、厳密被覆計算装置及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP6709740B2 (ja) | 2020-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gupta et al. | Cuts, trees and ℓ1-embeddings of graphs | |
JP6028567B2 (ja) | データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法 | |
Banerjee et al. | Space efficient linear time algorithms for BFS, DFS and applications | |
Apt et al. | A classification of weakly acyclic games | |
Blikstad et al. | Fast algorithms via dynamic-oracle matroids | |
JP2018112784A (ja) | 厳密敷き詰め計算装置、方法、及びプログラム | |
Baswana et al. | On dynamic DFS tree in directed graphs | |
JP6044628B2 (ja) | 乱数発生装置、乱数発生方法、オブジェクト配置装置、並びにコンピュータ・プログラム | |
JP5964781B2 (ja) | 検索装置、検索方法および検索プログラム | |
Gao et al. | Optimal ternary constant-composition codes of weight four and distance five | |
JP6418658B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
Mirzaei et al. | Fast construction of near parsimonious hybridization networks for multiple phylogenetic trees | |
Baidoo et al. | Solving the TSP using traditional computing approach | |
US8661061B2 (en) | Data structure, data structure generation method, information processing apparatus, information processing system, and computer-readable storage medium having stored therein information processing program | |
Bose et al. | The power and limitations of static binary search trees with lazy finger | |
WO2018012413A1 (ja) | 類似データ検索装置、類似データ検索方法および記録媒体 | |
Bose et al. | The power and limitations of static binary search trees with lazy finger | |
JP6663875B2 (ja) | 問題解決装置、方法、及びプログラム | |
JP2018081611A (ja) | 辞書検索方法、装置、およびプログラム | |
JP7494945B2 (ja) | 厳密被覆計算方法、厳密被覆計算装置及びプログラム | |
Koganti et al. | Searching in a Sorted Linked List | |
Siqueira et al. | Heuristics for genome rearrangement distance with replicated genes | |
Arrighi et al. | Three is enough for steiner trees | |
Gutin et al. | Greedy like algorithms for the traveling salesman and multidimensional assignment problems | |
Jackovich et al. | Comparing greedy constructive heuristic subtour elimination methods for the traveling salesman problem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170111 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190131 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20190131 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20190131 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200212 |
|
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: 20200519 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200525 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6709740 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |