(57)【特許請求の範囲】
【請求項１】
イジングモデルの相互作用関係をＮ個の第１スピン群の各スピンとＮ個の第２スピン群の各スピンとを接続した完全２部グラフとして表し、前記第１スピン群のｉ番目のスピンと前記第２スピン群のｊ（＝ｉ）番目のスピンとが同値となるように前記第１スピン群のｉ番目のスピンと前記第２スピン群のｊ番目のスピンとの間の相互作用を設定したエネルギー関数を記憶する記憶部と、
前記エネルギー関数に基づき前記イジングモデルの基底状態を探索する基底状態探索部と、
を備える、情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記第１スピン群及び前記第２スピン群の夫々のスピンの総数をＮとし、基底状態における前記第１スピン群のスピンのｉ番目の値をＳｉ（ｉ＝１〜Ｎ）とし、基底状態における前記第２スピン群のスピンのｊ番目の値をＳｊ（ｊ＝１〜Ｎ）とし、前記第１スピン群のｉ番目のスピンと第２スピン群のｊ番目のスピンと間の相互作用係数をＪi,jとし、前記第１スピン群のスピンのｉ番目と前記第２スピン群のスピンのｊ（＝ｉ）番目との間の相互作用係数をｗｉとし、
前記相互作用係数Ｊi,jは次式、
0006874219.tif 000019
又はｉ行ｊ列の要素がＪi,jで対角成分が０である行列の最小固有値λで与えられる次式
0006874219.tif 000020
を満たすように設定される、
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記基底状態探索部は、
シミュレーティッド・アニーリング法（simulated Annealing Method）のアルゴリズムに従って前記イジングモデルの基底状態を探索し、
前記探索において、状態間の遷移のし易さを表すパラメータである温度Ｔにおける状態遷移の受理確率（遷移確率）Ｐ（σ，σ’）をメトロポリス法（Metropolis method）に基づき次式から求め、
0006874219.tif 000021
前記第１スピン群の各スピンの値をσＬ１、・・・、σＬＮと表し、前記第２スピン群の各スピンの値をσＲ１、・・・、σＲＮと表した場合に、
第２スピン群のｉ番目のスピンの値σＲｉを反転させたときの前記エネルギーＨの差分ΔＨを次式から求め、
0006874219.tif 000022
第１スピン群のｉ番目のスピンの値σＬｉを反転させたときの前記エネルギーＨの差分ΔＨを次式から求め、
0006874219.tif 000023
ｕ（０＜ｕ≦１）を一様乱数とした場合に前記状態遷移が受理される条件を次式に基づき判定する、
0006874219.tif 000024
情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記基底状態探索部は、
前記第２スピン群の次状態を次式により求め、  
0006874219.tif 000025
前記第１スピン群の次状態を次式により求める、
0006874219.tif 000026
情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記相互作用係数Ｊi,jを記憶する隣接行列メモリと、
前記第１スピン群の各スピンの値σＬ１、・・・、σＬＮを記憶する第１スピンメモリと、
前記第２スピン群の各スピンの値σＲ１、・・・、σＲＮを記憶する第２スピンメモリと、
前記第１スピンメモリの値又は前記第２スピンメモリの値、前記隣接行列メモリの値、及びＮ次元ベクトルｗ＝（ｗ１、・・・、ｗＮ）を表す信号が入力される積和演算装置と、
前記第１スピンメモリの値又は前記第２スピンメモリの値、及び各要素が互いに独立な乱数であるＮ次元ベクトルが入力されるベクトル乗算器と、
前記積和演算装置から出力されるＮ次元ベクトルと、前記ベクトル乗算器から出力されるＮ次元ベクトルとが入力され、入力された各Ｎ次元ベクトルの対応する要素同士を比較し、要素同士の大小関係を出力する比較器と、
を有する一つ以上の演算装置を備える、
情報処理装置。
【請求項６】
請求項５に記載の前記演算装置であって、
前記隣接行列メモリと、前記第１スピンメモリと、前記第２スピンメモリと、前記積和演算装置と、前記ベクトル乗算器と、前記比較器と、を備える、
演算装置。
【請求項７】
請求項６に記載の演算装置であって、
ＣＭＯＳ（Complementary Metal Oxide Semiconductor）回路、ＦＰＧＡ（Field Programmable Gate Array）、及びＡＳＩＣ（Application Specific Integrated Circuit）のうちのいずれかにより実現される、
演算装置。
【請求項８】
情報処理装置が、
イジングモデルの相互作用関係をＮ個の第１スピン群の各スピンとＮ個の第２スピン群の各スピンとを接続した完全２部グラフとして表わし、前記第１スピン群のｉ番目のスピンと前記第２スピン群のｊ（＝ｉ）番目のスピンとが同値となるように前記第１スピン群のｉ番目のスピンと前記第２スピン群のｊ番目のスピンとの間の相互作用を設定したエネルギー関数を記憶するステップ、及び、
前記エネルギー関数に基づき前記イジングモデルの基底状態を探索するステップ、
を実行する、
情報処理方法。
【請求項９】
請求項８に記載の情報処理方法であって、
前記第１スピン群及び前記第２スピン群の夫々のスピンの総数をＮとし、基底状態における前記第１スピン群のスピンのｉ番目の値をＳｉ（ｉ＝１〜Ｎ）とし、基底状態における前記第２スピン群のスピンのｊ番目の値をＳｊ（ｊ＝１〜Ｎ）とし、前記第１スピン群のｉ番目のスピンと第２スピン群のｊ番目のスピンと間の相互作用係数をＪi,jとし、前記第１スピン群のスピンのｉ番目と前記第２スピン群のスピンのｊ（＝ｉ）番目との間の相互作用係数をｗｉとし、
前記相互作用係数Ｊi,jは次式、
0006874219.tif 000027
又はｉ行ｊ列の要素がＪi,jで対角成分が０である行列の最小固有値λで与えられる次式
0006874219.tif 000028
を満たすように設定される、
情報処理方法。
【請求項１０】
請求項９に記載の情報処理方法であって、
前記情報処理装置は、
シミュレーティッド・アニーリング法（simulated Annealing Method）のアルゴリズムに従って前記イジングモデルの基底状態を探索し、
前記探索において、状態間の遷移のし易さを表すパラメータである温度Ｔにおける状態遷移の受理確率（遷移確率）Ｐ（σ，σ’）をメトロポリス法（Metropolis method）に基づき次式から求め、
0006874219.tif 000029
前記第１スピン群の各スピンの値をσＬ１、・・・、σＬＮと表し、前記第２スピン群の各スピンの値をσＲ１、・・・、σＲＮと表した場合に、
第２スピン群のｉ番目のスピンの値σＲｉを反転させたときの前記エネルギーＨの差分ΔＨを次式から求め、
0006874219.tif 000030
第１スピン群のｉ番目のスピンの値σＬｉを反転させたときの前記エネルギーＨの差分ΔＨを次式から求め、
0006874219.tif 000031
ｕ（０＜ｕ≦１）を一様乱数とした場合に前記状態遷移が受理される条件を次式に基づき判定する、
0006874219.tif 000032
情報処理方法。
【請求項１１】
請求項１０に記載の情報処理方法であって、
前記情報処理装置は、
前記第２スピン群の次状態を次式により求め、
0006874219.tif 000033
前記第１スピン群の次状態を次式により求める、
0006874219.tif 000034
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算装置、及び情報処理方法に関する。
【背景技術】
【０００２】
本出願は、２０１８年５月８日に出願された日本特許出願２０１８−０８９７７３号に基づく優先権を主張し、その開示全体を援用して本出願に取り込むものである。【０００３】
特許文献１には、「相互作用モデルの解を求めるための基本構成単位となる構成要素をアレイ状に配置した半導体装置を提供する。」、「相互作用モデルの１つのノードの状態を示す値を記憶する第１のメモリセルと、１つのノードに接続された他のノードからの相互作用を示す相互作用係数を記憶する第２のメモリセルと、第１のメモリセルの値を固定するためのフラグを記憶する第３のメモリセルと、他のノードの状態を示す値及び前記相互作用係数に基づいて、前記１つのノードの次状態を示す値を決定する第１の演算回路と、フラグの値に応じて前記次状態を示す値を第１のメモリセルに記録するか否かを決定する第２の演算回路と、を有するユニットを複数備える。」と記載されている。【０００４】
非特許文献１には、量子アニーリング（断熱量子計算）（adiabatic quantum optimization）におけるマイナーエンベッディング（minor-embedding in adiabatic quantum optimization）に関して記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−５１３１３号公報
【非特許文献】
【０００６】
【非特許文献１】Choi, V. (2008). Minor-embedding in adiabatic quantum computation: I. The parameter setting problem. Quantum Information Processing, 7(5), 193-209.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
物理現象や社会現象の多くは相互作用モデルによって表現することができる。相互作用モデルは、モデルを構成する複数のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義される。物理学や社会科学の分野においては種々のモデルが提案されているが、いずれも相互作用モデルの一形態として解釈することができる。【０００８】
相互作用モデルの一つとしてイジングモデル（Ising Model）がある。イジングモデルの基底状態の探索は、イジングモデルのエネルギー関数を最小化するスピン配列を求める最適化問題である。イジングモデルの基底状態を探索する方法として、マルコフ連鎖モンテカルロ法（以下、ＭＣＭＣ（Markov chain Monte Carlo methods）と称する。）によるものがある。ＭＣＭＣでは、状態間を確率的に遷移させつつ状態のサンプリングを行うことで所望の統計量を推定する。【０００９】
ここでいわゆる組合せ最適化問題をイジングモデルの基底状態の探索問題に変換すると、スピン間の相互作用は密構造（個々のスピンが他のすべてのスピンと隣接する構造）となる。そのため、各スピンについて確率的な処理を同時に行うことはできず、例えば、半導体装置を用いてイジングモデルの基底状態の探索を行おうとすると処理の高速化が困難になるという課題がある。【００１０】
本発明は、こうした背景に鑑みてなされたもので、イジングモデルの基底状態の探索を効率よく行うことが可能な、情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するための本発明の一つは、情報処理装置であって、イジングモデルの相互作用関係をＮ個の第１スピン群の各スピンとＮ個の第２スピン群の各スピンとを接続した完全２部グラフとして表し、前記第１スピン群のｉ番目のスピンと前記第２スピン群のｊ（＝ｉ）番目のスピンとが同値となるように前記第１スピン群のｉ番目のスピンと前記第２スピン群のｊ番目のスピンとの間の相互作用を設定したエネルギー関数を記憶する記憶部と、前記エネルギー関数に基づき前記イジングモデルの基底状態を探索する基底状態探索部と、を備える。【００１２】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
【発明の効果】
【００１３】
本発明によれば、イジングモデルの基底状態の探索を効率よく行うことができる。
【図面の簡単な説明】
【００１４】
【図１】イジングモデルのエネルギーランドスケープの概念図である。
【図２】イジングモデルのスピン間の相互作用関係を完全グラフとして表した図である。
【図３】イジングモデルのスピン間の相互作用関係を完全２部グラフとして表した図である。
【図４】情報処理装置の概略的な構成を示す。
【図５】演算回路のブロック図である。
【図６】情報処理装置が備える主な機能を示す図である。
【図７】基底状態探索処理を説明するフローチャートである。
【図８】ＭＣＭＣにおけるステップ数とエネルギーＨとの関係を示すグラフである。
【発明を実施するための形態】
【００１５】
以下、実施の形態を図面に基づいて詳細に説明する。尚、以下の説明において、同一の又は類似する構成に共通の符号を付して重複した説明を省略することがある。また同一あるいは同様の機能を有する要素が複数ある場合に同一の符号に異なる添字を付して説明することがある。また複数の要素を区別する必要がない場合は添字を省略して説明することがある。
【００１６】
まずイジングモデル（Ising Model）について説明する。イジングモデルは磁性体の振舞いの説明に用いられる統計力学のモデルである。イジングモデルは、＋１／−１（「０／１」や「上／下」等でもよい）の２値をとるスピンの状態、及び上記スピン間の相互作用を示す相互作用係数を用いて定義される。イジングモデルのエネルギー関数Ｈ（σ）（一般にハミルトニアンと呼ばれる）は次式で表わされる。
0006874219.tif 000002
式１において、σｉ、σｊは、それぞれｉ番目とｊ番目のスピンの値、Ｊi,jは、ｉ番目とｊ番目のスピンの間の相互作用係数を表わす。
【００１７】
式１の右辺は、スピン間の相互作用に起因するエネルギーの総和である。一般にイジングモデルは無向グラフとして表現され、ｉ番目のスピンからｊ番目のスピンへの相互作用と、ｊ番目のスピンからｉ番目のスピンへの相互作用とを区別することはない。そのため、式１ではｉ＜ｊを満たすσｉ、σｊの組合せについて相互作用の影響を求めている。
【００１８】
イジングモデルの基底状態の探索はイジングモデルのエネルギー関数を最小化するスピン配列を求める最適化問題である。本実施形態では、イジングモデルの基底状態の探索をマルコフ連鎖モンテカルロ法（以降、ＭＣＭＣ（Markov chain Monte Carlo methods）と呼ぶ）により行う。
【００１９】
図１はイジングモデルのエネルギーランドスケープの概念図である。グラフの横軸はスピン配列、縦軸は系の全エネルギーである。確率的な遷移では、現在の状態σから、状態σの近傍のある状態σ’への確率的な遷移を繰り返す。状態σから状態σ’に遷移する確率のことを、以下、遷移確率Ｐ（σ，σ’）と称する。遷移確率Ｐ（σ，σ’）の例としてメトロポリス法（Metropolis method）によるものや熱浴法によるものがある。メトロポリス法における遷移確率Ｐ（σ，σ’）の算出式を次に示す。
0006874219.tif 000003
式２において、Ｔは一般に温度と呼ばれるパラメータであり、状態間の遷移のし易さを表す。
【００２０】
近傍の状態σ’を生成する方法としては、現在の状態σから一つのスピンの値を変更する方法が一般的である。変更するスピンを一つずつ順番に変えていくことで、スピン全体が取り得る状態について探索を行う。例えば、図１の場合、状態Ａから一つのスピンが反転すると状態Ｂとなり、更に一つのスピンが反転すると状態Ｃとなる。
【００２１】
温度Ｔを大きな値から徐々に減少させつつＭＣＭＣを実行するとき、エネルギーが最も低い状態に漸近的に収束する。これを利用して最小化問題の最適解または近似解を求める手法として、シミュレーティッド・アニーリング（以下、ＳＡ（simulated Annealing）と称する。）がある。
【００２２】
イジングモデルに対してＭＣＭＣやＳＡを適用する場合、式２に基づきスピンの値を確率的に決定する。ここで非隣接の複数のスピンについては式２に基づく状態遷移を同時に適用することが可能である。そのため、例えば、特許文献１に記載されているように、式２に基づく確率的処理を実現する回路を複数用意し、非隣接の複数のスピンの値を並列して更新することで、ＭＣＭＣやＳＡの処理の高速化を図ることが可能である。
【００２３】
図２は、スピンの数を６とした場合における、イジングモデルの全スピン間の相互作用関係を表した完全グラフ（全結合グラフ）である。組合せ最適化問題をイジングモデルの基底状態の探索問題に変換すると、スピン間の相互作用関係は同図に示すような密構造（個々のスピンが他の全てのスピンと隣接する構造）となる。そのため、各スピンの確率的な処理を同時に行うことはできず、ＭＣＭＣやＳＡの処理の高速化を図ることは困難である。逆に言えば、こうした密の相互作用関係を持つイジングモデルに対して、ＭＣＭＣの要求する理論的背景を満たしつつ複数のスピンを同時に更新することができれば、ＭＣＭＣやＳＡの処理の高速化を図ることが可能であり、ひいては組合せ最適化問題を効率よく解くことが可能になる。こうした観点に基づき、本実施形態では、イジングモデルの相互作用関係を完全２部グラフとして表わす（模擬する）方法により基底状態を求める。以下、この方法について説明する。
【００２４】
図３はイジングモデルの相互作用関係を完全２部グラフとして表した図である。本例ではスピンの数を６としている。同図に示す左列のスピン群（以下、第１スピン群と称する。）のｉ番目のスピンと右列のスピン群（以下、第２スピン群と称する。）のｊ番目のスピンと間には相互作用Ｊi,ｊが働く。以下、第１スピン群のｉ番目のスピンと第２スピン群のｊ番目のスピン間の相互作用係数をｗiと表記する。
【００２５】
非特許文献１（Choi, V. (2008). Minor-embedding in adiabatic quantum computation: I. The parameter setting problem. Quantum Information Processing, 7(5), 193-209.）に記載されているように、相互作用ｗiを充分に大きい値に設定すると、同図に示すイジングモデルの基底状態において、第１スピン群のｉ番目のスピンの値と第２スピン群のｊ（＝ｉ）番目のスピンの値は同値となる。例えば、非特許文献１は、相互作用係数ｗiが次の式３を満たすならば、第１スピン群と第２スピン群の値が同値になることを与えている。
0006874219.tif 000004
また次の式４又は式５を満たす値も条件を満たすことを示すことができる。但し、λは、ｉ行ｊ列の要素がＪi,jで対角成分が０である行列の最小固有値である。
0006874219.tif 000005
0006874219.tif 000006
【００２６】
基底状態において、第１スピン群及び第２スピン群が同値であると仮定する。第１スピン群及び第２スピン群の夫々のスピンの総数をＮとし、基底状態における第１スピン群及び第２スピン群のｉ番目のスピンの値をＳｉ（ｉ＝１〜Ｎ）とする。このとき、基底状態におけるイジングモデルのエネルギーＨは、次式で表すことができる。
0006874219.tif 000007
【００２７】
式６の右辺第２項のｗｉは、第１スピン群のｉ番目のスピンと第２スピン群のｊ（＝ｉ）番目のスピンとの間の相互作用係数であり、Ｓ１、・・・、ＳNに依らない定数である。つまり値Ｓ１、・・・、ＳNは、次式の解である。
0006874219.tif 000008
故にスピンＳ１、・・・、ＳNは、完全グラフで表したイジングモデルによる式１を最小化するσ１、・・・、σNと捉えることができる。つまり図３に示す完全２部グラフで表したモデルの基底状態における各列のスピン配列は、図２に示す完全グラフ（全結合グラフ）で表したイジングモデルの基底状態と等しい。また図３に示すグラフは２部グラフであるので第１スピン群の隣接するスピン間には相互作用がなく、また第２スピン群の隣接するスピン間についても同様に相互作用がない。従って、図３に示すモデルに対してＭＣＭＣを実行するとき、各群のスピンは同時に値を更新することが可能であり、基底状態の探索を効率よく行うことができる。
【００２８】
続いて、メトロポリス法によりスピンを更新する場合を考える。以下の説明では、第１スピン群の各スピンの値をσＬ１、・・・、σＬＮと表し、同様に第２スピン群の各スピンの値をσＲ１、・・・、σＲＮと表す。ここで第２スピン群のｉ番目のスピンの値σＲｉを反転させたときのエネルギーＨの差分ΔＨは次式から求めることができる。
0006874219.tif 000009
【００２９】
前述したように、メトロポリス法において温度Ｔにおける状態遷移の受理確率（遷移確率）は式２で表される。従って、一様乱数ｕ（０＜ｕ≦１）を用いると、状態遷移が受理される条件は次式で表すことができる。
0006874219.tif 000010
【００３０】
ここで状態遷移後に第２スピン群のスピンの値σＲｉが＋１となる場合を考える。まず状態遷移前の第２スピン群のスピンの値σＲｉが＋１ならば、ΔＨ＞−Ｔ・ｌｎ（ｕ）、つまり式８から、次式が成り立つときに条件を満たす。
0006874219.tif 000011
【００３１】
同様に、状態遷移前の第２スピン群のスピンの値σＲｉが−１ならばΔＨ≦−Ｔ・ｌｎ（ｕ）、つまり式８から、次式が成り立つときに状態遷移後に第２スピン群のスピンの値σＲｉが＋１となる。
0006874219.tif 000012
【００３２】
故に状態遷移前の第２スピン群のスピンの値σＲｉに依らず、次式を満たせば状態遷移後に第２スピン群のスピンの値σＲｉが＝＋１となることがわかる。
0006874219.tif 000013
【００３３】
結局、メトロポリス法に従った状態遷移を実行するには、第２スピン群のスピンの値σＲｉの次状態を次式から求めればよい。尚、次式における関数sign(x)は、ｘ≧０ならば＋１、ｘ＜０ならば−１を返す関数である。
0006874219.tif 000014
【００３４】
ここで式１３は、第２スピン群のある１つのスピンに着目し、このスピンの次状態をメトロポリス法に従って決定するための式である。また第１スピン群のスピンのｉ番目と第２スピン群のスピンのｊ番目の間に働く相互作用Ｊi,ｊが充分に大きければ、第２スピン群の複数のスピンの値σＲｉに対して同時に式１３を適用することが可能である。従って、複数のスピンを同時に更新する場合は次式から第２スピン群の各スピンの次状態を求めればよい。但し、次式に示す関数signは、引数に与えられたベクトルの各要素に対して符号を与えるものとする。
0006874219.tif 000015
【００３５】
尚、以上では、第２スピン群のスピンの更新則について述べたが，第１スピン群のスピンについても同様であり、次の更新則を得ることができる。  
0006874219.tif 000016
【００３６】
図４は、式１４及び式１５に基づきイジングモデルの基底状態の探索を行う情報処理装置の一例である。同図に示すように、この情報処理装置１０は、プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、通信装置１６、一つ以上の演算装置２０、及びこれらの装置を通信可能に接続するシステムバス５を備える。情報処理装置１０は、例えば、その一部又は全部がクラウドシステム（Cloud System）により提供されるクラウドサーバ（Cloud Server）のような仮想的な情報処理資源を用いて実現されるものであってもよい。また情報処理装置１０は、例えば、互いに協調して動作する、通信可能に接続された複数の情報処理装置によって実現されるものであってもよい。
【００３７】
プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）を用いて構成されている。主記憶装置１２は、プログラムやデータを記憶する装置であり、例えば、ＲＯＭ（Read Only Memory）（ＳＲＡＭ（Static Random Access Memory）、ＮＶＲＡＭ（Non Volatile RAM）、マスクＲＯＭ（Mask Read Only Memory）、ＰＲＯＭ（Programmable ROM）等）、ＲＡＭ（Random Access Memory）（ＤＲＡＭ（Dynamic Random Access Memory）等）等である。補助記憶装置１３は、ハードディスクドライブ（Hard Disk Drive）、フラッシュメモリ（Flash Memory）、ＳＳＤ（Solid State Drive）、光学式記憶装置（ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)等）等である。補助記憶装置１３に格納されているプログラムやデータは、随時、主記憶装置１２に読み込まれる。
【００３８】
入力装置１４は、ユーザから情報の入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、カードリーダ、タッチパネル等である。出力装置１５は、ユーザに情報を提供するユーザインタフェースであり、例えば、各種情報を可視化する表示装置（ＬＣＤ（Liquid Crystal Display）、グラフィックカード等）や音声出力装置（スピーカ）、印字装置等である。通信装置１６は、他の装置と通信する通信インタフェースであり、例えば、ＮＩＣ（Network Interface Card）、無線通信モジュール、ＵＳＢ（Universal Serial Interface）モジュール、シリアル通信モジュール等である。
【００３９】
演算装置２０は、イジングモデルの基底状態の探索に関する処理を実行する装置である。演算装置２０は、例えば、ＧＰＵ（Graphics  Processing  Unit）のように、情報処理装置１０に装着する拡張カードの形態を取るものであってもよい。演算装置２０は、例えば、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）回路、ＦＰＧＡ（Field Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）等のハードウェアによって構成される。演算装置２０は、制御装置、記憶装置、システムバス５に接続するためのインタフェース等を含み、システムバス５を介してプロセッサ１１との間でコマンドや情報の送受を行う。演算装置２０は、例えば、通信線を介して他の演算装置２０と通信可能に接続され、他の演算装置２０と協調して動作するものであってもよい。演算装置２０により実現される機能を、例えば、プロセッサ（ＣＰＵ、ＧＰＵ等）にプログラムを実行させることにより実現してもよい。
【００４０】
図５は、演算装置２０の動作原理を説明する回路（以下、演算回路５００と称する。）のブロック図である。演算回路５００は式１４及び式１５に相当する機能を実現する。以下、同図とともに演算装置２０の動作原理について説明する。尚、以下の説明において、演算回路５００が取り扱うスピンの数をＮで表す。
【００４１】
同図に示すように、演算回路５００は、隣接行列メモリ５１１、第１スピンメモリ５１２ａ、第２スピンメモリ５１２ｂ、第１セレクタ５１３ａ、第２セレクタ５１３ｂ、積和演算装置５１４、ベクトル乗算器５１５、比較器５１６、及び否定（ＮＯＴ）回路５２０を含む。
【００４２】
隣接行列メモリ５１１には、相互作用Ｊを表す情報（以下、隣接行列と称する。）が格納される。隣接行列は、ｉ行ｊ列の要素が相互作用係数Ｊi,jであるＮ行Ｎ列の行列である。隣接行列は一般に対称行列であり、この対称性を用いて隣接行列メモリ５１１の使用量を削減することができる。
【００４３】
第１スピンメモリ５１２ａには、前述した完全２部グラフの第１スピン群の各スピンの状態を示すＮ次元ベクトルの情報が格納される。第２スピンメモリ５１２ｂは、前述した完全２部グラフの第２スピン群の各スピンの状態を示すＮ次元ベクトルの情報が格納される。
【００４４】
同図に示すように、演算回路５００には、信号ＥＮ、信号ＳＷ、及び信号ＳＲが入力される。比較器５１６は信号ＳＰを出力する。
【００４５】
信号ＥＮは、Ｈ（high）とＬ（low）の値を周期的に繰り返す信号である。信号ＥＮがＨ（high）のとき、第１セレクタ５１３ａは第１スピンメモリ５１２ａの値を出力し、第２セレクタ５１３ｂは第２スピンメモリ５１２ｂの値を出力する。また信号ＥＮがＬ（low）のとき、第１セレクタ５１３ａは第２スピンメモリ５１２ｂの値を出力し、第２セレクタ５１３ｂは第１スピンメモリ５１２ａの値を出力する。尚、第１セレクタ５１３ａ及び第２セレクタ５１３ｂは、上記とは逆位相（逆論理）の信号ＥＮにより上記のように動作するものであってもよい。
【００４６】
信号ＳＷは、Ｎ要素のベクトル（Ｎ次元ベクトル）を表す信号である。
【００４７】
積和演算装置５１４には、隣接行列メモリ５１１に格納されている隣接行列（相互作用係数Ｊi,j）の値、信号ＳＷ、及び第１セレクタ５１３ａの出力が入力される。ここで第１セレクタ５１３ａの出力であるＮ次元ベクトルをｘ、信号ＳＷの表すＮ次元ベクトルをｗ＝（ｗ１、・・・、ｗＮ）と表すとき、積和演算装置５１４は、ｙ＝２（Ａ＋ｄｉａｇ（ｗ１、・・・、ｗＮ））ｘなるＮ次元ベクトルｙを出力する。
【００４８】
信号ＳＲは、各要素が互いに独立な乱数であるＮ次元ベクトルを表す。本例では各要素は温度Ｔと乱数−ｌｎ（ｕ）を掛け合わせたものである。但しｕは一様乱数（０＜ｕ≦１）である。
【００４９】
ベクトル乗算器５１５には、第２セレクタ５１３ｂから出力されるＮ次元ベクトルと、Ｎ次元の信号ＳＲとが入力される。ベクトル乗算器５１５は、夫々の１番目の要素の積、２番目の要素の積、というように、対応する要素ごとの積を計算して出力する。従って、ベクトル乗算器５１５の出力信号もＮ次元ベクトルである。
【００５０】
比較器５１６には、積和演算装置５１４から出力されるＮ次元ベクトルと、ベクトル乗算器５１５から出力されるＮ次元ベクトルとが入力される。比較器５１６は、入力された各Ｎ次元ベクトルの対応する要素同士を比較し、比較した結果（要素同士の大小関係）を出力する。例えば、比較器５１６は、比較器５１６の２入力信号において、１番目の要素を比較したとき、積和演算装置５１４の信号の方が大きい場合は１を、小さい場合は−１を、比較器５１６の１番目の要素に設定する。
【００５１】
比較器５１６から出力される信号ＳＰは、前述したＭＣＭＣに基づくスピンの次状態である。信号ＳＰの情報は、信号ＥＮがＨ（High）であれば第１スピンメモリ５１２ａに、信号ＥＮがＬ（Low）であれば第２スピンメモリ５１２ｂに書き込まれる。
【００５２】
図６に情報処理装置１０が備える主な機能（ソフトウェア構成）を示している。同図に示すように、情報処理装置１０は、記憶部６００、モデル変換部６１１、隣接行列設定部６１２、スピン値初期化部６１３、温度設定部６１４、相互作用演算実行部６１５、及びスピン値読出部６１６を備える。これらの機能は、プロセッサ１１が、主記憶装置１２に格納されているプログラムを読み出して実行することにより、もしくは、演算装置２０が備えるハードウェアにより実現される。尚、情報処理装置１０は、上記の機能に加えて、例えば、オペレーティングシステム、ファイルシステム、デバイスドライバ、ＤＢＭＳ（DataBase Management System）等の他の機能を備えていてもよい。
【００５３】
上記機能のうち記憶部６００は、問題データ６０１、イジング形式問題データ６０２、及び演算装置制御プログラム６０３を、主記憶装置１２又は補助記憶装置１３に記憶する。問題データ６０１は、例えば、組合せ最適化問題等を所定の記述形式で記述したデータである。問題データ６０１は、例えば、ユーザがユーザインタフェース（入力装置、出力装置、通信装置等）を介して設定する。イジング形式問題データ６０２は、モデル変換部６１１が、問題データ６０１をイジングモデル形式のデータに変換することにより生成されるデータである。演算装置制御プログラム６０３は、相互作用演算実行部６１５が演算装置２０を制御する際に実行する、もしくは相互作用演算実行部６１５が個々の演算装置２０にロードして演算装置２０に実行させるプログラムである。
【００５４】
モデル変換部６１１は、問題データ６０１をイジングモデル形式のデータであるイジング形式問題データ６０２に変換する。モデル変換部６１１の機能は必ずしも情報処理装置１０に実装されていなくてもよく、情報処理装置１０が、他の情報処理装置等で生成されたイジング形式問題データ６０２を入力装置１４や通信装置１６を介して取り込むようにしてもよい。
【００５５】
隣接行列設定部６１２は、イジング形式問題データ６０２に基づくイジングモデルの相互作用関係を前述した完全２部グラフで表した場合における隣接行列（相互作用係数Ｊi,j）を隣接行列メモリ５１１に設定する。
【００５６】
スピン値初期化部６１３は、演算装置２０の第１スピンメモリ５１２ａ及び第２スピンメモリ５１２ｂに格納されている各スピンの値を初期化する。スピン値初期化部６１３は、例えば、完全２部グラフにおける第１スピン群の各スピンの値σＬ１、・・・σＬＮ、及び第２スピン群の各スピンの値σＲ１、・・・、σＲＮをいずれも５０％の確率で「１」か「−１」に設定する。
【００５７】
温度設定部６１４は、相互作用演算実行部６１５がイジングモデルの基底状態の探索を行う際に用いる、式１４及び式１５における温度Ｔの値を設定する。
【００５８】
相互作用演算実行部６１５は、温度設定部６１４により設定された温度Ｔごとに、式１４及び式１５に従ってイジングモデルの基底状態を探索する演算（以下、相互作用演算と称する。）を行う。相互作用演算に際し、相互作用演算実行部６１５は、例えば、温度Ｔを高いほうから低いほうに向けて変化させる。
【００５９】
スピン値読出部６１６は、相互作用演算実行部６１５によるイジングモデルの基底状態の探索が終了すると、第１スピンメモリ５１２ａ又は第２スピンメモリ５１２ｂに格納されているスピンの値を読み出し、読み出した値を出力装置１５や通信装置１６に出力する。
【００６０】
図７は、イジングモデルの基底状態の探索に際し情報処理装置１０が行う処理（以下、基底状態探索処理Ｓ７００と称する。）を説明するフローチャートである。以下、同図とともに基底状態探索処理Ｓ７００について説明する。尚、以下において、符号の前に付している「Ｓ」の文字は処理ステップの意味である。基底状態探索処理Ｓ７００は、例えば、入力装置１４を介してユーザからの指示等を受け付けることにより開始される。
【００６１】
同図に示すように、まずモデル変換部６１１が、問題データ６０１をイジング形式問題データ６０２に変換する（Ｓ７１１）。記憶部６００が既にイジング形式問題データ６０２を記憶している場合は当該処理Ｓ７１１は省略される。Ｓ７１１の処理と、Ｓ７１２以降の処理とは、夫々を異なる装置で実行するようにしてもよい。またＳ７１１の処理と、Ｓ７１２以降の処理とを異なるタイミングで実行するようにしてもよい（例えば、Ｓ７１１の処理を事前に行っておくことが考えられる。）。
【００６２】
続いて、隣接行列設定部６１２が、隣接行列メモリ５１１に隣接行列を設定する（Ｓ７１２）。隣接行列は、ユーザインタフェース（例えば、入力装置１４、出力装置１５、通信装置１６等により実現される。）を介してユーザが設定又は編集することもできる。
【００６３】
続いて、スピン値初期化部６１３が、第１スピンメモリ５１２ａ及び第２スピンメモリ５１２ｂに格納されている各スピンの値を初期化する（Ｓ７１３）。
【００６４】
続いて、温度設定部６１４が、式１４及び式１５の温度Ｔｋ（k=1,2,3、・・・）を設定する（Ｓ７１４）。尚、上記の添字ｋは設定される温度Ｔの種類を表す。
【００６５】
続いて、相互作用演算実行部６１５が、初期状態におけるエネルギーＨを算出する（Ｓ７１５）。
【００６６】
続いて、相互作用演算実行部６１５が、式１４及び式１５に基づき相互作用演算を実行することにより次状態を生成し、生成した次状態に基づき次状態におけるエネルギーＨ’を求め、差分ΔＨ（＝Ｈ’−Ｈ）を求める（Ｓ７１６）。
【００６７】
続いて、相互作用演算実行部６１５は、生成した次状態を受理するか否かを判定する。尚、相互作用演算実行部６１５は、上記の判定を、例えば、メトロポリス基準（ΔＨとＴｋで定まる基準）に基づき行う。
【００６８】
相互作用演算実行部６１５が次状態を受理すると判定した場合（Ｓ７１７：ＹＥＳ）、次状態に遷移する（Ｓ７１８）。具体的には、式１４に基づき相互作用演算を実行した場合は第２スピン群の各スピンの値を次状態に設定し、式１５に基づき相互作用演算を実行した場合は第１スピン群の各スピンの値を次状態に設定する。
【００６９】
一方、相互作用演算実行部６１５が次状態を受理しないと判定した場合（Ｓ７１７：ＮＯ）、処理はＳ７１９に進む。
【００７０】
Ｓ７１９では、相互作用演算実行部６１５は、温度Ｔを下げるか否かを判定する。例えば、相互作用演算実行部６１５は、Ｓ７１６〜Ｓ７１９のループを所定回数以上繰り返した場合に温度Ｔを下げると判定する。
【００７１】
相互作用演算実行部６１５が温度Ｔを下げると判定した場合（Ｓ７１９：ＹＥＳ）、処理はＳ７２０に進み、相互作用演算実行部６１５は温度Ｔを下げる。例えば、指数型アニーリングの場合、相互作用演算実行部６１５は、Ｔｋ＋１＝γ・Ｔｋとする（γは冷却速度を決定する係数）。一方、相互作用演算実行部６１５が温度Ｔを下げないと判定した場合（Ｓ７１９：ＮＯ）、処理はＳ７１６に戻る。
【００７２】
続いて、相互作用演算実行部６１５は、停止条件が成立したか否か（例えば、温度Ｔが予め設定された最低温度に達したか否か）を判定する（Ｓ７２１）。停止条件が成立したと相互作用演算実行部６１５が判定した場合（Ｓ７２１：ＹＥＳ）、処理はＳ７２２に進む。一方、停止条件が成立しないと相互作用演算実行部６１５が判定した場合（Ｓ７２１：ＮＯ）、処理はＳ７１６に戻る。
【００７３】
Ｓ７２２では、スピン値読出部６１６が、第１スピンメモリ５１２ａ及び第２スピンメモリ５１２ｂに格納されているスピンの値を読み出して出力する。以上で基底状態探索処理Ｓ７００は終了する。
【００７４】
以上の構成からなる情報処理装置１０によりイジングモデルの基底状態の探索を行った場合の効果を検証すべく、イジングモデルの全スピン間の相互作用関係を完全グラフで表した場合（以下、従来手法と称する。）におけるイジングモデルの基底状態の探索結果と、イジングモデルのスピン間の相互作用関係を完全２部グラフとして表した場合（以下、本手法と称する。）におけるイジングモデルの基底状態の探索結果との比較を行った。
【００７５】
まず従来手法と本手法の夫々について、スピンの数を１６とし、温度Ｔを１０００度から３０度まで変化させて基底状態探索処理Ｓ７００を行った場合における、エネルギーの極小値（最小値を含む）と各極小値の出現回数を求めた。尚、隣接行列（相互作用係数Ｊi,j）は「−１２７」〜「１２７」の間でランダムに設定した。各スピンの更新回数は１０００回とした。また試行回数は１００回とした。
【００７６】
表１は、従来手法を用いた場合におけるエネルギーの極小値（局所解又は最適解）と基底状態探索処理Ｓ７００における出現回数を示したものである。また表２は、本手法を用いた場合におけるエネルギーの極小値（局所解又は最適解）と基底状態探索処理Ｓ７００における出現回数を示したものである。
【００７７】
【表１】
0006874219.tif 000017
【００７８】
【表２】
0006874219.tif 000018
【００７９】
表１及び表２から、本手法による場合でも従来手法と同様にエネルギー極小値を精度よく特定できることがわかる。
【００８０】
図８は、スピンの数を３２７６８とし、隣接行列（相互作用係数Ｊi,j）を「−３２７６７」〜「３２７６７」の間でランダムに設定して、従来手法及び本手法により基底状態探索処理Ｓ７００を行った場合における、ＭＣＭＣにおけるステップ数とエネルギーＨとの関係を示すグラフである。同図に示すように示すように、本手法は従来手法に比べて少ないステップ数でエネルギーＨが極小値に到達することがわかる。即ち、本手法によれば、イジングモデルの基底状態の探索を効率よく行うことが可能である。
【００８１】
以上、詳細に説明したように、本実施形態の情報処理装置１０によれば、イジングモデルの基底状態の探索を効率よく行うことができる。そのため、組合せ最適化問題を効率よく解くことができる。尚、情報処理装置１０（演算装置２０を含む）は、シンプルな構成であるので安価かつ容易に製造することができる。
【００８２】
以上、一実施形態について詳述したが、本発明は上記の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上記実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８３】
また上記の各構成、機能部、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００８４】
また上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【００８５】
また以上に説明した情報処理装置１０の各種機能部、各種処理部、各種データベースの配置形態は一例に過ぎない。各種機能部、各種処理部、各種データベースの配置形態は、情報処理装置１０が備えるハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
【００８６】
また前述した各種のデータを格納するデータベースの構成（スキーマ（Schema）等）は、リソースの効率的な利用、処理効率向上、アクセス効率向上、検索効率向上等の観点から柔軟に変更し得る。
【符号の説明】
【００８７】
１０  情報処理装置、１１  プロセッサ、１２  主記憶装置、２０  演算装置、５１１  隣接行列メモリ、５１２ａ  第１スピンメモリ、５１２ｂ  第２スピンメモリ、５１３ａ  第１セレクタ、５１３ｂ  第２セレクタ、５１４  積和演算装置、５１５  ベクトル乗算器、５１６  比較器、５２０  否定（ＮＯＴ）回路、６００  記憶部、６０１  問題データ、６０２  イジング形式問題データ、６０３  演算装置制御プログラム、６１１  モデル変換部、６１２  隣接行列設定部、６１３  スピン値初期化部、６１４  温度設定部、６１５  相互作用演算実行部、６１６  スピン値読出部
【図１】
0006874219.tif 000035
【図２】
0006874219.tif 000036
【図３】
0006874219.tif 000037
【図４】
0006874219.tif 000038
【図５】
0006874219.tif 000039
【図６】
0006874219.tif 000040
【図７】
0006874219.tif 000041
【図８】
0006874219.tif 000042