(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】求解システム、求解方法および求解プログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20231219BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2022512514
(86)(22)【出願日】2020-03-30
(86)【国際出願番号】 JP2020014476
(87)【国際公開番号】W WO2021199119
(87)【国際公開日】2021-10-07
【審査請求日】2022-07-13
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】鷹野 芙美代
【審査官】多賀 実
(56)【参考文献】
【文献】植田 圭 外2名,「量子アニーリングエミュレータのためのデータ構造」,情報処理学会 DAシンポジウム論文集 [online],情報処理学会,2019年08月21日,第2019巻,pp.39-44,[検索日 2019.08.21], インターネット<URL:https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=198698&file_id=1&file_no=1>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10-17/18
G06N 3/00-99/00
G06Q 10/04-10/047
(57)【特許請求の範囲】
【請求項1】
個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する行列簡略化手段と、
簡略化した形式に変更された行列に基づいて、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態または前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するスピン状態導出手段とを備え、
前記行列簡略化手段は、
前記行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、前記行列を簡略化した形式に変更し、
前記スピン状態導出手段が、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するか、前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するかは、外部から指定される
ことを特徴とする求解システム。
【請求項2】
前記行列簡略化手段は、
スピンの組に対する制約が定められている場合に、前記制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外する
請求項1に記載の求解システム。
【請求項3】
前記行列簡略化手段は、
値が“0”でない要素のうち、絶対値が閾値以下である要素を、前記行列から削除する
請求項1または請求項2に記載の求解システム。
【請求項4】
前記行列簡略化手段は、
簡略化した形式に変更された行列の容量が、予め定められたメモリ容量に合うように、絶対値の昇順に、値が“0”でない要素を、前記行列から削除する
請求項1または請求項2に記載の求解システム。
【請求項5】
前記行列簡略化手段が、前記行列から、値が“0”である要素を削除するとともに、値が“0”でない要素をランダムに削除し、前記スピン状態導出手段が、簡略化した形式に変更された行列に基づいて、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態または前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するとともに、導出した状態のエネルギーを導出する動作を複数回繰り返し、
各スピンの状態として得られた複数種類の状態の中から、状態とともに導出された前記エネルギーに基づいて最適の状態を選択する選択手段を備える
請求項1または請求項2に記載の求解システム。
【請求項6】
個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する行列簡略化処理を実行し、
簡略化した形式に変更された行列に基づいて、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態または前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するスピン状態
導出処理を実行し、
前記行列簡略化処理で、
前記行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、前記行列を簡略化した形式に変更し、
前記スピン状態
導出処理で、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するか、前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するかは、外部から指定される
ことを特徴とする求解方法。
【請求項7】
前記行列簡略化処理で、
スピンの組に対する制約が定められている場合に、前記制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外する
請求項6に記載の求解方法。
【請求項8】
コンピュータに、
個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する行列簡略化処理、および、
簡略化した形式に変更された行列に基づいて、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態または前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するスピン状態導出処理
を実行させ、
前記行列簡略化処理で、
前記行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、前記行列を簡略化した形式に変更させ、
前記コンピュータに、前記スピン状態導出処理で、前記エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出させるか、前記エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出させるかは、外部から指定される
ための求解プログラ
ム。
【請求項9】
前記コンピュータに、
前記行列簡略化処理で、
スピンの組に対する制約が定められている場合に、前記制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外させる
請求項8に記載の求解プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、求解システム、求解方法および求解プログラムに関し、特に、組合せ最適化問題の解に相当する各スピンの状態を求める求解システム、求解方法および求解プログラムに関する。
【背景技術】
【0002】
組合せ最適化問題を解く際に、イジングモデルのエネルギー関数が利用されている。なお、組合せ最適化問題の例として、巡回セールスマン問題、ナップサック問題、グラフ分割問題等が挙げられる。ただし、組合せ最適化問題は、これらの問題に限らない。
【0003】
イジングモデルは、個々のスピンによって磁性体の振る舞いを表わす統計力学上のモデルであるが、組合せ最適化問題の求解にも適用可能である。イジングモデルでは、個々のスピンの状態は、“1”または“-1”で表される。
【0004】
イジングモデルにおける“1”を第1の値と称することができる。また、イジングモデルにおける“-1”を第2の値と称することができる。
【0005】
組合せ最適化問題を解く場合、まず、組合せ最適化問題におけるエネルギーを表す式を作成する。例えば、巡回セールスマン問題を解く場合には、巡回セールスマン問題におけるエネルギーを表わす式を作成する。そして、組合せ最適化問題におけるエネルギーを表す式を、イジングモデルにおけるエネルギー関数に変換する。この変換方法は、公知である。
【0006】
イジングモデルにおけるエネルギー関数は、以下の式(1)のように表される。
【0007】
【0008】
式(1)におけるi,jは、いずれもスピンを表す変数である。また、式(1)におけるsiは、スピンiの状態を表す変数であり、sjは、スピンjの状態を表す変数である。式(1)におけるhiは、スピンiに対応する定数である。iの取り得る値毎に、hiは定数として定められる。式(1)におけるJijは、スピンiおよびスピンjの組合せに対応する定数である。iの取り得る値とjの取り得る値の組合せ毎に、Jijは定数として定められる。
【0009】
具体的には、Jijは、スピンiとスピンjとの間の相互作用を表す定数である。また、スピン間に相互作用があることを、スピン間が結合されているという。スピンiとスピンjとが結合されている場合、Jij≠0である。スピン間の相互作用の度合い(結合の度合い)が大きい程、Jijの絶対値は大きくなる。また、スピンiとスピンjとが結合されていない場合、Jij=0である。Jijは、スピン間結合データとも称される。
【0010】
また、個々のスピンのいずれにおいても、他の全てのスピンそれぞれと結合されていることを全結合と呼ぶ。また、結合されていないスピンの組合せが存在することを疎結合と呼ぶ。
【0011】
スピンの個数がN個である場合、J
ijの個数はN
2個である。この場合、N
2個の定数J
ijは、N行N列の行列の要素として表すことができる。
図10は、スピンの数が8個の場合における、J
ijを要素とする行列を示す模式図である。スピンの数が8個の場合、例えば、
図10に示すように、0≦i≦7(ただし、iは整数),0≦j≦7(ただし、jは整数)である。
図10では、図面を簡単にするためにスピンの数が8個である場合を例にしたが、スピンの数は8個に限定されない。
【0012】
式(1)に示すエネルギー関数が与えられた場合、最適な個々のスピンの状態(1または-1)を求める。最適な個々のスピンの状態は、そのエネルギー関数が示すエネルギーができるだけ小さくなるような個々のスピンの状態、または、そのエネルギー関数が示すエネルギーができるだけ大きくなるような個々のスピンの状態である。最適な個々のスピンの状態として、エネルギー関数が示すエネルギーができるだけ小さくなるような個々のスピンの状態を求めるか、エネルギー関数が示すエネルギーができるだけ大きくなるような個々のスピンの状態を求めるかは、外部から指定される。そのように得られた最適な個々のスピンの状態は、組合せ最適化問題の解を表している。以下、最適な個々のスピンの状態として、エネルギー関数が示すエネルギーができるだけ小さくなるような個々のスピンの状態を求めることを外部から指定された場合を例にして説明する。ただし、最適な個々のスピンの状態として、エネルギー関数が示すエネルギーができるだけ大きくなるような個々のスピンの状態を求めることを外部から指定された場合に関しても、同様である。
【0013】
式(1)に示すエネルギー関数が示すエネルギーができるだけ小さくなるような個々のスピンの状態を求めるためには、イジングモデルを表現したグラフを実装可能なハードウェアが必要になる。
【0014】
全結合の場合におけるイジングモデルは、例えば、完全グラフで表現することができる。
図11は、スピンの数が8個の場合の完全グラフの例を示す図である。
図11においても、図面を簡単にするためにスピンの数が8個である場合を例にしたが、スピンの数は8個に限定されない。
図11に示す8個のノードは、8個のスピンを表している。また、ノードを結ぶ各エッジは、スピン間の結合を表し、各エッジにはスピンの組合せに対応するJ
ijの値が割り当てられている。
【0015】
ノード数がN個の完全グラフを実装可能なハードウェアであれば、スピンの数がN個以下であることを条件に、全結合の場合であっても、疎結合の場合であっても、イジングモデルをグラフとして表現可能である。換言すれば、スピンの数がN個以下であることを条件に、全結合の場合のイジングモデルのエネルギー関数が与えられても、疎結合の場合のイジングモデルのエネルギー関数が与えられても、エネルギーができるだけ小さくなるような個々のスピンの状態を求めることができる。
【0016】
ただし、完全グラフを表現するためには、容量の大きなメモリが必要になる。例えば、
図10に例示するような、全てのスピン間結合データJ
ijを格納可能な容量のメモリが必要になる。
【0017】
また、組合せ最適化問題におけるエネルギーを表す式を、イジングモデルにおけるエネルギー関数に変換した場合、全結合になっていないことも多い。全結合であることが必要でない組合せ最適化問題の解に相当する各スピンの状態を求める場合には、完全グラフを実装可能なハードウェアで、使用されないメモリ領域が生じる。そして、そのような使用されないメモリ領域は、過剰に実装されたリソースであるということができる。
【0018】
特許文献1には、Jijを表す行列が疎行列である場合には、疎行列の圧縮形式を用いてもよいことが開示されている。
【先行技術文献】
【特許文献】
【0019】
【発明の概要】
【発明が解決しようとする課題】
【0020】
特許文献1に記載されている技術のように、Jijを表す行列が疎行列である場合に疎行列の圧縮形式を用いるということは、値が“0”である要素を削除した形式で行列を表すということである。そのような技術によれば、値が“0”である要素を削除した分だけ、メモリの容量を少なくすることができる。
【0021】
しかし、さらに少ない容量のメモリで、最適な個々のスピンの状態を求められることが好ましい。
【0022】
そこで、本発明は、少ない容量のメモリで、最適な個々のスピンの状態を求めることができる求解システム、求解方法および求解プログラムを提供することを目的とする。
【課題を解決するための手段】
【0023】
本発明による求解システムは、個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する行列簡略化手段と、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態またはエネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するスピン状態導出手段とを備え、行列簡略化手段が、行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、行列を簡略化した形式に変更し、スピン状態導出手段が、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するか、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するかは、外部から指定されることを特徴とする。
【0024】
本発明による求解方法は、個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する行列簡略化処理を実行し、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態またはエネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するスピン状態導出処理を実行し、行列簡略化処理で、行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、行列を簡略化した形式に変更し、スピン状態導出処理で、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するか、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するかは、外部から指定されることを特徴とする。
【0025】
本発明による求解プログラムは、コンピュータに、個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する行列簡略化処理、および、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態またはエネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するスピン状態導出処理を実行させ、行列簡略化処理で、行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、行列を簡略化した形式に変更させ、コンピュータに、スピン状態導出処理で、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出させるか、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出させるかは、外部から指定される。
【発明の効果】
【0026】
本発明によれば、少ない容量のメモリで、最適な個々のスピンの状態を求めることができる。
【図面の簡単な説明】
【0027】
【
図1】本発明の第1の実施形態の求解システムの例を示すブロック図である。
【
図2】行列全体を格納するためのメモリが存在すると仮定し、そのメモリに行列全体を格納した状態の例を模式的に示す模式図である。
【
図3】データ用メモリ、インデックス用メモリおよび要素数メモリに格納された値を模式的に示す模式図である。
【
図4】本発明の第1の実施形態における求解システムの処理経過の例を示すフローチャートである。
【
図5】本発明の第2の実施形態の求解システムの例を示すブロック図である。
【
図6】本発明の第2の実施形態における求解システムの処理経過の例を示すフローチャートである。
【
図7】本発明の第2の実施形態における求解システムの処理経過の例を示すフローチャートである。
【
図8】本発明の各実施形態の求解システムに係るコンピュータの構成例を示す概略ブロック図である。
【
図9】本発明の求解システムの概要の例を示すブロック図である。
【
図10】スピンの数が8個の場合における、J
ijを要素とする行列を示す模式図である。
【
図11】スピンの数が8個の場合の完全グラフの例を示す図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態を図面を参照して説明する。
【0029】
実施形態1.
図1は、本発明の第1の実施形態の求解システムの例を示すブロック図である。第1の実施形態において、求解システム1は、入力部2と、行列簡略化部3と、スピン状態導出部4とを備える。
【0030】
各実施形態では、前述の場合と同様に、i,jがいずれもスピンを表す変数であるものとする。また、適宜、説明を簡単にするために、スピンの数が8個である場合を例にして説明する。ただし、スピンの数は8個に限定されない。各実施形態では、スピンの数が8個である場合において、前述のように、0≦i≦7(ただし、iは整数),0≦j≦7(ただし、jは整数)であるものとして説明する。iやjの取り得る値“0”,“1”,“2”,・・・,“7”は、スピンの識別情報である。
【0031】
入力部2は、イジングモデルのエネルギー関数を取得する入力装置である。イジングモデルのエネルギー関数は、前述の式(1)のように表されるが、入力部2は、iの取り得る値とjの取り得る値の組合せ毎に定められたスピン間結合データJijを要素とする行列、および、iの取り得る値に定められた個々の定数hiを取得する。この行列および個々のhiを取得するということは、イジングモデルのエネルギー関数を取得することを意味する。
【0032】
入力部2は、スピン間結合データJijを要素とする行列、および、個々のhiを、ファイル形式で取得する。この場合、行列はファイルに記述されているので、スピン間結合データJijを要素とする行列全体を格納可能な容量を有するメモリが求解システムに備えられていなくても、その行列の個々の要素を参照できる。
【0033】
入力部2は、例えば、光学ディスク等のデータ記録媒体に記録されたファイルを読み込むデータ読み込み装置によって実現されてもよいが、入力部2は、そのようなデータ読み込み装置に限定されない。例えば、入力部2は、通信ネットワークを介して配信されるファイルを受信する通信インタフェースによって実現されていてもよい。
【0034】
入力部2が取得するイジングモデルのエネルギー関数は、組合せ最適化問題におけるエネルギーを表す式から変換されたエネルギー関数である。
【0035】
また、イジングモデルにおいて、スピンの組が定められ、その組に制約が定められる場合がある。例えば、スピン“0”~“3”の4個のスピンが組をなすと定められ、その組に対して、「組に属する1個のスピンのみが状態“1”となり、残りの3個のスピンは状態“0”となっていなければならない。」という制約が定められる場合がある。ただし、制約は上記の例に限定されない。例えば、制約の対象となる組に属するスピンの数は4個に限定されない。また、制約の内容も上記の例に限定されない。また、制約が定められるスピンの組は1組とは限らず、制約が定められるスピンの組が複数存在していてもよい。
【0036】
スピンの組が定められ、その組に制約が定められている場合、入力部2は、制約およびその制約が定められた組に属する各スピンの識別情報も取得する。制約およびその制約が定められた組に属する各スピンの識別情報も、スピン間結合データJijを要素とする行列、および、個々のhiを記述したファイルに記述されていてよい。そして、入力部2は、そのファイルを取得すればよい。
【0037】
制約が定められた組に属する任意の2つのスピン間は結合されている。すなわち、制約が定められた組に属する任意の2つのスピンに対応するJijの値は0ではない。
【0038】
行列簡略化部3は、入力部2が取得した行列(iの取り得る値とjの取り得る値の組合せ毎に定められたスピン間結合データJijを要素とする行列)を簡略化した形式に変更する。以下、入力部2が取得した行列を元の行列と記す場合がある。
【0039】
求解システム1は、元の行列全体を格納するためのメモリを備えていない。仮に、元の行列全体を格納するためのメモリが存在すると仮定し、そのメモリに元の行列全体を格納した状態の例を
図2に示す。
図2において、白色は、スピン間結合データJ
ijの値が0であることを意味している。また、斜線および縦線の模様は、スピン間結合データJ
ijの値が0以外であることを意味している。また、縦線の模様は、スピン間結合データJ
ijの値が0ではないが、絶対値が小さいこと(例えば、絶対値が閾値以下であること)を意味している。
【0040】
行列簡略化部3は、元の行列から、値が“0”である要素を削除する。また、行列簡略化部3は、元の行列から、値が“0”でない要素のうちの一部の要素も削除する。そして、行列簡略化部3は、削除せずに残した要素を第0列側に詰める。本例では、残った要素を第0列側に詰める場合を例にして説明する。
【0041】
行列簡略化部3は、削除せずに残した要素を第0列側に詰め、その状態の各要素の値(Jij)を、データ用メモリに格納する。データ用メモリは、求解システム1に実装されている。各実施形態では、データ用メモリに格納された値は、dataという名称の配列として参照可能であるものとする。
【0042】
さらに、行列簡略化部3は、行毎に、削除せずに残した要素が元の行列の第何列に該当するのかをインデックスとして、インデックス用メモリに格納する。インデックス用メモリは、求解システム1に実装されている。各実施形態では、インデックス用メモリに格納された値は、index という名称の配列として参照可能であるものとする。
【0043】
また、行列簡略化部3は、行毎に、削除せずに残した要素の数を、要素数メモリに格納する。要素数メモリは、求解システム1に実装されている。各実施形態では、要素数メモリに格納された値は、numData という名称の配列として参照可能であるものとする。
【0044】
求解システム1には、元の行列全体を格納するためのメモリは実装されていないが、元の行列は入力部2が取得するファイルに記述されている。従って、その行列を参照することによって、行列簡略化部3は上記の動作を実行できる。
【0045】
図3は、データ用メモリ、インデックス用メモリおよび要素数メモリに格納された値を模式的に示す模式図である。
図3に示す例では、データ用メモリに格納された値については具体的に示していない。データ用メモリ、インデックス用メモリおよび要素数メモリは、それらのメモリの容量の和が、元の行列全体を格納可能なメモリの容量よりも小さくなるように設けられている。
【0046】
データ用メモリ、インデックス用メモリおよび要素数メモリに格納された各値は、元の行列を簡略化した形式で表しているということができる。
【0047】
前述のように、行列簡略化部3は、元の行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除する。以下、行列簡略化部3が、値が“0”でない要素を削除する態様の例を示す。
【0048】
行列簡略化部3は、値が“0”でない要素のうち絶対値が閾値以下である要素を削除してもよい。例えば、
図2に示す縦線の模様が、スピン間結合データJ
ijの値が0ではないが、絶対値が閾値以下であることを示しているとする。この場合、行列簡略化部3が、値が“0”である要素を削除するとともに、値が“0”でない要素のうち絶対値が閾値以下である要素を削除し、削除されずに残った要素をデータ用メモリに格納し、それに応じて、インデックス用メモリおよび要素数メモリに値を格納した状態は、
図3に示す状態となる。
【0049】
ただし、スピンの組が定められ、その組に制約が定められている場合には、行列簡略化部3は、その制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外してもよい。例えば、識別情報“0”,“1”,“2”,“3”のスピンからなる組に対して制約が定められているとする。この場合、この組に属するスピン間の結合を表す要素は、J01,J10,J02,J20,J03,J30,J12,J21,J13,J31,J23,J32である。この場合、行列簡略化部3は、これらの要素を削除対象から除外してもよい。すなわち、これらの要素の中に、絶対値が閾値以下である要素が存在している場合に、行列簡略化部3は、その要素を削除せずに残してもよい。
【0050】
行列簡略化部3が、制約が定められた組に属するスピン間の結合を表す要素を削除対象から除外する場合には、制約を満たさない状態を解として導出する確率を低減できるという効果が得られる。
【0051】
行列簡略化部3が、値が“0”でない要素を削除する態様の他の例を示す。行列簡略化部3は、簡略化した形式に変更された行列の容量が、予め定められたメモリ容量(データ用メモリ、インデックス用メモリおよび要素数メモリの容量の和)に合うように、絶対値の昇順に、値が“0”でない要素を、元の行列から削除してもよい。例えば、データ用メモリ、インデックス用メモリおよび要素数メモリの容量の和がRであるとする。この場合、行列簡略化部3は、値が0である要素を削除する。さらに、行列簡略化部3は、削除されずに残される各要素の容量、並びに、残される要素に合わせてインデックス用メモリおよび要素数メモリに格納される各値の容量の和がRになるまで、値が“0”でない要素を絶対値の昇順に元の行列から削除する。この削除態様で削除される要素が、
図2において縦線で示されているとする。この場合、行列簡略化部3が、削除せずに残した要素をデータ用メモリに格納し、それに応じて、インデックス用メモリおよび要素数メモリに値を格納した状態は、
図3に示す状態となる。
【0052】
ただし、スピンの組が定められ、その組に制約が定められている場合には、行列簡略化部3は、その制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外してもよい。この点については、前述の場合と同様である。
【0053】
スピン状態導出部4は、簡略化した形式に変更された行列(
図3に示す例を参照)に基づいて、エネルギー関数(入力部2が取得したイジングモデルのエネルギー関数)が表すエネルギーができるだけ小さくなるときの各スピンの状態、または、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出する。換言すれば、スピン状態導出部4は、簡略化した形式に変更された行列に基づいて、最適な各スピンの状態を導出する。エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態とエネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態のどちらが最適な各スピンの状態に該当するのかは、組合せ最適化問題等に依存する。そのため、スピン状態導出部4は、最適な各スピンの状態として、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するのか、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するのかを、外部(例えば、求解システム1のユーザ)から予め指定される。この指定方法は、特に限定されない。例えば、スピン状態導出部4がエネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するのか、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するのかに関する指定が、入力部2が取得するファイルに記述されていてもよい。以下の説明では、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出することが外部から指定されている場合を例にして説明する。エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出することが外部から指定されている場合に関しても、以下と同様に説明できる。
【0054】
また、以下の説明では、スピン状態導出部4が、シミュレーテッドアニーリングによって、最適な各スピンの状態を導出する場合を例にして説明する。ただし、最適な各スピンの状態を導出する方法は、シミュレーテッドアニーリングに限定されない。
【0055】
行列簡略化部3およびスピン状態導出部4は、例えば、求解プログラムに従って動作するコンピュータのCPU(Central Processing Unit )によって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体から求解プログラムを読み込み、その求解プログラムに従って、行列簡略化部3およびスピン状態導出部4として動作すればよい。
【0056】
次に、処理経過について説明する。
図4は、本発明の第1の実施形態における求解システム1の処理経過の例を示すフローチャートである。既に説明した事項については、詳細な説明を省略する。
【0057】
また、シミュレーテッドアニーリングにおける温度は初期値に設定されているものとする。
【0058】
まず、入力部2が、イジングモデルのエネルギー関数を取得する(ステップS1)。具体的には、入力部2は、iの取り得る値とjの取り得る値の組合せ毎に定められたスピン間結合データJijを要素とする行列、および、iの取り得る値に定められた個々の定数hiを取得する。また、スピンの組が定められ、その組に制約が定められている場合、入力部2は、制約およびその制約が定められた組に属するスピンの識別情報も取得する。
【0059】
次に、行列簡略化部3は、スピン間結合データJ
ijを要素とする行列を簡略化した形式に変更し、データ用メモリ、インデックス用メモリおよび要素数メモリ(
図3参照)に値を格納する(ステップS2)。
【0060】
ステップS2において、行列簡略化部3は、ステップS1で得られた行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除する。そして、行列簡略化部3は、削除せずに残した要素をデータ用メモリ(
図3参照)に格納し、それに合わせて、インデックス用メモリおよび要素数メモリ(
図3参照)に値を格納する。値が“0”でない要素を削除する態様は、絶対値が閾値以下である要素を削除する態様であってもよい。あるいは、値が“0”でない要素を削除する態様は、簡略化した形式に変更された行列の容量が、予め定められたメモリ容量に合うように、絶対値の昇順に、値が“0”でない要素を、元の行列から削除する態様であってもよい。ただし、スピンの組が定められ、その組に制約が定められている場合には、行列簡略化部3は、その制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外してもよい。
【0061】
次に、スピン状態導出部4は、各スピンの状態を“1”または“-1”にランダムに定める(ステップS3)。
【0062】
次に、スピン状態導出部4は、フリップするスピンを1つ選択する(ステップS4)。ステップS4において、スピン状態導出部4は、例えば、ランダムに1つのスピンを選択してもよい。
【0063】
なお、「フリップする」とは、スピンの状態を変化させることである。以下、ステップS4で選択されたスピンを、選択スピンと記す。
【0064】
ステップS4の次に、スピン状態導出部4は、選択スピンをフリップした場合のエネルギー変化を、簡略化した形式に変更された行列(
図3に示す例を参照)に基づいて計算する(ステップS5)。
【0065】
簡略化した形式に変更された行列(
図3に示す例を参照)に基づいて、スピン状態導出部4が、選択スピンをフリップした場合のエネルギー変化を計算する方法を示す。スピン状態導出部4は、ステップS5で、以下に示す式(2)の計算によってエネルギー変化を求める。式(2)におけるDeltaEnergy がエネルギー変化である。
【0066】
【0067】
式(2)において、FlipSpinは、選択スピンの識別情報に該当する値である。また、data[][]は、データ用メモリ(
図3参照)に格納された値である。また、index[][] は、インデックス用メモリ(
図3参照)に格納された値である。numData[] は、要素数メモリ(
図3参照)に格納された値である。SpinState[ index[FlipSpin][k] ]は、識別情報がindex[FlipSpin][k]であるスピンの状態(1または-1)である。
【0068】
ステップS5の次に、スピン状態導出部4は、ステップS5で計算したエネルギー変化と、シミュレーテッドアニーリングにおける温度とに基づいて、シミュレーテッドアニーリングにおける遷移確率を計算する(ステップS6)。
【0069】
次に、スピン状態導出部4は、ステップS6で計算した遷移確率に基づいて、状態遷移を受理するか否かを判定する(ステップS7)。
【0070】
状態遷移を受理する場合(ステップS7のYes)、スピン状態導出部4は、選択スピンをフリップする(ステップS8)。
【0071】
次に、スピン状態導出部4は、シミュレーテッドアニーリングにおける温度を減少させる(ステップS9)。
【0072】
また、ステップS7において、状態遷移を受理しない場合(ステップS7のNo)、スピン状態導出部4は、ステップS8を実行せずに、ステップS9を実行する。
【0073】
ステップS9の次に、スピン状態導出部4は、ステップS4~S10のループ処理の終了条件が満たされたか否かを判定する(ステップS10)。
【0074】
ループ処理の終了条件の例として、シミュレーテッドアニーリングにおける温度が所定の温度まで減少したことや、ステップS4~S10のループ処理の実行回数が所定回数に達したこと等が挙げられる。ただし、ループ処理の終了条件は、これらの例に限定されず、他の終了条件が定められていてもよい。
【0075】
ループ処理の終了条件が満たされていない場合(ステップS10のNo)、スピン状態導出部4は、ステップS4以降の動作を繰り返す。
【0076】
また、ループ処理の終了条件が満たされた場合(ステップS10のYes)、スピン状態導出部4は、その時点での各スピンの状態を、エネルギー関数ができるだけ小さくなるときの各スピンの状態として定め、処理を終了する。
【0077】
本実施形態によれば、行列簡略化部3が、スピン間結合データJijを要素とする行列を簡略化した形式に変更する。このとき、行列簡略化部3は、元の行列から、値が“0”である要素を削除するだけでなく、値が“0”でない要素のうちの一部の要素も削除する。そして、スピン状態導出部4は、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出する。従って、スピン間結合データJijを要素とする行列全体を格納するためのメモリを用いる必要はなく、少ない容量のメモリで、最適な個々のスピンの状態を求めることができる。なお、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出することが外部から指定されている場合には、スピン状態導出部4は、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出する。
【0078】
特許文献1に記載の技術と比較すると、特許文献1に記載の技術では、Jijを表す行列が疎行列である場合に疎行列の圧縮形式を用いる。すなわち、特許文献1に記載の技術では、値が“0”である要素を削除した形式で行列を表す。一方、本実施形態では、スピン間結合データJijを要素とする行列から、値が“0”である要素を削除するだけでなく、値が“0”でない要素のうちの一部の要素も削除する。従って、本実施形態によれば、行列を格納するためのメモリの容量を少なくすることできる効果が、特許文献1に記載の技術よりも大きい。
【0079】
なお、イジングモデルをキンググラフで表現する場合に、キンググラフに応じた行列(スピン間結合データJijを要素とする行列)の簡略化表現を求める方法として、本発明の行列の簡略化方法を用いてもよい。
【0080】
実施形態2.
図5は、本発明の第2の実施形態の求解システムの例を示すブロック図である。第2の実施形態において、求解システム1は、入力部2と、行列簡略化部3と、スピン状態導出部4と、選択部5とを備える。
【0081】
なお、第1の実施形態と同様の要素については、
図1と同一の符号を付し、説明を省略する。また、第2の実施形態においても、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出することが外部から指定されている場合を例にして説明する。
【0082】
ただし、第2の実施形態では、行列簡略化部3は、元の行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素を削除するときに、値が“0”でない要素をランダムに削除する。
【0083】
そして、行列簡略化部3は、削除せずに残した要素を、例えば、第0列側に詰め、その状態の各要素の値(J
ij)を、データ用メモリ(
図3参照)に格納する。また、行列簡略化部3は、行毎に、削除せずに残した要素が元の行列の第何列に該当するのかをインデックスとして、インデックス用メモリ(
図3参照)に格納する。また、行列簡略化部3は、行毎に、削除せずに残した要素の数を、要素数メモリ(
図3参照)に格納する。この動作は、第1の実施形態における動作と同様である。
【0084】
さらに、第2の実施形態では、行列簡略化部3が、元の行列から、値が“0”である要素を削除するとともに、値が“0”でない要素をランダムに削除し、スピン状態導出部4が、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態およびその状態のエネルギーを導出する動作を、複数回繰り返す。以下、この繰り返し回数をM回とする。Mは、2以上の整数である。なお、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出することが外部から指定されている場合には、上記の動作において、スピン状態導出部4は、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出する。
【0085】
上記の動作を複数回繰り返すことによって、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態が複数種類得られる。また、その状態毎に、エネルギーも得られる。選択部5は、状態とともに導出されたエネルギーに基づいて、複数種類得られた状態の中から、最適な状態を選択する。本実施形態において、選択部5によって選択された状態が、最適な各スピンの状態である。エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出することが外部から指定されている場合には、選択部5は、各スピンの状態とその状態のエネルギーとが複数種類得られたときに、そのエネルギーの中で最小となるエネルギーに対応する各スピンの状態を、最適な各スピンの状態として選択すればよい。また、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出することが外部から指定されている場合には、選択部5は、各スピンの状態とその状態のエネルギーとが複数種類得られたときに、そのエネルギーの中で最大となるエネルギーに対応する各スピンの状態を、最適な各スピンの状態として選択すればよい。
【0086】
また、第2の実施形態において、スピン状態導出部4が、各スピンの状態おけるエネルギーを導出する場合には、入力部2が取得したエネルギー関数(すなわち、元の行列で表されるエネルギー関数)を用いて、エネルギーを導出する。
【0087】
行列簡略化部3、スピン状態導出部4および選択部5は、例えば、求解プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体から求解プログラムを読み込み、その求解プログラムに従って、行列簡略化部3、スピン状態導出部4および選択部5として動作すればよい。
【0088】
なお、入力部2は、第1の実施形態の入力部2と同様である。
【0089】
次に、処理経過について説明する。
図6および
図7は、本発明の第2の実施形態における求解システム1の処理経過の例を示すフローチャートである。第1の実施形態における動作と同様の動作については、
図4に示す符号と同一の符号を付し、説明を省略する
【0090】
まず、入力部2が、イジングモデルのエネルギー関数を取得する(ステップS1)。ステップS1は、第1の実施形態におけるステップS1(
図4参照)と同様である。
【0091】
次に、スピン状態導出部4は、変数mの値を1とする(ステップS51)。mは、ステップS52から始まるループ処理の実行回数を表す変数である。
【0092】
次に、スピン状態導出部4は、シミュレーテッドアニーリングにおける温度を初期値に設定する(ステップS52)。
【0093】
次に、行列簡略化部3は、スピン間結合データJ
ijを要素とする行列を簡略化した形式に変更し、データ用メモリ、インデックス用メモリおよび要素数メモリ(
図3参照)に値を格納する(ステップS2)。第2の実施形態では、行列簡略化部3は、ステップS1で得られた行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素を削除するときに、値が“0”でない要素をランダムに削除する。このとき、値が“0”でない要素の削除個数も、行列簡略化部3は、ランダムに決定してよい。
【0094】
第2の実施形態では、ステップS52から始まるループ処理が複数回(M回)実行される。従って、ステップS2の処理も複数回実行される。ステップS2の各回において、値が“0”でない要素は、ランダムに削除されるので、削除される、値が“0”でない要素は、毎回異なっていてよい。
【0095】
ただし、スピンの組が定められ、その組に制約が定められている場合には、行列簡略化部3は、その制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外してもよい。この点は、第1の実施形態と同様である。
【0096】
ステップS2の後、スピン状態導出部4は、ステップS3~S7を実行する。このステップS3~S7は、第1の実施形態におけるステップS3~S7と同様である。
【0097】
そして、ステップS7で状態遷移を受理する場合(ステップS7のYes)、スピン状態導出部4は、選択スピンをフリップする(ステップS8)。
【0098】
次に、スピン状態導出部4は、シミュレーテッドアニーリングにおける温度を減少させる(ステップS9)。ステップS8,S9は、第1の実施形態におけるステップS8,S9と同様である。
【0099】
また、ステップS7において、状態遷移を受理しない場合(ステップS7のNo)、スピン状態導出部4は、ステップS8を実行せずに、ステップS9を実行する。
【0100】
ステップS9の次に、スピン状態導出部4は、ステップS4~S10のループ処理の終了条件が満たされたか否かを判定する(ステップS10、
図7参照)。ステップS10は、第1の実施形態におけるステップS10と同様である。
【0101】
ステップS4~S10のループ処理の終了条件が満たされていない場合(ステップS10のNo)、スピン状態導出部4は、ステップS4以降の動作を繰り返す。
【0102】
また、ステップS4~S10のループ処理の終了条件が満たされた場合(ステップS10のYes)、スピン状態導出部4は、その時点での各スピンの状態におけるエネルギーを導出する(ステップS11)。このとき、スピン状態導出部4は、入力部2が取得したエネルギー関数(すなわち、元の行列で表されるエネルギー関数)を用いて、エネルギーを導出する。この時点での各スピンの状態は、エネルギー関数が表すエネルギーができるだけ小さくなる状態であると言える。
【0103】
次に、スピン状態導出部4は、変数mの値と紐付けて、その時点での各スピンの状態、および、その各スピンの状態におけるエネルギー(すなわち、ステップS11で導出したエネルギー)を記憶する(ステップS53)。
【0104】
次に、スピン状態導出部4は、m=Mであるか否かを判定する(ステップS54)。m<Mであるということは、ステップS52(
図6参照)から始まるループ処理が、定められた回数(M回)実行されていないことを意味する。m=Mであるということは、ステップS52(
図6参照)から始まるループ処理が、定められた回数(M回)実行されたことを意味する。なお、
図6および
図7に示す例において、m>Mとなることはない。
【0105】
m=Mでない場合(ステップS54のNo)、スピン状態導出部4は、変数mの値を1増加させる(ステップS55)。ステップS55の後、求解システム1は、ステップS52以降の動作を繰り返す。
【0106】
m=Mである場合(ステップS54のYes)、各スピンの状態、および、その各スピンの状態におけるエネルギーが、M種類得られている。すなわち、「各スピンの状態」がM種類得られ、また、M種類の状態に対応するM種類のエネルギーが得られている。このM種類のエネルギーはいずれも、入力部2が取得したエネルギー関数(すなわち、元の行列で表されるエネルギー関数)を用いて導出されたものである。選択部5は、各状態におけるエネルギーに基づいて、M種類の状態の中から、最適な状態を選択する(ステップS56)。具体的には、選択部5は、M種類のエネルギーのうちの最小のエネルギーに対する「各スピンの状態」を選択し、選択した「各スピンの状態」を、最適な「各スピンの状態」と定める。また、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出することが外部から指定されているとする。この場合には、選択部5は、M種類のエネルギーのうちの最大のエネルギーに対する「各スピンの状態」を選択し、選択した「各スピンの状態」を、最適な「各スピンの状態」と定める。
【0107】
本実施形態においても、第1の実施形態と同様に、行列簡略化部3は、元の行列から、値が“0”である要素を削除するだけでなく、値が“0”でない要素のうちの一部の要素も削除する。従って、スピン間結合データJijを要素とする行列全体を格納するためのメモリを用いる必要はなく、少ない容量のメモリで、最適な個々のスピンの状態を求めることができる。すなわち、本実施形態においても、第1の実施形態と同様の効果が得られる。
【0108】
次に、上記の第1の実施形態および第2の実施形態の変形例について説明する。上記の第1の実施形態および第2の実施形態では、イジングモデルのエネルギー関数が与えられる場合について説明した。換言すれば、入力部2が、イジングモデルのエネルギー関数を取得する場合について説明した。求解システム1に与えられるエネルギー関数(入力部2が取得するエネルギー関数)は、QUBO(Quadratic Unconstrained Binary Optimization )のエネルギー関数であってもよい。
【0109】
QUBOは、個々のスピンの状態を“1”または“0”で表すモデルである。QUBOにおける“1”を、イジングモデルにおける“1”と同様に、第1の値と称することができる。また、QUBOにおける“0”を、イジングモデルにおける“-1”と同様に、第2の値と称することができる。
【0110】
組合せ最適化問題におけるエネルギーを表す式は、QUBOにおけるエネルギー関数に変換することもできる。この変換方法は、公知である。また、イジングモデルにおけるエネルギー関数と、QUBOにおけるエネルギー関数とは、相互に変換可能である。
【0111】
QUBOにおけるエネルギー関数は、以下の式(3)のように表される。
【0112】
【0113】
式(3)におけるi,jは、いずれもスピンを表す変数である。また、式(3)におけるxiは、スピンiの状態を表す変数であり、xjは、スピンjの状態を表す変数である。式(3)におけるQijは、スピンiおよびスピンjの組合せに対応する定数である。iの取り得る値とjの取り得る値の組合せ毎に、Qijは定数として定められる。
【0114】
スピンの個数がN個である場合、Qijの個数はN2個である。この場合、N2個の定数Qijは、N行N列の行列の要素として表すことができる。本変形例では、このQijを要素とする行列を、第1の実施形態および第2の実施形態におけるJijを要素とする行列と同様に扱う。
【0115】
入力部2は、iの取り得る値とjの取り得る値の組合せ毎に定められたQijを要素とする行列をファイル形式で取得する。この行列を取得するということは、式(3)のように表されるQUBOのエネルギー関数を取得することを意味する。
【0116】
そして、行列簡略化部3は、その行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除する。値が“0”でない要素を削除する態様は、第1の実施形態や第2の実施形態で説明した態様と同様でよい。
【0117】
その他の点は、第1の実施形態や第2の実施形態と同様である。本変形例においても、第1の実施形態および第2の実施形態と同様の効果を得ることができる。
【0118】
図8は、本発明の各実施形態の求解システム1に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004と、データ読み込み装置1005とを備える。
【0119】
本発明の各実施形態の求解システム1は、コンピュータ1000によって実現される。求解システム1の動作は、求解プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、その求解プログラムを補助記憶装置1003から読み出して主記憶装置1002に展開し、その求解プログラムに従って、上記の各実施形態で説明した処理を実行する。
【0120】
補助記憶装置1003は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、そのプログラムに従って上記の各実施形態で説明した処理を実行してもよい。
【0121】
また、各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。
【0122】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0123】
次に、本発明の概要を説明する。
図9は、本発明の求解システムの概要の例を示すブロック図である。本発明の求解システムは、行列簡略化手段93と、スピン状態導出手段94とを備える。
【0124】
行列簡略化手段93(例えば、行列簡略化部3)は、個々のスピンの状態を第1の値または第2の値で表すモデルにおけるエネルギー関数で用いられる行列を簡略化した形式に変更する。このとき、行列簡略化手段93は、行列から、値が“0”である要素を削除するとともに、値が“0”でない要素のうちの一部の要素も削除することによって、行列を簡略化した形式に変更する。
【0125】
スピン状態導出手段94(例えば、スピン状態導出部4)は、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態またはエネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出する。スピン状態導出手段94が、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態を導出するか、エネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するかは、外部から指定される。
【0126】
そのような構成によって、少ない容量のメモリで、最適な個々のスピンの状態を求めることができる。
【0127】
また、行列簡略化手段93は、スピンの組に対する制約が定められている場合に、制約が定められた組に属するスピン間の結合を表す要素を、削除対象から除外してもよい。
【0128】
また、行列簡略化手段93は、値が“0”でない要素のうち、絶対値が閾値以下である要素を、行列から削除してもよい。
【0129】
また、行列簡略化手段93は、簡略化した形式に変更された行列の容量が、予め定められたメモリ容量に合うように、絶対値の昇順に、値が“0”でない要素を、行列から削除してもよい。
【0130】
また、行列簡略化手段93が、行列から、値が“0”である要素を削除するとともに、値が“0”でない要素をランダムに削除し、スピン状態導出手段94が、簡略化した形式に変更された行列に基づいて、エネルギー関数が表すエネルギーができるだけ小さくなるときの各スピンの状態またはエネルギー関数が表すエネルギーができるだけ大きくなるときの各スピンの状態を導出するとともに、導出した状態のエネルギーを導出する動作を複数回繰り返してもよい。そして、各スピンの状態として得られた複数種類の状態の中から、状態とともに導出されたエネルギーに基づいて最適の状態を選択する選択手段(例えば、選択部5)を備えていてもよい。
【0131】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【0132】
本発明は、組合せ最適化問題の解に相当する各スピンの状態を求める求解システムに好適に適用可能である。
【符号の説明】
【0133】
1 求解システム
2 入力部
3 行列簡略化部
4 スピン状態導出部
5 選択部