(57)【要約】【課題】  ハードウェアやソフトウェア上の制約に係わりなく、任意の係数を持つイジングモデルの基底状態探索を行い得る情報処理装置及び情報処理方法を提案する。【解決手段】  イジングモデルである原問題の基底状態又は当該基底状態の近似解を原問題の解として算出する際に、原問題から１個以上のイジングモデルである副問題を生成し、情報処理装置が、生成した各副問題の基底状態をそれぞれ探索し、探索により得られた各副問題の解に基づいて原問題の解を生成することとし、基底状態を探索可能なイジングモデルの係数の値の種類が制限されている場合には、制限された値の種類の係数からなるイジングモデルの副問題を生成するようにした。【選択図】        図１
2015191340.tif 000002
【特許請求の範囲】
【請求項１】
イジングモデルである原問題のエネルギーを最少とするスピン配列である基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において、
前記原問題から１個以上のイジングモデルである副問題を生成する副問題生成部と、
所定の複数の種類の係数の値を持つイジングモデルの問題の基底状態を探索する基底状態探索部であって、前記副問題生成部により生成された各前記副問題の基底状態をそれぞれ探索する基底状態探索部と、
前記基底状態探索部の探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する解生成部と
を備え、
前記副問題生成部は、
前記原問題のイジングモデルの１個以上の係数の値に基づいて、前記複数の種類から選択された１個以上の係数の値を持つイジングモデルの前記副問題を生成する
ことを特徴とする情報処理装置。
【請求項２】
前記副問題生成部は、
前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
当該所定範囲内の乱数を発生させ、
正規化した前記原問題のイジングモデルの前記係数の値をそれぞれ前記乱数と比較し、
比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記副問題生成部は、
前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
前記副問題の係数の値の期待値が正規化した前記原問題の係数の値になるように定めた確率を算出し、
当該所定範囲内の乱数を発生させ、
正規化した前記原問題のイジングモデルの前記確率をそれぞれ前記乱数と比較し、
比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記副問題生成部は、
前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
正規化した前記原問題のイジングモデルの前記係数の値を、予め設定された少なくとも１つ以上の閾値と比較し、
比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記副問題生成部は、
前記副問題ごとに異なる前記閾値を用いる
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記解生成部は、
各前記副問題の解をそれぞれ前記原問題のエネルギー関数で評価し、
最もエネルギーの小さい前記副問題の解を前記原問題の解とする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記解生成部は、
前記副問題の解のスピン毎の統計量を前記原問題の解とする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記解生成部は、
前記特徴量は平均値又は最頻値である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項９】
所定の複数の種類の係数の値を持つイジングモデルの問題のエネルギーを最少とするスピン配列である基底状態を探索する基底状態探索部を有し、イジングモデルである原問題の基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において実行される情報処理方法であって、
前記情報処理装置が、イジングモデルである原問題から１個以上のイジングモデルである副問題を生成する第１のステップと、
前記情報処理装置が、前記基底状態探索部により、生成した各前記副問題の基底状態をそれぞれ探索する第２のステップと、
前記情報処理装置が、探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する第３のステップと
を備え、
前記第１のステップでは、
前記原問題のイジングモデルの１個以上の係数の値に基づいて、前記複数の種類から選択された１個以上の係数の値からなるイジングモデルの前記副問題を生成する
ことを特徴とする情報処理方法。
【請求項１０】
前記第１のステップでは、
前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
当該所定範囲内の乱数を発生させ、
正規化した前記原問題のイジングモデルの前記係数の値をそれぞれ前記乱数と比較し、
比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
ことを特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記第１のステップでは、
前記原問題のイジングモデルの前記係数をそれぞれ所定範囲内に正規化し、
前記副問題の係数の値の期待値が正規化された前記原問題の係数の値になるように定めた確率を算出し、
当該所定範囲内の乱数を発生させ、
正規化した前記原問題のイジングモデルの前記確率をそれぞれ前記乱数と比較し、
比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
ことを特徴とする請求項９に記載の情報処理方法。
【請求項１２】
前記第１のステップでは、
前記原問題のイジングモデルの前記係数をそれぞれ所定範囲内に正規化し、
正規化した前記原問題のイジングモデルの前記係数を、予め設定された少なくとも１つ以上の閾値と比較し、
比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記係数の各値に対応する前記副問題のイジングモデルの係数の値として決定する
ことを特徴とする請求項９に記載の情報処理方法。
【請求項１３】
前記第１のステップでは、
前記副問題ごとに異なる前記閾値を用いる
ことを特徴とする請求項１２に記載の情報処理方法。
【請求項１４】
前記第３のステップでは、
各前記副問題の解をそれぞれ前記原問題のエネルギー関数で評価し、
最もエネルギーの小さい前記副問題の解を前記原問題の解とする
ことを特徴とする請求項９に記載の情報処理方法。
【請求項１５】
前記第３のステップでは、
前記副問題の解のスピン毎の統計量を前記原問題の解とする
ことを特徴とする請求項９に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関し、特に、イジングモデルの基底状態探索を行う情報処理装置に適用して好適なものである。
【背景技術】
【０００２】
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（ないしは、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、及び、スピン毎にある外部磁場係数で定義される。
【０００３】
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数は一般的に次式で表わされる。
【０００４】
【数１】
2015191340.tif 000003
【０００５】
なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊｉ，ｊはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
【０００６】
（１）式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。そのため、第一項ではｉ＜ｊを満たすσｉ，σｊの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
【０００７】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けない時には、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。
【０００８】
イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。これは、イジングモデルが相互作用に基づく最も単純なモデルであり、同様に相互作用に起因する様々な事象を表現する能力を持っているためであると言える。例えば、特許文献１には、イジングモデルの基底状態探索を用いて、職場組織などの集団におけるストレス度を推定する方法が開示されている。
【０００９】
また、イジングモデルの基底状態探索は、ＮＰ困難なグラフ問題として知られている最大カット問題とも対応している。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することが出来る。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−２１７５１８号公報
【特許文献２】国際公開第２０１２／１１８０６４号パンフレット
【特許文献３】特開２００４−１３３８０２号公報
【特許文献４】特開平９−３００１８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、イジングモデルの基底状態を求めることは、前述した通りＮＰ困難問題であるから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。例えば、このような装置として、例えば特許文献２に記載の装置がある。
【００１２】
このようにイジングモデルと一対一に対応した構造を持つハードウェアを想定すると、ハードウェアが保持可能な係数の値の種類は限られる。
【００１３】
係数の値の種類とは，具体的に利用可能な個別の係数を示す。ハードウェアでは任意の実数を無限に高い精度で取り扱うことは出来ない。多くの場合、ハードウェアが直接サポートできる値は離散値である整数である。また、ハードウェアが固定小数点数や浮動小数点数として実数をサポートする場合にも，実際には精度に限界があり、離散値と見なすことができる。また、いずれの場合でも値域の中を万遍無く網羅するように値を用意することはハードウェアの物量上難しいことから、利用可能な係数の値が疎らになることが想定される。
【００１４】
係数がアナログ的に実装されるハードウェアであっても、実際に利用可能な係数は、ハードウェアのダイナミックレンジやノイズレベルの影響で、離散的な有限個の値に制限される。さらに、ハードウェアの構成によっては，利用可能な係数の大きさを均等に保つことができず、不均一な係数が提供される可能性がある。そこで、具体的にどのような値が利用可能なのかが問題となり、このことを係数の種類と呼ぶ。具体的には、＋２，＋１，０，−１，−２という５種類の係数をサポートするようなハードウェアもあれば、＋２，＋０．５，０，−２という４種類の係数をサポートするようなハードウェアもありうる。さらには、＋１００，＋１０，＋１，０，−１，−１０，−１００というように１０倍刻みの係数が提供されることもありうる。つまり、係数は、単に均等な幅で離散値があるのではなく、値間の差がまばらなこともある。
【００１５】
このようなハードウェアでは、係数を保持するためにメモリセル等の記憶装置を用い、係数の大きさの影響を及ぼすための演算器や増幅器を用いることが考えられる。そのため、係数の値の種類は、メモリセルや演算器のビット幅や、増幅器のダイナミックレンジなどによって制約を受ける。
【００１６】
また、一般にビット幅やダイナミックレンジを広げるためには多くのハードウェア資源や製造時のばらつきに対するより緻密な制御が必要となるため、物量やコストの増大を招く。この観点からも、理論的には任意の係数を実現するハードウェアの構成を考えることができても、現実的にはある制限された種類の係数の値しか提供できない。一例としては、かかる係数が、＋１，−１の２値のみであったり、＋１，０，−１の３値のみであったりすることが想定される。
【００１７】
また、イジングモデルの基底状態探索を行うソルバをソフトウェアで実現した場合でも、ソルバを実行するコンピュータのメモリ上で係数を保持するデータ構造等に起因する制約から、ソルバが対応できる係数の値の種類は、ハードウェアによるイジングモデルの基底状態探索と同様に、制限がある。
【００１８】
例えば、イジングモデルが有するスピン数（グラフでは頂点数に対応する）を｜Ｖ｜、各スピンが有する平均の相互作用係数の数（グラフでは平均次数に対応する）を｜Ｅ｜とする。ソルバに割当て可能なメモリをＮビットとし、相互作用係数のビット幅をｋビットとすると、次式
【数２】
2015191340.tif 000004
を満たすようなモデルしか扱うことが出来ない。
【００１９】
特に、相互作用係数のビット幅ｋを広げる、すなわち、係数の値の種類を広げようとすると、扱えるスピン数｜Ｖ｜やイジングモデルのトポロジ（スピン毎の相互作用係数の数の平均｜Ｅ｜）を削減しなければならない。
【００２０】
ソルバを動作させるコンピュータのプラットフォームで仮想記憶を用意するなどして、ソルバに割当て可能なメモリ量Ｎを大きくする努力は可能であるが、ソフトウェアで実現されるソルバであっても、扱えるイジングモデルの係数の値の種類がハードウェアの制約を受けるという図式に変わりは無い。
【００２１】
以上の点から、イジングモデルの基底状態探索を行うことには産業上有用な応用があるものの、基底状態探索を行うソルバを実現する上では、ハードウェアの制約によって係数の値の種類が制限されてしまい、ソルバに入力することのできるイジングモデルの種類が限られてしまうという問題があることが分かる。
【００２２】
なお、従来、ノイマン型コンピュータ上でこのような探索を行う組合せ最適化問題の分野では、問題の入力サイズに対して計算量が指数関数的に爆発することから、問題を構成する値の種類が問題になることは少なかった。それよりは、問題を入力した後の探索処理における計算量の爆発が支配的な問題であった。そのため、例えば特許文献３及び４に示すように、問題の特徴を利用して計算量を削減する分枝限定法やヒューリッティック手法が用いられてきた。
【００２３】
そのため、上述のように計算量の問題以前に、そもそもソルバに入力可能な係数の値の種類が問題になることは過去には無かった。しかし、上記特許文献２に記載の装置のように、ＮＰ困難なイジングモデルの基底状態探索を高速に行うことが可能となって計算量の問題が解決されてくると、新たな問題として上記で示したような問題が生じてくる。
【００２４】
本発明は以上の点を考慮してなされたもので、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行い得る情報処理装置及び情報処理方法を提案しようとするものである。
【課題を解決するための手段】
【００２５】
かかる課題を解決するため本発明においては、イジングモデルである原問題のエネルギーを最少とするスピン配列である基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において、前記原問題から１個以上のイジングモデルである副問題を生成する副問題生成部と、所定の複数の種類の係数の値を持つイジングモデルの問題の基底状態を探索する基底状態探索部であって、前記副問題生成部により生成された各前記副問題の基底状態をそれぞれ探索する基底状態探索部と、前記基底状態探索部の探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する解生成部とを設け、前記副問題生成部が、前記原問題のイジングモデルの１個以上の係数の値に基づいて、前記複数の種類から選択された１個以上の係数の値を持つイジングモデルの前記副問題を生成するようにした。
【００２６】
また本発明においては、所定の複数の種類の係数の値を持つイジングモデルの問題のエネルギーを最少とするスピン配列である基底状態を探索する基底状態探索部を有し、イジングモデルである原問題の基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において実行される情報処理方法であって、前記情報処理装置が、イジングモデルである原問題から１個以上のイジングモデルである副問題を生成する第１のステップと、前記情報処理装置が、前記基底状態探索部により、生成した各前記副問題の基底状態をそれぞれ探索する第２のステップと、前記情報処理装置が、探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する第３のステップとを設け、前記第１のステップでは、前記原問題のイジングモデルの１個以上の係数の値に基づいて、前記複数の種類から選択された１個以上の係数の値からなるイジングモデルの前記副問題を生成するようにした。
【００２７】
本情報処理装置及び情報処理方法によれば、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の値の種類が制限されている場合においても、その種類以外の係数からなるイジングモデルの原問題の解を求めることができる。
【発明の効果】
【００２８】
本発明によれば、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行い得る情報処理装置及び情報処理方法を実現できる。
【図面の簡単な説明】
【００２９】
【図１】本発明によるイジングモデルの基底状態探索における処理の流れを示した図である。
【図２】本発明によるイジングモデルの基底状態探索を行う装置の構成の一例を示した図である。
【図３】イジングモデルを表現するデータ構造の一例を示した図である。
【図４】イジングモデルを表現するデータの書式の一例を示した図である。
【図５】スピン配列を表現するデータの書式の一例を示した図である。
【図６】本発明によるイジングモデルの基底状態探索において、副問題を生成するアルゴリズムの一例を示したフローチャートである。
【図７】本発明によるイジングモデルの基底状態探索において、副問題を生成するアルゴリズムの一例を示したフローチャートである。
【図８】本発明によるイジングモデルの基底状態探索において、解候補から原問題の解を生成するアルゴリズムの一例を示したフローチャートである。
【図９】グラフの最大カット問題の一例である。
【図１０】図９のグラフの最大カット問題の解の一例である。
【図１１】図９のグラフの最大カット問題の解の一例である。
【図１２】図９のグラフの最大カット問題の解を得るためのイジングモデルの一例である。
【図１３】図１２のイジングモデルを表現するデータの一例である。
【図１４】図１２の原問題から生成される副問題を表現するデータの一例である。
【図１５】図１４の副問題を可視化したグラフである。
【図１６】図１２の副問題の基底状態探索を行うことで得られる解候補データの一例である。
【図１７】図１６の解候補データから得られる原問題の解の一例である。
【図１８】図１６の解候補データから得られる原問題の解の一例である。
【図１９】本発明によるイジングモデルの基底状態探索において、副問題の相互作用係数を生成するアルゴリズムの一例を示したフローチャートである。
【図２０】本発明によるイジングモデルの基底状態探索において、副問題の相互作用係数を生成するアルゴリズムの一例を示したフローチャートである。
【図２１】本発明によるイジングモデルの基底状態探索において、副問題の外部磁場係数を生成するアルゴリズムの一例を示したフローチャートである。
【図２２】本発明によるイジングモデルの基底状態探索において、副問題の外部磁場係数を生成するアルゴリズムの一例を示したフローチャートである。
【図２３】本発明によるイジングモデルの基底状態探索において、副問題の相互作用係数を生成するアルゴリズムの一例を示したフローチャートである。
【図２４】本発明によるイジングモデルの基底状態探索において、副問題の外部磁場係数を生成するアルゴリズムの一例を示したフローチャートである。
【図２５】本発明によるイジングモデルの基底状態探索を行う装置の構成の一例を示した図である。
【図２６】本発明によるイジングモデルの基底状態探索において得られる解の品質を示した図である。
【図２７】本発明によるイジングモデルの基底状態探索において得られる解の品質を示した図である。
【図２８】本発明によるイジングモデルの期待状態探索において、副問題の生成方法の一例を説明する図である。
【図２９】本発明によるイジングモデルの基底状態探索において、副問題を生成するアルゴリズムの一例を示したフローチャートである。
【図３０】図１２の原問題から生成される副問題を表現するデータの一例である。
【図３１】図１２の原問題から生成される副問題を表現するデータの一例である。
【図３２】図３０及び図３１の副問題の基底状態探索を行うことで得られる解候補と、解候補から得られる解の一例を示す図である。
【図３３】図１２のイジングモデルを正規化したイジングモデルの一例である。
【図３４】図２の情報処理装置で用いるイジングチップの構成の一例を示す図である。
【図３５】図３４のイジングチップを構成するスピンユニットの構成を、スピンユニット間の相互作用を行う回路構成に注目して示した図である。
【図３６】図３４のイジングチップを構成するスピンユニットの構成を、スピンユニット内のメモリセルの値を外部から読み書きするための回路構成に注目して示した図である。
【図３７】図３４のイジングチップで、スピンユニットを複数個接続してスピンアレイを構成している形態を示す図である。
【図３８】図３４のイジングチップで、スピンユニットとスピンアレイの対応関係を説明するための図である。
【発明を実施するための形態】
【００３０】
以下図面について、本発明の一実施の形態を詳述する。
【００３１】
（１）第１の実施の形態
（１−１）有向グラフに拡張したイジングモデル
本実施の形態ではイジングモデルを拡張した、以下の式で示されるモデルを、これ以降イジングモデルと称する。
【００３２】
【数３】
2015191340.tif 000005
【００３３】
（１）式で示したイジングモデルとの違いは、（３）式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することが出来る。それは、イジングモデルの相互作用は、ｉ番目スピンからｊ番目スピンへの相互作用係数Ｊｉ，ｊとｊ番目スピンからｉ番目スピンへの相互作用係数Ｊｊ，ｉを区別していないことによる。
【００３４】
本発明はイジングモデルを拡張し、Ｊｉ，ｊとＪｊ，ｉを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にＪｉ，ｊとＪｊ，ｉの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも（１）式のエネルギー関数に対して（３）式のエネルギー関数ではエネルギーの値が２倍になる。
【００３５】
（１−２）本発明の全体像
図１は、本発明によるイジングモデルの基底状態探索を行う処理の流れを示す。本発明は、任意のイジングモデルである原問題１１０の基底状態となるスピン配列である解１７０を得ることを目的としている。その際に、入力可能な係数の値の種類に制限のあるｋ個（１個以上）の制限付基底状態探索１４０−１〜１４０−ｋを用いて解１７０を得る。制限付基底状態探索１４０−１〜１４０−ｋは後述する情報処理装置２００ないしは情報処理装置２５００上で実現されるが、同時にｋ個の制限付基底状態探索を並行的に実行しても良いし、単一の制限付基底状態探査を繰り返しｋ回実行しても良い。
【００３６】
本実施の形態では、制限付基底状態探索１４０−１〜１４０−ｋは、＋１，０，−１の３値のみを相互作用係数及び外部磁場係数で利用可能なものして説明を行う。
【００３７】
制限付基底状態探索１４０−１〜１４０−ｋを用いて原問題１１０の基底状態探索を行うために、副問題生成１２０で原問題１１０からｋ個（１個以上）の副問題１３０−１〜１３０−ｋを生成する。この副問題１３０−１〜１３０−ｋは制限付基底状態探索１４０〜１〜１４０−ｋの受け付ける相互作用係数及び外部磁場係数のみで構成される。本実施の形態では、具体的には副問題生成１２０は＋１，０，−１の３値のみを相互作用係数及び外部磁場係数とした副問題１３０−１〜１３０−ｋを生成する。
【００３８】
この副問題１３０−１〜１３０−ｋのそれぞれについて制限付基底状態探索１４０−１〜１４０−ｋで基底状態探索を行い、解候補１５０−１〜１５０−ｋを生成する。解候補１５０−１〜１５０−ｋは、それぞれ副問題１３０−１〜１３０−ｋにとっての解であり、原問題１１０の解の候補となるものである（そのため解候補という表記をしている）。
【００３９】
なお、制限付基底状態探索１４０−１〜１４０−ｋが出力する解候補１５０−１〜１５０−ｋは、必ずしも副問題１３０−１〜１３０−ｋの大域最適解でなくとも良い。エネルギーを最小化する最良のスピン配列でなくとも、エネルギーが２番目や３番目に低いスピン配列、すなわち近似解であっても良い。本発明は制限付基底状態探索１４０−１〜１４０−ｋが近似解法であったとしても適用できる。
【００４０】
得られた制限付基底状態探索１４０−１〜１４０−ｋにより得られた解候補１３０−１〜１３０−ｋから、原問題１１０の解１７０を解生成１６０で生成する。これにより、制限付基底状態探索１４０−１〜１４０−ｋを用いて原問題１１０の解１７０を得るという当初の目的を達成することが出来る。
【００４１】
本発明は、図２に示すような情報処理装置２００を用いて実現される。この情報処理装置２００は現在幅広く利用されているパーソナルコンピュータ（ＰＣ：Personal Computer）やワークステーション、サーバのようなものを考えてよく、ＣＰＵ（Central Processing Unit）２１０、ＲＡＭ（Random Access Memory）２２０、ＨＤＤ（Hard Disk Drive）２６０及びＮＩＣ（Network Interface Card）２４０などの構成要素をシステムバス２３０で接続した形態を取っている。本実施の形態では、この情報処理装置２００は、本発明の背景で述べたようなイジングモデルの基底状態探索を行う専用ハードウェアである基底状態探索アクセラレータ２７０を有するものとする。
【００４２】
基底状態探索アクセラレータ２７０は、パーソナルコンピュータを例とすれば、画面描画処理のための専用ハードウェアであるＧＰＵ（Graphics Processing Unit）のように、情報処理装置２００に装着する拡張カードの形態を取るものと考えてよい。
【００４３】
基底状態探索アクセラレータ２７０は、例えば１個のイジングモデルの基底状態探索を行う専用のハードウェアであるイジングチップ２８０−１，２８０−２を１個ないしは複数個並べ、それらを制御し、ホスト側（ＣＰＵ２１０）との仲介を行うイジングチップコントローラ２５０から構成される。ここで、イジングチップ２８０−１，２８０−２で基底状態探索可能なイジングモデルは、相互作用係数及び外部磁場係数が＋１，０，−１の３値に限られているものとする。すなわち、図１の制限付基底状態探索１４０−１〜１４０−ｋは基底状態探索アクセラレータ２７０に対応する。
【００４４】
情報処理装置２００は、ＨＤＤ２６０上に基底状態探索プログラム２６４、原問題データ２６５、副問題データ２６６−１〜２６６−ｋ、解候補データ２６７−１〜２６７−ｋ及び解データ２６８を有する。図１の処理の流れで示した通り、原問題データ２６５を基底状態探索プログラム２６４に入力すると、解データ２６８を出力する。
【００４５】
基底状態探索プログラム２６４は、副問題生成コマンド２６１、基底状態探索アクセラレータ制御コマンド２６２及び解生成コマンド２６３から構成されている。原問題データ２６５を基底状態探索プログラム２６４に入力すると、内部的には副問題生成コマンド２６１が実行され、副問題データ２６６−１〜２６６−ｋが生成される。そして、基底状態探索アクセラレータ制御コマンド２６２に副問題データ２６６−１〜２６６−ｋを入力すると、基底状態探索アクセラレータ制御コマンド２６２は基底状態探索アクセラレータ２７０を制御し、イジングチップ２８０−１〜２８０−２に副問題データ２６６−１〜２６６−ｋで定義されるイジングモデルの基底状態探索を行わせ、探索結果を解候補データ２６７−１〜２６７−ｋとしてＨＤＤ２６０上に書き出す。そして、解生成コマンド２６３は解候補データ２６７−１〜２６７−ｋを読出し、解データ２６８を生成する。
【００４６】
また、情報処理装置２００として、図２５に示す情報処理装置２５００のように、専用ハードウェアを有しておらず、基底状態探索を行うソフトウェア（制限付基底状態探索コマンド２５２０）を有するものを適用することも出来る。基底状態探索を行うソフトウェアにおいても、専用ハードウェアと同様に係数の値の種類に制限を受ける可能性があることは、本発明の背景で述べた通りである。
【００４７】
なお、イジングチップ２８０−１〜２８０−２のようなハードウェアの詳細な構造と、その構造に起因して本明細書の背景で述べたように、制限された値の種類の係数しか提供できないことについては、後述する。
【００４８】
本発明は、基底状態を探索する手段が図２の情報処理装置２００のように専用ハードウェア（基底状態探索アクセラレータ２７０）で実現されていても、図２５の情報処理装置２５００のようにソフトウェア（制限付基底状態探索コマンド２５２０）で実現されていても、同様に本発明の副問題生成コマンド２６１及び解生成コマンド２６３を基底状態探索のプリプロセッサ（前処理）とポストプロセッサ（後処理）として使用することで、任意の係数のイジングモデルの基底状態探索を実現する基底状態探索プログラム２６４ないしは２５２０を提供することが可能となる。
【００４９】
（１−３）イジングモデルを表現するデータ構造と書式
図３に、情報処理装置２００上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義３００で定義され、相互作用係数を定義する相互作用定義部３１０と、外部磁場係数を定義する外部磁場係数部３２０とから構成される。
【００５０】
相互作用定義部３１０は、相互作用の元となるスピンを指定する識別子（例えば、スピンに一意な番号を付与して、それを識別子とする）、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。
【００５１】
外部磁場係数定義部３２０は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
【００５２】
なお、相互作用定義部３１０で定義されていないスピン間の相互作用係数や、外部磁場係数３２０で定義されていないスピンへの外部磁場係数は０とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す０であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す０となる。
【００５３】
図４は、図３のデータ構造のより具体的な表現形式、特にＨＤＤ２６０上でデータを保持する場合の書式（ファイルフォーマット）の一例を示す。図３のデータ構造は、ＨＤＤ２６０上ではテキストファイルとして実現される。そのテキストファイルのフォーマットは、図４において問題データ４００として示すように、相互作用か外部磁場を識別するための識別子と、スピンの識別子及び係数とを並べたものである。原問題１１０を定義する原問題データ２６５及び副問題１３０−１〜１３０−ｋを定義する副問題データ２６６−１〜２６６−ｋは、図４の問題データ４００のような形式で表現される。
【００５４】
（１−４）解を表現するデータ構造と書式
図５は、解１７０を示す解データ２６８及び解候補１５０−１〜１５０−ｋを示す解候補データ２６７−１〜２６７−ｋを情報処理装置２００上で表現するデータ構造の例と、そのＨＤＤ２６０上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解５００のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元にスピンの識別子を省略して、解データ５５０のようにスピンの値だけを列挙したテキストファイルとしてＨＤＤ２６０上に解データ２６８や、解候補データ２６７−１〜２６７−ｋを保持することが出来る。
【００５５】
（１−５）副問題生成の説明
図６に副問題生成１２０の処理の一例をフローチャートとして示す。
【００５６】
ステップＳ６０１では、ＨＤＤ２６０から原問題データ２６５を読出し、ＲＡＭ２２０上に展開する。これ以降、原問題データ２６５にあるｉ番目スピンからｊ番目スピンへの相互作用係数は「原問題のＪｉ，ｊ」、ｉ番目スピンの外部磁場係数は「原問題のｈｉ」として参照できるものとする。
【００５７】
ステップＳ６０２では、原問題のＪｉ，ｊ及び原問題のｈｉを正規化する。原問題の相互作用係数と外部磁場係数は様々な値を含んでいるが、相互作用係数と外部磁場係数の両方を通して絶対値が最大の係数（これを係数深度と呼ぶ）で全ての係数を割って、係数を−１〜＋１に正規化する。なお、相互作用係数と外部磁場係数をそれぞれ別に正規化しても良い。この場合、相互作用係数については、絶対値が最大の相互作用係数を係数深度として、各相互作用係数を係数深度で割ることによりそれぞれ正規化し、外部磁場係数については、絶対値が最大の外部磁場係数を係数深度として、各外部磁場係数を係数深度で割ることによりそれぞれ正規化する。
【００５８】
ステップＳ６０３では、副問題の個数を決定する。副問題の個数は計算量と計算精度のトレードオフの関係にある。すなわち、副問題の個数を多くすることで、より近似度の高い（大域最適解に近い）解が得られる可能性が高くなる半面、多くの副問題の基底状態探索を行わなければならないため、計算量は増加する。情報処理装置２００の基底状態探索の処理速度や、応用上生じる制約時間、及び、要求される精度から副問題の個数を決定する必要がある。一般的には、同じ近似度で解を求めるために必要な副問題の個数は、問題のサイズ（スピン数、相互作用の数、及び、外部磁場の数）と、ステップＳ６０２で求めた係数深度に比例して増加する傾向にある。
【００５９】
ステップＳ６０４〜Ｓ６０８では、ステップＳ６０３で決定した副問題の個数分だけ、副問題を生成する処理を行う。まずステップＳ６０４で変数ｉを１に設定し、ステップＳ６０５で変数ｉと同じ値のｉ番目のスピンに対する副問題の相互作用係数、及び、外部磁場係数を決定し、ステップＳ６０６で副問題データ２６６−１〜２６６−ｋとして書き出す。この後、ステップＳ６０７で変数ｉを１増加させた値に更新し、ステップＳ６０８で変数ｉの値が副問題数よりも大きいか否かを判定する。変数ｉの値が副問題数よりも小さい場合にはステップＳ６０５に戻り、この後、変数ｉの値が副問題数よりも大きくなるまでステップＳ６０５〜Ｓ６０８の処理を繰り返す。
【００６０】
ステップＳ６０４、Ｓ６０７及びＳ６０８は副問題の個数分だけステップＳ６０５〜Ｓ６０６を実行するためのループであるが、このループはループ内で前後の依存関係を持たないので、並列に実行可能な計算機環境上ではループ展開して用意に並列実行可能である。つまり、十分な並列性を有する計算機環境があれば、副問題の個数にかかわらず、副問題生成１２０の処理は定数時間で行うことができ、大規模な問題に対してもスケーラビリティを有する。ステップＳ６０５の詳細については、別の図面を参照して説明する。
【００６１】
図７に、ステップＳ６０５について上述した副問題の相互作用係数、及び、外部磁場係数を決定する処理を示す。副問題の相互作用係数と外部磁場係数の決定は各々独立した処理で行うことができる。そのため、原問題の相互作用係数（正規化後）を入力としてステップＳ７０１で副問題の相互作用係数を決定し、原問題の外部磁場係数（正規化後）を入力としてステップＳ７０２で副問題の外部磁場係数を決定している。ステップＳ７０１及びＳ７０２は互いに依存関係は無いので、並列処理することが可能である。ステップＳ７０１及びステップＳ７０２の処理に関しては複数種のアルゴリズムがあり、その詳細は後述する。
【００６２】
（１−６）原問題の相互作用係数から副問題の相互作用係数を生成する処理
図１９に、ステップＳ７０１で示した正規化後の原問題の相互作用係数から、副問題の相互作用係数を生成する処理のフローチャートを示す。
【００６３】
ステップＳ１９０１〜Ｓ１９０９では、原問題の２つのスピンの全ての組み合わせを列挙するためのループを回している。まずステップＳ１９０１でｉ番目のスピンに対応する変数ｉを初期化（０に設定）し、ステップＳ１９０２で変数ｉの値が全スピン数よりも小さいか否かを判定する。変数ｉの値が全スピン数よりも小さい場合には（Ｓ１９０２：ＹＥＳ）、ｊ番目のスピンに対応する変数ｊを初期化し、ステップＳ１９０４で変数ｊの値が全スピン数よりも小さいか否かを判定する。
【００６４】
変数ｊの値が全スピン数よりも小さい場合には（Ｓ１９０５：ＹＥＳ）、ステップＳ１９０５で変数ｉ及び変数ｊが同じ値であるか否かを判定する。変数ｉ及び変数ｊが同じ値である場合には（Ｓ１９０５：ＹＥＳ）、ステップＳ１９０６で副問題のｉ番目スピンからｊ番目スピンへの相互作用係数Ｊｉ，ｊを０に設定し、変数ｉ及び変数ｊが同じ値でない場合には（Ｓ１９０５：ＮＯ）、原問題の相互作用係数Ｊｉ，ｊから副問題の相互作用係数Ｊｉ，ｊを生成する。この後、ステップＳＰ１９０８で変数ｊの値を１増加させてステップＳ１９０４以降の処理を繰り返す。
【００６５】
やがて変数ｊの値が全スピン数と同じ値になった場合には（Ｓ１９０４：ＮＯ）、ステップＳ１９０９で変数ｉの値を１増加させ、この後、ステップＳ１９０２以降の処理を繰り返す。さらに、この後、変数ｉの値が全スピン数と同じ値になった場合には（Ｓ１９０２：ＮＯ）、この処理を終了する。
【００６６】
図１９において、外側のループは変数ｉ、内側のループは変数ｊでそれぞれスピン数分回るため、結果としてループの最内側にあるステップＳ１９０５〜Ｓ１９０７ではｉ、ｊの全ての組み合わせに対して実行されることになる。なお、ループ間に依存関係は無いので、ループ展開して並列実行することは容易である。
【００６７】
このステップＳ１９０１〜Ｓ１９０９は相互作用係数Ｊｉ，ｊを２次元平面上に行列のように並べたときに、それを端から順次走査していくような動きをする。なお、外側ループの変数がｉ、内側ループの変数がｊであることから、あるｉ，ｊが与えられた時にｉ＞ｊであれば、ｊ，ｉはすでに通過済み（処理済み）であることに留意されたい。
【００６８】
相互作用は互いに異なる２つのスピン間にのみ存在するので、相互作用係数を順に走査する中で、ｉ＝ｊであるような相互作用係数（例えばＪ１，１）は無いはずである。そこで、上述のようにステップＳ１９０５〜Ｓ１９０６でｉ＝ｊとなる相互作用係数は０に設定する。それ以外のｉ，ｊの組み合わせについては、ステップＳ１９０７で原問題のＪｉ，ｊから副問題のＪｉ，ｊを生成する。
【００６９】
ステップＳ１９０７の処理の一例を図２０及び図２３に示す。図２０及び図２３はステップＳ１９０７で行うべき処理のそれぞれ異なる２種類の形態であり、どちらを利用しても良い。図２０は原問題の相互作用係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の係数を生成する。図２３は原問題の非零の相互作用係数は全て＋１／−１で模擬するように副問題の係数を生成する。
【００７０】
（１−７）正側係数を＋１／０、負側係数を−１／０にするアルゴリズム
図２０を用いて、原問題の相互作用係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の係数を生成するステップＳ１９０７（図１９）の処理の詳細を説明する。
【００７１】
ステップＳ２００１は、与えられた変数ｉ，ｊで指定される原問題のＪｉ，ｊが、有向グラフとして与えられているものか、無向グラフの辺（無向辺）として与えられているものかの判定を行う。これは、原問題のＪｉ，ｊ及びＪｊ，ｉが同一の値であれば（Ｊｉ，ｊ＝Ｊｊ，ｉ）、無向辺であると判定する。なお、有向グラフの辺（有向辺）場合には、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用とが異なる、もしくは、どちらか一方の相互作用しかないため、原問題のＪｉ，ｊとＪｊ，ｉは異なる値をとる（Ｊｉ，ｊ≠Ｊｊ，ｉ）。
【００７２】
図２０の処理では、ステップＳ２００５〜Ｓ２００９で、原問題のＪｉ，ｊの大きさに比例した確率で、＋１ないしは−１を副問題の係数として発生させる。このとき乱数を用いるため、副問題のＪｉ，ｊとＪｊ，ｉは必ずしも同じ値にならない。原問題が有向辺で、もともと原問題のＪｉ，ｊとＪｊ，ｉが異なる値であれば、副問題のＪｉ，ｊとＪｊ，ｉが異なることは必然性がある。しかし、原問題が無向辺であるときには、副問題のＪｉ，ｊとＪｊ，ｉは同一の値になるべきである。
【００７３】
そこで、ステップＳ２００１のもう一つの判定条件である（ｉ＞ｊ）が満たされているときには（Ｓ２００１：ＹＥＳ）、原問題のＪｊ，ｉから副問題のＪｊ，ｉを生成する処理が既に完了しているので（ｉ＞ｊを満たすときには、ｊ，ｉという組み合わせはすでに通過済みである）、ステップＳ２００２で既に生成済みの副問題のＪｊ，ｉの値を、副問題のＪｉ，ｊの値として出力する。
【００７４】
次に、ステップＳ２００１の判定で、無向辺ではないか、無向辺であったとしても１回目の副問題の係数生成であった場合（Ｓ２００１：ＮＯ）に行われる、ステップＳ２００３〜Ｓ２００９の処理を説明する。
【００７５】
ステップＳ２００３では原問題のＪｊ，ｉが０であるかを判定する（Ｊｉ，ｊ＝０）。０であれば、ステップＳ２００４で副問題のＪｊ，ｉも０とする。
【００７６】
原問題のＪｊ，ｉが０ではない場合（Ｓ２００３：ＮＯ）、原問題のＪｊ，ｉの値の大きさに応じた確率で、原問題のＪｊ，ｉが正であれば＋１ないしは０を、原問題のＪｊ，ｉが負であれば−１ないしは０を副問題のＪｊ，ｉとして出力する処理をステップＳ２００５〜Ｓ２００９で行う。
【００７７】
具体的に、ステップＳ２００５では、０以上１以下の値域を持つ乱数ｒを生成する。
【００７８】
ステップＳ２００６では、原問題のＪｊ，ｉの絶対値と、ステップＳ２００５で生成した乱数ｒを比較する。（ｒ≦原問題のＪｊ，ｉの絶対値）であれば（Ｓ２００６：ＹＥＳ）、ステップＳ２００７で副問題のＪｊ，ｉ正の値であるか否かを判定し、原問題のＪｊ，ｉが正の値の場合には（Ｓ２００７：ＹＥＳ）、ステップＳ２００８で副問題のＪｊ，ｉを＋１として出力し、原問題のＪｊ，ｉが負の値の場合には（Ｓ２００７：ＮＯ）、ステップＳ２００９で副問題のＪｊ，ｉを−１として出力する。また（ｒ≦原問題のＪｊ，ｉの絶対値）でなければ（Ｓ２００６：ＮＯ）、ステップＳ２００４で副問題のＪｊ，ｉを０とする。このようにして、原問題の係数の大きさに比例した確率で、＋１／０、ないしは、−１／０の副問題の係数が生成される。
【００７９】
以上のアルゴリズムで、原問題の係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の係数を生成することが出来る。
【００８０】
なお、この方法は、生成された複数の副問題の各辺の相互作用係数（副問題のＪｊ，ｉ）の期待値ないしは平均値が、正規化された原問題のＪｊ，ｉの値になるように、副問題のＪｊ，ｉに＋１／０／−１の値を与えているとも言うことが出来る。
【００８１】
（１−８）正側係数、負側係数を共に＋１／−１にするアルゴリズム
図２３を用いて、原問題の非零の相互作用係数は全て＋１／−１で模擬するように副問題の係数を生成するステップＳ１９０７の処理の詳細を説明する。
【００８２】
ステップＳ２３０１〜Ｓ２３０２は、原問題の無向辺のための処理であり、図２０のステップＳ２００１〜Ｓ２００２と同じであるため、繰り返しの説明を省略する。
【００８３】
次に、ステップＳ２３０１の判定で、無向辺ではないか、無向辺であったとしても１回目の副問題の係数生成であった場合に行われる、ステップＳ２３０３〜Ｓ２００７の処理を説明する。
【００８４】
ステップＳ２３０３において、原問題のＪｊ，ｉの値に応じて、副問題の係数に＋１を発生させる確率ｐを計算する。なお、（ｐ−１）の確率で副問題の係数に−１を発生させるものとする。確率ｐは副問題のＪｊ，ｉの期待値が、原問題のＪｊ，ｉの値になるように定める。具体的には、次式
【数４】
2015191340.tif 000006
で計算される。ここで参照している原問題のＪｊ，ｉの値は正規化されている値であるため、−１〜＋１の値域を持つ。仮に、原問題のＪｊ，ｉの値が０の時には、ｐ＝０．５となり、副問題には＋１と−１が等しい確率で発生する。原問題のＪｊ，ｉの値が＋１の時には、ｐ＝１となり、副問題には＋１のみが発生する。原問題のＪｊ，ｉの値が−１の時には、ｐ＝０となり、副問題には−１のみが発生する。
【００８５】
ステップＳ２３０４では、０以上１以下の値域を持つ乱数ｒを生成する。
【００８６】
ステップＳ２３０５では、ステップＳ２３０３で決定した確率ｐと、ステップＳ２３０４で生成した乱数ｒを比較する。ｒ≦ｐであれば、ステップＳ２３０６で副問題のＪｊ，ｉを＋１として出力する。ｒ≦ｐでなければ（ｒ＞ｐであれば）、ステップＳ２３０７で副問題のＪｊ，ｉを−１として出力する。
【００８７】
以上のアルゴリズムで、原問題の係数のうち、非零係数は全て＋１／−１で模擬するように副問題の係数を生成することが出来る。
【００８８】
（１−９）原問題の外部磁場係数から副問題の外部磁場係数を生成する処理
図２１に、ステップＳ７０２で示した正規化後の原問題の外部磁場係数から、副問題の外部磁場係数を生成する処理のフローチャートを示す。
【００８９】
ステップＳ２１０１〜Ｓ２１０４では、原問題の全てスピン（すなわち全ての外部磁場係数）をあたるためのループを回している。なお、ループ間に依存関係は無いので、ループ展開して並列実行することは容易である。
【００９０】
ステップＳ２１０１では、スピンの番号を表す変数ｉを０に設定する。
【００９１】
ステップＳ２１０２では、変数ｉの値が全スピン数よりも小さいか否かを判定し、変数ｉの値が全スピン数よりも小さい場合に（Ｓ２１０２：ＹＥＳ）、ステップＳ２１０３で原問題のｈｉから副問題のｈｉを生成する処理を行う。
【００９２】
ステップＳ２１０４では、変数ｉの値を１増加させた値に更新し、変数ｉの値が全スピン数よりも大きくなるまで（Ｓ２１０２：ＮＯ）、ステップＳ２１０２〜Ｓ２１０４の処理を繰り返す。
【００９３】
ステップＳ２１０３の処理の一例を図２２及び図２４に示す。図２０及び図２３に示した相互作用係数の場合と同様に、図２２及び図２４はステップＳ２１０３で行うべき処理のそれぞれ異なる２種類の形態であり、どちらを利用しても良い。
【００９４】
図２２は原問題の外部磁場係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の係数を生成する（相互作用係数に対する図２０の処理と類似する）。図２４は原問題の非零の外部磁場係数は全て＋１／−１で模擬するように副問題の係数を生成する（相互作用係数に対する図２３の処理と類似する）。
【００９５】
一般的には、相互作用係数と外部磁場係数の値の生成方法は同じ方法を揃えて用いる。つまり、相互作用係数に対する図２０のアルゴリズムと外部磁場係数に対する図２２のアルゴリズムを対にして用い、相互作用係数に対する図２３のアルゴリズムと外部磁場係数に対する図２４のアルゴリズムを対にして用いる。
【００９６】
（１−１０）正側係数を＋１／０、負側係数を−１／０にするアルゴリズム
図２２を用いて、原問題の外部磁場係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の外部磁場係数を生成するステップＳ２１０３の処理の詳細を説明する。
【００９７】
ステップＳ２２０１では原問題のｈｉが０であるかを判定する（ｈｉ＝０）。原問題のｈｉが０であれば、ステップＳ２２０２で副問題のｈｉも０とする。
【００９８】
原問題のｈｉが０でない場合には、原問題のｈｉの値の大きさに応じた確率で、原問題のｈｉが正であれば＋１ないしは０を、原問題のｈｉが負であれば−１ないしは０を副問題のｈｉとして出力する処理をステップＳ２２０３〜Ｓ２２０７で行う。
【００９９】
ステップＳ２２０３では、０以上１以下の値域を持つ乱数ｒを生成する。
【０１００】
ステップＳ２２０４では、原問題のｈｉの絶対値と、ステップＳ２２０３で生成した乱数ｒを比較する。原問題のｈｉの絶対値が乱数ｒ以上（ｒ≦原問題のｈｉの絶対値）であれば、ステップＳ２２０５〜Ｓ２０７で副問題のｈｉを＋１（原問題のｈｉが正の値の場合）、ないしは、−１（原問題のｈｉが負の値の場合）として出力する。原問題のｈｉの絶対値が乱数ｒ以上（ｒ≦原問題のｈｉの絶対値）でなければ、ステップＳ２２０２で副問題のｈｉを０とする。このようにして、原問題の外部磁場係数の大きさに比例した確率で、＋１／０、ないしは、−１／０の副問題の外部磁場係数が生成される。
【０１０１】
ステップＳ２２０５では、原問題のｈｉが正負のいずれかであるかを判定する。正であればステップＳ２２０６で副問題のｈｉを＋１として出力する。負であればステップＳ２２０７で副問題のｈｉを−１として出力する。
【０１０２】
以上のアルゴリズムで、原問題の外部磁場係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の外部磁場係数を生成することが出来る。
【０１０３】
なお、この方法は、生成された複数の副問題の各辺の外部磁場係数（副問題のｈｉ）の期待値ないしは平均値が、正規化された原問題のｈｉの値になるように、副問題のｈｉに＋１／０／−１の値を与えているとも言うことが出来る。
【０１０４】
（１−１１）正側係数及び負側係数を共に＋１／−１にするアルゴリズム
図２４を用いて、原問題の非零の外部磁場係数は全て＋１／−１で模擬するように副問題の係数を生成するステップＳ２１０３の処理の詳細を説明する。
【０１０５】
図２４のステップＳ２４０１〜Ｓ２４０５の処理は、図２３のステップＳ２３０３〜Ｓ２３０７について、相互作用係数（Ｊｊ，ｉ）を外部磁場係数（ｈｉ）に置き換えたものと見なすことが出来る。
【０１０６】
ステップＳ２４０１において、原問題のｈｉの値に応じて、副問題の係数に＋１を発生させる確率ｐを計算する。確率ｐの計算式は
【数５】
2015191340.tif 000007
であり、図２３のステップＳ２３０３と同様の計算方法である。
【０１０７】
ステップＳ２４０２では、０以上１以下の値域を持つ乱数ｒを生成する。
【０１０８】
ステップＳ２４０３では、ステップＳ２４０１で決定した確率ｐと、ステップＳ２４０２で生成した乱数ｒとを比較する。ｒ≦ｐであれば、ステップＳ２４０４で副問題のｈｉを＋１として出力する。ｒ≦ｐでなければ（ｒ＞ｐであれば）ステップＳ２４０５で副問題のｈｉを−１として出力する。
【０１０９】
以上のアルゴリズムで、原問題の外部磁場係数のうち、非零の外部磁場係数は全て＋１／−１で模擬するように副問題の外部磁場係数を生成することが出来る。
【０１１０】
（１−１２）解生成の説明
図８に解生成１６０の処理の一例をフローチャートとして示す。図８の解生成１６０は解候補１５０−１〜ｋのうち、原問題１１０でのエネルギーが最も低くなる解を解１７０として出力するものである。
【０１１１】
ステップＳ８０１〜Ｓ８０７では、副問題の個数分だけＳ８０３〜Ｓ８０６の処理を繰り返す。ステップＳ８０１、Ｓ８０６及びＳ８０７は繰り返しのためのループ処理である。
【０１１２】
ステップＳ８０１では、変数ｉを初期化（１に設定）し、ステップＳ８０２では、ループ中で見つけた最小のエネルギーを一時的に記録しておくための変数ｍｉｎを初期化（−∞に設定）する。
【０１１３】
ステップＳ８０３では、１個以上の解候補のうちの１つを原問題のエネルギー関数で評価し、ステップＳ８０４では、ステップＳ８０３で得た評価値（エネルギー）が変数ｍｉｎよりも小さいか否かを判定する。
【０１１４】
ステップＳ８０３で得た評価値が変数ｍｉｎよりも小さい場合には（Ｓ８０４：ＹＥＳ）、ステップＳ８０５で、変数ｍｉｎをステップＳ８０３で得た評価値に更新すると共に、解候補を表す変数ｘをそのときの変数ｉの値に更新する。
【０１１５】
ステップＳ８０６では変数ｉを１増加させ、ステップＳ８０７では、変数ｉの値が副問題の数よりも大きいか否かを判断し、変数ｉの値が副問題の数以下である場合には（Ｓ８０７：ＹＥＳ）、ステップＳ８０３に戻る。そして、これ以降、ステップＳ８０３〜Ｓ８０７のループを変数ｉの値が副問題のよりも大きくなるまで繰り返す。
【０１１６】
このような処理により、最終的に最も小さいエネルギーが変数ｍｉｎに設定され、そのようなエネルギーとなる解候補に対応する変数ｉの値が変数ｘとして設定される。なお、変数ｘ、ないしは、変数ｍｉｎをリスト構造として、複数の解を保持しても良い。
【０１１７】
なお、ステップＳ８０１〜Ｓ８０７の処理は、ツリー状のリダクション演算によって、並列計算機上で容易に並列実行が可能である。
【０１１８】
最後にステップＳ８０８で変数ｘに記憶されている解候補を、原問題１１０の解１７０として出力する。
【０１１９】
（１−１３）具体的な問題を解く例
以上に述べた本発明の基底状態探索によって、具体的な問題を解く例を示す。
【０１２０】
（１−１３−１）グラフの最大カット問題
図９にグラフの最大カット問題を示す。図９のグラフＧ＝（Ｖ、Ｅ）は、頂点の集合Ｖ＝｛ｖ０，ｖ１，ｖ２，ｖ３，ｖ４，ｖ５｝と、辺の集合Ｅ＝｛ｅ０１，ｅ０２，ｅ１２，ｅ１３，ｅ１４，ｅ２４，ｅ３４，ｅ３５，ｅ４５｝から構成される。なお、ｅ０１という辺は、頂点ｖ０と頂点ｖ１の間を接続する辺という意味である。各辺は重み係数を持っており、ｗ（ｅ０１）＝５，ｗ（ｅ０２）＝４，ｗ（ｅ１２）＝１，ｗ（ｅ１３）＝３，ｗ（ｅ１４）＝２，ｗ（ｅ２４）＝３，ｗ（ｅ３４）＝４，ｗ（ｅ３５）＝５，ｗ（ｅ４５）＝１となる。
【０１２１】
図１０に示すように、このグラフの頂点Ｖを２つの部分集合Ｖ’とＶ’＼Ｖに分割することをカットと呼ぶ。Ｖ’＼ＶはＶからＶ’を除いた集合を示す。ここで、分割されたＶ’とＶ’＼Ｖの間を跨っている辺（図１０の例ではｅ０１、ｅ０２、ｅ１３、ｅ１４、ｅ２４、ｅ３５及びｅ４５）を、カットを跨いでいるエッジ、もしくは、カットエッジと呼ぶ。重みが無いグラフの場合にはカットエッジの本数、図１０のように重み付きのグラフの場合にはカットエッジの重みの総和を、カットの大きさと呼ぶ。図１０の例では、カットの大きさはｗ（Ｖ‘）＝２３である。
【０１２２】
最大カット問題とは、グラフＧ＝（Ｖ，Ｅ）を与えられたとき、カットの大きさを最大化するカットを求めることである。換言すれば、カットの大きさを最大化するように、頂点ＶをＶ’とＶ’＼Ｖにグループ分けすることと言っても良い。なお、図１０は最大カットになっている。また、このグラフはカットの仕方、つまり頂点Ｖの部分集合Ｖ‘とＶ’＼Ｖへの仕方は異なるが、同じカットの大きさを持つもう一つの最大カットの答えがあり、図１１に示す。図１０、及び、図１１はいずれも図９の最大カット問題の答えとして正しい。
【０１２３】
（１−１３−２）イジングモデルによる最大カット問題の解法
図９のグラフの最大カット問題を、イジングモデルの基底状態探索で解けることを、図１２を用いて説明する。図１２のイジングモデルは、図９のグラフの辺の重み係数の符号を全て反転させたものを、相互作用係数にしたものである。このイジングモデルは６個のスピンを持っており、それぞれが＋１と−１の２状態を持つので、２＾６個（６４個）の実行可能解がある。この実行可能解が持つエネルギーは図１２に示すように、−３６〜５６の範囲内に１６種類のエネルギーがある。
【０１２４】
図１２のイジングモデルのエネルギーを最小化するスピン配列、すなわち大域最適解となる基底状態は図１２に示したように４種類あり、その時のエネルギーは−３６である。なお、図示した基底状態のうち、（１）と（２）、（３）と（４）はそれぞれ互いにスピンの値を反転させた関係にある。イジングモデルでは、あるスピン配列があったときに、そのスピン配列の全てのスピンの値を反転させた時には、エネルギーは変わらない。
【０１２５】
図１２の基底状態（１）及び（２）は図１１の最大カット問題の解に、基底状態（３）及び（４）は図１０の最大カット問題の解に対応している。最大カット問題をイジングモデルの基底状態探索として捉えると、カットエッジの端点の頂点（スピン）の値が異なるようにスピンの値を決定することである。カットした頂点集合Ｖ’に属する頂点は＋１のスピン、Ｖ’＼Ｖに属する頂点は−１のスピンとすることであると言っても良い。また、頂点集合Ｖ’が−１、Ｖ’＼Ｖが＋１というように、値が逆であっても良い。このことから、イジングモデルの基底状態探索とグラフの最大カット問題が対応していることが理解できよう。
【０１２６】
（１−１３−３）本実施の形態による解の例
図１２のイジングモデルの基底状態探索を、本実施の形態に記載した方法ないしは装置を用いて行った例を説明する。図１に示した本発明の流れに沿って説明する。
【０１２７】
まず、原問題を用意する。図１２のイジングモデルを、図４の書式に沿ってデータ化した図１３の原問題データ１３００を原問題とする。なお、図１２のイジングモデルを正規化すると図３３に示すようなモデルになる。このことからも分かるように、本発明において原問題の係数は整数に限らず、実数を含んでいても良い。原問題の係数の値にかかわらず、一旦正規化して扱う。図３３の例は例えば＋１〜−１の値域に正規化している。
【０１２８】
次に、この原問題データ１３００に副問題生成１２０を適用して、図１４の副問題データ１４０１〜１４０３を生成する。なお、この副問題生成では、相互作用係数に対する図２０のアルゴリズムと外部磁場係数に対する図２２のアルゴリズムを対にして用い、原問題の相互作用係数及び外部磁場係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の係数を生成した。なお、図面の紙幅の都合で、この例では副問題数を３個としている。
【０１２９】
図１４の副問題データ１４０１〜１４０３が、図１２の原問題のイジングモデルと比較してどのようなモデルになっているのかを見るために、図１５に副問題データ１４０１〜１４０３をグラフとして描画した副問題１５０１〜１５０３を示す。
【０１３０】
図１５の副問題１５０１〜１５０３を見ると、相互作用が存在する辺は、全て係数−１の相互作用となっている。図１２のイジングモデルは負の相互作用係数のみを含んでいるため、図２０のアルゴリズムを適用すると、相互作用係数は−１か０かのどちらかとなり、係数０は相互作用が無いものとしてグラフには描画されないため、係数−１の辺のみが見えるのである。
【０１３１】
そして、副問題１５０１〜１５０３の各辺について見てみると、図１２の原問題で相互作用係数の絶対値が大きい辺（例えば、Ｊ０，１＝−５，Ｊ０，２＝−４，Ｊ３，４＝−４，Ｊ３，５＝−５）については、副問題１５０１〜１５０３のいずれでも係数−１の相互作用が発生している。一方、原問題で相互作用係数の絶対値が小さくなるほど、副問題１５０１〜１５０３で相互作用が発生する確率が低くなっていることが確認できる。
【０１３２】
この副問題１５０１〜１５０３（副問題データ１４０１〜１４０３）それぞれに対して、情報処理装置２００の基底状態探索アクセラレータ２７０で制限付基底状態探索を行い、図１６の解候補データ１６０１〜１６０３を得る。
【０１３３】
図１６の解候補データ１６０１〜１６０３は図５の書式に沿っており、それぞれ副問題１５０１〜１５０３の基底状態である。つまり、例えば解候補データ１６０１は副問題１５０１の相互作用係数及び外部磁場係数で構成したエネルギー関数のエネルギーを最小化するようなスピン配列であり、その時のエネルギーは−８である。同様に、解候補データ１６０２は副問題１５０２のエネルギーを最小化するスピン配列であり副問題１５０２におけるエネルギーは−８、解候補データ１６０３は副問題１５０３のエネルギーを最小化するスピン配列であり副問題１５０３におけるエネルギーは−６となる。
【０１３４】
最後に、図８に示した解生成１６０の手順で、解候補データ１６０１〜１６０３から図１７に示す解データ１７０１を生成する。図１６に示すように解候補データ１６０１〜１６０３を原問題のエネルギー関数で評価すると、それぞれ−３６，−２４，−３６となる。この中で、エネルギーがより小さい解候補データ１６０１及び解候補データ１６０３（いずれも原問題でのエネルギーが−３６）を併せて解データ１７０１として出力する（なお、解候補データ１６０１及び解候補データ１６０３のいずれか一方を解データ１７０１として出力しても良い）。
【０１３５】
図１７に示した解データ１７０１を見ると、第一行目（解候補データ１６０１）は、図１２で示した基底状態の（４）、第二行目（解候補データ１６０３）は図１２で示した基底状態の（３）に対応している。
【０１３６】
なお、図８に示したように、解生成の中で解候補データ１６０１〜１６０３それぞれの原問題でのエネルギーを評価すると計算時間がかかるという場合には、例えば解候補データ１６０１〜１６０３のスピン配列のスピンそれぞれについて最頻値などの代表値や統計量を取って、それを解データとする方法もある。
【０１３７】
例えば、図１８の解データ１８０１のスピン配列は、スピンそれぞれについて解候補データ１６０１〜１６０３での最頻値を取って生成したものである。解データ１８０１を原問題のエネルギー関数で評価するとエネルギーは−２４であり、最良解のエネルギーである−３６には及ばないが、実行可能解の１６種類のエネルギーの中では３番目に良い値となっている。よって、近似解が出力されていると言える。
【０１３８】
（１−１４）本実施の形態の性能評価
本実施の形態で説明したイジングモデルの基底状態探索装置、ないしは、方法の性能について、実験結果を図２６及び図２７に示す。
【０１３９】
図２６は、相互作用係数に対する図２０のアルゴリズムと外部磁場係数に対する図２２のアルゴリズムを対にして用いた場合の実験結果である。図２７は、相互作用係数に対する図２３のアルゴリズムと外部磁場係数に対する図２４のアルゴリズムを対にして用いた場合の実験結果である。
【０１４０】
図２６及び図２７のいずれも原問題は図１２のイジングモデルである。原問題から副問題生成１２０で１０００個の副問題を生成する。１０００個の副問題それぞれについて、基底状態探索の結果として出力されうる解候補（スピン配列）を列挙する。
【０１４１】
基底状態探索の結果として出力されうるスピン配列とは、大域最適解ないしは局所最適解である。一般的に、何らかの基底状態探索手段は、あるスピン配列の近傍（例えばハミング距離が近い他のスピン配列）に移行することで、解の質を改善する（エネルギーを下げる）ことができるのであれば移行し、できなければ留まるという局所探索法を用いている。これだけでは、近傍への移行だけでは解の質の改善が不可能という局所最適解にはまってしまい大域最適解へ到達することが出来ないため、熱揺らぎを導入するシミュレーテッドアニーリングなどの手法が用いられているが、それでも局所最適解から抜け出せないことがある。また、大域最適解も近傍への移行だけでは解の質の改善が不可能という点では、一種の局所最適解と見なすことができる。基底状態探索の結果として出力されるスピン配列は、大域最適解を含む広義の局所最適解であると言える。局所最適解が出力されたときには、近似解が得られたことになる。
【０１４２】
そこで、１０００個の副問題それぞれについて、取りうる全てのスピン配列を列挙し、前述した局所探索法によってそれ以上の解の改善が可能なスピン配列であるかどうか、すなわち大域最適解ないしは局所最適解であるかどうかを判定し、大域最適解ないしは局所最適解であるスピン配列を、当該副問題を基底状態探索して出力されうるスピン配列として列挙した。
【０１４３】
その結果、１０００個の副問題に対して、図２６の場合には合計１０３３２通り、図２７の場合には合計９６７８通りとなる。平均すると１個の副問題あたり平均１０個程度の局所最適解があることになる。
【０１４４】
そして、１０３３２通り、ないしは、９６７８通りのそれぞれのケースにおいて、当該スピン配列を当該副問題のエネルギー関数で評価した時の解の品質、つまり何番目に低いエネルギーであるかを表の行方向で示している。列方向は、原問題のエネルギー関数で評価したときの解の品質である。
【０１４５】
例えば、図２６の１行１列目は１４．０％であるが、これは１０００個の副問題に対して、解として得られる１０３３２通りのうち、１４．０％が副問題でも原問題でも最良の解であることを示している。２行１列目の１６．５％は副問題で評価すると２番目に良い解であるが、原問題で評価すると原問題の最良の解になっていることを意味している。
【０１４６】
４行目の「計」となっている行は、各列の合計である。この計となっている行は、原問題で所定の品質の解がどの程度の確率で得られるのかを示していると考えて良い。
【０１４７】
例えば原問題で１番良い解を得られる確率に注目してみると、図２６の場合（図２０のアルゴリズムと外部磁場係数に対する図２２のアルゴリズム）では３４．５％、図２７の場合（図２３のアルゴリズムと外部磁場係数に対する図２４のアルゴリズム）は２６．１％である。
【０１４８】
ここで、本発明を用いて、原問題で１番良い解を得たいときに、どの程度の数の副問題を用いれば十分かを求める。すなわち、図６のステップＳ６０３（副問題数を決定）の一例を示す。
【０１４９】
図２６の場合、原問題で１番良い解を得られる確率は３４．５％である。逆に、それ以外の解が得られる確率は６５．５％である。ｎ回連続して１番良い解以外の解を得られる確率は６５．５％×ｎとして計算できるが、１１回で１％未満の値となる。よって、１１個も副問題を生成すれば、原問題で１番良い解を得られる確率を十分に高められる。また、原問題で２番目以降に良い解、すなわち近似解を出力として許せば、この副問題数はさらに削減することが可能である。
【０１５０】
（１−１５）イジングチップの構造と係数の制限
本実施の形態でイジングモデルの基底状態を探索する手段として用いているハードウェアであるイジングチップ２８０−１，２８０−２について、その構造の詳細と、その構造上生じる係数の制約について、図３４〜図３８を参照して説明する。
【０１５１】
図３４は、本実施の形態のイジングチップ２８０−１，２８０−２の構成図の例である。イジングチップ２８０−１，２８０−２はスピンアレイ３４１０、Ｉ／Ｏ（Input/Output）ドライバ３４２０、Ｉ／Ｏアドレスデコーダ３４３０及び相互作用アドレスデコーダ３４４０から構成される。本実施の形態ではイジングチップ２８０−１，２８０−２は現在広く用いられているＣＭＯＳ（Complementary Metal-Oxide Semiconductor）集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
【０１５２】
イジングチップ２８０−１，２８０−２は、スピンアレイ３４１０にリード／ライトを行うためのＳＲＡＭ互換インタフェース３４５０を持っており、アドレスバス３４９０、データバス３４９１、Ｒ／Ｗ制御線３４９３及びＩ／Ｏクロック線３４９２から構成される。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース３４６０として、相互作用アドレス線３４８０及び相互作用クロック線３４８１を有している。また、イジングチップ２８０−１，２８０−２は、そのイジングチップ２８０−１，２８０−２を動作させるための電源線３４４０と、後述するようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数を注入するための乱数注入線３４５０とを有している。
【０１５３】
イジングチップ２８０−１，２８０−２では、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉを全てスピンアレイ３４１０内のメモリセルに記憶する情報で表現する。スピンσｉの初期状態の設定及び基底探索完了後の解読み出しのためにスピンσｉのリード／ライトをＳＲＡＭ互換インタフェース３４５０で行う。また、基底状態を探索すべきイジングモデルをイジングチップ２８０−１，２８０−２に設定するために、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトもＳＲＡＭ互換インタフェース３４５０で行う。そのため、スピンアレイ３４１０内のスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉにはアドレスが付与されている。
【０１５４】
また、イジングチップ２８０−１，２８０−２は、基底状態探索を行うために、スピンアレイ３４１０の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース３４６０であり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス線３４８０を介して入力し、相互作用クロック線３４８１を介して入力されるクロックに同期して相互作用を行う。
【０１５５】
情報処理装置２００は、ＣＰＵ２１０が基底状態探索アクセラレータ制御コマンド２６２を実行してイジングチップコントローラ２５０を制御し、イジングチップコントローラ２５０がイジングチップ２８０−１，２８０−２のＳＲＡＭ互換インタフェース３４５０及び相互作用制御インタフェース３４６０を制御することで、イジングモデルの基底状態探索を実現する。
【０１５６】
ここで、イジングチップ２８０−１，２８０−２で扱うことのできるイジングモデルの係数が、ハードウェアの構造によって制限されていることをより詳細に説明する。
【０１５７】
スピンアレイ３４１０は、１個のスピン並びにそれに付随する相互作用係数及び外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット３５００を基本構成単位として、スピンユニット３５００を多数個並べて構成する。図３７は、スピンユニット３５００を複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図３７の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図３７の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【０１５８】
図３７に示す１個のスピンユニット３５００には、隣接するスピン（例えば隣接するスピンが５個の場合）σｊ、σｋ、σｌ、σｍ、σｎの値が入力される。また、スピンユニット３００は、スピンσｉ及び外部磁場係数ｈｉに加え、上述した隣接するスピンσｉとの相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ（隣接する５スピンとの相互作用係数）を保持するメモリセルを有している。
【０１５９】
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した（１）式では、相互作用を表わす項として、Ｊｉ，ｊ×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この時、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊｉ，ｊとＪｊ，ｉは同一である。しかし、本実施の形態のイジングチップ２８０−１，２８０−２では、先に述べたようにこのイジングモデルを有向グラフに拡張し（（３）式）、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【０１６０】
そのため、１個のスピンユニット３５００をｉ番目スピンσｉと考えた時に、このスピンユニットが保持する相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσｊ、σｋ、σｌ、σｍ、σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図３７において、スピンユニット３５００に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット３５００の外部のスピンから、スピンユニット３５００の内部のスピンに向かっていることに対応している。
【０１６１】
スピンユニット３５００の構成の一例を図３５及び図３６を用いて説明する。スピンユニット３５００は２つの側面をもっており、便宜上、図３５及び図３６に分けて説明するが、１個のスピンユニット３５００に図３５及び図３６の構成の双方が含まれるものである。図３５はスピンユニット３５００間の相互作用を実現するための回路を図示し、図３６はスピンユニット３５００が有するメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１にイジングチップ２８０−１，２８０−２外からアクセスするためのインタフェースであるワード線３６２０とビット線３６１０とに注目して図示したものである。
【０１６２】
スピンユニット３５００は、イジングモデルのスピンσｉ、相互作用係数Ｊｊ，ｉ〜Ｊｎ，ｉ及び外部磁場係数ｈｉを保持するために、複数の１ビットのメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１を備えている。なお、メモリセルＩＳ０及びＩＳ１、メモリセルＩＵ０及びＩＵ１、メモリセルＩＬ０及びＩＬ１、メモリセルＩＲ０及びＩＲ１、メモリセルＩＤ０及びＩＤ１、並びに、メモリセルＩＦ０及びＩＦ１は、それぞれ２個１組で役割を果たすものであるため、それぞれまとめてメモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ又はＩＦｘと略記する（図３８参照）。
【０１６３】
ここで、スピンユニット３５００はｉ番目のスピンを表現するものとして説明を行う。メモリセルＮはスピンσｉを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルの２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。
【０１６４】
図３８を用いて、スピンユニット３５００が有するメモリセル対ＩＳｘ、ＩＵｘ、ＩＬｘ、ＩＲｘ、ＩＤｘ及びＩＦｘと、図５に示したイジングモデルのトポロジとの対応関係を示す。メモリセル対ＩＳｘは外部磁場係数を記憶する。また、メモリセル対ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対ＩＵｘは上側のスピン（Ｙ軸方向で−１）、メモリセル対ＩＬｘは左側のスピン（Ｘ軸方向で−１）、メモリセル対ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、メモリセル対ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、メモリセル対ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数Ｊｉ，ｊをそれぞれ記憶する。
【０１６５】
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット３５００は最大で５個のスピンと接続される。本実施の形態のイジングチップ１００では、外部磁場係数及び相互作用係数として＋１／０／−１の３値に対応する。そのため、外部磁場係数及び相互作用係数を表わすためには、それぞれ２ビットのメモリセルが必要となる。メモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘは、末尾の数字が０と１の２つのメモリセル（例えばメモリセル対ＩＳｘの場合にはメモリセルＩＳ０及びＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、メモリセル対ＩＳｘの場合には、メモリセルＩＳ１で＋１／−１を表現し、メモリセルＩＳ１が保持する値が１の時は＋１、メモリセルＩＳ１が保持する値が０の時には−１を表す。これに加えて、メモリセルＩＳ０が保持する値が０の時には外部磁場係数を０と見なし、メモリセルＩＳ０が保持する値が１の時にはメモリセルＩＳ１が保持する値で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、メモリセルＩＳ０に保持された値は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を記憶するメモリセル対ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘも同様に係数とビットの値を対応させている。
【０１６６】
スピンユニット３５００内のメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０及びＩＦ１は、それぞれイジングチップ２８０−１，２８０−２の外部からリード／ライト可能でなければならない。そのために、図３６に示すように、スピンユニット３５００はビット線３６１０とワード線３６２０とをそれぞれ有している。スピンユニット３５００を半導体基板上にタイル状に並べてビット線３６１０とワード線３６２０とを接続し、Ｉ／Ｏアドレスデコーダ３４３０とＩ／Ｏドライバ３４２０とで駆動、制御又は読み出しすることで、一般的なＳＲＡＭ（Static Random Access Memory）と同様にスピンユニット３５００内のメモリセルをイジングチップ２８０−１，２８０−２のＳＲＡＭ互換インタフェース３４５０でリード／ライトすることが出来る。
【０１６７】
スピンユニット３５００は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット３５００毎に独立して持っている。スピンの次状態を決定するための回路を図３５に示す。図３５ではスピンユニット３５００は外部とのインタフェースとして、信号線ＥＮ，ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，ＯＮ及びＧＮＤを有する。信号線ＥＮは当該スピンユニット３５００のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でセレクタ３５５０を制御することで、メモリセルＮに保持されたスピンの値を、後述の多数決論理回路３５３０からＯＲ回路３５４０を介してセレクタ３５５０に与えられる値に更新することが出来る。
【０１６８】
信号線ＯＮは当該スピンユニット３５００のスピンの値を他のスピンユニット３５００（図３７のトポロジで隣接するユニット）に出力するインタフェースである。信号線ＮＵ，ＮＬ，ＮＲ，ＮＤ及びＮＦはそれぞれ他のスピンユニット３５００（図３７のトポロジで隣接するユニット）の有するスピンの値を入力するためのインタフェースである。信号線ＮＵは上側のスピン（Ｙ軸方向で−１）、信号線ＮＬは左側のスピン（Ｘ軸方向で−１）、信号線ＮＲは右側のスピン（Ｘ軸方向で＋１）、信号線ＮＤは下側のスピン（Ｙ軸方向で＋１）、信号線ＮＦは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）からの入力である。
【０１６９】
なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。図３７のトポロジのように単に端は打ち切るのであれば、信号線ＮＵ，ＮＬ，ＮＲ，ＮＤ及びＮＦのうち端に対するものは何も入力しなくて良い（回路上は０ないしは１の固定値に接続するなど、未使用入力端子として適切な処理をとる）。
【０１７０】
スピンユニット３５００では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσｊ、σｋ、σｌ、σｍ及びσｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。まず、隣接スピンの値はσｊ＝＋１、σｋ＝−１、σｌ＝＋１、σｍ＝−１、σｎ＝＋１とし、相互作用係数はＪｊ，ｉ＝＋１、Ｊｋ，ｉ＝＋１、Ｊｌ，ｉ＝＋１、Ｊｍ，ｉ＝−１、Ｊｎ，ｉ＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σｊ×Ｊｊ，ｉ＝＋１、σｋ×Ｊｋ，ｉ＝−１、σｌ×Ｊｌ，ｉ＝＋１、σｍ×Ｊｍ，ｉ＝＋１、σｎ×Ｊｎ，ｉ＝−１、ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【０１７１】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とすると、エネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することが出来る。
【０１７２】
図３５のスピンユニット３５００に図示する論理回路は前記した相互作用を行うための回路である。まず、隣接スピンの状態と、相互作用係数の＋１／−１を示すメモリセルＩＵ１，ＩＬ１，ＩＲ１，ＩＤ１，ＩＦ１が保持する値との排他的論理和の否定（ＸＮＯＲ）をＸＮＯＲ回路３５１０で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。もし、相互作用係数が＋１／−１だけであれば、ＸＮＯＲ回路３５１０の出力のうち＋１／−１のどちらが多いかを多数決論理回路３５３０において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路３５３０に入力すべき値となる。
【０１７３】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，……，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，……，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ、Ｉ’１，Ｉ’２，Ｉ’３，……，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１、Ｉ２、Ｉ３，……，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。具体的には、図３５に示すように、ＸＯＲ回路３５２０を利用して、係数のイネーブルを決めるビット（ビットセルＩＳ０，ＩＵ０，ＩＬ０，ＩＲ０，ＩＤ０及びｉＦ０にそれぞれ保持されたビット）の値により、多数決論理回路３５３０に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセルＩＳ０が保持するビットの値が０の場合、メモリセルＩＳ１が保持するビットの値と、メモリセルＩＳ１が保持するビットの値を反転させた値が同時に多数決論理回路３５３０に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、メモリセルＩＳ０が保持するビットの値が１の場合には、メモリセルＩＳ１が保持するビットの値と、その値と同じ値（複製）が同時に多数決論理回路３５３０に入力されることになる。
【０１７４】
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転されるために、スピンユニット３５００はＲＮＤインタフェースを有する。イジングチップイジングチップ２８０−１及び２８０−２の外部から乱数注入線３４５０でランダムなビット列を注入し、スピンユニット３５００のＲＮＤインタフェースに介してＯＲ回路３５４０に入力することで、スピンの値を確率的に反転させることができる。
【０１７５】
上述したような構成で、＋１／０／−１の３種類の相互作用係数、及び、外部磁場係数を持つ３次元格子イジングモデルの基底状態探索を実現するイジングチップ２８０−１，２８０−２が提供できる。そして、今述べた「＋１／０／−１の３種類」という係数の制限は、係数を保持するためのメモリセルＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘと、係数と隣接スピンの値からエネルギーを小さくするスピンの値を決定する多数決論理の構造とに起因していることが分かる。
【０１７６】
イジングチップ２８０−１及び２８０−２を実際に製造するために、詳細な回路設計やレイアウトを行うと、チップ面積のうちスピンアレイ３４１０の占める割合が大半を占める。そして、スピンアレイ３４１０の面積は、スピンユニット３５００の面積にスピン数を乗じたものに比例することから、スピンユニット３５００の面積の大小はイジングチップイジングチップ２８０−１，２８０−２のスケーラビリティに大きな影響を与える。一般的に半導体集積回路の製造に要する原価は、プロセスの世代（微細度）とチップ面積、及び、量産数で決まると言うことが出来る。同じプロセス世代と量産数であれば、スピンユニット３５００の面積を小さくするほどコストを下げることが出来る。また、チップ面積が大きくなるほど製造不良による歩留まり低下の度合いが大きくなるため、より多くのスピン数を実現するという点からもスピンユニット３５００の面積を小さくすることが望ましい。
【０１７７】
上述の構造では、係数を「＋１／０／−１の３種類」に制限することで、係数を保持するメモリセルを１係数あたり２ビット（合計１２ビット）にし、相互作用を計算するための回路を１１個の排他的論理和回路（５個のＸＮＯＲ回路３５１０及び６個のＸＯＲ回路３５２０）と、多数決論理回路３５３０とだけで実現することができた。これによって、スピンユニット３５００の面積を小さくすることに寄与している。スピンユニット３５００の面積は図３５の構成から明らかな通り、スピン値を保持するための構成要素（メモリセルＮ）よりも、相互作用のために必要な構成要素（メモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘ、ＸＮＯＲ回路３５１０、ＸＯＲ回路３５２０、並びに、多数決論理回路３５３０）が支配的であることが分かる。そのことから、相互作用に関する回路を簡略化することが、スケーラビリティを高める上で重要であることが理解できよう。
【０１７８】
ここで、仮に任意の係数を実現するために、ハードウェアを拡張して対応することを試行してみる。一般的に従来型コンピュータ上ではイジングモデルの係数を表わすために、３２ビットや６４ビットの整数値、ないしは、浮動小数点数が用いられることが多い。これをハードウェアに直接的に実装しようとすると、係数を保持するメモリセルだけで１係数あたり３２ビット〜６４ビット（合計１９２〜３８４ビット）を必要とする。これは、上述の実装と比較して１６〜３２倍もの物量増加になる。換言すれば、スケーラビリティは１／１６〜１／３２に悪化する。さらに、相互作用を計算するための回路については、上述の例では係数の制限を利用して回路を簡単化していたのに対して、汎用的な加算器、乗算器、及び、比較器を必要とする。この演算器による物量増加の影響は、メモリセルの増加分よりも大きくなることが容易に考えられる。そのため全体として，物量増加は１６〜３２倍よりも大きくなる。
【０１７９】
このことからも、ハードウェアのみで任意の係数のイジングモデルを解こうとすることが賢明な策ではないことが理解できる。そこで、本実施の形態で述べたように、係数に制限のあるハードウェアの使い方を工夫することで、任意の係数のイジングモデルを解くことが必要になる。
【０１８０】
（１−１６）本実施の形態の効果
以上のように、本実施の形態においては、図１について上述したように、原問題１１０から制限付基底状態探索１４０−１〜１４０−ｋが受付け得る相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのみからなる複数の副問題１３０−１〜１３０−ｋを生成し、これらの副問題１３０−１〜１３０−ｋの解を解候補１５０−１〜１５０−ｋとして、これら解候補１５０−１〜１５０−ｋに基づいて原問題１１０の解を生成するようにしているため、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の値の種類が制限されている場合においても、その種類以外の係数からなるイジングモデルの原問題１１０の解を求めることができる。かくするにつき、本実施の形態によれば、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行うことができる。
【０１８１】
（２）第２の実施の形態
本実施の形態では、本発明の課題である、係数の値の種類が限られているイジングモデルの基底状態探索を行う装置ないしは方法を用いて、任意の値の係数を持つイジングモデルの基底状態探索を実現する装置及び方法の他の一例を説明する。
【０１８２】
本実施の形態は、副問題生成１２０と解生成１６０が第１の実施の形態と異なるため、第１の実施の形態との差分を説明する。
【０１８３】
第１の実施の形態では、副問題生成１２０において、乱数を用いていた（ステップＳ２００５、Ｓ２２０３、Ｓ２３０４及びＳ２４０２）。しかし、組み込みシステムなど計算機資源が貧弱な環境では、乱数生成が大きな負荷になることがある。特に、本発明では相互作用係数と外部磁場係数の個数分、乱数を生成しなければならないため、原問題の大きさと副問題の個数に比例して乱数の生成回数が多くなる。
【０１８４】
そこで、本実施の形態では、乱数を用いることなく副問題生成１２０を行う。
【０１８５】
図２８は、第２の実施の形態の副問題生成１２０の方法を説明する図である。副問題生成１２０では、第１の実施の形態と同様に原問題の相互作用係数及び外部磁場係数を正規化し、−１〜＋１の値域を持つ実数とする（第１の実施の形態の図６の処理を第２の実施の形態でも同様に行う）。
【０１８６】
第１の実施の形態の図６の処理のうち、ステップＳ６０５の動作が第２の実施の形態では異なる。図２８は、第２の実施の形態においてステップＳ６０５で行うべき処理を示している。
【０１８７】
図２８では、正規化された原問題の係数に、ＵＴ（Upper Threshold）とＬＴ（Lower Threshold）という２種類の閾値を設けて、原問題の係数と閾値を比較することで、副問題の係数を生成する。
【０１８８】
具体的には、原問題の閾値がＵＴを超える場合には、副問題の係数を＋１とする。また、原問題の閾値がＬＴを下回る場合には、副問題の係数を−１とする。どちらでもない場合、つまり原問題の係数がＬＴ以上ＵＴ以下であるときには、副問題の係数を０とする。
【０１８９】
図２９は、上述の処理を示したフローチャートである。図２９のフローチャートは図６のステップＳ６０５に対応し、図６のステップＳ６０３で決定された副問題数の回数分実行される。
【０１９０】
ステップＳ２９０１では、ＵＴとＬＴを決定する。図２９は副問題の回数分実行されるが、その都度異なるＵＴとＬＴを用いる。
【０１９１】
ステップＳ２９０２では、ステップＳ２９０１で決定したＵＴとＬＴを用いて、原問題の全ての相互作用係数を、＋１，０，−１の３値に丸めて、副問題として出力する。
【０１９２】
ステップＳ２９０３では、ステップＳ２９０１で決定したＵＴとＬＴを用いて、原問題の全ての外部磁場係数を、＋１，０，−１の３値に丸めて、副問題として出力する。
【０１９３】
図１２のイジングモデルから図２８及び図２９の方法で副問題を生成した例を図３０及び図３１に示す。この例では、副問題数を５として、ＵＴとＬＴの組を（ＵＴ，ＬＴ）と表記したときに、副問題３００１は（０，０）、副問題３００２は（１，１）、副問題３００３は（２，２）、副問題３００４は（３，３）、副問題３００５は（４，４）というように、ＵＴとＬＴを変化させて副問題３００１〜３００５を生成している。
【０１９４】
図３２は副問題３００１〜３００５それぞれの基底状態を探索した結果（解候補）と、解候補から生成した原問題の解を示している。
【０１９５】
第１の実施の形態の図８と同様に、解候補それぞれを原問題のエネルギー関数で評価し、最良の解候補を原問題の解１７０として出力しても良い。この方法の場合、副問題３００１及び副問題３００２に対する解候補が原問題での評価が最も良く、解１７０として選択される。
【０１９６】
さらに、第１の実施の形態で述べたように、これらの解候補のスピン配列を、スピン毎に代表値（統計量）を取得して、解１７０のスピン配列を生成しても良い。図３２に最頻値（なお，スピンの値は＋１と−１の２値であるから，平均値を取って＋１ないしは−１のいずれか近い方に丸めることは，最頻値を求めることと同じである）として示したスピン配列は、副問題３００１〜３００５に対する解候補のスピン配列のスピン毎に、＋１と−１のうち多い方を解として採用したものである。この例では、最頻値を取っても、原問題のエネルギー関数で最良の評価を得ることが出来ている。
【０１９７】
その他に、単に最頻値を取るのではなく、スピンの値である＋１／−１の個数によって、解のスピンの値を決める方法もある。図３２で個数１、個数２、個数３、個数４、個数５と示した行は、副問題３００１〜３００５に対する解候補のスピン配列のスピン毎に、値が−１となっている個数を計数し、例えば個数２の場合には、−１の個数が２個以上の場合には−１、２個より少ない場合には＋１というようにスピン配列を決めたものである。
【０１９８】
以上の本実施の形態によれば、乱数を用いることなく副問題生成１２０を行うことができるため、第１の実施の形態により得られる効果に加えて、より簡易に副問題生成１２０を行い得、ひいては原問題１１０の解をより容易に生成し得るという効果をも得ることができる。
【０１９９】
（３）他の実施の形態
なお上述の第１及び第２の実施の形態においては、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数が制限される場合について述べたが、本発明はこれに限らず、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の種類が制限される場合についても同様に対応することができる。
【０２００】
この場合には、図１の副問題生成１２０において、原問題１１０から基底状態を探索可能な種類の係数をもつイジングモデルから構成される複数の副問題１３０−１〜１３０−ｋを生成し、これら副問題１３０−１〜１３０−ｋの解を解候補１５０−１〜１５０−ｋとして、この後、第１及び第２の実施の形態の手順により原問題１１０の解を求めるようにすれば良い。
【産業上の利用可能性】
【０２０１】
本発明は、イジングモデルの基底状態探索を行う情報処理装置に広く適用することができる。
【符号の説明】
【０２０２】
１１０……原問題、１２０……副問題生成、１３０−１〜１３０−ｋ，３００１〜３００５……副問題、１４０−１〜１４０−ｋ……制限付基底状態探索、１５０−１〜１５０−ｋ……解候補、１６０……解生成、１７０……解、２００，２５００……情報処理装置、２１０……ＣＰＵ、２６１……副問題生成コマンド、２６２……基底状態探索アクセラレータ、２６３……解生成コマンド、２６４……基底状態探索プログラム、２６５，１３００……原問題データ、２６６−１〜２６６−ｋ，１４０１〜１４０３……副問題データ、２６７−１〜２６７−ｋ，１６０１〜１６０３……解候補データ、２６８，１７０１，１８０１……解データ、２７０……基底状態探索アクセレータ、２８０−１，２８０−２……イジングチップ、２５２０……制限付基底状態探索コマンド、３４１０……スピンアレイ、３５００……スピンユニット、Ｎ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１……メモリセル、ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘ……メモリセル対、３５１０……ＸＮＯＲ回路、３５２０……ＸＯＲ回路、３５３０……多数決論理回路、３５４０……ＯＲ回路、３５５０……セレクタ回路、σｉ，σｊ……スピン、ｈｉ……外部磁場係数、Ｊｉ，ｊ，Ｊｊ，ｉ……相互作用係数。
【図１】
2015191340.tif 000008
【図２】
2015191340.tif 000009
【図３】
2015191340.tif 000010
【図４】
2015191340.tif 000011
【図５】
2015191340.tif 000012
【図６】
2015191340.tif 000013
【図７】
2015191340.tif 000014
【図８】
2015191340.tif 000015
【図９】
2015191340.tif 000016
【図１０】
2015191340.tif 000017
【図１１】
2015191340.tif 000018
【図１２】
2015191340.tif 000019
【図１３】
2015191340.tif 000020
【図１４】
2015191340.tif 000021
【図１５】
2015191340.tif 000022
【図１６】
2015191340.tif 000023
【図１７】
2015191340.tif 000024
【図１８】
2015191340.tif 000025
【図１９】
2015191340.tif 000026
【図２０】
2015191340.tif 000027
【図２１】
2015191340.tif 000028
【図２２】
2015191340.tif 000029
【図２３】
2015191340.tif 000030
【図２４】
2015191340.tif 000031
【図２５】
2015191340.tif 000032
【図２６】
2015191340.tif 000033
【図２７】
2015191340.tif 000034
【図２８】
2015191340.tif 000035
【図２９】
2015191340.tif 000036
【図３０】
2015191340.tif 000037
【図３１】
2015191340.tif 000038
【図３２】
2015191340.tif 000039
【図３３】
2015191340.tif 000040
【図３４】
2015191340.tif 000041
【図３５】
2015191340.tif 000042
【図３６】
2015191340.tif 000043
【図３７】
2015191340.tif 000044
【図３８】
2015191340.tif 000045