(57)【要約】  一般演算部、局所場応答演算部、記憶部、制御部を具備し、前記制御部の制御により前記記憶部と前記一般演算部との間で、また前記記憶部と前記局所場応答演算部との間でデータをやり取りする計算機を提供する。
2016194221.tif 000002
【特許請求の範囲】
【請求項１】
一般演算部、局所場応答演算部、記憶部、制御部を具備し、前記制御部の制御により前記記憶部と前記一般演算部との間で、また前記記憶部と前記局所場応答演算部との間でデータをやり取りする計算機であって、
前記局所場応答演算部にはクロス演算部、個別演算部、バッファ、スイッチ部を具備し、
前記クロス演算部はN個(j ＝ 1, 2, …, N)の変数sjzからN種類の変数Bjz ＝ Bjz(s1z, s2z,…, sNz)を求め、前記個別演算部はN種類の変数Bjzからそれぞれsjz ＝ sjz(Bjz)を求め、個別演算部、バッファ、スイッチ、クロス演算部、個別演算部の順番で繰り返しの演算を行うことを特徴とし、 
前記スイッチ、前記クロス演算部、前記個別演算部で必要となる情報は前記記憶部で保持し、前記制御部の制御に従い演算を実行することを特徴とする計算機。
【請求項２】
前記クロス演算部では前記バッファに格納されたN個のsjzを利用してN種類の変数B1z, B2z, …, BNzをパイプライン処理で順番に求めることを特徴とする請求項１記載の計算機。
【請求項３】
前記変数sjz及びBjzは多ビットで構成されていることを特徴とする請求項１記載の計算機。
【請求項４】
前記変数sjzは多ビットで構成されており、前記バッファは格納されたN個のsjzをLSB (Least Segnificant Bit)から転送し、前記クロス演算部におけるsjzの処理はLSBから行うことを特徴とする請求項１記載の計算機。
【請求項５】
前記バッファに格納されたN個のsjzを前記スイッチ部に転送する際にsjzを時間方向アナログ値とし、前記クロス演算部での処理をアナログで処理することを特徴とする請求項１記載の計算機。
【請求項６】
前記クロス演算部、前記個別演算部、前記スイッチ部で必要となるパラメタは前記記憶部で保持されていることを特徴とする請求項１記載の計算機。
【請求項７】
前記N個の変数sjz(j ＝ 1, 2, …, N)は-1 ≦ sjz ≦ 1の値域を取り、局所場gjと変数間相互作用Jij (i, j ＝ 1, 2, …, N)によって課題の設定がなされ、
前記局所場応答演算部では、時刻をm分割して離散的にt ＝ t0 (t0 ＝ 0)からtm (tm ＝ τ)まで演算するものとし、
各時刻tkにおける変数sjz(tk)を求めるに当たり、前時刻tk-1の変数siz(tk-1) (i ＝ 1, 2, .., N)の値を用いてBjz(tk) ＝{ΣiJijsiz(tk-1) ＋ gj}・tk／τを求め、 sjz(tk)の値域が-1 ≦ sjz(tk) ≦ 1になるように関数fを定めてsjz(tk) ＝ f(Bjz(tk) , tk)とし、
時刻ステップをt ＝ t0からt ＝ tmに進めるにつれてsjzを-1あるいは1に近づけ、
最終的にsjz < 0ならばsjzd ＝ -1、sjz ＞ 0ならばsjzd ＝ 1として解を定める、
ことを特徴とする請求項１記載の計算機。
【請求項８】
前記関数fに関して、
ある定数γを用いてBjx(tk) ＝ γ(1 - tk／τ)とし、tanθ ＝ Bjz(tk)／Bjx(tk)によりθを定義し、前記sjz(tk)をsjz(tk) ＝ sinθによって定めることとし、従って前記関数fがf(Bjz(tk) , tk) ＝ sin(arctan(Bjz(tk)/Bjx(tk)))となることを特徴とする請求項７記載の計算機。
【請求項９】
前記関数fに関して補正パラメタrs及びrBを追加し、
tanθ ＝ rB・Bjz(tk)／Bjx(tk)によりθを定義し、sjz(tk) ＝ rs・sinθによって前記sjz(tk)を定めることとし、従って前記関数fがf(Bjz(tk) , tk) ＝ rs・sin(arctan(rB・Bjz(tk)／Bjx(tk)))となることを特徴とする請求項７記載の計算機。
【請求項１０】
前記補正パラメタrs及びrBを、前記tkと前記Bjz(tk)に依存させることを特徴とする請求項９記載の計算機。
【請求項１１】
前記時刻tk各々においてsjz(tk) < 0ならばsjzd(tk) ＝ -1、sjz(tk) ＞ 0ならばsjzd(tk) ＝ 1としてHp(tk) ＝ - Σi＞jJijsizd(tk)sjzd(tk) - Σjgjsjzd(tk)を各時刻tkにおいて計算し、Hp(tk)が最小値となった時刻tk’におけるsjzd(tk’)を最終解とする、
ことを特徴とする請求項７記載の計算機。
【請求項１２】
一般演算部、局所場応答演算部、記憶部、制御部を具備し、前記制御部の制御により前記記憶部と前記一般演算部との間で、また前記記憶部と前記局所場応答演算部との間でデータをやり取りする計算機であって、
N個の変数sjz(j ＝ 1, 2, …, N)が-1 ≦ sjz ≦ 1を値域とする多値であり、
局所場gjと変数間相互作用Jij (i, j ＝ 1, 2, …, N)によって課題の設定がなされ、
前記局所場応答演算部では、時刻をm分割して離散的にt ＝ t0 (t0 ＝ 0)からtm (tm ＝ τ)まで演算するものとし、
各時刻tkにおける変数sjz(tk)を求めるに当たり、前時刻tk-1の変数siz(tk-1) (i ＝ 1, 2, .., N)の値を用いてBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj}・tk／τとし、 sjz(tk)の値域が-1 ≦ sjz(tk) ≦ 1になるように関数fを定めてsjz(tk) ＝ f(Bjz(tk) , tk)とし、
時刻ステップをt ＝ t0からt ＝ tmに進めるにつれてsjzを-1あるいは1に近づける演算であって、
Bjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj}・tk／τの演算は多重化した伝送路を利用して実施し計算後Bjz(tk)別に分離することを特徴とする計算機。
【請求項１３】
前記多重化は時分割多重であることを特徴とする請求項１２記載の計算機。
【請求項１４】
前記時分割多重による演算では、 sizの値を時間軸方向で表したアナログ値とすることを特徴とする請求項１３記載の計算機。
【請求項１５】
前記Bjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj}・tk／τの演算では各sizのLSBから順番に処理することを特徴とする請求項１２記載の計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全数探索を必要とするような逆問題や組み合わせ最適化問題に対して高速演算を可能にする計算機に関するものである。
【背景技術】
【０００２】
ビッグデータといった言葉に代表されるように現代はデータが溢れている。情報科学では、この巨大データを如何に解析し如何に扱うかが最重要課題の一つになっている。ビッグデータでは複雑な解析を必要とする問題が少なくない。例えば、ある結果が得られた際にその原因を探りたい場合がある。これを逆問題と呼ぶことにする。現象が複雑であればあるほど原因を探るのは困難であり、一般に結果から初期値を求める効率的なアルゴリズムは存在しない。最悪の場合は初期値に関して全数探索しなければならない。これがビッグデータにおける困難問題の一つである。あるいはまた、ビッグデータを元に多くの選択肢の中から最適解を選ぶといった問題も多く存在する。この場合もすべての可能性を考慮するならば全数探索の必要性が出てくる。こういった背景から、全数探索を必要とする問題を効率的に解けるコンピュータが求められることになる。【０００３】
全数探索問題に対しては量子コンピュータへの期待が大きい。量子コンピュータは量子ビットと呼ばれる基本素子からなり”０”と”１”を同時に実現する。そのためすべての解候補を初期値として同時に計算可能で、まさに全数探索を実現しうる可能性を持っている。しかし、量子コンピュータは全計算時間に亘って量子コヒーレンスを維持する必要があり、これを実現する目処は立っていない。【０００４】
こういった中で注目されるようになってきたのが断熱量子計算と呼ばれる手法である（非特許文献１）。この方法は、ある物理系の基底状態が解になるように問題を変換し、基底状態を見つけることを通して解を得ようとするものである。問題を設定した物理系のハミルトニアンをH^pとする。但し、演算開始時のハミルトニアンはH^pではなく、基底状態に準備しやすい別のハミルトニアンH^0とする。次に十分に時間を掛けてハミルトニアンをH^0からH^pに移行させる。十分に時間を掛ければ系は基底状態に居続け、最終的にハミルトニアンH^pの基底状態を得る。これが断熱量子計算の原理である。計算時間をτとすればハミルトニアンは式(1)となり【０００５】
【数１】
2016194221.tif 000003
【０００６】
式(2)のシュレディンガー方程式に基づいて時間発展させて解を得る。【０００７】
【数２】
2016194221.tif 000004
【０００８】
断熱量子計算は全数探索を必要とする問題に対しても適用可能で、一方向性の過程で解に到達する。しかし、計算過程が式(2)のシュレディンガー方程式に従う必要があるならば量子コンピュータと同様に量子コヒーレンスの維持が必要になる。但し、量子コンピュータが1 量子ビットあるいは2 量子ビット間に対するゲート操作を繰り返すものであるのに対して、断熱量子計算は量子ビット系全体に亘って一斉に相互作用させるものであり、コヒーレンスの考え方が異なる。例えば、ある量子ビットへのゲート動作を考えてみる。この時もしその量子ビットと他の量子ビットとで相互作用があればそれはディコヒーレンスの原因になるが、断熱量子計算ではすべての量子ビットを同時に相互作用させるので、この例のような場合にはディコヒーレンスにならない。この違いを反映して断熱量子計算は量子コンピュータに比べてディコヒーレンスに対して頑強であると考えられている。【０００９】
しかし、断熱量子計算にも課題がある。ディコヒーレンスに関して量子コンピュータと比べて頑強になったとしても演算過程が式(2)のシュレディンガー方程式に従うならばやはり十分なコヒーレンスが必要である。また断熱量子計算を実現しうる系が超伝導磁束量子ビット系であるのも課題になる（特許文献１、非特許文献２）。なぜなら、超伝導を用いる場合には極低温冷却装置を必要とするからである。極低温を必要とすることは実用的なコンピュータ実現のためには課題になる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特表２００９−５２４８５７
【非特許文献】
【００１１】
【非特許文献１】E． Farhi， et al．， ”A quantum adiabatic evolution algorithm applied to random instances of an NP−complete problem，” Science 292， 472 (2001)．
【非特許文献２】A． P．−Ortiz， ”Finding low−energy conformations of lattice protein models by quantum annealing，” Scientific Reports 2， 571 (2012)．
【非特許文献３】F． Barahona， ”On the computational complexity of Ising spin glass models，” J． Phys． A: Math． Gen． 15， 3241 (1982)．
【非特許文献４】D． Miyashita， R． Yamaki， K． Hashiyoshi， H． Kobayashi， S． Kousai， Y． Oowaki， and Y． Unekawa， ”An LDPC decoder with time−domain analog and digital mixed−signal processing，”IEEE J． Solid−State Circuits，49，No．1，(2014)．
【発明の概要】
【発明が解決しようとする課題】
【００１２】
以上述べたように、断熱量子計算は全数探索を必要とするような難問に対して有効であるが、依然として量子コヒーレンスを必要とし、また超伝導磁束量子ビットを用いる場合には極低温冷却装置も必要である。これら２つの必要条件を無くし、実用的な計算機を提供することが解決すべき課題である。【００１３】
本発明の目的は、上記の課題を解決し、量子コヒーレンスや極低温冷却装置を必要としない計算機を提供することにある。
【課題を解決するための手段】
【００１４】
スピンを演算における変数とし、解こうとする問題をスピン間相互作用とスピンごとに作用する局所場で設定する。時刻t＝0において外部磁場により理想的には全スピンを一方向に向かせ、時刻t＝τで外部磁場が理想的にはゼロになるように外部磁場を徐々に小さくする。【００１５】
各スピンは時刻tにおける各サイトの外部磁場及びスピン間相互作用のすべての作用で決まる有効磁場に従い向きが定まるとして時間発展させる。その際、スピンの向きが有効磁場に完全に揃うのではなく、量子力学的に補正された向きとすることにより、系が基底状態をほぼ維持するようにする。【００１６】
上記スピンはモデルとしてのスピンであり実スピンである必要はない。電気回路等で本発明の計算機を実現することも可能である。ここで重要な点は、Nスピン系のすべての相互作用を任意設定可能にすることが望ましいことである。【００１７】
本発明の具体的な構成例では、演算部をクロス演算部と個別演算部に分離し、クロス演算部をパイプライン処理とすることにより演算速度を落とすことなく比較的少数のスイッチで相互作用の任意設定を可能にする。【００１８】
本発明の他の一側面は、一般演算部、局所場応答演算部、記憶部、制御部を具備し、制御部の制御により記憶部と一般演算部との間で、また記憶部と局所場応答演算部との間でデータをやり取りする計算機である。ここで、局所場応答演算部にはクロス演算部、個別演算部、バッファ、スイッチ部を具備する。クロス演算部はN個(j ＝ 1， 2， …， N)の変数sjzからN種類の変数Bjz ＝ Bjz(s1z， s2z，…， sNz)を求める。個別演算部はN種類の変数Bjzからそれぞれsjz ＝ sjz(Bjz)を求める。以上の構成で、個別演算部、バッファ、スイッチ、クロス演算部、個別演算部の順番で繰り返しの演算を行う。また、スイッチ、クロス演算部、個別演算部で必要となる情報は記憶部で保持し、制御部の制御に従い演算を実行する。【００１９】
局所場応答演算部は、例えば専用もしくは汎用のハードウェアで構成することができる。【００２０】
本発明の好ましい態様では、クロス演算部ではバッファに格納されたN個のsjzを利用してN種類の変数B1z， B2z， …， BNzをパイプライン処理で順番に求める。【００２１】
本発明の他の好ましい態様では、変数sjz及びBjzは多ビットで構成されている。【００２２】
本発明の他の好ましい態様では、変数sjzは多ビットで構成されており、バッファは格納されたN個のsjzをLSB (Least Segnificant Bit)から転送し、クロス演算部におけるsjzの処理はLSBから行う。【００２３】
本発明の他の好ましい態様では、バッファに格納されたN個のsjzをスイッチ部に転送する際にsjzを時間方向アナログ値とし、クロス演算部での処理をアナログで処理する。【００２４】
本発明のより具体的な処理シーケンスの例を示せば、N個の変数sjz(j ＝ 1， 2， …， N)は−1 ≦ sjz ≦ 1の値域を取り、局所場gjと変数間相互作用Jij (i， j ＝ 1， 2， …， N)によって解くべき課題の設定をする。局所場応答演算部では、時刻をm分割して離散的にt ＝ t0 (t0 ＝ 0)からtm (tm ＝ τ)まで演算する。当該演算において、各時刻tkにおける変数sjz(tk)を求めるに当たっては、前時刻tk−1の変数siz(tk−1) (i ＝ 1， 2， ．．， N)の値を用いてBjz(tk) ＝ {ΣiJijsiz(tk−1) ＋ gj}・tk／τを求める。このとき、sjz(tk)の値域が−1 ≦ sjz(tk) ≦ 1になるように関数fを定めてsjz(tk) ＝ f(Bjz(tk) ， tk)とする。時刻ステップをt ＝ t0からt ＝ tmに進めるにつれてsjzを−1あるいは1に近づけ、最終的にsjz ＜ 0ならばsjzd ＝ −1、sjz ＞ 0ならばsjzd ＝ 1として解を定める。【００２５】
さらに具体的な例を示すと、時刻tk各々においてsjz(tk) ＜ 0ならばsjzd(tk) ＝ −1、sjz(tk) ＞ 0ならばsjzd(tk) ＝ 1としてHp(tk) ＝ − Σi＞jJijsizd(tk)sjzd(tk) − Σjgjsjzd(tk)を各時刻tkにおいて計算する。Hp(tk)が最小値となった時刻tk’におけるsjzd(tk’)を最終解とする。【００２６】
これらの処理シーケンスはソフトウェアによる情報処理として実現可能であるが、典型的には通常のコンピュータと局所場応答演算部を含むハードウエア資源を用いて実現できる。あるいは、すべて専用のハードウェアを用いてもよい。【００２７】
本発明の他の一側面は、一般演算部、局所場応答演算部、記憶部、制御部を具備し、制御部の制御により記憶部と一般演算部との間で、また記憶部と局所場応答演算部との間でデータをやり取りする計算機である。この計算機において、N個の変数sjz(j ＝ 1， 2， …， N)は、−1 ≦ sjz ≦ 1を値域とする多値である。【００２８】
課題の設定は、局所場gjと変数間相互作用Jij (i， j ＝ 1， 2， …， N)の設定によって行う。局所場応答演算部では、時刻をm分割して離散的にt ＝ t0 (t0 ＝ 0)からtm (tm ＝ τ)まで演算する。当該演算において、各時刻tkにおける変数sjz(tk)を求めるに当たり、前時刻tk−1の変数siz(tk−1) (i ＝ 1， 2， ．．， N)の値を用いてBjz(tk) ＝ {ΣiJijsiz(tk−1) + gj}・tk／τとし、 sjz(tk)の値域が−1 ≦ sjz(tk) ≦ 1になるように関数fを定めてsjz(tk) ＝ f(Bjz(tk) ， tk)とする。時刻ステップをt ＝ t0からt ＝ tmに進めるにつれてsjzを−1あるいは1に近づける。Bjz(tk) ＝ {ΣiJijsiz(tk−1) + gj}・tk／τの演算は多重化した伝送路を利用して実施し、計算後Bjz(tk)別に分離する。本発明のより具体的な例では、多重化は時分割多重の構成である。
【発明の効果】
【００２９】
本方法は量子力学的補正を加えるものの古典系で動作するものである。そのため、量子コヒーレンスを考慮する必要がなく使用可能なリソースが広範囲になり、電気回路も利用できるようになる。ビットに関するエネルギースケールを温度のエネルギースケールよりも十分に大きくすれば温度揺らぎも無視可能で、極低温装置のような特殊装置・特殊環境も不要になる。
【図面の簡単な説明】
【００３０】
【図１】本発明実施例のアルゴリズムを原理的に説明する模式図である。
【図２】実施例１に係る、アルゴリズムの一例をフローチャートで示した流れ図である。
【図３】実施例２に係る、アルゴリズムの一例をフローチャートで示す流れ図である。
【図４】実施例３に係る、計算機の一構成例を示したブロック図である。
【図５】実施例３に係る、局所場応答演算装置の内部構造を中心に示したブロック図。
【図６】実施例３に係る、局所場応答演算装置の内部構造を詳細に示したブロック図。
【図７】実施例３に係る、局所場応答演算の時間軸に沿っての流れを示したタイミング図。
【図８】実施例３に係る、局所場応答演算装置の他の形態の内部構造を詳細に示したブロック図。
【図９】実施例４に係る、局所場応答演算の一部を時間軸上でアナログ処理する場合の局所場応答演算装置の内部構造を詳細に示したブロック図。
【図１０】実施例４に係る、多ビットデジタル値を時間方向のアナログ値に変換した場合のイメージ図。
【図１１Ａ】実施例５に係る、最終的な解決定法に関するアルゴリズムの一例をフローチャートで示した流れ図である。
【図１１Ｂ】実施例５に係る、最終的な解決定法に関するアルゴリズムの他の例をフローチャートで示した流れ図である。
【図１１Ｃ】実施例５に係る、最終的な解決定法に関するアルゴリズムの他の例をフローチャートで示した流れ図である。
【図１１Ｄ】実施例５に係る、最終的な解決定法に関するアルゴリズムの他の例をフローチャートで示した流れ図である。
【発明を実施するための形態】
【００３１】
以下、演算の原理も交えて、図面に従い本発明の各種実施例を説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００３２】
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
【００３３】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００３４】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００３５】
断熱量子計算は別名で量子アニールとも呼ばれ、古典的な焼きなましの概念を量子力学的に発展させたものである。即ち、断熱量子計算は本来古典的動作が可能で、高速性や解の正解率に関して性能を向上させるために量子力学的効果が付加されたものとも解釈できる。そこで本実施例では、演算器そのものは古典的とし、演算過程に量子力学的に定まるパラメタを導入することにより、古典的であるが量子力学的な効果を含んだ演算方法・装置を実現することを狙う。
【００３６】
以上の概念に基づき、以下の実施例では断熱量子計算との関連性を説明しながら解としての基底状態を得る古典的方法論（アルゴリズム）と、それを実現するための装置構成に関して述べる。
【実施例１】
【００３７】
実施例１では、量子力学的な記述から出発して古典的な形式に移行することを通して本実施例の原理を述べる。【００３８】
式(3)で与えられるイジングスピン・ハミルトニアンの基底状態探索問題はNP困難と呼ばれる分類の問題を含み、有用な問題であることが知られている（非特許文献３）。【００３９】
【数３】
2016194221.tif 000005
【００４０】
Jij及びgjが課題設定パラメタであり、σ^jzはパウリのスピン行列のz成分で±1の固有値を取る。i， jはスピンのサイトを表す。イジングスピンとは値として±1だけを取りうる変数のことで、式(3)ではσ^jzの固有値が±1であることによりイジングスピン系となっている。式(3)のイジングスピンは文字通りのスピンである必要はなく、ハミルトニアンが式(3)で記述されるのであれば物理的には何でも良い。例えば、ロジック回路のhighとlowを±1に対応付けることも可能であるし、光の縦偏波と横偏波を±1に対応付けることや0， πの位相を±1に対応付けることも可能である。本実施例の方法では断熱量子計算と同様に、時刻t ＝ 0において式(4)で与えられるハミルトニアンの基底状態に演算系を準備する。【００４１】
【数４】
2016194221.tif 000006
【００４２】
γは全サイトjに一様に掛かる外場の大きさで決まる比例定数であり、σ^jxはパウリのスピン行列のx成分である。演算系がスピンそのものであれば外場とは磁場を意味する。式(4)は横磁場を印加したことに相当し、すべてのスピンがx方向を向いた場合(γ＞0)が基底状態である。問題設定のハミルトニアンはz成分のみのイジングスピン系として定義されたが、式(4)にはスピンのx成分が登場している。従って、演算過程でのスピンはイジングではなくベクトル的（ブロッホベクトル）である。t ＝ 0では式(4)のハミルトニアンでスタートしたが、時刻tの進行と共に徐々にハミルトニアンを変化させ、最終的には式(3)で記述されるハミルトニアンに移行させてその基底状態が解となる。【００４３】
スピンが外場に対してどのように応答するかを１スピン系の場合にまず考察する。１スピン系のハミルトニアンは式(5)で与えられる。【００４４】
【数５】
2016194221.tif 000007
【００４５】
ここでσ^はパウリのスピン行列の３成分をベクトルとして表示している。基底状態はスピンが磁場方向を向いた場合で、＜・＞を量子力学的期待値として＜σ^＞ ＝ B／｜B｜と書ける。断熱過程では常に基底状態を維持しようとするのでスピンの向きは常に磁場の向きに追従する。【００４６】
以上の議論は多スピン系にも拡張できる。t ＝ 0ではハミルトニアンが式(4)で与えられる。これは全スピンに対して一様に磁場Bjx ＝γが印加されたことを意味する。t ＞ 0では磁場のx成分が徐々に弱まりBjx ＝ γ(1 − t／τ)である。z成分に関してはスピン間相互作用があるために有効磁場としては式(6)になる。【００４７】
【数６】
2016194221.tif 000008
【００４８】
スピンの向きは＜σ^jz＞／＜σ^jx＞で規定できるので、スピンの向きが有効磁場に追従するならば式(7)によりスピンの向きが定まる。【００４９】
【数７】
2016194221.tif 000009
【００５０】
式(7)は量子力学的記述であるが期待値を取っているので、式(1) − (6)とは異なり古典量に関する関係式である。古典系では量子力学の非局所相関（量子縺れ）がないのでスピンの向きはサイトごとの局所場により完全に決まるはずであり、式(7)が古典的スピン系の振る舞いを決定する。量子系では非局所相関があるために式(7)は変形されることになるが、それに関しては実施例２以下で述べることとし、本実施例では基本形態を述べるために式(7)で定まる古典系について記述する。【００５１】
図１にスピン系の基底状態を得るためのタイミングチャート（手順１００）を示す。図１の記述は古典量に関するものなのでサイトjのスピンをσ^jではなくsjにより表した。またそれに伴い図１の有効磁場Bjは古典量である。t ＝ 0において全サイトで右向きの有効磁場Bjが印加され、全スピンsjが右向きに初期化される。時間tの経過に従い、徐々にz軸方向の磁場とスピン間相互作用が加えられ、最終的にスピンは+z方向あるいは−z方向となってスピンsjのz成分がsjz ＝ +1あるいは−1となる。時間tは連続的であることが理想であるが、実際の演算過程では離散的にして利便性を向上させることもできる。以下では離散的な場合を述べる。【００５２】
本実施例に係るスピンはz成分だけでなくx成分が加わっているためにベクトル的なスピンになっている。図１からもベクトルとしての振る舞いが理解できる。ここまでy成分が登場してこなかったが、それは外場方向をxz面に取ったために外場のy成分が存在せず、従って＜σ^y＞ ＝ 0となるためである。演算系のスピンとしては大きさ１の３次元ベクトル（これをブロッホベクトルと呼び、球面上の点で状態を記述できる）を想定しているが、本実施例の軸の取り方では２次元のみを考慮すればよい（円上の点で状態を記述できる）。またγは一定なのでBjx(t) ＞ 0 (γ＞ 0)あるいはBjx(t) ＜ 0 (γ＜ 0)が成り立つ。この場合、２次元スピンベクトルは半円のみで記述できることになり、［−1， 1］でsjzを指定すればsjzの１変数で２次元スピンベクトルが定まる。従って、本実施例のスピンは２次元ベクトルであるが、値域を［−1， 1］とする１次元連続変数として表記することができる。【００５３】
図１の手順１００では時刻t ＝ tkにおいてサイトごとに有効磁場を求め、その値を用いて式(8)によりt ＝ tkにおけるスピンの向きを求める。【００５４】
【数８】
2016194221.tif 000010
【００５５】
式(8)は式(7)を古典量に関する表記に書き改めたものなので＜・＞の記号が付いていない。【００５６】
次に、t ＝ tk+1の有効磁場をt ＝ tkにおけるスピンの値を用いて求める。各時刻の有効磁場を具体的に書けば式(9)及び(10)となる。【００５７】
【数９】
2016194221.tif 000011
【００５８】
【数１０】
2016194221.tif 000012
【００５９】
以下、図１の手順100で模式的に示した手順に従い、スピンと有効磁場を交互に求めていく。【００６０】
古典系ではスピンベクトルの大きさは１である。この場合スピンベクトルの各成分は、tanθ ＝ Bjz(tk)／Bjx(tk)で定義される媒介変数θを用いてsjz(tk) ＝ sinθ、sjx(tk) ＝ cosθと記述される。これを書き直せばsjz(tk) ＝ sin(arctan(Bjz(tk)／ Bjx(tk)))、sjx(tk) ＝ cos(arctan(Bjz(tk)／ Bjx(tk)))である。【００６１】
式(9)から明らかなようにBjx(tk)の変数はtkのみでありτとγは定数である。従って、sjz(tk) ＝ sin(arctan(Bjz(tk)／ Bjx(tk)))及びsjx(tk) ＝ cos(arctan(Bjz(tk)／ Bjx(tk)))はBjx(tk)とtkを変数とする関数としてsjz(tk) ＝ f1(Bjz(tk) ， tk)及びsjx(tk) ＝ f2(Bjz(tk) ， tk)のような一般化した表現もできる。【００６２】
スピンを２次元ベクトルとして記述しているのでsjz(tk)とsjx(tk)の２成分が登場しているが、Bjz(tk)を式(10)に基づき決定するならばsjx(tk)は必要ない。これは、［−1， 1］を値域とするsjz(tk)のみでスピン状態を記述できることに対応している。最終的な解sjzdはsjzd ＝ −1 or 1になる必要があり、sjz(τ) ＞ 0ならばsjzd ＝ 1、sjz(τ) ＜ 0ならばsjzd ＝ −1とする。【００６３】
図２に、上記のアルゴリズムをフローチャートにまとめたものを示す。ここでtm ＝τである。図２のフローチャートの各ステップ101~109は、時間t ＝ 0からt ＝ τに到る図1の手順100の、ある時刻での処理に対応している。すなわち、フローチャートのステップ102、104、106がそれぞれ、t ＝ t1， tk+1， tmにおける上記の式(9)及び(10)に対応している。最終的な解はステップ108において、sjz ＜ 0ならばsjzd ＝ −1、sjz ＞ 0ならばsjzd ＝ 1とすることにより定める（109）。【００６４】
ここまでは課題が式(3)で表現された場合に如何に解かれるかを示した。次に具体的課題が如何に局所場gjと変数間相互作用Jij (i， j ＝ 1， 2， …， N)を含む式(3)で表現されるかに関して具体例を挙げて説明する。例えば、具体的課題として、電力供給管理の問題を考える。この場合、局所場は気温のような自然現象の量、あるいは電力使用量とする。すなわち、局所場gj (j ＝ 1 〜 10)により各地区の気温を、局所場gj (j ＝ 11 〜 20)により各地区にある公共施設（図書館、映画館、スーパーマーケット、等）の電力使用量を、局所場gj (j ＝ 21 〜 100)により各民家の電力使用量を表すとする。【００６５】
σ^jz (j ＝ 11 〜 100)はどこに電力を配分するかを表す変数とする。但し、j ＝ 1 〜 10は気温を表す添え字なので、σ^jz (j ＝ 1 〜 10)は電力配分を表すのではなく気温を公共施設や民家の活動に影響させるための変数と考える。気温は自然現象で決まるもので人工的要因の影響をほとんど受けないはずなのでσ^jz (j ＝ 1 〜 10)が他の変数に影響されないように局所場gj (j ＝ 1 〜 10)は大きい値に設定する。【００６６】
気温と公共施設及び民家の活動との相関強度は、変数間相互作用Jijを通して表現する。また、気温と電力使用の相関は近年提唱されている電力シェアの概念にも影響される。例えば冷房が必要な時間帯に各家庭ごとにエアコンを使うのではなく公共施設に赴いて各家庭の電力を減らそうとする動きである。その動きは公共施設を表す添え字i ＝ 11 〜 20と民家を表す添え字 j ＝ 21 〜 100に対して変数間相互作用Jijがゼロでない値を取ることで表現される。但し、この概念に基づく相互作用は気温と民家の活動に関する直接的相関に比べれば小さいものなのでここでの変数間相互作用Jijの値は比較的小さい。また各家庭は独立に生活しているわけではなくお互いに影響を及ぼしあっているはずなので変数間相互作用Jij (i， j ＝ 21 〜 100)も有限になる。以上のような考察を通して変数間相互作用Jijを具体的に設定し、式(3)の基底状態探索を通して、最適電力供給配分（σ^jzの固有値 ＝ +1あるいは−1）を求める。【００６７】
尚、各項目に対するσ^jzを１変数で表現できない場合は複数のσ^jzを使用してよく、それに従い局所場gj及び変数間相互作用Jijも項目ごとに複数使用することになる。σ^jzは電力配分を表す変数であるが、人の動きや公共施設の開館状況と相関している。そのため得られた解によっては「ある公共施設を閉じるべし」との解釈にもなり得る。【００６８】
以上が具体的課題を式(3)で表現する簡単な一例である。本実施例が適用できる具体的課題は以上で例示した電力供給管理の問題に限定されず、旅行経路最適化、渋滞回避の為の自動車誘導、回路設計、商品供給管理、スケジューリング、金融資産選択などの多くの課題解決に適用可能である。
【実施例２】
【００６９】
実施例１では量子力学的な式を元に期待値を取ることにより古典量に移行し、図１及び図２を用いて、古典量によるアルゴリズムを説明した。実施例１は基本的なアルゴリズムを説明するのが主な狙いであったために、量子力学的な効果を含めずに説明した。しかし、量子力学的効果を付加すれば正解率向上や演算スピードの向上が期待できる。そこで実施例２では、アルゴリズムそのものは古典的であるが、性能向上のために量子力学に基づく補正パラメタを加える方法を説明する。【００７０】
量子力学の特徴としては線形重ね合わせ状態と量子縺れ（非局所相関）がある。例えば、｜0＞と｜1＞の２状態を取りうる量子ビットを考える。線形重ね合わせ状態とは｜Ψ＞ ＝ α｜0＞ + β｜1＞のように２つの状態の和になっているものである。この線形重ね合わせ状態の性質は実施例１でスピンをベクトル的に扱うことによりすでに取り込まれている。即ち、sjz(tk) ＝ 1ならば状態は｜0＞で、sjz(tk) ＝ −1ならば状態は｜1＞である。｜0＞及び｜1＞はスピンの量子化軸をz軸に選んだ場合の状態に対応し、x軸に向いたsjx(t0) ＝ 1の場合は｜Ψ(t0)＞ ＝ (｜0＞ + ｜1＞)／√2と表現される。またsjx(t) ＝ −1ならば状態は｜Ψ(t0)＞ ＝ (｜0＞ − ｜1＞)／√2である。x軸を考慮したことは線形重ね合わせを考慮したことを意味する。【００７１】
本実施例ではもうひとつの量子力学的効果である量子縺れについて述べる。例として２量子ビット系の状態が｜Ψ＞ ＝ α｜00＞ + β｜11＞と記述できる場合を考える。規格化条件により｜α｜2 + ｜β｜2 ＝ 1である。｜00＞及び｜11＞の１番目の変数が第１量子ビット、２番目の変数が第２量子ビットを表す。パウリのスピン行列の性質としてσ^jz｜0＞ ＝ ｜0＞、σ^jz｜1＞ ＝ −｜1＞なのでσ^1z｜Ψ＞ ＝ α｜00＞ − β｜11＞であり、＜Ψ｜σ^1z｜Ψ＞ ＝ ｜α｜2 − ｜β｜2となる。また、σ^1x｜0＞ ＝ ｜1＞、σ^1x｜1＞ ＝ ｜0＞なのでσ^1x｜Ψ＞ ＝ α｜10＞ + β｜01＞であり＜Ψ｜σ^1x｜Ψ＞ ＝ 0となる。また、σ^1y｜0＞ ＝ i｜1＞、σ^1y｜1＞ ＝ −i｜0＞なのでσ^1y｜Ψ＞ ＝ iα｜10＞ − iβ｜01＞であり＜Ψ｜σ^1y｜Ψ＞ ＝ 0である。よって＜σ^1x(τ)＞2 + ＜σ^1y(τ)＞2 + ＜σ^1z(τ)＞2 ＝ (｜α｜2 − ｜β｜2)2である。極端な例として、量子縺れが最大となるα ＝ βの場合は＜σ^1x(τ)＞2 + ＜σ^1y(τ)＞2 + ＜σ^1z(τ)＞2 ＝ 0となって第１スピンベクトルの大きさが0になってしまう。このようなことは量子縺れがない場合には起こらない。例えば１スピン系を考え、状態を｜Ψ＞ ＝ α｜0＞ + β｜1＞とすれば＜Ψ｜σ^1z｜Ψ＞ ＝ ｜α｜2 − ｜β｜2、＜Ψ｜σ^1x｜Ψ＞ ＝ α*β+αβ*、＜Ψ｜σ^1y｜Ψ＞ ＝ iαβ* − iα*βであり、＜σ^1x(τ)＞2 + ＜σ^1y(τ)＞2 + ＜σ^1z(τ)＞2 ＝ (｜α｜2 + ｜β｜2)2 ＝ 1となって確かに大きさが１に保存する。【００７２】
以上、一例ではあるが量子縺れがある場合にはスピンベクトルの大きさが１に保存しないことがわかった。古典的にはスピンベクトルの大きさは一定の１のはずだが、量子縺れがあればスピンベクトルは大きさが１にならない。実施例１ではスピンベクトルの大きさが１になることを前提にtanθ ＝ ＜Bjz(t)＞／＜Bjx(t)＞で定義されるθを媒介変数としてsjz(tk) ＝ sinθ、sjx(tk) ＝ cosθとした。しかし、この方法ではこの系が本来持っている量子縺れの性質を反映したものにはなっていない。そこで量子縺れの性質を反映させることを考える。【００７３】
上述のようにスピンベクトルは１に保存しない。そこでスピンの大きさを表す補正パラメタrs (0 ≦ rs ≦ 1)を定義する。またスピンベクトルが１に保存しないことに連動して式(8)の比例関係が成り立たなくなる。そこで補正パラメタrBを定義して式(8)を式(11)に変形する。【００７４】
【数１１】
2016194221.tif 000013
【００７５】
実施例１の場合と同様にスピンの向きを表す角度θをtanθ ＝ sjz(tk)／sjx(tk)で定義する。これに式(11)を適用すればtanθ ＝ rB・Bjz(tk)／Bjx(tk)である。スピンの大きさがrsであることを考慮すればsjz(tk) ＝ rs・sinθ、sjx(tk) ＝ rs・cosθとなる。これらの関係式により補正パラメタrs及びrBを通して量子縺れの効果が古典的なアルゴリズムに取り込まれる。θを使わない表記にすればsjz(tk) ＝ rs・sin(arctan(rB・Bjz(tk)／ Bjx(tk)))、sjx(tk) ＝ rs・cos(arctan(rB・Bjz(tk)／ Bjx(tk)))となる。また、rsとrBを関数f1及びf2に組み込めばsjz(tk) ＝ f1(Bjz(tk) ， tk)及びsjx(tk) ＝ f2(Bjz(tk) ， tk)である。【００７６】
この補正パラメタrs及びrBは量子縺れを起源としており、tk， sjz(tk)， sjx(tk)あるいはtk， Bjz(tk)， Bjx(tk)に依存して細かく制御されることが好ましい。しかし、量子縺れに関する情報を正確に取得することは原理的に困難であり、何らかの対処法を考える必要がある。実際には問題に応じて半経験的に定めることになるが、大まかな決定法は以下のようになる。
rBは符号も変わり得る量で量子縺れを最もよく反映した量である。一方、rsは0 ≦ rs ≦ 1を満たす補正因子でrBに比べて役割は小さい。従って、全演算時間に亘ってrs は 1に略等しいと設定してもよく、主としてrBにより量子効果を取り入れる。演算の開始時点では量子縺れは無いのでt ＝ 0においてrB ＝ 1とし、t ＞ 0において徐々にrBを0に近づける。t ＝ τに近づけば多くのスピンはsjz ＝ 1 or −1に収束するが一部のスピンはsjz ＞ 0になるかsjz ＜ 0になるか微妙な振る舞いをする。演算の成否を左右するのはこれら収束性の悪いスピンである。従って、tが τに略等しい場合ではこれらのスピンに対して最適になるようにrBを決定する。量子縺れの効果を最大限に取り入れるのでrB は 0に略等しいとする。sjz ＝ 1 or −1に収束するスピンは向きが安定しているのでrB  を0に略等しいとしたことに伴う悪影響はほとんどない。【００７７】
以上が時間依存性に関するrBの設定法である。rBに磁場依存性を持たせることも効果的である。Bjz(tk)／Bjx(tk) が 0に略等しい場合は必然的にsjz(tk)／sjx(tk) が不定になる。従って、rBをBjz(tk)／Bjx(tk) ≡ Bzxの関数としてrB ＝ rB(Bzx)と書けばすべての時刻tにおいてrB(“Bzxは0に略等しい”) ＜ rB(“｜Bzx｜ ＞＞ 0”)となるような磁場依存性を持たせることが効果的である。【００７８】
また、サイト間の特徴が特別にない場合はrsやrBにサイト依存性を持たせないが、サイト別の特徴が事前にわかっている場合にはそれに対応してrsやrBをサイト依存にすれば解の正解率向上が期待できる。【００７９】
図３にrs及びrBを導入した場合のフローチャートを示す。図２のフローチャートとの違いは、ステップ１０３、１０５、１０７がそれぞれ補正パラメタrs及びrBを含むステップ１０３a、１０５a、１０７aに変更された点である。
【実施例３】
【００８０】
実施例１、２では演算原理及び演算アルゴリズムに関して説明した。実施例３ではこのアルゴリズムを装置上で動作させるための構成例を説明する。【００８１】
図４に本実施例の計算機構成の一例を示す。図４は通常の計算機の構成と類似であるが局所場応答演算装置１０００を含む。局所場応答演算装置１０００は実施例１、２で述べた演算を専門に行う部分であり、その他の一般的演算は一般演算装置202で行う。【００８２】
以上の構成は、単体のコンピュータで構成してもよいし、あるいは、主記憶装置２０１、一般演算装置２０２、制御装置２０３、補助記憶装置２０４、入力装置２０５、出力装置２０６等の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。【００８３】
一般的演算は通常の計算機と同様な手順で動作し、記憶部である主記憶装置201と演算部である一般演算装置202間でデータをやり取りし、その繰り返しで演算を進める。その際の司令塔が制御部としての制御装置203である。一般演算装置202で実行されるプログラムは記憶部である主記憶装置201に記憶する。主記憶装置201で記憶容量が足りない場合は、同じく記憶部である補助記憶装置204を利用する。【００８４】
また、後述のクロス演算部、個別演算部、スイッチ部で必要となるパラメタも、主記憶装置201、補助記憶装置204で保持する。
データやプログラム等の入力には入力装置205を使用し、結果の出力には出力装置206を利用する。入力装置205はキーボードのような手入力装置の他、ネットワーク接続のためのインターフェースも含む。また、このインターフェースは出力装置も兼ねる。【００８５】
局所場応答演算は実施例１、２（図２、３）で述べたように、N個のスピン変数sjz(t)とN個の有効磁場変数Bjz(t)をsjz(tk−1) からBjz(tk) へ、Bjz(tk)からsjz(tk)への手順で繰り返し計算する。この繰り返し演算が局所場応答演算装置１０００内で実施される。【００８６】
図５に局所場応答演算装置１０００内の主要部を示す。sjz(tk−1) からBjz(tk)への演算を実施するのがクロス演算部１０２０であり、Bjz(tk)からsjz(tk)への演算を実施するのが個別演算部１０３０である。【００８７】
Bjz(tk) からsjz(tk)への演算は実施例１，２ではsjz(tk) ＝ f1(Bjz(tk) ， tk)と表記した。実施例１，２で述べたように関数f1は三角関数を含むやや複雑な関数であるが、サイトjごとに独立した演算なので、個別演算部１０３０はNサイトを並列で処理可能である。関数f1で必要となるrs， rB等のパラメタは主記憶装置２０１で保持し、制御装置２０３の指示に従い、個別演算部１０３０に転送される。【００８８】
sjz(tk−1) からBjz(tk)への演算は式(10)で示されたもので各Bjz(tk)を決定するためにJij ≠ 0であるすべてのiサイトのsiz(tk−1)を利用する。クロス演算部１０２０ではB1z(tk)， B2z(tk)， …， BNz(tk)を順番に計算する。計算に必要なsiz(tk−1)はバッファ１０４０に一時格納されており、スイッチ部１０１０により必要なsiz(tk−1)のみがバッファ１０４０からクロス演算部１０２０に転送される。Jijの情報は主記憶装置２０１に保持し、この情報に基づきスイッチのon−offを行うと共にクロス演算部１０２０での演算を実行する。また、演算の指示を行うのが制御装置２０３である。求まったBjz(tk)は個別演算部１０３０に転送されて繰り返し計算の１周期が完了する。【００８９】
本実施例ではNスピン系のすべての相互作用を任意設定可能にできることが理想的である。高速性を高めるためにNスピンを同時に動作させようとすれば任意設定のためのスイッチ数は膨大になる。一方で、実用的な計算機を製作するためにはスイッチ数を減らす必要もあり、この場合は高速性が犠牲になる。即ち、高速性とスイッチ数の縮小はトレードオフの関係にある。しかし、この問題は演算部をクロス演算部１０２０と個別演算部１０３０に分離し、クロス演算部をパイプライン処理にすることにより解決される。【００９０】
クロス演算部はパイプライン処理が可能な構成とし、また個別演算部はN個の変数が独立に計算可能な構成としたため、両者とも高速演算可能である。さらに、クロス演算部がパイプライン処理となっているために、必要なスイッチ数が縮小される。これにより高速性とスイッチ数削減の両立が実現される。【００９１】
図６は、局所場応答演算装置１０００内をさらに詳細に記述した図である。クロス演算部１０２０内の演算は掛け算Jij×siz とそれらを足し合わせるΣi Jijsiz + gj だけの単純な構成である。図６に示すようにΣi Jijsiz の演算では２個ずつを対にして足し合わせ、最後にgj を足す。スイッチ部１０１０はJij ≠ 0に基づきΣi Jijsiz + gjで必要となるsiz のみをバッファ１０４０からクロス演算部１０２０に転送させるためのものである。siz は［−1， 1］の連続量であり、デジタルで扱った場合は多ビットからなる変数である。クロス演算部１０２０内の演算は掛け算及び足し算だけなので多ビット演算でもLSB (Least Seginificant Bit)から処理をすれば桁上がりも含めて単純に時系列で処理できる。即ち、クロス演算部１０２０内はパイプライン処理が可能であり、B1z(tk)， B2z(tk)， …， BNz(tk)の順番に値を求めるとすれば、B1z(tk)の処理が完了する前にB2z(tk)の処理を開始できる。【００９２】
図７にその様子を時間軸上で示した。【００９３】
局所場応答法ではN個のsizを並行して処理できれば最も高速になる。個別演算部１０３０の演算はサイトjごとの独立演算なので並列処理可能である。クロス演算部１０２０内の演算も図７から明らかなようにパイプライン処理により準並列処理になっている。従って、十分に高速性を維持している。一方、スイッチ部１０１０での動作はB1z(tk)， B2z(tk)， …， BNz(tk)別に処理が時系列となるためにスイッチ数を必要最小限に抑えられる。即ち、演算の高速性とスイッチ数の縮小が両立できている。【００９４】
尚、クロス演算部１０２０を複数個配置すれば並列度はさらに上がる。【００９５】
図８にその場合の構成図を示す。並列度は上がるものの必要なスイッチの個数は増加する。実際の構成はコストを含めて決めることになる。【００９６】
以上、クロス演算部１０２０、個別演算部１０３０を主たる構成要素として本実施例を説明した。以上の繰り返し演算を伝送路の立場から見ると以下のようになる（図６参照）。個別演算部１０３０内ではサイトjごとに独立に演算され、sjzの値がサイトjごとにバッファ１０４０に転送（伝送）される。バッファ１０４０からスイッチ部１０１０及びクロス演算部１０２０を経て個別演算部１０３０に至る過程では、サイトjごとにBjzで必要となるsizの値が選択的に取り出されて演算される。B1zを計算する際にはB1zに関係する情報のみが転送（伝送）され、B2zを計算する際にはB2zに関係する情報のみが転送（伝送）され、以下B3z， B4z， B5z，…も同様である。即ち、Bjzの計算では計算過程の伝送路が共有されている。言い換えればBjzは多重化した伝送路を用いて計算されるとも言える。本実施例ではBjzをパイプライン処理で計算しており、この場合の多重化は時分割多重になる。【００９７】
局所場応答演算装置１０００は、例えば１チップのコプロセッサ（co−processor， 副処理装置）として構成し、通常のコンピュータに追加する構成として図４のハードウェア構成としてもよい。あるいは、スイッチ部１０１０、クロス演算部１０２０、個別演算部１０３０を別々のチップとしてもよい。局所場応答演算装置１０００は、専用のハードウェアで構成してもよいし、FPGA（Field Programmable Gate Array）、ASIC（Application Specific Integrated Circuit）などのハードウエアで構成してもよい。このとき、クロス演算部１０２０は上述のようにB1z， B2z， B2z，…の順番でパイプライン処理が可能であり、各Bjzの演算は並列処理になっている。
【実施例４】
【００９８】
siz は［−1， 1］の連続量であり、またクロス演算部１０２０内の演算は掛け算及び足し算だけの単純なものなので、クロス演算部１０２０内の演算を時間軸上のアナログ演算で実施することも有効である。【００９９】
図９にその場合の構成例を示す。バッファ１０４０の出力側にDT変換部１０４５を設置し多ビットのデジタル値を時間方向アナログ値に変換する。【０１００】
図１０に、多ビットデジタル値を時間方向のアナログ値に変換した場合のイメージ図を示す。時間方向アナログ値とは図１０に示すように電圧の立ち上がり時間位置で値を表現するものである。アナログ値に電圧を利用した場合、様々な電圧降下があり正確な制御は困難であるが、時刻位置でアナログ値を表せば様々な電圧降下にも耐性があり比較的正確なアナログ演算が可能になる。【０１０１】
時間方向アナログ値の掛け算・足し算は容易であり（非特許文献４）、クロス演算部１０２０内の演算をすべてアナログで実施し、その後TD変換部１０２５で時間方向アナログ値からデジタル値に変換して個別演算部１０３０にデータを転送する。
【実施例５】
【０１０２】
上述した式(1)等に見るように演算時間はτを想定しているが、最終的な解の決定法にはいくつかの方法がある。実施例５として解の各種決定方法を説明する。【０１０３】
図１１Ａ〜Ｄは、本実施例に係る、最終的な解決定法に関するアルゴリズムの種々の例をフローチャートで示した流れ図である。【０１０４】
第１の方法は図１１Ａに示すように、t ＝τ(t ＝ tm)において（115）、sjz ＞ 0ならばsjzd ＝ 1、sjz ＜ 0ならばsjzd ＝ −1とするものである。図２、３の各実施例のフローチャートはこの場合を記述しており、解決定法のみに焦点を当てたフローチャートが図１１Ａである。sjzの判定は一般演算装置２０２を使って行う。そのため、sjzの値はバッファ１０４０から主記憶装置２０１に転送される（図５）。【０１０５】
第２の方法は図１１Ｂに示すように、sjzの収束性を見るもので、ある時刻tk以降のある十分な時間Δtの間のすべての時刻tqに対してsjzの符号に変化がなければ（121）、その時点のsjzの符号に基づきsjzd ＝ 1 or −1と判定する（122）。この判定は一般演算装置２０２で行う。そのため、ここでも各時刻のsjzの値をバッファ１０４０から主記憶装置２０１に転送する。【０１０６】
第３の方法は図１１Ｃに示すように、第１の方法と同様にt ＝τ(t ＝ tm)まで演算を継続する（115）が、各段階でのエネルギーを式(3)に基づいて求める。式(3)のσ^jzは固有値が±1 なので演算過程の各段階でsjzの符号に従いσ^jzの固有値が1なのか−1なのかを決める。即ち、sjz(tk) ＞ 0ならばσ^jzの固有値は1 (sjzd ＝ 1)、sjz(tk) ＜ 0ならばσ^jzの固有値は−1 (sjzd ＝ −1)である。σ^jzの固有値を利用して計算するのはエネルギーに関してであり、演算過程はsjz(tk) (−1 ≦ sjz(tk) ≦ 1)を利用する。t ＝ τ (t ＝ tm)に到達した時点で各時刻tkでのエネルギーを比較し、最低エネルギーを得た時刻tk’でのsjz(tk’)の符号に基づき最終的な解を決める。【０１０７】
すなわち、時刻tk各々おいてsjz(tk) ＜ 0ならばsjzd(tk) ＝ −1、sjz(tk) ＞ 0ならばsjzd(tk) ＝ 1として（119）、Hp(tk) ＝ − Σi＞jJijsizd(tk)sjzd(tk) − Σjgjsjzd(tk)を各時刻tkにおいて計算し（123）、Hp(tk)が最小値となった時刻tk’におけるsjzd(tk’)を最終解とする（124）。尚、エネルギーの計算は一般演算装置２０２を使って行う。そのため、sjzの値はバッファ１０４０から主記憶装置２０１に転送する。【０１０８】
第４の方法は図１１Ｄに示すように、第２の方法と同様にすべてのsjzが収束した段階で演算を打ち切る。但し、最終的な解は打ち切った時点でのsjzから判定するのではなく、第３の方法と同様に各時刻でのエネルギーを算出し、最低エネルギーを与えた時刻でのsjz(tk’)により解を決める（125）。ここでもエネルギーの計算は一般演算装置２０２を使って行うため、sjzの値はバッファ１０４０から主記憶装置２０１に転送する。【０１０９】
いずれの方法を取るかは使用者が決める。
【実施例６】
【０１１０】
図１に示したように時間軸を離散的にした実施例を述べてきた。連続的変化が理想なので時間間隔は細かい程よいが、あまり細かく取りすぎると演算時間が長くなる。そこで時間間隔を演算の進行に合わせて変化させることを考える。【０１１１】
演算過程で重要な時刻はsjzの符号が変化する時である。演算開始時と終了時近くはsjzの符号変化が比較的少なく、演算の中間段階でsjzの符号の変化が激しい。そこで第１の方法として、プログラム的に演算開始時には時間間隔を大きめにし、時間の経過と共に時間間隔を小さくし、その後逆に時間間隔を大きくしていく設定法がある。【０１１２】
第２の方法は、各時刻でスピン反転する可能性を評価しその評価に基づき時間間隔を設定するものである。例えば以下のようにする。すべてのスピンで｜sjz｜の大きさが概ね等しいならばスピン反転の起こる可能性は低い。この場合は時間間隔を大きくする。一方、特定のスピンの｜sjz｜の大きさが他のスピンに比べて小さければスピン反転が起こる確率は高い。この場合は時間間隔を小さくする。時間間隔決定法の具体的一例は以下のようにする。最小時間間隔をδtminとする。時刻tkにおける全サイトのスピンの二乗平均をsave(tk)2、最小スピンの二乗の大きさをsmin(tk)2とする。即ち、save(tk)2 ＝ Σj(sjz(tk))2／N， smin(tk)2 ＝ min (sjz(tk)2)である。［x］をx以下の最大整数としてΔTk+1，k ＝ tk+1 − tk ＝δtmin×max(1，［100×(smin(tk)2／save(tk)2)1／2］)とする。この例の場合、時間間隔の最小値がδtmin、最大値が100・δtminとなる。時間間隔決定の演算は一般演算装置２０２を使って行う。【０１１３】
いずれの方法を取るかは使用者が決めることになる。【０１１４】
本実施例における温度の影響は以下のように見積もられる。ビット反転に必要な電圧は１Vのオーダーである。eを素電荷、kBをボルツマン定数とすれば換算温度はT ＝ eV／kBによりT は 1．2×104 Kに略等しい。この値は室温の300 Kに比べて十分に大きく、本実施例のような構成では温度の影響を無視でき、室温で動作させることができる。【０１１５】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【産業上の利用可能性】
【０１１６】
ビッグデータなど、各種データの解析処理に応用が可能である。
【符号の説明】
【０１１７】
100  手順
201  主記憶装置
202  一般演算装置
203  制御装置
204  補助記憶装置
205  入力装置
206  出力装置
1000  局所場応答演算装置
1110  スイッチ部
1120  クロス演算部
1025  TD変換部
1130  個別演算部
1140  バッファ
1045  DT変換部
【図１】
2016194221.tif 000014
【図２】
2016194221.tif 000015
【図３】
2016194221.tif 000016
【図４】
2016194221.tif 000017
【図５】
2016194221.tif 000018
【図６】
2016194221.tif 000019
【図７】
2016194221.tif 000020
【図８】
2016194221.tif 000021
【図９】
2016194221.tif 000022
【図１０】
2016194221.tif 000023
【図１１Ａ】
2016194221.tif 000024
【図１１Ｂ】
2016194221.tif 000025
【図１１Ｃ】
2016194221.tif 000026
【図１１Ｄ】
2016194221.tif 000027
【国際調査報告】
2016194221.tif 000028
2016194221.tif 000029