JP6663875B2 - 問題解決装置、方法、及びプログラム - Google Patents

問題解決装置、方法、及びプログラム Download PDF

Info

Publication number
JP6663875B2
JP6663875B2 JP2017039366A JP2017039366A JP6663875B2 JP 6663875 B2 JP6663875 B2 JP 6663875B2 JP 2017039366 A JP2017039366 A JP 2017039366A JP 2017039366 A JP2017039366 A JP 2017039366A JP 6663875 B2 JP6663875 B2 JP 6663875B2
Authority
JP
Japan
Prior art keywords
items
node
upper limit
divided
item list
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
JP2017039366A
Other languages
English (en)
Other versions
JP2018147088A (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 JP2017039366A priority Critical patent/JP6663875B2/ja
Publication of JP2018147088A publication Critical patent/JP2018147088A/ja
Application granted granted Critical
Publication of JP6663875B2 publication Critical patent/JP6663875B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、問題解決装置、方法、及びプログラムに係り、特に、アイテム間の選択に制約があるナップサック問題を解決する問題解決装置、方法、及びプログラムに関する。
組合せ最適化は計算機の産業応用において一つの重要な分野である。なかでも、ナップサック問題はさまざまな現実的な問題に対応付けることができ、ナップサック問題として定式化した上で解を得ることで、現実の問題に適用することが従来より広く行われていた。ナップサック問題とは、重さと価値がそれぞれ定まっているアイテム群と、重さの上限が設定された袋が与えられた場合に、選択したアイテムの価値の和が最大となるようなアイテムの組合せを決定する問題である。
例えば、計算機で自動的に文書の要約を行うという処理は、文書中の各単語をアイテムとし、単語の長さをアイテムの重さ、単語の重要度をアイテムの価値、事前に設定した要約文の最大長をナップサックの容量とするようなナップサック問題として処理することができる。別の例としては、電力不足時に、発電所がまかなえる範囲で最大の需要に応えるような需要家の選択の方法などもナップサック問題の一種として捉えることができる。
重さが整数で与えられ、各アイテムは2度以上選択できないとした場合、従来より、重さ×アイテムの数だけのマスを持つ表を備えた手法が知られている。各マスには2種類の情報を記録する。ひとつは各マスへ至るまでの最大価値を記録であり、もうひとつは、そのマスへ至る前の前のマスの番地である。すべてのアイテムについてマスを埋める作業を終えた後、最大価値を持つマスから、後ろ向きにすべて辿っていくことで(バックトラック)、どのアイテムが最終的に選択されたかを知ることができる。
さて、上記は単純な設定のナップサック問題の応用と、解法について述べた。しかし、現実の設定では、単純な設定のナップサック問題だけではなく、アイテムの選択にさらなる制約が課される場合がある。
例えば、上述の文書要約では単純に重要な単語のみを選択したのでは、選択された単語の結合が文法的に意味をなさない可能性があり、そのため、元の文や文書が持つ単語間の親子関係を考慮することが考えられる。このような設定は、子の単語選択するためにはその親の単語も選択しなければならないような追加の制約を持つようなナップサック問題としてとらえることができる。
あるいは、上述の電力網の例においても各需要家は独立した存在ではなくネットワークで繋がっているのであるから、ある需要家への給電を行うとすれば必然的に(芋づる式に)給電を行わざるをえない需要家が現れる場合がある。これも、ナップサックの容量という制約に加えて、ネットワークの形状に関する制約を持つようなナップサック問題ととらえることができる。
このようなアイテムの選択に関する制約がある場合のナップサック問題について、従来より、高速に厳密解を求める手法が知られている。非特許文献1、及び非特許文献2に示す従来技術では、アイテムの選択に関する制約を二分決定図(Binary Decision Diagram,BDD)と呼ばれるグラフ構造を保持し、表のマス埋めと同時にこのBDDを参照する方法が取られている。単純な設定のナップサック問題と比べ、高々BDDの「幅」と称する値を乗じただけの時間と記憶域によって、アイテムの選択に関する制約つきのナップサック問題を解いている。
「ご予算にあう最高の詰合せをすぐに作れます」http://www.kecl.ntt.co.jp/openhouse/2015/exhibition/13/poster.pdf(2017/2/2参照) Masaaki Nishino, Norihito Yasuda, Shin-ichi Minato, and Masaaki Nagata. "BDD-constrained search: a unified approach to constrained shortest path problems". In Proceedings of the Twenty-Ninth AAAI Conference on Artificial Intelligence (AAAI'15). AAAI Press 1219-1225. Ulrich Pferschy, "Dynamic programming revisited: improving knapsack algorithms". Computing 63.4 (1999): 419-430.
しかし、上記の手法は結局、「重さ×アイテムの数×「幅(アイテムに係るBDDの節点の総数)」」という数のマスに、最適値とバックトラックのための情報を保持する必要がある。このため、必要な記憶域が大きいという問題があった。
一方、アイテム間の選択に制約が課されない、単純な設定のナップサック問題については従来より、記憶域を削減する方法が知られている。非特許文献3に示す従来技術では、最適解を与えるような経路の中間地点を分割統治法により再帰的に求めていくことで、必要な記憶域を削減している。しかし、この方法は、適用可能な問題が単純な設定のナップサック問題に限られており、上述のような現実の問題に伴って出現するアイテム間の選択に関する制約を取り扱うことができないという課題があった。
本発明は、上記問題点を解決するために成されたものであり、必要な記憶域を抑えて、アイテム間の選択に制約があるナップサック問題を解決できる問題解決装置、方法、及びプログラムを提供することを目的とする。
上記目的を達成するために、第1の発明に係る問題解決装置は、価値と容量を持つアイテムの集合から、アイテム間の選択の制約条件の下で、容量上限C以下で価値を最大化するアイテムの部分集合上限を選択するナップサック問題を解決する問題解決装置であって、前記アイテム間の選択の制約条件である論理制約を表す、前記アイテムに対応するノードの各々を含む二分決定グラフを作成する論理制約グラフ作成部と、前記論理制約グラフ作成部によって作成された前記二分決定グラフに応じて前記アイテムを並べたアイテムリストに基づいて、前記二分決定グラフにおける、前記アイテムリストが表すアイテムの部分集合であって、前記容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算する求解部と、アイテムリストと、容量上限と、前記二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、前記探索範囲における、アイテムリストが表すアイテムの部分集合であって、前記容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノード、及び重み合計を決定する中間点決定部と、を含み、前記求解部は、前記アイテムリストと、前記容量上限Cと、前記二分決定グラフの根ノードと、1終端ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求め、前記アイテムリストを、前記中間ノードに対応するアイテムで半分に分け、前記容量上限Cを、前記重み合計で分け、前記二分決定グラフの探索範囲を、前記中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた前記探索範囲の開始ノード、及び終了ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求めることを再帰的に繰り返すことを特徴とする。
第1の発明に係る問題解決方法は、価値と容量を持つアイテムの集合から、アイテム間の選択の制約条件の下で、容量上限C以下で価値を最大化するアイテムの部分集合上限を選択するナップサック問題を解決する問題解決装置における問題解決方法であって、論理制約グラフ作成部が、前記アイテム間の選択の制約条件である論理制約を表す、前記アイテムに対応するノードの各々を含む二分決定グラフを作成するステップと、求解部が、前記論理制約グラフ作成部によって作成された前記二分決定グラフに応じて前記アイテムを並べたアイテムリストに基づいて、前記二分決定グラフにおける、前記アイテムリストが表すアイテムの部分集合であって、前記容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算するステップと、中間点決定部が、アイテムリストと、容量上限と、前記二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、前記探索範囲における、アイテムリストが表すアイテムの部分集合であって、前記容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノード、及び重み合計を決定するステップと、を含み、前記求解部が計算するステップは、前記アイテムリストと、前記容量上限Cと、前記二分決定グラフの根ノードと、1終端ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求め、前記アイテムリストを、前記中間ノードに対応するアイテムで半分に分け、前記容量上限Cを、前記重み合計で分け、前記二分決定グラフの探索範囲を、前記中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた前記探索範囲の開始ノード、及び終了ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求めることを再帰的に繰り返すことを特徴とする。
第3の発明に係るプログラムは、第1の発明に係る問題解決装置の各部として機能させるためのプログラムである。
本発明の問題解決装置、方法、及びプログラムによれば、アイテムに対応するノードの各々を含む二分決定グラフを作成し、二分決定グラフに応じてアイテムを並べたアイテムリストに基づいて、二分決定グラフにおける、アイテムリストが表すアイテムの部分集合であって、容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算する場合において、アイテムリストと、容量上限と、二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、探索範囲における、アイテムリストが表すアイテムの部分集合であって、容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノード、及び重み合計を決定し、アイテムリストと、容量上限Cと、二分決定グラフの根ノードと、1終端ノードとを入力して、中間ノード、及び重み合計を求め、アイテムリストを、中間ノードに対応するアイテムで半分に分け、容量上限Cを、重み合計で分け、二分決定グラフの探索範囲を、中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた探索範囲の開始ノード、及び終了ノードとを入力して、中間ノード、及び重み合計を求めることを再帰的に繰り返すことにより、必要な記憶域を抑えて、アイテム間の選択に制約があるナップサック問題を解決できる、という効果が得られる。
本発明の実施の形態に係る問題解決装置の構成を示すブロック図である。 論理制約が課されたBDDの一例を示す図である。 求解部32の処理の流れを示す図である。 本発明の実施の形態に係る問題解決装置における問題解決処理ルーチンを示すフローチャートである。 本発明の実施の形態に係る問題解決装置における中間点決定処理ルーチンを示すフローチャートである。
以下、図面を参照して本発明の実施の形態を詳細に説明する。本発明の実施の形態の問題解決装置は、価値と容量を持つアイテムの集合から、アイテム間の選択の制約条件の下で、容量上限C以下で価値を最大化するアイテムの部分集合上限を選択するナップサック問題を解決する。
<本発明の実施の形態に係る問題解決装置の構成>
まず、本発明の実施の形態に係る問題解決装置の構成について説明する。図1に示すように、本発明の実施の形態に係る問題解決装置100は、CPUと、RAMと、後述する問題解決処理ルーチンを実行するためのプログラムや各種データを記憶したROMと、を含むコンピュータで構成することが出来る。この問題解決装置100は、機能的には図1に示すように入力部10と、演算部20と、出力部50とを備えている。
入力部10は、アイテム間の制約条件である論理制約を受け付ける。また、価値と容量を持つアイテムの集合と、容量上限Cとを受け付ける。
演算部20は、論理制約グラフ作成部30と、求解部32と、中間点決定部34とを含んで構成されている。
求解部32は、初期化部36と、再帰処理部38とを含んで構成されている。
論理制約グラフ作成部30は、アイテム間の選択の制約条件である論理制約を表す、アイテムに対応するノードの各々を含む二分決定グラフを作成する。
論理制約グラフ作成部30では、入力部10で受け付けたアイテム間の制約条件である論理制約を入力として、論理的な制約を表現したグラフを出力する。ここで、論理的な制約を表現したグラフの要件としては、アイテムの選択(ナップサックに入れる/入れない)に応じて辺を辿っていくことができるようなグラフであり、かつ、選択の結果辿った頂点が同じであれば、残りのアイテム間の選択に関して課される論理制約も同じであることを表現しているようなグラフであれば良い。本実施の形態では、論理式を表現するグラフとして当業者に広く知られている二分決定グラフ(BDD)を用いる場合について説明する。論理制約を入力として、その論理制約を表現したBDDを作成する技術は当業者に公知である。例えば、図2に、アイテムがx,x,xの3つがあり、これらのアイテム間に((xを選択かつxを選択)またはxを選択)という論理制約が課されている場合のBDDを示す。BDDでは、最上位の節点から、1終端までの経路によって論理制約を満たすような割り当てを表現してある。各節点からは2つの枝が出ており、HI枝(図2中の実線)とLO枝(図2中の点線)と呼ばれる。HI枝は、その変数を選択する(その変数に1を割り当てる)ことを示し、LO枝は選択しない(その変数に0を割り当てる)ことを表現する。こうして作成した論理制約を持つ二分決定グラフを出力する。ここで、従来手法、及び本発明の実施の形態における「幅」について補足しておく。BDDにおける「幅」は、各アイテムを論理変数となるようなBDDを構成した場合に、ひとつのアイテムの0/1に関与するBDDの節点の総数にあたる。例えば、図2のBDDにおいては、アイテムx,x,xに関与するBDD節点数はそれぞれ1,2,1であるため、このBDDの幅はxのBDD節点数である2となる。
求解部32は、論理制約グラフ作成部30によって作成された二分決定グラフに応じてアイテムを並べたアイテムリストに基づいて、二分決定グラフにおける、アイテムリストが表すアイテムの部分集合であって、容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算する。
求解部32は、上記経路を計算するために、アイテムリストIと、容量上限Cと、二分決定グラフの根ノード(root)と、1終端ノード(Be)とを中間点決定部34に入力して、中間ノード、及び重み合計を求める。そして、アイテムリストIを、中間ノードに対応するアイテムで半分に分け、容量上限Cを、重み合計で分け、二分決定グラフの探索範囲を、中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた探索範囲の開始ノード、及び終了ノードとを中間点決定部34に入力して、中間ノード、及び重み合計を求めることを再帰的に繰り返す。
求解部32では、問題と、論理制約グラフを入力として、制約を満たす中で、価値の和が最大となるようなアイテムの組合せを決定する。最適解を与えるような組合せは、(これまでに取捨選択したアイテムの数,累積重さ,BDD節点)の3つ組を座標として持つようなマス(あるいはグラフノードとして捉えても良い)を持つ表の遷移において、開始座標(0,0,root)から価値が最大となるような座標(アイテム総数,累積重さ,1終端)に至るまでの経路に相当する。非特許文献2の従来技術においては、最終的にバックトラックによってこの経路を求めるため、最適解に至った履歴をすべて保存していた。これに対し、本発明の実施の形態の求解部32では、最適解を与えるような中間点のみを中間点決定部34により決定し、中間点を再帰的に求めていく。
求解部32の処理の流れを図3に示す。求解部32では、まず、初期化部36で、BDD探索終了節点Be、BDD探索開始節点root、ナップサック容量C、及び出力リストRを初期化する。次に、再帰処理部38により、探索範囲のアイテムリストIと、容量上限Cと、二分決定グラフのうちの探索範囲の開始ノード(BDD探索開始節点root)、及び終了ノード(BDD探索終了節点Be)とを中間点決定部34への入力として、最初に問題全体の最適解を与えるような中間点を得る。得られた中間点(Cm(累積重さ),Bm(BDD節点))を出力リストRへ追加する。再帰処理部38は、アイテムリストを中間点で半分に分けた問題について、前半分では、アイテムリスト(Iの前半分)、ナップサック容量(Cm)、BDD探索開始節点(root)、及びBDD探索終了節点(Bm)を中間点決定部34へ入力し、中間点を求め、出力リストRへ追加する。後半分では、アイテムリスト(Iの後半分)、ナップサック容量(C−Cm)、BDD探索開始節点(Bm)、及びBDD探索終了節点(Be)を中間点決定部34へ入力し、中間点を求め、出力リストRへ追加する。以後、再帰処理部38は、前半分と後半分との中間点を求める操作をアイテムリストの長さが1になるまで再帰的に繰り返す。すべての再帰のプロセスが終了した後、出力リストRを出力部50に出力する。
中間点決定部34は、探索範囲のアイテムリストと、容量上限Cと、二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、探索範囲における、アイテムリストが表すアイテムの部分集合であって、容量上限C以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノードBm、及び中間ノードBmまでの重み合計Cmを決定する。
中間点決定部34では、部分問題についてその部分問題の最適解を与えるような中間点を返す。処理の詳細については後述する。中間点決定部34は入力として、アイテムのリストI、BDD探索開始節点root、及びBDD探索終了節点Beを受取り、出力として、最適解を与えるような経路のうち、アイテムリストIを半分処理した時点での中間点Bmと、中間点Bmまでの重み合計Cmとの対を返す。中間点決定部34では、2種類の配列T及びMを更新する作業を繰り返す。配列Tは、アイテムを順に「選択する場合」「しない場合」について判定し、累積重さが同じもののうち、最大の価値の和を保持する。配列Mは中間点で通った点を保持する。基本的な流れは従来技術(非特許文献2)と同様である。すべての履歴を保持(非特許文献2では配列B)しない代わりに、アイテムリストを半分処理した時点での中間点を保持する点が異なる。
<本発明の実施の形態に係る問題解決装置の作用>
次に、本発明の実施の形態に係る問題解決装置100の作用について説明する。入力部10においてアイテム間の制約条件である論理制約と、価値と容量を持つアイテムと、容量上限Cとを受け付けると、問題解決装置100は、図4に示す問題解決処理ルーチンを実行する。
まず、ステップS100では、アイテム間の選択の制約条件である論理制約を表す、アイテムに対応するノードの各々を含む二分決定グラフを作成する。
次に、ステップS102では、求解部32の初期化部36は、BDD探索終了節点Be、BDD探索開始節点root、ナップサック容量C、及び出力リストRを初期化する。
ステップS104では、求解部32は、ステップS100で作成された二分決定グラフに応じてアイテムを並べたアイテムリストに基づいて、二分決定グラフにおける、アイテムリストが表すアイテムの部分集合であって、容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算する。具体的には、後述する中間点決定処理ルーチンにおいて、求解部32の再帰処理部38が、アイテムリストIと、容量上限Cと、二分決定グラフの根ノード(root)と、1終端ノード(Be)とを中間点決定部34に入力して、中間ノード、及び重み合計を求め、アイテムリストIを、中間ノードに対応するアイテムで半分に分け、容量上限Cを、重み合計で分け、二分決定グラフの探索範囲を、中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた探索範囲の開始ノード、及び終了ノードとを中間点決定部34に入力して、中間ノード、及び重み合計を求めることを再帰的に繰り返す。中間点決定部34は、探索範囲のアイテムリストと、容量上限Cと、二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、探索範囲における、アイテムリストが表すアイテムの部分集合であって、容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノードBm、及び中間ノードBmまでの重み合計Cmを決定し、出力リストRに格納する。
ステップS106では、ステップS104で得られた出力リストRの中間点を出力部50に出力して処理を終了する。
次に、ステップS104の中間点決定処理ルーチンについて図5を用いて説明する。
ステップS300では、探索範囲のアイテムリストIと、容量上限Cと、二分決定グラフのうちの探索範囲の開始ノード(BDD探索開始節点root)、及び終了ノード(BDD探索終了節点Be)とを受け付ける。
ステップS302では、(累積重さ、BDD節点)をキーとして持つ配列Tを空の連想配列として初期化する。ここで、配列Tのキーには状態(累積重さ,BDD節点)において、値はその状態までの最高価値が格納される。
ステップS303では、T[(0,root)]=0と書き換える。
ステップS304では、(累積重さ、BDD節点)をキーとして持つ配列Mを空の連想配列として初期化する。ここで、配列Mのキーには状態(累積重さ,BDD節点)において、値はその状態に至る際に経由した中間地点(中間の状態)が格納される。
ステップS305では、M[(0,root)]=nullと書き換える。
アイテムiについて、i=1...|I|まで、以下のステップS306〜S326の処理をループする。
ステップS306では、Tn←Tと配列をコピーする。
選択中のアイテムiについて、配列Tに格納される全てのキー(c,b)について、以下のステップS308〜S325の処理をループする。
ステップS308では、選択中のアイテムiの重さ及び価値をそれぞれw、vに代入する。
ステップS310では、b’に、bのLO枝をBDD変数が選択中のアイテムiのBDD変数より大きくなるまで辿った結果を代入する。
ステップS312では、ステップS310でb’が0終端であるか否かを判定し、0終端であればステップS314へ移行し、0終端でなければ、ステップS325へ移行する。
ステップS314では、b’のBDD変数が選択中のアイテムiと一致しているか否かを判定し、一致していればステップS316へ移行し、一致していなければステップS318へ移行する。
ステップS316では、b’に、b’のHI枝の先の節点を代入する。
ステップS318では、配列Tn[c+w,b']が、v+T[(c,b)]より小さいか否かを判定し、小さければステップS320へ移行し、小さくなければステップS322へ移行する。
ステップS320では、Tn[(c+w,b')]をv+T[(c,b)]と書き換える。
ステップS321では、M[(c+w,b')]をM[(c,b)]と書き換える。
ステップS322では、選択中のアイテムiは、アイテム数の半分(切り下げ)と一致するか否かを判定し、一致する場合にはステップS324へ移行し、一致しない場合には、ステップS325へ移行する。
ステップS324では、M[c+w,b']を(c+w,b')と書き換える。
ステップS325では、M[(c,b)]を削除する。
全てのキーについて処理を終えると、ステップS326に移行し、T←Tnと配列をコピーする。
全てのアイテムについて処理を終えると、ステップS327に移行し、coに、T[(c,1終端)]((c=1,...,C)が最大となるc)を代入する。
ステップS328では、M[(co,1終端)]を算出された中間点として決定して再帰処理部38に出力し、中間点決定処理ルーチンを終了する。
以上説明したように、本発明の実施の形態に係る問題解決装置によれば、アイテムに対応するノードの各々を含む二分決定グラフを作成し、二分決定グラフに応じてアイテムを並べたアイテムリストに基づいて、二分決定グラフにおける、アイテムリストが表すアイテムの部分集合であって、容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算する場合において、アイテムリストと、容量上限と、二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、探索範囲における、アイテムリストが表すアイテムの部分集合であって、容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノード、及び重み合計を決定し、アイテムリストと、容量上限Cと、二分決定グラフの根ノードと、1終端ノードとを入力して、中間ノード、及び重み合計を求め、アイテムリストを、中間ノードに対応するアイテムで半分に分け、容量上限Cを、重み合計で分け、二分決定グラフの探索範囲を、中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた探索範囲の開始ノード、及び終了ノードとを入力して、中間ノード、及び重み合計を求めることを再帰的に繰り返すことにより、必要な記憶域を抑えて、アイテム間の選択に制約があるナップサック問題を解決できる。
このように、本発明の実施の形態によれば、アイテム間の選択に制約があるナップサック問題の解(選択するアイテムの組合せ)を求める際に必要な記憶域の削減を行うことができる。したがって、より大規模な問題であってもより小さな記憶域しか持たない計算機での求解が可能となる。具体的には、アイテム総数をN、ナップサックの容量をC、BDDの幅をWとした場合に、従来手法では必要な記憶域は、N×C×Wに比例してが、本発明の実施の形態に係る手法によれば、C×Wに比例した量の記憶域だけで良い。
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
10 入力部
20 演算部
30 論理制約グラフ作成部
32 求解部
34 中間点決定部
36 初期化部
38 再帰処理部
50 出力部
100 問題解決装置

Claims (3)

  1. 価値と容量を持つアイテムの集合から、アイテム間の選択の制約条件の下で、容量上限C以下で価値を最大化するアイテムの部分集合上限を選択するナップサック問題を解決する問題解決装置であって、
    前記アイテム間の選択の制約条件である論理制約を表す、前記アイテムに対応するノードの各々を含む二分決定グラフを作成する論理制約グラフ作成部と、
    前記論理制約グラフ作成部によって作成された前記二分決定グラフに応じて前記アイテムを並べたアイテムリストに基づいて、前記二分決定グラフにおける、前記アイテムリストが表すアイテムの部分集合であって、前記容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算する求解部と、
    アイテムリストと、容量上限と、前記二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、前記探索範囲における、アイテムリストが表すアイテムの部分集合であって、前記容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノード、及び重み合計を決定する中間点決定部と、
    を含み、
    前記求解部は、前記アイテムリストと、前記容量上限Cと、前記二分決定グラフの根ノードと、1終端ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求め、
    前記アイテムリストを、前記中間ノードに対応するアイテムで半分に分け、前記容量上限Cを、前記重み合計で分け、前記二分決定グラフの探索範囲を、前記中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた前記探索範囲の開始ノード、及び終了ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求めることを再帰的に繰り返す
    問題解決装置。
  2. 価値と容量を持つアイテムの集合から、アイテム間の選択の制約条件の下で、容量上限C以下で価値を最大化するアイテムの部分集合上限を選択するナップサック問題を解決する問題解決装置における問題解決方法であって、
    論理制約グラフ作成部が、前記アイテム間の選択の制約条件である論理制約を表す、前記アイテムに対応するノードの各々を含む二分決定グラフを作成するステップと、
    求解部が、前記論理制約グラフ作成部によって作成された前記二分決定グラフに応じて前記アイテムを並べたアイテムリストに基づいて、前記二分決定グラフにおける、前記アイテムリストが表すアイテムの部分集合であって、前記容量上限C以下で価値を最大化するアイテムの部分集合を表す経路を計算するステップと、
    中間点決定部が、アイテムリストと、容量上限と、前記二分決定グラフのうちの探索範囲の開始ノード、及び終了ノードとを入力とし、前記探索範囲における、アイテムリストが表すアイテムの部分集合であって、前記容量上限以下で価値を最大化するアイテムの部分集合を表す経路上の中間ノード、及び重み合計を決定するステップと、
    を含み、
    前記求解部が計算するステップは、前記アイテムリストと、前記容量上限Cと、前記二分決定グラフの根ノードと、1終端ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求め、
    前記アイテムリストを、前記中間ノードに対応するアイテムで半分に分け、前記容量上限Cを、前記重み合計で分け、前記二分決定グラフの探索範囲を、前記中間ノードで分けた問題の各々について、分けられたアイテムリストと、分けられた容量上限と、分けられた前記探索範囲の開始ノード、及び終了ノードとを前記中間点決定部に入力して、前記中間ノード、及び前記重み合計を求めることを再帰的に繰り返す
    問題解決方法。
  3. コンピュータを、請求項1に記載の問題解決装置の各部として機能させるためのプログラム。
JP2017039366A 2017-03-02 2017-03-02 問題解決装置、方法、及びプログラム Active JP6663875B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017039366A JP6663875B2 (ja) 2017-03-02 2017-03-02 問題解決装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017039366A JP6663875B2 (ja) 2017-03-02 2017-03-02 問題解決装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2018147088A JP2018147088A (ja) 2018-09-20
JP6663875B2 true JP6663875B2 (ja) 2020-03-13

Family

ID=63592193

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017039366A Active JP6663875B2 (ja) 2017-03-02 2017-03-02 問題解決装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6663875B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112330023A (zh) * 2020-11-05 2021-02-05 安庆师范大学 考虑主观需求的0-1背包问题的求解方法及电子设备

Also Published As

Publication number Publication date
JP2018147088A (ja) 2018-09-20

Similar Documents

Publication Publication Date Title
Needham et al. Graph algorithms: practical examples in Apache Spark and Neo4j
CN106023015B (zh) 课程学习路径推荐方法及装置
Neapolitan et al. Foundations of algorithms
Stephens Essential algorithms: a practical approach to computer algorithms using Python and C
KR20170037636A (ko) 데이터 계통 요약
Fercoq et al. Ergodic control and polyhedral approaches to PageRank optimization
Ehrgott et al. Exact methods for multi-objective combinatorial optimisation
Paszyńska et al. Quasi‐Optimal Elimination Trees for 2D Grids with Singularities
Gower et al. A new framework for the computation of Hessians
Karkory et al. Implementation of heuristics for solving travelling salesman problem using nearest neighbour and minimum spanning tree algorithms
Mula et al. Birough programming approach for solving bi-matrix games with birough payoff elements
Ahmad 40 Algorithms Every Programmer Should Know: Hone your problem-solving skills by learning different algorithms and their implementation in Python
CN110020171A (zh) 数据处理方法、装置、设备及计算机可读存储介质
Balogh et al. The spectrum of triangle-free graphs
JP6663875B2 (ja) 問題解決装置、方法、及びプログラム
CN112948696B (zh) 具有隐私保护功能的跨域医疗保健设备推荐方法及系统
Hazelton et al. Geometrically aware dynamic Markov bases for statistical linear inverse problems
Adams et al. A hierarchy of subgraph projection-based semidefinite relaxations for some NP-hard graph optimization problems
Lotito Issues in the implementation of the DSD algorithm for the traffic assignment problem
US20170302437A1 (en) Nondecreasing sequence determining device, method and program
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
Hosseinian et al. Algorithms for the generalized independent set problem based on a quadratic optimization approach
Beisegel et al. Certifying fully dynamic algorithms for recognition and hamiltonicity of threshold and chain graphs
JP6709740B2 (ja) 厳密敷き詰め計算装置、方法、及びプログラム
CN112132614A (zh) 一种利用量子线路进行偏好预测演示的方法及装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170303

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 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191226

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200217

R150 Certificate of patent or registration of utility model

Ref document number: 6663875

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150