(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】不整合判定装置、方法、および、プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240409BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2022533283
(86)(22)【出願日】2020-06-29
(86)【国際出願番号】 JP2020025539
(87)【国際公開番号】W WO2022003784
(87)【国際公開日】2022-01-06
【審査請求日】2022-12-07
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】鷹野 芙美代
(72)【発明者】
【氏名】井上 浩明
(72)【発明者】
【氏名】荒木 拓也
(72)【発明者】
【氏名】鈴木 基己
(72)【発明者】
【氏名】小林 悠記
(72)【発明者】
【氏名】西村 考弘
(72)【発明者】
【氏名】千嶋 博
(72)【発明者】
【氏名】矢田部 彰宏
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2008-114960(JP,A)
【文献】特開平08-069380(JP,A)
【文献】左尾将隆 ほか,"組合せ最適化問題を高速に解くデジタルアニーラの活用技術",FUJITSU,2018年07月01日,Vol. 69,No. 4,P. 77-83,ISSN: 0016-2515
【文献】"量子アニーリングマシンなどで「組合せ最適化問題」を解くためのQUBOを自動で構築するドメイン固有言語『PyQUBO』を開発",Press Release [online],株式会社リクルートコミュニケーションズ,2018年09月25日,[2023年11月02日検索],インターネット<URL:https://www.recruit.co.jp/newsroom/recruit-rco/pressrelease/2018/180925_RCOpress.pdf>
【文献】金丸翔 ほか,"実イジング計算機による制約付きスロット配置問題の解法",情報処理学会研究報告,2019年03月10日,Vol. 2019-EMB-50,No. 52,ISSN: 2188-868X
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式
を目的関数を表す項および複数の項に分割する分割手段と、
前記複数の項が表す制約間に不整合が生じているか否かを判定する不整合判定手段を備える
ことを特徴とする不整合判定装置。
【請求項2】
前記不整合判定手段は、
前記複数の項の中から、制約を表す項である制約項を2個以上抽出し、
抽出した2個以上の制約項が表す制約間に不整合がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
請求項1に記載の不整合判定装置。
【請求項3】
制約項が表す制約が式で表され、
前記不整合判定手段は、
制約を表す式を、別の制約を表す式に代入したときに不整合が生じるならば、代入した式に対応する制約と、代入された式に対応する制約の間に不整合があると判定する
請求項2に記載の不整合判定装置。
【請求項4】
前記不整合判定手段は、
スピンの状態を表す変数の次数を2に下げるための補助変数を用いた式を予め記憶し、
分割によって得られた項の組合せであって、予め記憶している前記式に該当する項の組合せの有無を判定し、
前記組合せが有る場合に、前記補助変数を特定し、
前記組合せに含まれない項で前記補助変数が用いられている場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
請求項1に記載の不整合判定装置。
【請求項5】
コンピュータが、
個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式
を目的関数を表す項および複数の項に分割し、
前記複数の項が表す制約間に不整合が生じているか否かを判定する
ことを特徴とする不整合判定方法。
【請求項6】
前記コンピュータが
、
前記複数の項の中から、制約を表す項である制約項を2個以上抽出し、
抽出した2個以上の制約項が表す制約間に不整合がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
請求項5に記載の不整合判定方法。
【請求項7】
前記コンピュータが
、
スピンの状態を表す変数の次数を2に下げるための補助変数を用いた式を予め記憶し、
分割によって得られた項の組合せであって、予め記憶している前記式に該当する項の組合せの有無を判定し、
前記組合せが有る場合に、前記補助変数を特定し、
前記組合せに含まれない項で前記補助変数が用いられている場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
請求項5に記載の不整合判定方法。
【請求項8】
コンピュータに、
個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式
を目的関数を表す項および複数の項に分割する分割処理、および、
前記複数の項が表す制約間に不整合が生じているか否かを判定する不整合判定処理を実行させる
不整合判定プログラム。
【請求項9】
前記コンピュータに
、
前記不整合判定処理で、
前記複数の項の中から、制約を表す項である制約項を2個以上抽出させ、
抽出した2個以上の制約項が表す制約間に不整合がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定させる
請求項8に記載の不整合判定プログラム。
【請求項10】
前記コンピュータは、スピンの状態を表す変数の次数を2に下げるための補助変数を用いた式を予め記憶し、
前記コンピュータに
、
前記不整合判定処理で、
分割によって得られた項の組合せであって、予め前記コンピュータに記憶されている前記式に該当する項の組合せの有無を判定させ、
前記組合せが有る場合に、前記補助変数を特定させ、
前記組合せに含まれない項で前記補助変数が用いられている場合に、前記エネルギーを表す式の中に不整合が生じていると判定させる
請求項8に記載の不整合判定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、組合せ最適化問題におけるエネルギーを表す式の中に不整合が生じているか否かを判定する不整合判定装置、不整合判定方法および不整合判定プログラムに関する。
【背景技術】
【0002】
特許文献1には、組合せ最適化問題をシミュレーテッドアニーリングによって解くことが記載されている。
【0003】
また、量子アニーリングマシンの実用化を機に、組合せ最適化問題を解くことがより一般的になりつつある。組合せ最適化問題の例として、巡回セールスマン問題、ナップサック問題、グラフ分割問題等が挙げられる。ただし、組合せ最適化問題はこれらの問題に限られない。
【0004】
シミュレーテッドアニーリングまたは量子アニーリングによって、組合せ最適化問題を解くコンピュータには、イジングモデルのエネルギー関数またはQUBO(Quadratic Unconstrained Binary Optimization )のエネルギー関数が入力される。
【0005】
イジングモデルは、個々のスピンによって磁性体の振る舞いを表わす統計力学上のモデルであるが、組合せ最適化問題の求解にも適用可能である。イジングモデルでは、個々のスピンの状態は、“1”または“-1”で表される。
【0006】
また、個々のスピンの状態を“1”または“0”で表すモデルとしてQUBOも知られている。
【0007】
なお、イジングモデルにおける“1”やQUBOにおける“1”を第1の値と称することができる。そして、イジングモデルにおける“-1”やQUBOにおける“0”を第2の値と称することができる。
【0008】
イジングモデルのエネルギー関数と、QUBOのエネルギー関数とは、相互に変換可能である。
【0009】
現状では、主に、イジングモデルのエネルギー関数やQUBOのエネルギー関数を入力として、一般的なコンピュータを用いて、シミュレーテッドアニーリングで組合せ最適化問題の解が求められている。この手法の例を説明する。ここでは、巡回セールスマン問題の解を求める場合を例にして説明する。
【0010】
まず、巡回セールスマン問題におけるエネルギーを表わす式を作成する。組合せ最適化問題におけるエネルギーを表わす式の作成を、定式化と称する場合がある。巡回セールスマン問題の定式化によって得られる式の例として、以下に示す式(1)が挙げられる。
【0011】
【0012】
式(1)において、jは時刻を表わし、v,uは都市を表わす。また、xv,jは、時刻jにセールスマンが都市vにいるか否かを表わす変数であり、スピンに該当する。xv,j=1ならば、時刻jにセールスマンが都市vにいることを表わし、xv,j=0ならば、時刻jにセールスマンが都市vにいないことを表わす。また、式(1)において、Wuvは、都市uと都市vの距離であり、都市の組毎に予め定数として定められている。αおよびβは、予め定数として定められる。
【0013】
式(1)における右辺の第1項は、セールスマンは同じ都市を2回以上通過することはないという制約を表わす。
【0014】
式(1)における右辺の第2項は、1つの時刻において、セールスマンが1つの都市にしか存在しないという制約を表わす。
【0015】
式(1)における右辺の第3項は、セールスマンが通過する都市間の距離を表わす。この右辺の第3項は、制約を表す項ではない。一方、この右辺の第3項は、巡回セールスマン問題の解を得たいユーザにとっては値を最小化したい事項を表す項である。このように、制約を表さない項であって、組合せ最適化問題の解を得たいユーザにとって値を最小化したい事項を表す項を、目的関数と称する。すなわち、式(1)における右辺の第3項は、目的関数である。
【0016】
式(1)に例示するような組合せ最適化問題におけるエネルギーを表わす式を作成したならば、その式を、イジングモデルのエネルギー関数、または、QUBOのエネルギー関数に変換する。この変換方法は、公知である。
【0017】
イジングモデルのエネルギー関数は、以下の式(2)のように表される。
【0018】
【0019】
式(2)におけるsi,sjは、スピンの状態を表わす変数である。この変数における添え字によってスピンが識別される。Jijは、i,jに応じた定数であり、hiは、iに応じた定数である。
【0020】
また、QUBOのエネルギー関数は、以下の式(3)のように表される。
【0021】
【0022】
式(3)におけるxi,xjは、スピンの状態を表わす変数である。この変数における添え字によってスピンが識別される。Qijは、i,jに応じた定数である。
【0023】
式(2)および式(3)は、スピンの状態を表す変数の2次式である。また、式(1)も、スピンの状態を表す変数の2次式である。従って、式(1)を、式(2)または式(3)に変換することができる。
【0024】
定式化によって得た式において、スピンの状態を表す変数の次数が3次以上であったとしても、スピンの状態を表す複数の変数を1つの変数に置き換えることによって、スピンの状態を表す変数の次数を2まで下げることができる。上記の置き換えに用いられる変数を補助変数と称する。従って、定式化によって得た式において、スピンの状態を表す変数の次数が3次以上であったとしても、補助変数を用いることによって、イジングモデルのエネルギー関数(式(2))、または、QUBOのエネルギー関数(式(3))を得ることができる。
【0025】
イジングモデルまたはQUBOのエネルギー関数が得られたならば、そのエネルギー関数をシミュレーテッドアニーリングに適用し、エネルギーが最小になるときの各スピンの状態を特定する。そして、その各スピンの状態を、組合せ最適化問題(本例では、巡回セールスマン問題)に応じて解釈することで、最適解が得られる。
【0026】
また、非特許文献1には、QUBOのエネルギー関数に変換される、定式化された式(組合せ最適化問題におけるエネルギーを表す式)において、種々の制約がどの様に表現されるかが記載されている。
【先行技術文献】
【特許文献】
【0027】
【非特許文献】
【0028】
【文献】Fred Glover, Gary Kochenberger, Yu Du, “Quantum Bridge Analytics I: A Tutorial on Formulating and Using QUBO Models”, [2020年6月3日検索]、インターネット<URL : https://arxiv.org/ftp/arxiv/papers/1811/1811.11538.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0029】
ユーザによって定式化された式(組合せ最適化問題におけるエネルギーを表す式)の中に不整合が生じていたとしても、その式を、イジングモデルのエネルギー関数またはQUBOのエネルギー関数に変換することができる。そして、そのエネルギー関数に対してアニーリングを実行することで、組合せ最適化問題の解を得ることができる。
【0030】
しかし、組合せ最適化問題の解が、適切でない場合がある。組合せ最適化問題の解が適切でないとユーザが判断することができた場合であっても、ユーザがその原因を特定することは困難である。アニーリングは確率的な処理であるので、入力されるエネルギー関数が適切であったとしても、適切でない解が導出されることもあり得る。また、上記のように、ユーザによって定式化された式の中に不整合が生じていることに起因して、適切でない解が導出されることもある。
【0031】
そこで、定式化された式(組合せ最適化問題におけるエネルギーを表す式)の中に不整合が生じているか否かを判定できることが好ましい。
【0032】
そこで、組合せ最適化問題におけるエネルギーを表す式に不整合が生じているか否かを判定できる不整合判定装置、不整合判定方法および不整合判定プログラムを提供することを目的とする。
【課題を解決するための手段】
【0033】
本発明による不整合判定装置は、個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式を目的関数を表す項および複数の項に分割する分割手段と、複数の項が表す制約間に不整合が生じているか否かを判定する不整合判定手段を備えることを特徴とする。
【0034】
本発明による不整合判定方法は、コンピュータが、個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式を目的関数を表す項および複数の項に分割し、複数の項が表す制約間に不整合が生じているか否かを判定することを特徴とする。
【0035】
本発明による不整合判定プログラムは、コンピュータに、個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式を目的関数を表す項および複数の項に分割する分割処理、および、複数の項が表す制約間に不整合が生じているか否かを判定する不整合判定処理を実行させる。
【発明の効果】
【0036】
本発明によれば、組合せ最適化問題におけるエネルギーを表す式に不整合が生じているか否かを判定できる。
【図面の簡単な説明】
【0037】
【
図1】本発明の第1の実施形態の不整合判定装置の構成例を示すブロック図である。
【
図2】第1の実施形態の処理経過の例を示すフローチャートである。
【
図3】第2の実施形態の処理経過の例を示すフローチャートである。
【
図4】本発明の第3の実施形態の不整合判定装置の構成例を示すブロック図である。
【
図5】スピンの状態を表す各変数を定義した文字列の例を示す図である。
【
図6】第3の実施形態の処理経過の例を示すフローチャートである。
【
図7】本発明の各実施形態の不整合判定装置に係るコンピュータの構成例を示す概略ブロック図である。
【
図8】本発明の不整合判定装置の概要を示すブロック図である。
【発明を実施するための形態】
【0038】
以下、本発明の実施形態を図面を参照して説明する。
【0039】
以下に示す各実施形態では、定式化された式(組合せ最適化問題におけるエネルギーを表す式)がQUBOのエネルギー関数に変換される場合を例にして説明する。この場合、スピンの状態を表す変数は、1または0の値をとる。ただし、後述するように、定式化された式がイジングモデルのエネルギー関数に変換される場合にも、本発明を適用してよい。
【0040】
実施形態1.
図1は、本発明の第1の実施形態の不整合判定装置の構成例を示すブロック図である。第1の実施形態の不整合判定装置1は、入力部2と、分割部3と、不整合判定部4と、提示部5とを備える。
【0041】
入力部2には、定式化された式(組合せ最適化問題におけるエネルギーを表す式)が入力される。
【0042】
入力部2は、例えば、光学ディスクなどのデータ記録媒体に記録されたデータ(本実施形態では、組合せ最適化問題におけるエネルギーを表す式)を読み込むデータ読み込み装置によって実現されてもよい。ただし、入力部2は、そのようなデータ読み込み装置に限定されず、ユーザが式を入力するためのキーボード等の入力デバイスであってもよい。
【0043】
分割部3は、入力部2を介して、式(組合せ最適化問題におけるエネルギーを表す式)を取り込む。そして、分割部3は、その式を、複数の項に分割する。
【0044】
例えば、入力部2に、以下に示す式(4)が入力されたとする。
【0045】
【0046】
式(4)において、α、β、γは定数である。また、xi,x1,x2は、スピンの状態を表す変数であり、この変数における添え字によってスピンが識別される。各実施形態では、スピンの状態を表す変数は、1または0の値をとる。式(4)の例では、スピンは1からNまでの整数によって識別される。ciは、iに対応する定数である。
【0047】
式(4)が入力された場合、分割部3は、式(4)の右辺を項毎に分割する。この結果、
【数5】
と、β(1-x
1)
2と、γ(1-x
2)
2と、
【数6】
の各項が得られる。
【0048】
分割部3が項毎に式を分割することによって得られる項は、制約を表す項と、目的関数とに分けられる。以下、制約を表す項を、制約項と記す。上記の例では、
【数7】
と、β(1-x
1)
2と、γ(1-x
2)
2とが制約項に該当する。
【0049】
また、
【数8】
が目的関数に該当する。前述のように、目的関数は、制約を表さない項であって、組合せ最適化問題の解を得たいユーザにとって値を最小化したい事項を表す項である。
【0050】
本実施形態では、制約項が2個以上得られるものとする。
【0051】
また、ここでは、制約項が“定数×(式A-式B)2”で表される場合を例にして説明する。また、この形式の制約項は、式A=式Bであるという制約を表している。ここで、式Aおよび式Bは、スピンの状態を表す変数そのものであってもよい。また、式Aおよび式Bは、スピンの状態を表す変数を用いた式であってもよい。また、式Aおよび式Bは、例えば、定数(例えば、“1”等)であってもよい。
【0052】
上記のように3つの制約項が得られた場合、1番目の制約項は、以下に示す式(5)という制約を表している。
【0053】
【0054】
換言すれば、1番目の制約項は、1=x1+x2+・・・+xNという制約を表している。
【0055】
また、上記の2番目の制約項は、1=x1という制約を表している。
【0056】
また、上記の3番目の制約項は、1=x2という制約を表している。
【0057】
不整合判定部4は、分割部3が項毎に式を分割することによって得られる項の中から、2個以上の制約項を全て抽出し、制約項毎に、制約を特定する。上記の例では、前述の3つの制約項を全て抽出し、制約項毎に、1=x1+x2+・・・+xNという制約、1=x1という制約、1=x2という制約をそれぞれ特定する。
【0058】
そして、不整合判定部4は、特定した制約間に不整合がある場合に、入力された式(組合せ最適化問題におけるエネルギーを表す式)の中に、制約に関する不整合が生じていると判定する。また、不整合判定部4は、特定した制約間に不整合がない場合には、入力された式の中に、制約に関する不整合が生じていないと判定する。
【0059】
ここで、不整合判定部4が、特定した制約間に不整合があるか否かを判定する動作について説明する。不整合判定部4は、「制約を表す式」を、別の「制約を表す式」に代入し、その結果、不整合が生じているか否かを判定する。なお、不整合判定部4は、1つの「制約を表す式」に、複数の「制約を表す式」を代入してもよい。「制約を表す式」を、別の「制約を表す式」に代入し、その結果、不整合が生じているならば、不整合判定部4は、「代入した式」に対応する制約と、「代入された式」に対応する制約との間に不整合があると判定する。なお、不整合判定部4は、「代入した式」および「代入された式」以外の式に対応する制約は、上記の不整合とは関連がないと判定する。また、代入の結果、不整合が生じていないならば、不整合判定部4は、「代入した式」に対応する制約と、「代入された式」に対応する制約との間に不整合がないと判定する。
【0060】
より具体的に説明する。不整合判定部4が、前述の制約を表す式“1=x1+x2+・・・+xN”、“1=x1”および“1=x2”を特定したとする。そして、“1=x1”および“1=x2”を、“1=x1+x2+・・・+xN”に代入できるので、不整合判定部4は、“1=x1”および“1=x2”を、“1=x1+x2+・・・+xN”に代入する。すると、“1=1+1+x3+x4+・・・+xN”となり、この式を変形すると、“x3+x4+・・・+xN=-1”となる。ここで、x3,x4,・・・,xNは、いずれも、1または0の値をとるので、“x3+x4+・・・+xN=-1”における左辺の取り得る値は、0からN-2までの整数であり、左辺の値が-1になることはない。よって、不整合判定部4は、代入した式“1=x1”および“1=x2”に対応する制約と、代入された式“1=x1+x2+・・・+xN”に対応する制約の間に不整合があると判定する。そして、その結果、不整合判定部4は、入力された式に、制約に関する不整合が生じていると判定する。
【0061】
提示部5は、不整合判定部4による判定結果を、例えば、不整合判定装置1が備えるディスプレイ装置(
図1において図示略)に表示する。例えば、上記の場合、提示部5は、1=x
1+x
2+・・・+x
Nという制約、1=x
1という制約、および1=x
2という制約の間に不整合があり、入力された式の中に、制約に関する不整合が生じているということを、ディスプレイ装置上に表示する。また、入力された式の中に、制約に関する不整合が生じていないと判定された場合、提示部5は、その判定結果をディスプレイ上に表示する。
【0062】
制約に関する不整合の他の例を示す。以下に示す式(6)が入力されたとする。
【0063】
【0064】
この場合、分割部3は、式(6)の右辺の第1項および第2項を得る。この2つの項はいずれも制約項であるので、不整合判定部4は、この2つの制約項を抽出する。そして、不整合判定部4は、第1項から、1=x1+x2+・・・+xNという制約を特定し、第2項から、2=x1+x2+・・・+xNという制約を特定する。後者の式を前者の式に代入すると、“1=2”という成立し得ない式が得られる。よって、不整合判定部4は、1=x1+x2+・・・+xNという制約と、2=x1+x2+・・・+xNという制約との間に不整合があり、入力された式の中に、制約に関する不整合が生じていると判定する。なお、式(6)の右辺の第1項は、変数x1~xNのうち1つだけが1であることを表し、式(6)の右辺の第2項は、変数x1~xNのうち2つだけが1であることを表しているので、確かに、制約に関する不整合があることになる。
【0065】
分割部3、不整合判定部4および提示部5は、例えば、不整合判定プログラムに従って動作するコンピュータのCPU(Central Processing Unit )によって実現される。この場合、CPUは、コンピュータのプログラム記憶装置等のプログラム記録媒体から不整合判定プログラムを読み込み、その不整合判定プログラムに従って、分割部3、不整合判定部4および提示部5として動作すればよい。この点は、後述の第2の実施形態でも同様である。
【0066】
次に、処理経過について説明する。
図2は、第1の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。
【0067】
入力部2に、組合せ最適化問題におけるエネルギーを表す式が入力されると、分割部3は、その式を、複数の項に分割する(ステップS1)。
【0068】
次に、不整合判定部4は、ステップS1で得られた各項の中から、2個以上の制約項を全て抽出し、制約項毎に、制約を特定する(ステップS2)。
【0069】
そして、不整合判定部4は、特定した制約間に不整合があるか否かを判定する(ステップS3)。不整合判定部4は、「制約を表す式」を、別の「制約を表す式」に代入し、その結果、不整合が生じるか否かを判定すればよい。代入の結果、不整合が生じるならば、不整合判定部4は、代入した式に対応する制約と、代入された式に対応する制約との間に不整合があると判定すればよい。また、代入の結果、不整合が生じないならば、不整合判定部4は、代入した式に対応する制約と、代入された式に対応する制約との間に不整合がないと判定すればよい。
【0070】
特定した制約間に不整合があると判定した場合(ステップS3のYes)、不整合判定部4は、入力された式に制約に関する不整合があると判定する(ステップS4)。この場合、提示部5は、不整合が生じている制約を提示するとともに、入力された式に制約に関する不整合があることを提示する(ステップS5)。
【0071】
また、特定した制約間に不整合がないと判定した場合(ステップS3のNo)、不整合判定部4は、入力された式に制約に関する不整合がないと判定する(ステップS6)。この場合、提示部5は、入力された式に制約に関する不整合がないことを提示する(ステップS7)。
【0072】
なお、提示部5は、不整合判定装置1が備えるディスプレイ装置(
図1において図示略)に情報を表示することによって、情報をユーザに提示すればよい。ただし、提示部5は、他の態様で、情報をユーザに提示してもよい。この点は、他の実施形態においても同様である。
【0073】
上記の説明では、制約項が“定数×(式A-式B)2”で表され、この制約項が“式A=式B”という制約を表している場合を例にして説明した。制約項の形式はこの形式に限定されず、種々の形式で表された制約項が、個別に制約を表していてもよい。
【0074】
以下に、種々の制約項や、それらの制約項が表す制約を示す。なお、以下に示す式A、式B、式Cは、スピンの状態を表す変数そのものであってもよい。また、以下に示す式A、式B、式Cは、スピンの状態を表す変数を用いた式であってもよい。また、以下に示す式A、式B、式Cは、定数(例えば、“1”等)であってもよい。
【0075】
例えば、“定数×(式A×式B)”と表される制約項があってもよい。この制約項は、“式A+式B≦1”という制約を表す。すなわち、不整合判定部4は、“定数×(式A×式B)”と表される制約項を抽出した場合、この制約項に対応する制約として、“式A+式B≦1”という制約を特定する。
【0076】
また、例えば、“定数×(1-式A-式B+式A×式B)” と表される制約項があってもよい。この制約項は、“式A+式B≧1”という制約を表す。すなわち、不整合判定部4は、“定数×(1-式A-式B+式A×式B)” と表される制約項を抽出した場合、この制約項に対応する制約として、“式A+式B≧1”という制約を特定する。
【0077】
また、例えば、“定数×(1-式A-式B+2×式A×式B)” と表される制約項があってもよい。この制約項は、“式A+式B=1”という制約を表す。すなわち、不整合判定部4は、“定数×(1-式A-式B+2×式A×式B)” と表される制約項を抽出した場合、この制約項に対応する制約として、“式A+式B=1”という制約を特定する。
【0078】
また、例えば、“定数×(式A-式A×式B)”と表される制約項があってもよい。この制約項は、“式A≦式B” という制約を表す。すなわち、不整合判定部4は、“定数×(式A-式A×式B)”と表される制約項を抽出した場合、この制約項に対応する制約として、“式A≦式B”という制約を特定する。
【0079】
また、例えば、“定数×(式A×式B+式A×式C+式B×式C)” と表される制約項があってもよい。この制約項は、“式A+式B+式C≦1”という制約を表す。すなわち、不整合判定部4は、“定数×(式A×式B+式A×式C+式B×式C)” と表される制約項を抽出した場合、この制約項に対応する制約として、“式A+式B+式C≦1”という制約を特定する。
【0080】
また、例えば、“定数×(式A+式B-2×式A×式B)” と表される制約項があってもよい。この制約項は、“式A=式B”という制約を表す。すなわち、不整合判定部4は、“定数×(式A+式B-2×式A×式B)” と表される制約項を抽出した場合、この制約項に対応する制約として、“式A=式B”という制約を特定する。
【0081】
そして、不整合判定部4は、特定した制約間に不整合があるか否かを判定する。既に説明したように、不整合判定部4は、「制約を表す式」を、別の「制約を表す式」に代入し、その結果、不整合が生じるか否かを判定すればよい。代入の結果、不整合が生じるならば、不整合判定部4は、代入した式に対応する制約と、代入された式に対応する制約との間に不整合があると判定すればよい。また、代入の結果、不整合が生じないならば、不整合判定部4は、代入した式に対応する制約と、代入された式に対応する制約との間に不整合がないと判定すればよい。
【0082】
本実施形態では、不整合判定部4が、定式化された式を分割することによって得られた項のうち、制約項毎に、制約を特定する。そして、不整合判定部4は、特定した制約間に不整合があるか否かを判定し、不整合があるならば、定式化された式の中に制約に関する不整合が生じていると判定する。また、不整合がないならば、定式化された式の中に制約に関する不整合が生じていないと判定する。従って、本実施形態によれば、定式化された式の中に不整合が生じているか否かを判定することができる。
【0083】
実施形態2.
本発明の第2の実施形態の不整合判定装置は、第1の実施形態の不整合判定装置と同様に、
図1に示すブロック図で表すことができるので、
図1を用いて第2の実施形態を説明する。第1の実施形態と同様の事項については、適宜、説明を省略する。
【0084】
第2の実施形態における入力部2および分割部3は、第1の実施形態における入力部2および分割部3と同様である。
【0085】
また、第2の実施形態の不整合判定装置1は、組合せ最適化問題におけるエネルギーを表す式の中に、補助変数に関する不整合が生じているか否かを判定する。補助変数は、定式化によって得た式において、スピンの状態を表す変数の次数が3次以上であった場合に、スピンの状態を表す変数の次数を2まで下げるために、スピンの状態を表す変数の置き換えに用いられる変数である。
【0086】
第2の実施形態では、不整合判定部4は、補助変数を用いた式を予め記憶している。以下の説明では、この予め記憶されている式をパターン式と記す。パターン式において、補助変数以外の変数は、QUBOにおけるスピンの状態を表す変数である。そして、パターン式では、スピンの状態を表す変数の次数は2である。
【0087】
パターン式の例として、以下に示す式(7)が挙げられる。
【0088】
x1x2-2x1y-2x2y+x3y+3y ・・・(7)
【0089】
式(7)において、x1,x2,x3は、スピンの状態を表す変数であり、この変数における添え字によってスピンが識別される。また、yは、補助変数である。
【0090】
式(7)は、スピンの状態を表す変数の3次式であるx1x2x3の次数を2に下げるために、y=x1x2として、表された式である。
【0091】
式(7)に示すパターン式が存在する場合、yは補助変数であるということができる。また、補助変数は、式(7)を包含する式では、式(7)以外で用いられないことが一般的である。
【0092】
以下、不整合判定部4が、式(7)に例示するパターン式を予め記憶している場合を例にして説明する。ただし、不整合判定部4は、他のパターン式を予め記憶していてもよい。また、不整合判定部4は、複数のパターン式を記憶していてもよい。
【0093】
第1の実施形態と同様に、分割部3は、入力部2を介して、組合せ最適化問題におけるエネルギーを表す式を取り込む。そして、分割部3は、その式を、複数の項に分割する。
【0094】
不整合判定部4は、分割部3による分割によって得られた項の組合せであって、予め記憶しているパターン式に該当する項の組合せの有無を判定する。そして、不整合判定部4は、その組合せが存在した場合に、補助変数を特定する。
【0095】
本例では、不整合判定部4は、式(7)に例示するパターン式を予め記憶している。従って、不整合判定部4は、分割によって得られた項の組合せであって、予め記憶しているパターン式に該当する項の組合せとして、“x1x2”,“-2x1y”,“-2x2y”,“x3y”,“3y”に当てはまる5つの項の組合せが存在するか否かを判定する。そして、その組合せが存在した場合には、不整合判定部4は、“y”に該当する変数を、補助変数として特定する。
【0096】
そして、不整合判定部4は、特定した補助変数が、上記の組合せに含まれない項で用いられている場合に、組合せ最適化問題におけるエネルギーを表す式の中に、補助変数に関する不整合が生じていると判定する。前述のように、補助変数は、式(7)を包含する式では、式(7)以外で用いられないことが一般的であるので、このように判定してよい。
【0097】
また、上記の組合せが存在しない場合や、特定した補助変数が、上記の組合せに含まれない項で用いられていない場合には、不整合判定部4は、組合せ最適化問題におけるエネルギーを表す式の中に、補助変数に関する不整合が生じていないと判定する。
【0098】
第2の実施形態において、提示部5は、定式化された式の中に、補助変数に関する不整合が生じているかいなかの判定結果を、ディスプレイ装置に表示する。また、不整合判定部4によって特定された補助変数が、上記の組合せに含まれない項で用いられている場合には、その項も併せて表示してよい。
【0099】
次に、処理経過について説明する。
図3は、第2の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。
【0100】
入力部2に、組合せ最適化問題におけるエネルギーを表す式が入力されると、分割部3は、その式を、複数の項に分割する(ステップS11)。ステップS11は、第1の実施形態におけるステップS1(
図2参照)と同様である。
【0101】
次に、不整合判定部4は、分割部3による分割によって得られた項の組合せであって、予め記憶しているパターン式に該当する項の組合せがあるか否かを判定する(ステップS12)。
【0102】
そのような組合せがある場合(ステップS12のYes)、不整合判定部4は、補助変数を特定する(ステップS13)。
【0103】
次に、不整合判定部4は、補助変数がその組合せに含まれない項で用いられているか否かを判定する(ステップS14)。
【0104】
補助変数がその組合せに含まれない項で用いられている場合(ステップS14のYes)、不整合判定部4は、入力された式に補助変数に関する不整合があると判定する(ステップS15)。そして、提示部5は、入力された式に補助変数に関する不整合があることを提示する(ステップS16)。このとき、提示部5は、その組合せに含まれない項であって、補助変数が用いられている項を併せて提示してもよい。
【0105】
補助変数がその組合せに含まれない項で用いられていない場合(ステップS14のNo)、不整合判定部4は、入力された式に補助変数に関する不整合がないと判定する(ステップS17)。そして、提示部5は、入力された式に補助変数に関する不整合がないことを提示する(ステップS18)。
【0106】
また、ステップ12において、分割によって得られた項の組合せであって、予め記憶しているパターン式に該当する項の組合せがないと判定された場合にも(ステップS12のNo)、ステップS17,S18を実行する。
【0107】
補助変数は、パターン式を包含する式では、パターン式以外で用いられないことが一般的である。そして、本実施形態では、不整合判定部4は、分割によって得られた項の組合せであって、予め記憶しているパターン式に該当する項の組合せがあると判定した場合、補助変数を特定する。そして、不整合判定部4は、補助変数がその組合せに含まれない項で用いられている場合に、定式化された式の中に補助変数に関する不整合が生じていると判定する。また、不整合判定部4は、補助変数がその組合せに含まれない項で用いられていない場合には、定式化された式の中に補助変数に関する不整合が生じていないと判定する。従って、本実施形態によれば、定式化された式の中に不整合が生じているか否かを判定することができる。
【0108】
実施形態3.
図4は、本発明の第3の実施形態の不整合判定装置の構成例を示すブロック図である。第1の実施形態や第2の実施形態の要素と同様の要素には、
図1に示す符号と同一の符号を付す。第3の実施形態の不整合判定装置1は、入力部2と、不整合判定部4と、提示部5とを備える。
【0109】
第3の実施形態では、入力部2には、定式化された式(組合せ最適化問題におけるエネルギーを表す式)、および、スピンの状態を表す各変数を定義した文字列が入力される。
【0110】
入力部2は、例えば、例えば、光学ディスクなどのデータ記録媒体に記録されたデータ(本実施形態では、組合せ最適化問題におけるエネルギーを表す式、および、スピンの状態を表す各変数を定義した文字列)を読み込むデータ読み込み装置によって実現されてもよい。ただし、入力部2は、そのようなデータ読み込み装置に限定されず、ユーザが式および文字列を入力するためのキーボード等の入力デバイスであってもよい。
【0111】
ここで、スピンの状態を表す各変数を定義した文字列は、例えば、PyQUBO(登録商標)に従って記述されてもよい。
図5は、PyQUBOに従って記述された、スピンの状態を表す各変数を定義した文字列の例を示す。
図5に例示する文字列は、スピンの状態を表す変数として、x
1からx
NまでのN個の変数を定義した文字列である。ただし、スピンの状態を表す各変数を定義した文字列の記述態様は、PyQUBOに従った記述態様に限定されない。
【0112】
不整合判定部4は、入力部2を介して、定式化された式(組合せ最適化問題におけるエネルギーを表す式)、および、スピンの状態を表す各変数を定義した文字列を取り込む。そして、不整合判定部4は、その文字列で定義された各変数(スピンの状態を表す各変数)を特定する。
【0113】
そして、不整合判定部4は、その文字列で定義された各変数のうち、定式化された式で用いられていない変数があるか否かを判定する。文字列で定義された各変数のうち、定式化された式で用いられていない変数がある場合、不整合判定部4は、定義されているにも関わらわず定式化された式で用いられていない変数が存在するという不整合が、定式化された式の中に生じていると判定する。また、文字列で定義された各変数のうち、定式化された式で用いられていない変数がない場合(換言すれば、文字列で定義された各変数が全て、定式化された式で用いられている場合)、不整合判定部4は、定式化された式の中に不整合が生じていないと判定する。
【0114】
提示部5は、不整合判定部4による判定結果を、例えば、不整合判定装置1が備えるディスプレイ装置(
図4において図示略)に表示する。例えば、定義されているにも関わらわず定式化された式で用いられていない変数が存在するという不整合が、定式化された式の中に生じていると判定された場合、提示部5は、その旨の情報を、ディスプレイ装置に表示する。このとき、提示部5は、定義されているにも関わらわず定式化された式で用いられていない変数を併せて表示してもよい。また、定式化された式の中に不整合が生じていないと判定された場合、提示部5は、その旨の情報を、ディスプレイ装置に表示する。
【0115】
不整合判定部4および提示部5は、例えば、不整合判定プログラムに従って動作するコンピュータのCPUによって実現される。この場合、CPUは、コンピュータのプログラム記憶装置等のプログラム記録媒体から不整合判定プログラムを読み込み、その不整合判定プログラムに従って、不整合判定部4および提示部5として動作すればよい。
【0116】
次に、処理経過について説明する。
図6は、第3の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。
【0117】
不整合判定部4は、入力部2を介して、組合せ最適化問題におけるエネルギーを表す式、および、スピンの状態を表す各変数を定義した文字列を取り込む(ステップS31)。本例では、不整合判定部4が、
図5に示す文字列を取り込む場合を例にして説明する。
【0118】
ステップS31の次に、不整合判定部4は、取り込んだ文字列で定義された各変数を特定する(ステップS32)。本例では、不整合判定部4は、
図5に示す文字列で定義されたx
1,x
2,x
3,・・・,x
NのN個の変数を特定する。
【0119】
次に、不整合判定部4は、取り込んだ文字列で定義された各変数(本例では、x1,x2,x3,・・・,xN)のうち、取り込んだ式で用いられていない変数があるか否かを判定する(ステップS33)。
【0120】
取り込んだ文字列で定義された各変数のうち、取り込んだ式で用いられていない変数がある場合(ステップS33のYes)、不整合判定部4は、定義されているにも関わらず定式化された式で用いられていない変数が存在するという不整合が、定式化された式の中に生じていると判定する(ステップS34)。そして、提示部5は、定式化された式の中に不整合が生じていることを提示する(ステップS35)。このとき、提示部5は、定義されているにも関わらわず定式化された式で用いられていない変数を併せて提示してもよい。
【0121】
また、取り込んだ文字列で定義された各変数が全て、取り込んだ式で用いられているならば(ステップS33のNo)、不整合判定部4は、定式化された式の中に不整合が生じていないと判定する(ステップS36)。そして、提示部5は、式化された式の中に不整合が生じていないことを提示する(ステップS37)。
【0122】
定義された変数(スピンの状態を表す変数)は、定式化された式で用いられることが一般的である。そして、本実施形態では、定義された変数のうち、定式化された式で用いられていない変数があるならば、定式化された式に不整合が生じていると判定し、定義された変数が全て定式化された式で用いられているならば、定式化された式に不整合が生じていないと判定する。従って、本実施形態によれば、定式化された式の中に不整合が生じているか否かを判定することができる。
【0123】
上記の各実施形態では、定式化された式(組合せ最適化問題におけるエネルギーを表す式)がQUBOのエネルギー関数に変換される場合を例にした。この場合、スピンの状態を表す変数は、1または0の値をとる。定式化された式がイジングモデルのエネルギー関数に変換される場合にも、本発明を適用してよい。なお、この場合、スピンを表す変数は1または-1の値をとる。
【0124】
また、QUBOのエネルギー関数とイジングモデルのエネルギー関数とは、相互に変換可能である。従って、不整合が生じていないと判定された定式化された式を、QUBOのエネルギー関数に変換し、さらに、そのエネルギー関数をイジングモデルのエネルギー関数に変換してもよい。
【0125】
なお、既に述べたように、QUBOにおける“1”やイジングモデルにおける“1”を第1の値と称することができる。そして、QUBOにおける“0”やイジングモデルにおける“-1”を第2の値と称することができる。
【0126】
図7は、本発明の各実施形態の不整合判定装置1に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、データ読み込み装置1005と、ディスプレイ装置1006とを備える。
【0127】
本発明の各実施形態の不整合判定装置1は、コンピュータ1000によって実現される。不整合判定装置1の動作は、不整合判定プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、その不整合判定プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、その不整合判定プログラムに従って、上記の各実施形態で説明した処理を実行する。
【0128】
補助記憶装置1003は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、そのプログラムに従って上記の各実施形態で説明した処理を実行してもよい。
【0129】
また、各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。
【0130】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0131】
次に、本発明の概要について説明する。
図8は、本発明の不整合判定装置の概要を示すブロック図である。本発明の不整合判定装置1は、不整合判定手段9を備える。
【0132】
不整合判定手段9(例えば、不整合判定部4)は、個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式の中に不整合が生じているか否かを判定する。
【0133】
上記の本発明の実施形態は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
【0134】
(付記1)
個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式の中に不整合が生じているか否かを判定する不整合判定手段を備える
ことを特徴とする不整合判定装置。
【0135】
(付記2)
前記エネルギーを表す式を複数の項に分割する分割手段を備え、
前記不整合判定手段は、
前記複数の項の中から、制約を表す項である制約項を2個以上抽出し、
抽出した2個以上の制約項が表す制約間に不整合がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
付記1に記載の不整合判定装置。
【0136】
(付記3)
制約項が表す制約が式で表され、
前記不整合判定手段は、
制約を表す式を、別の制約を表す式に代入したときに不整合が生じるならば、代入した式に対応する制約と、代入された式に対応する制約の間に不整合があると判定する
付記2に記載の不整合判定装置。
【0137】
(付記4)
前記エネルギーを表す式を複数の項に分割する分割手段を備え、
前記不整合判定手段は、
スピンの状態を表す変数の次数を2に下げるための補助変数を用いた式を予め記憶し、
分割によって得られた項の組合せであって、予め記憶している前記式に該当する項の組合せの有無を判定し、
前記組合せが有る場合に、前記補助変数を特定し、
前記組合せに含まれない項で前記補助変数が用いられている場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
付記1に記載の不整合判定装置。
【0138】
(付記5)
前記不整合判定手段は、
前記エネルギーを表す式とともに、スピンの状態を表す各変数を定義した文字列を取り込み、
前記文字列で定義された各変数のうち、前記エネルギーを表す式で用いられていない変数がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
付記1に記載の不整合判定装置。
【0139】
(付記6)
コンピュータが、
個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式の中に不整合が生じているか否かを判定する
ことを特徴とする不整合判定方法。
【0140】
(付記7)
前記コンピュータが、
前記エネルギーを表す式を複数の項に分割し、
前記複数の項の中から、制約を表す項である制約項を2個以上抽出し、
抽出した2個以上の制約項が表す制約間に不整合がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
付記6に記載の不整合判定方法。
【0141】
(付記8)
前記コンピュータが、
前記エネルギーを表す式を複数の項に分割し、
スピンの状態を表す変数の次数を2に下げるための補助変数を用いた式を予め記憶し、
分割によって得られた項の組合せであって、予め記憶している前記式に該当する項の組合せの有無を判定し、
前記組合せが有る場合に、前記補助変数を特定し、
前記組合せに含まれない項で前記補助変数が用いられている場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
付記6に記載の不整合判定方法。
【0142】
(付記9)
前記コンピュータが、
前記エネルギーを表す式とともに、スピンの状態を表す各変数を定義した文字列を取り込み、
前記文字列で定義された各変数のうち、前記エネルギーを表す式で用いられていない変数がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定する
付記6に記載の不整合判定方法。
【0143】
(付記10)
コンピュータに、
個々のスピンの状態を第1の値または第2の値で表すモデルのエネルギー関数に変換される、組合せ最適化問題におけるエネルギーを表す式の中に不整合が生じているか否かを判定する不整合判定処理を実行させる
不整合判定プログラムを記録したコンピュータ読取可能な記録媒体。
【0144】
(付記11)
前記コンピュータに、
前記エネルギーを表す式を複数の項に分割する分割処理を実行させ、
前記不整合判定処理で、
前記複数の項の中から、制約を表す項である制約項を2個以上抽出させ、
抽出した2個以上の制約項が表す制約間に不整合がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定させる
不整合判定プログラムを記録した付記10に記載のコンピュータ読取可能な記録媒体。
【0145】
(付記12)
前記コンピュータは、スピンの状態を表す変数の次数を2に下げるための補助変数を用いた式を予め記憶し、
前記コンピュータに、
前記エネルギーを表す式を複数の項に分割する分割処理を実行させ、
前記不整合判定処理で、
分割によって得られた項の組合せであって、予め前記コンピュータに記憶されている前記式に該当する項の組合せの有無を判定させ、
前記組合せが有る場合に、前記補助変数を特定させ、
前記組合せに含まれない項で前記補助変数が用いられている場合に、前記エネルギーを表す式の中に不整合が生じていると判定させる
不整合判定プログラムを記録した付記10に記載のコンピュータ読取可能な記録媒体。
【0146】
(付記13)
前記コンピュータに、
前記不整合判定処理で、
前記エネルギーを表す式とともに、スピンの状態を表す各変数を定義した文字列を取り込ませ、
前記文字列で定義された各変数のうち、前記エネルギーを表す式で用いられていない変数がある場合に、前記エネルギーを表す式の中に不整合が生じていると判定させる
不整合判定プログラムを記録した付記10に記載のコンピュータ読取可能な記録媒体。
【0147】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【0148】
本発明は、組合せ最適化問題におけるエネルギーを表す式の中に不整合が生じているか否かを判定する不整合判定装置に好適に適用される。
【符号の説明】
【0149】
1 不整合判定装置
2 入力部
3 分割部
4 不整合判定部
5 提示部