(57)【要約】  全数探索を必要とするような課題に対して、量子コヒーレンスや極低温冷却装置を必要としない計算機、及び演算プログラムを提供する。  変数としてのスピンsjを局所的な有効磁場Bjに追従させることにより、問題設定系の基底状態に系を導く。その基底状態が解である。t ＝ 0において全サイトでx軸方向に磁場Bjが印加され、全スピンsjがx軸方向に初期化される。時間tの経過に従い、徐々にz軸方向の磁場とスピン間相互作用が加えられ、最終的にスピンは＋z方向あるいは−z方向となって、スピンsjのz成分がsjz ＝ ＋1あるいは−1となる。また、スピンsjの向きを有効磁場Bj方向に追従させる際に、スピンsjの向きを維持しようとする緩和項を導入して解の収束性を向上させる。
2016157333.tif 000002
【特許請求の範囲】
【請求項１】
演算部、記憶部、制御部を具備し、前記制御部の制御により、前記記憶部と前記演算部との間でデータをやり取りしながら演算を行う計算機であって、
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)の値と緩和項の係数gpinaあるいはgpinbを用いてBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ sgn(sjz(tk-1))・gpina}・tk/τあるいはBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ gpinb・sjz(tk-1)}・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’)を最終解とする、
ことを特徴とする請求項１記載の計算機。
【請求項６】
前記係数gpinaは|Jij|の平均値の1%から50%の値であることを特徴とする請求項１記載の計算機。
【請求項７】
前記課題設定の局所場gj (j ＝ 1, 2, …, N)に関して、
gj ≠ 0の成分があれば前記記載のBjz(tk)をBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj}・tk/τにより定め、N個すべてでgj ＝ 0ならば前記記載のBjz(tk)をBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ sgn(sjz(tk-1))・gpina}・tk/τあるいはBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ gpinb・sjz(tk-1)}・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)の値と緩和項の係数gpinaあるいはgpinbを用いてBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ sgn(sjz(tk-1))・gpina}・tk/τあるいはBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ gpinb・sjz(tk-1)}・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’)を最終解とする、
ことを特徴とする請求項８記載の演算プログラム。
【請求項１３】
前記係数gpinaは|Jij|の平均値の1%から50%の値であることを特徴とする請求項８記載の演算プログラム。
【請求項１４】
前記課題設定の局所場gj (i, j ＝ 1, 2, …, N)に関して、
gj ≠ 0の成分があれば前記記載のBjz(tk)をBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj}・tk/τにより定め、N個すべてでgj ＝ 0ならば前記記載のBjz(tk)をBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ sgn(sjz(tk-1))・gpina}・tk/τあるいはBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ gpinb・sjz(tk-1)}・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)の値と緩和項の係数gpinaあるいはgpinbを用いてBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ sgn(sjz(tk-1))・gpina}・tk/τあるいはBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ gpinb・sjz(tk-1)}・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として解を定める、
処理を行い、
当該局所場応答演算装置における処理は、光学系で並列的に処理される複数の光信号の変調を利用して行われるか、もしくは、バッファアレイに蓄積されたデータを並列的に処理することにより行われる、
ことを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全数探索を必要とするような逆問題や組み合わせ最適化問題に対して高速演算を可能にする計算機に関するものである。
【背景技術】
【０００２】
ビッグデータといった言葉に代表されるように現代はデータが溢れている。情報科学では、この巨大データを如何に解析し如何に扱うかが最重要課題の一つになっている。ビッグデータでは複雑な解析を必要とする問題が少なくない。例えば、ある結果が得られた際にその原因を探りたい場合がある。これを逆問題と呼ぶことにする。現象が複雑であればあるほど原因を探るのは困難であり、一般に結果から初期値を求める効率的なアルゴリズムは存在しない。最悪の場合は初期値に関して全数探索しなければならない。これがビッグデータにおける困難問題の一つである。あるいはまた、ビッグデータを元に多くの選択肢の中から最適解を選ぶといった問題も多く存在する。この場合もすべての可能性を考慮するならば全数探索の必要性が出てくる。こういった背景から、全数探索を必要とする問題を効率的に解けるコンピュータが求められることになる。【０００３】
全数探索問題に対しては量子コンピュータへの期待が大きい。量子コンピュータは量子ビットと呼ばれる基本素子からなり“0”と“1”を同時に実現する。そのためすべての解候補を初期値として同時に計算可能で、まさに全数探索を実現しうる可能性を持っている。しかし、量子コンピュータは全計算時間に亘って量子コヒーレンスを維持する必要があり、これを実現する目処は立っていない。【０００４】
こういった中で注目されるようになってきたのが断熱量子計算と呼ばれる手法である（非特許文献１）。この方法は、ある物理系の基底状態が解になるように問題を変換し、基底状態を見つけることを通して解を得ようとするものである。問題を設定した物理系のハミルトニアンをH^pとする。但し、演算開始時点ではハミルトニアンをH^pとするのではなく、それとは別に基底状態が明確で準備しやすい別のハミルトニアンH^0とする。次に十分に時間を掛けてハミルトニアンをH^0からH^pに移行させる。十分に時間を掛ければ系は基底状態に居続け、ハミルトニアンH^pの基底状態が得られる。これが断熱量子計算の原理である。計算時間をτとすればハミルトニアンは式(1)となり【０００５】
【数１】
2016157333.tif 000003
【０００６】
式(2)のシュレディンガー方程式に基づいて時間発展させて解を得る。【０００７】
【数２】
2016157333.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).
【発明の概要】
【発明が解決しようとする課題】
【００１２】
以上述べたように、断熱量子計算は全数探索を必要とするような難問に対して有効である。しかし、依然として量子コヒーレンスを必要とし、また超伝導磁束量子ビットを用いる場合には極低温冷却装置も必要である。これら２つの必要条件を無くし、実用的な計算機を提供することが解決すべき課題である。【００１３】
本発明の目的は、上記の課題を解決し、量子コヒーレンスや極低温冷却装置を必要としない計算機、及び演算プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
スピンを演算における変数とし、解こうとする問題をスピン間相互作用とスピンごとに作用する局所場で設定する。時刻t＝0において外部磁場により全スピンを一方向に向かせ、時刻t＝τで外部磁場がゼロになるように外部磁場を徐々に小さくする。各スピンは時刻tにおける各サイトの外部磁場及びスピン間相互作用のすべての作用で決まる有効磁場に従い向きが定まるとして時間発展させる。その際、スピンの向きが有効磁場に完全に揃うのではなく、量子力学的に補正された向きとすることにより、系が基底状態をほぼ維持するようにする。【００１５】
また、時間発展の際に各スピンを元の向きに維持する項（緩和項）を有効磁場に加え、解の収束性を向上させる。
【発明の効果】
【００１６】
本方法は量子力学的補正を加えるものの古典系で動作するものである。そのため、量子コヒーレンスを考慮する必要がなくなり使用可能なリソースが広範囲になる。ビットに関するエネルギースケールを温度のエネルギースケールよりも十分に大きくすれば、温度揺らぎも無視可能で、極低温装置のような特殊装置・特殊環境が不要になる。【００１７】
また、緩和項を加えたことにより、時間発展におけるスピンの向きに関する振動が抑えられ、解の収束性が向上する。
【図面の簡単な説明】
【００１８】
【図１】本発明のアルゴリズムを原理的に説明する模式図である。
【図２】実施例１に係る、アルゴリズムの一例をフローチャートとして示す図である。
【図３】実施例２に係る、アルゴリズムの一例をフローチャートとして示す図である。
【図４Ａ】実施例３に係る、アルゴリズムの一例をフローチャートとして示す図である。
【図４Ｂ】実施例３に係る、アルゴリズムの他の例をフローチャートとして示す図である。
【図４Ｃ】実施例３に係る、アルゴリズムの他の例をフローチャートとして示す図である。
【図４Ｄ】実施例３に係る、アルゴリズムの他の例をフローチャートとして示す図である。
【図５Ａ】実施例４に係る、アルゴリズムの一例をフローチャートとして示す図である。
【図５Ｂ】実施例４に係る、アルゴリズムの他の例をフローチャートとして示す図である。
【図５Ｃ】実施例４に係る、アルゴリズムの他の例をフローチャートとして示す図である。
【図５Ｄ】実施例４に係る、アルゴリズムの他の例をフローチャートとして示す図である。
【図６Ａ】実施例５に係る、最終的な解決定法に関するアルゴリズムの一例をフローチャートとして示す図である。
【図６Ｂ】実施例５に係る、最終的な解決定法に関するアルゴリズムの他の例をフローチャートとして示す図である。
【図６Ｃ】実施例５に係る、最終的な解決定法に関するアルゴリズムの他の例をフローチャートとして示す図である。
【図６Ｄ】実施例５に係る、最終的な解決定法に関するアルゴリズムの他の例をフローチャートとして示す図である。
【図７】実施例８に係る、計算機の一構成例を示すブロック図である。
【図８】実施例８に係る、計算機の他の構成例を示すブロック図である。
【図９】実施例９に係る、計算機に含まれる局所場応答演算装置の一構成例を示す構成図である。
【図１０】図９の光学部の一構成例を示す構成図である。
【図１１】実施例１０に係る、計算機に含まれる局所場応答演算装置の一構成例を示すブロック図である。
【図１２】実施例１１に係る、計算機に含まれる局所場応答演算装置の一構成例を示すブロック図である。
【図１３】実施例１２に係る、計算機に含まれる局所場応答演算装置の一構成例を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、演算の原理も交えて、図面に従い本発明の各種実施例を説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００２０】
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
【００２１】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００２２】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００２３】
断熱量子計算は別名で量子アニールとも呼ばれ、古典的な焼きなましの概念を量子力学に発展させたものである。即ち、断熱量子計算は本来古典的動作が可能で、高速性や解の正解率に関して性能を向上させるために量子力学的効果が付加されたものとも解釈できる。そこで本発明では、演算器そのものは古典的とし、演算過程に量子力学的に定まるパラメタを導入することにより、古典的であるが量子力学的な効果を含んだ演算方法・装置を実現する。
【００２４】
以上の概念に基づき、以下の実施例では断熱量子計算との関連性を説明しながら解としての基底状態を得る古典的アルゴリズムと、それを実現するための装置に関して述べる。
【００２５】
以下の実施例で述べられる典型的な形態は、演算部、記憶部、制御部を具備し、制御部の制御により、記憶部と演算部との間でデータをやり取りしながら演算を行う計算機であって、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)の値と緩和項の係数gpinaあるいはgpinbを用いてBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ sgn(sjz(tk-1))・gpina}・tk/τあるいはBjz(tk) ＝ {ΣiJijsiz(tk-1) ＋ gj ＋ gpinb・sjz(tk-1)}・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として解を定める。
【００２６】
係数gpinbは、例えば|Jij|の平均値の50%から200%の値である。また、課題設定の局所場gjに関して、あるサイトj’に対してのみ補正項δgj’をgj’に加え、該サイトj’に対してのみgj’の大きさを大きくすることもできる。また、補正項δgj’は、例えば|Jij|の平均値の10%から100%の値である。
【実施例１】
【００２７】
実施例１では、量子力学的な記述から出発して古典的な形式に移行することを通して本発明の原理を述べる。【００２８】
式(3)で与えられるイジングスピン・ハミルトニアンの基底状態探索問題はNP困難と呼ばれる分類の問題を含み、有用な問題であることが知られている（非特許文献３）。【００２９】
【数３】
2016157333.tif 000005
【００３０】
Jij及びgjが課題設定パラメタであり、σ^jzはパウリのスピン行列のz成分で±1の固有値を取る。i, jはスピンのサイトを表す。イジングスピンとは値として±1だけを取りうる変数のことで、式(3)ではσ^jzの固有値が±1であることによりイジングスピン系となっている。式(3)のイジングスピンは文字通りのスピンである必要はなく、ハミルトニアンが式(3)で記述されるのであれば物理的には何でも良い。例えば、ロジック回路のhighとlowを±1に対応付けることも可能であるし、光の縦偏波と横偏波を±1に対応付けることや0, πの位相を±1に対応付けることも可能である。本実施例の方法では断熱量子計算と同様に、時刻t ＝ 0において式(4)で与えられるハミルトニアンの基底状態に演算系を準備する。【００３１】
【数４】
2016157333.tif 000006
【００３２】
γは全サイトjに一様に掛かる外場の大きさで決まる比例定数であり、σ^jxはパウリのスピン行列のx成分である。演算系がスピンそのものであれば外場とは磁場を意味する。式(4)は横磁場を印加したことに相当し、すべてのスピンがx方向を向いた場合(γ>0)が基底状態である。問題設定のハミルトニアンはz成分のみのイジングスピン系として定義されたが、式(4)にはスピンのx成分が登場している。従って、演算過程でのスピンはイジングではなくベクトル的（ブロッホベクトル）である。t ＝ 0では式(4)のハミルトニアンでスタートしたが、時刻tの進行と共に徐々にハミルトニアンを変化させ、最終的には式(3)で記述されるハミルトニアンにしてその基底状態を解として得る。【００３３】
スピンが外場に対してどのように応答するかを、１スピン系の場合にまず考察する。１スピン系のハミルトニアンは式(5)で与えられる。【００３４】
【数５】
2016157333.tif 000007
【００３５】
ここでσ^はパウリのスピン行列の３成分をベクトルとして表示している。基底状態はスピンが磁場方向を向いた場合で、<・>を量子力学的期待値として<σ^> ＝ B/|B|と書ける。断熱過程では常に基底状態を維持しようとするのでスピンの向きは常に磁場の向きに追従する。【００３６】
以上の議論は多スピン系にも拡張できる。t ＝ 0ではハミルトニアンが式(4)で与えられる。これは全スピンに対して一様に磁場Bjx ＝γが印加されたことを意味する。t > 0では磁場のx成分が徐々に弱まりBjx ＝ γ(1 − t/τ)である。z成分に関してはスピン間相互作用があるために有効磁場としては式(6)になる。【００３７】
【数６】
2016157333.tif 000008
【００３８】
スピンの向きは<σ^jz>/<σ^jx>で規定できるので、スピンの向きが有効磁場に追従するならば式(7)によりスピンの向きが定まる。【００３９】
【数７】
2016157333.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におけるスピンの向きを求める。【００４４】
【数８】
2016157333.tif 000010
【００４５】
式(8)は式(7)を古典量に関する表記に書き改めたものなので<・>の記号が付いていない。【００４６】
次に、t ＝ tk＋1の有効磁場をt ＝ tkにおけるスピンの値を用いて求める。各時刻の有効磁場を具体的に書けば式(9)及び(10)となる。【００４７】
【数９】
2016157333.tif 000011
【００４８】
【数１０】
2016157333.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)))はBjZ(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)に変形する。【００６４】
【数１１】
2016157333.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)に依存して細かく制御されることが好ましい。しかし、量子縺れに関する情報を正確に取得することは原理的に困難であり、何らかの対処法を考える必要がある。実際には問題に応じて半経験的に定めることになるが、大まかな決定法は以下のようになる。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) が不定になる。従って、時刻tの進行に伴いrBがrB ＝~ 1からrB ＝~ 0となる変化をBjz(tk)/Bjx(tk) ＝~ 0の場合には|Bjz(tk)/Bjx(tk)| >> 0の場合に比べて早めることが効果的である。【００６８】
また、サイト間の特徴が特別にない場合はrsやrBにサイト依存性を持たせないが、サイト別の特徴が事前にわかっている場合にはそれに対応してrsやrBをサイト依存にすれば解の正解率向上が期待できる。【００６９】
図３にrs及びrBを導入した場合のフローチャートを示す。図２のフローチャートとの違いは、ステップ１０３、１０５、１０７がそれぞれ補正パラメタrs及びrBを含むステップ１０３a、１０５a、１０７aに変更された点である。この例では、上述のように、関数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)に依存して細かく制御されることが望ましい。
【実施例３】
【００７０】
実施例１及び２では課題のハミルトニアンが式(3)で与えられ、各サイトの有効磁場が式(9)及び(10)で与えられるものであった。各サイトには局所場gjがあった。局所場gjがあればsjzはgjで決まる向きが第ゼロ近似の向きになり、Jijで決まる相互作用が加わることによりsjzの向きが補正される。しかし、全サイトがgj ＝ 0となる場合は第ゼロ近似の向きといった概念が存在せず、また一般に縮退数も多くなるためにsjz > 0になるのかsjz ＜ 0になるのか定まらず、演算時間が経過してもsjz ＝~ 0から抜け出せなくなる。また抜け出せたとしても正解でなければスピン間相互作用の結果、スピン間で互いに向きを反転させようとする力が働き、時間のステップごとにスピンの向きが反転する振動現象が生じ、解が収束しない。【００７１】
これらの問題を解消するために式(10)に緩和項（ピン止め項）を加えて有効磁場を式(12A)にする。【００７２】
【数１２Ａ】
2016157333.tif 000014
【００７３】
第３項が緩和項である。sgn(・)は符号関数で、sjz > 0に対してsgn(sjz) ＝ 1、sjz ＝ 0に対してsgn(sjz) ＝ 0、sjz ＜ 0に対してsgn(sjz) ＝ −1である。この緩和項はスピンの向きを元に留めるように働くので上述の振動現象が解消し、解の収束性が向上する。gpinaの値は経験的に決めることになる。緩和項は解の収束性を向上させるための付加的な項であり|Jij|よりも十分に小さい必要がある。一方、小さすぎると十分な働きが期待できない。範囲を規定するとすれば、係数gpinaは|Jij|の平均値の1%から50%の範囲で調整することが適切であると考えられる。ひとつの目安としては、係数gpinaを|Jij|の平均値の1/10程度にすればよい。【００７４】
式(12A)の緩和項（第３項）はsjzの符号のみに依存しsjzの大きさには依存しない。一方、第１項はsizの大きさに依存する。そこで第３項もsjzの大きさに依存させる方法もある。その場合は式(12B)となる。【００７５】
【数１２Ｂ】
2016157333.tif 000015
【００７６】
式(12B)の場合の第３項の大きさはsjzの大きさに依存して変化するので係数gpinbは典型的には|Jij|の平均値程度の大きさであり、範囲で言えば|Jij|の平均値の50%から200%程度になる。【００７７】
基底状態が縮退している場合には解のひとつに演算を誘導する必要がある。誘導しなければ解の平均値であるsjz ＝~ 0から抜け出せない。緩和項はこの誘導にも役立つ。解の一つに誘導するためには第ゼロ近似の解を適切に設定する必要がある。そこで基準にするサイト（jサイトとする）を一つ選びsjz(t0) ＝ 1とし、他のサイトの向きをjサイトを基準にJijの符号に基づき初期の段階で定めることにする。このようにすれば適切な第ゼロ近似の設定が為され、その後の局所場応答の演算を通して正解のひとつに収束していく。その際、緩和項は以下のように貢献する。【００７８】
t ＝ t0でsjz(t0) ＝ 1, siz(t0) ＝~ 0 (i ≠ j)と設定し、式(12A)あるいは式(12B)と式(11)に基づいて時間発展させる。ここでsiz(t0) ＝~ 0 (i ≠ j)はsiz(t0)が他のサイトにほとんど影響を与えないように例えばsiz(t0) ＝ 1/1000程度の値にすることを意味する。時間ステップt0 → t1により式(12A) あるいは式(12B)と式(11)に基づいてJij ≠ 0となるiサイトに対してはsiz > 0 or siz ＜ 0が得られる。Jij ＝ 0となるiサイトに対してはt0 → t1のステップでsjz(t0) ＝ 1の初期設定は伝播しないが、siz > 0 or siz ＜ 0となったサイトが増えるので次の時間ステップにおいてそのサイトを通してsjz(t0) ＝ 1の初期設定が間接的に伝播し、演算の早い段階でほぼすべてのサイトがsiz > 0 or siz ＜ 0となる。緩和項があるのでjサイトのsjz > 0は演算の初期段階では維持され、jサイト自身にsjz(t0) ＝ 1の履歴が残っている間にほぼすべてのサイトにsjz(t0) ＝ 1の情報が伝播する。これが適切な第ゼロ近似の設定となる。【００７９】
図４に緩和項が加わった場合のフローチャートを示す。図４Ａが式(12A)に対応し、図４Ｂが式(12B)に対応する。図３のフローチャートとの違いは、ステップ１０２、１０４、１０６が緩和項を含むステップ１０２b、１０４b、１０６bに変更された点である。【００８０】
以上、基底状態が縮退している場合に解のひとつに演算を誘導する方法としてt ＝ t0でsjz(t0) ＝ 1, siz(t0) ＝~ 0 (i ≠ j)と設定することを述べた。この方法では強制的な因子はt ＝ t0におけるsjz(t0) ＝ 1のみである。t > t0では緩和項による履歴のみで強制的因子はない。ひとつの解への誘導性をさらに高めるために全時間で強制的因子を加えるのが有効である。そのためにはひとつのサイトj’に対してだけ付加的に局所場項δgj’を加える方法が考えられる。即ち、式(12A)、(12B)の局所場項gj’にδgj’を加えてgj’→gj’ +δgj’とする。ここで右辺の２つの量は打ち消し合わないようにδgj’の符号はgj’と同符号とする。元々がgj’ = 0ならばδgj’の符号はどちらでも良い。この付加項によりj’サイトのスピンはある向きに強く誘導される。δgj’は|Jij|の平均値の10%から100%程度の範囲で調整することが適切であるが、ひとつの目安としては|Jij|の平均値の50%程度にすればよい。尚、δgj’を通して強制的因子が加わっているので、この場合はsj’z(t0) ＝ 1の初期設定は不要であり、全サイトに対してsiz(t0) ＝~ 0とすればよい。この場合のフローチャートを図４Ｃ及び図４Ｄに示す。図４Ｃが式(12A)に対応し、図４Ｄが式(12B)に対応する。【００８１】
以上説明したように、緩和項を加えたことにより、時間発展におけるスピンの向きに関する振動が抑えられ、解の収束性が向上する。さらに、この緩和項は以下の効果もあった。基底状態の縮退数が多い場合には、系がいずれの基底状態に向かえばよいのか判断できず、解の平均値であるsjz ＝ 0の状態に落ち込み、そこから抜け出せない事態に陥る可能性がある。そこで初期状態においてひとつのサイト（サイトjとする）のスピンだけを明確に定め(sjz ＝ 1 or −1)、その他のスピンをskz ＝~ 0 (k ≠ j, skx ＝~ 1)とし、スピン間相互作用を通して時間発展の初期段階でjサイトを基準にしたスピン配列を定める。緩和項があるので演算の初期段階ではjサイトの向きは固定されており、基準が維持される。そのため、縮退解の一つに対応する良好な近似解を演算の初期段階で実現し、そのまま縮退解のひとつに誘導する。このように、緩和項は解の収束性を高めると共に、縮退数が多い場合にも解の一つに収束させる。尚、縮退数が多い場合に解の一つに収束させる方法には２番目の方法もある。式(12A)、(12B)においてひとつのサイトj’に対してのみ付加的に局所場項δgj’を加えてj’サイトのスピンだけをある向きに強く誘導する。これによりj’サイトを基準にした縮退解のひとつに誘導される。
【実施例４】
【００８２】
実施例３では緩和項を導入することにより解の収束性を向上させることを述べた。緩和項が威力を発揮するのは主として全サイトがgj ＝ 0となる場合である。gj ≠ 0となる項があれば緩和項を加えなくても比較的収束性は良い。そこで全サイトがgj ＝ 0であるかどうかに基づき緩和項を加えるかどうかを決定すれば必要な項だけを使った効率的な演算法になる。【００８３】
図５に、この場合のアルゴリズムの一例のフローチャートを示す。図５Ａ-図５Ｄはそれぞれ図4Ａ-図４Ｄに対応する。
【実施例５】
【００８４】
上述した式(1)等に見るように、演算時間はτを想定しているが、最終的な解の決定法にはいくつかの方法がある。実施例５として、解の各種決定方法を説明する。【００８５】
図６は、最終的な解決定法に関するアルゴリズムの一例をフローチャートとして示す図である。【００８６】
第１の方法は図６Ａに示すように、t ＝τ(t ＝ tm)において（115）、sjz > 0ならばsjzd ＝ 1、sjz ＜ 0ならばsjzd ＝ −1とするものである。図２−図５の各実施例のフローチャートはこの場合を記述しており、解決定法のみに焦点を当てたフローチャートが図６Ａである。【００８７】
第２の方法は図６Ｂに示すように、sjzの収束性を見るもので、ある時刻tk以降ある十分な時間Δtの間のすべての時刻tqに対してsjzの符号に変化がなければ（121）、その時点のsjzの符号に基づきsjzd ＝ 1 or −1と判定する（122）。【００８８】
第３の方法は図６Ｃに示すように、第１の方法と同様にt ＝τ(t ＝ tm)まで演算を継続する（115）が、各段階でのエネルギーを式(3)に基づいて求める。式(3)のσ^jzは固有値が±1 なので演算過程の各段階でsjzの符号に従いσ^jzの固有値が1なのか−1なのかを決める。即ち、sjz(tk) > 0ならばσ^jzの固有値は1 (sjzｄ ＝ 1)、sjz(tk) ＜ 0ならばσ^jzの固有値は−1 (sjz ＝ −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(tk’)から最終的な解を決める（125）。いずれの方法を取るかは使用者が決める。
【実施例６】
【００９１】
図１に示したように時間軸を離散的にした実施例を述べてきた。連続的変化が理想なので時間間隔は細かい程よいが、あまり細かく取りすぎると演算時間が長くなる。そこで時間間隔を演算の進行に合わせて変化させることを考える。【００９２】
演算過程で重要な時刻は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となる。【００９４】
いずれの方法を取るかは使用者が決めることになる。
【実施例７】
【００９５】
実施例３ではサイトjを選択してsjz(t0) ＝ 1, siz(t0) ＝~ 0 (i ≠ j)とした。サイトjは任意なので、サイトjの選択を変更して同じ問題を解かせることができる。このようにして同じ問題を繰り返し解いて最適解を選択すれば正解率向上を図れる。
【実施例８】
【００９６】
実施例１−７では演算原理及び演算アルゴリズムに関して説明した。実施例８ではまずこのアルゴリズムをプログラムとして動作させる計算機の構成例を説明する。【００９７】
図７に本実施例の計算機構成の一例を示す。図７は通常の計算機と基本的に同じ構成で、記憶部である主記憶装置201から、演算部である演算装置202にデータを転送し、演算後、主記憶装置201にデータを返す。これを繰り返して演算を進める。その際の司令塔が制御部としての制御装置203である。本実施例の構成における演算は、図２−図５のフローに従い、時刻別、サイト別に演算装置202で実行する。【００９８】
演算装置202で実行されるプログラムは記憶部である主記憶装置201に記憶する。主記憶装置201で記憶容量が足りない場合は、同じく記憶部である補助記憶装置204を利用する。データやプログラム等の入力には入力装置205を使用し、結果の出力には出力装置206を利用する。入力装置205はキーボードのような手入力装置の他、ネットワーク接続のためのインターフェースも含む。また、このインターフェースは出力装置も兼ねる。図７の構成はプログラムとして実施例１−７で説明したアルゴリズムを適用するが、装置そのものは通常の計算機を使う。【００９９】
一方、プログラムの実行だけでなく、装置構成も含めて実施例１−７で説明した演算原理、アルゴリズムを利用する方法もある。【０１００】
図８にそれを実現した構成図を示す。演算部として局所場応答演算装置1000を含む。これが図７の構成との比較において異なる点である。局所場応答演算装置1000は上述したアルゴリズムを実施するための専用演算部で、実施例1−７で説明した局所場応答演算のみを行い、一般的な処理は演算装置202で実施する。局所場応答演算装置1000で利用する情報は主記憶装置201から転送する。【０１０１】
必要となる情報は変数間相互作用Jij及び局所場gjといった課題設定パラメタの他、時刻パラメタtkや、量子縺れに係わる補正パラメタrs及びrB、緩和項の係数gpina、gpinb等である。同期を取る等の処理は図７の構成の計算機と同様で制御装置203の役目である。局所場応答演算装置1000からは最終結果だけでなく途中経過の情報が必要に応じて時刻パラメタtkごとに制御装置203の指示に従い、主記憶装置201に転送される。演算の中間段階における局所場応答演算装置1000からの転送値は、例えば演算の中間段階でのイジングスピン・ハミルトニアンのエネルギー算出やsmin(tk)2, save(tk)2の評価に利用する。【０１０２】
実施例５で説明した第３及び第４の方法では、図６Ｃ、図６Ｄで示したように、中間段階でのイジングスピン・ハミルトニアンのエネルギー値を利用して最終的な解を判定する。sjzdが＋1なのか−1なのかが決まっていればイジングスピン・ハミルトニアンのエネルギー値の計算は単純なものであり、通常の演算装置202を利用する。局所場応答演算装置1000は実施例１−４で述べた局所場応答演算の専用演算部であり、それ以外の処理は通常の演算装置202を利用する。
【実施例９】
【０１０３】
実施例８で説明した局所場応答演算装置1000は様々な方法で実現可能である。本実施例ではまず光の並列性を有効利用する方法を述べる。【０１０４】
図９に全体像を示す。主記憶装置201から演算で必要となるγ, gj, gpina等の情報を制御部1100に、Jijの情報を可変マスク1120に送る。式(12B)対応の場合のgpinbは1120に送り、Jii = gpinbとする。LEDアレイ1110の出力強度は変数sjzの値を反映するものとする。本実施例では光の強度情報のみを利用し、位相情報は利用しない。そのため、光源1110としてLEDアレイのような非干渉性の光源を利用する。干渉性のあるLDを利用することも可能であるが、その場合はLDアレイの出力光同士の干渉効果が現れないように検出器アレイ1130における測定時間を十分に長く取る。LEDアレイ1110からの出力光は横方向のみを広げ、可変マスク1120においてJijに応じて光量を減衰させ、今度は縦方向のみを収束させて検出器アレイ1130で電気信号に変換する。【０１０５】
図１０は、図９の光学部の一構成例を示す構成図である。LEDアレイ1110から検出器アレイ1130までの光学系は例えば図１０のようなレンズ系を利用する。【０１０６】
変数sjzは[−1,1]の値を取るが、光源出力は負の値を取りえない。そこでLEDアレイ1110において２つ一組でsjzを表すものとする。即ち、sjz > 0に対してsjz＋ ＝ sjz, sjz− ＝ 0とし、sjz ＜ 0に対してsjz＋ ＝ 0, sjz− ＝ sjz ＝ −|sjz|として、LED出力の一方をsjz＋、他方を|sjz−|として、両出力の差sjz ＝ sjz＋ − |sjz−| ＝ sjz＋ ＋ sjz−でsjzを表すものとする。光源側に連動して検出器アレイ1130も２つ一組とする。これにより、やはり負の値を取りえない可変マスク1120に対応できる。検出器アレイ1130で得ようとしている信号はbjz ≡ ΣiJijsizである。sjzと同様にJij ＝ Jij＋ ＋ Jij− ＝ Jij＋ − |Jij−|とすればbjz ＝ ΣiJijsiz ＝ Σi(Jij＋ ＋ Jij−)(siz＋ ＋ siz−) ＝ Σi(Jij＋siz＋ ＋ Jij−siz−) ＋ Σi(Jij＋siz− ＋ Jij−siz＋)となる。２つ一組とした検出器アレイ1130のそれぞれはbjz＋ ＝ Σi(Jij＋sjz＋ ＋ Jij−sjz−)及び|bjz−| ＝ Σi(Jij＋|sjz−| ＋ |Jij−|sjz＋)を検出することになり検出器の差を取ったbjz ＝ bjz＋ − |bjz−| ＝ bjz＋ ＋ bjz−が信号となる。尚、前述のようにJii = gpinbとすれば式(12B)対応となる。【０１０７】
bjzが得られればgj, gpinaの項を加えることにより式(10)や式(12A)、(12B)に基づきBjzが得られる。この計算は制御部1100で行う。またBjzからsjzを得る計算も制御部1100で行い、sjzの値をLEDアレイ1110に送る。以上で時刻tkからtk＋1への１ステップが終了する。尚、制御部1100は同じ処理を繰り返すものであり、そのための専用回路とする。また、各時刻のsjzは主記憶装置201に転送し解析に利用する。
【実施例１０】
【０１０８】
図９の実施例ではLEDアレイ1110から検出器アレイ1130までの光学系が自由空間であった。この部分を導波路を使った光学系でも実現可能である。【０１０９】
図１１にその場合を示す。LEDアレイ（LDアレイ）1110から出力光は分波器1115により分割され、Jijに基づき透過率が設定された可変減衰器1120（図９における可変マスク）を透過後、合波器1125により集光されて検出器アレイ1130で受光される。図９における空間光学系を導波路光学系に変更しただけであり、動作原理は同じである。従って、LEDアレイ（LDアレイ）1110は２つ一組でsjzを表し、検出器アレイ1130も２つ一組で動作する。
【実施例１１】
【０１１０】
実施例９及び実施例１０では光源を２つ一組にしてsjzを表した。偏光を利用してsjz＋とsjz−を表すことにすればsjzに対して光源をひとつにできる。【０１１１】
図１２にその場合を示す。光源1111内のLDはそれぞれがsjzを表すためのものである。偏波変調器1112により２つの偏波への分配強度が調整される。sjz＋ ＝ Asin(π/4＋θ), |sjz−| ＝ Acos(π/4＋θ)とすればsjz ＝ sjz＋ ＋ sjz− ＝ sjz＋ − |sjz−| ＝ √2Asinθでありθ ＜＜ 1とすればsjz ＝~ √2Aθである。θの範囲を−θmax ＜＝ θ ＜＝ θmaxとすればA ＝1/(√2θmax)と選ぶことにより−1 ＜＝ sjz ＜＝ 1が満たされる。偏波変調器1112はsjz＋ ＝ Asin(π/4＋θ), |sjz−| ＝ Acos(π/4＋θ)におけるθを変調する。偏波変調された光は偏光分離器1113により偏波分離され、分波器1115に導かれる。分波器1115から検出器1130までは図１１と同様な動作である。検出器1130は図１１と同様に２つ一組の動作なので差動アンプ1131で差信号を取ってbjz ＝ ΣiJijsizとする。その後制御部1100に信号を送り実施例９の場合と同様に信号処理がなされ、１ステップ進んだ信号が偏波変調器1112に送られ次のステップに進む。【０１１２】
本実施例ではθ ＜＜ 1とすることによりsjz ＝ √2Asinθをsjz ＝~ √2Aθとした。ここでθ ＝ arcsinφとすればθ ＜＜ 1の条件を課すことなくsjz ＝ √2Aφとなる。即ち、偏波変調器1112への入力信号の調整により線形性を維持することが可能である。また、実施例２においてt ＝ 0からt ＝ τへの時間変化に伴いrBがrB ＝ 1からrB ＝~ 0に移行することを述べた。この場合にはθ ＝ arcsinφの関数形をさらに変形することになる。
【実施例１２】
【０１１３】
局所場応答演算装置1000は、実施例９〜１１のような光を利用した方法だけでなく電気回路により実現することも可能である。【０１１４】
図１３にその場合の構成例を示す。各スピンsizの情報はバッファアレイ1210に一時待機する。メモリ1221にはJijの情報が保持される。式(12B)対応の場合のgpinbは1221で保持し、Jii = gpinbとする。演算器1220ではバッファアレイ1210に待機しているsizの情報とメモリ1221のJijの情報に基づきbjz ＝ ΣiJijsizが順次計算され、バッファアレイ1230に転送、保存される。その後制御部1200に信号が転送され、実施例９での制御部1100と同様な信号処理が為されて１ステップ進んだsizの情報がバッファアレイ1210に送られる。これが１ステップ分の処理であり、この処理がt ＝ t0からt ＝ τまで繰り返される。【０１１５】
sizは連続量なのでバッファアレイ1210と1230の各sizに対するセルは多ビットで構成し、擬似的な連続量とする。【０１１６】
本発明における温度の影響は以下のように見積もられる。ビット操作はLED (LD)アレイ1110や偏波変調器1112、バッファアレイ1210及び1230で行われる。ビット反転に必要な電圧は１Vのオーダーである。eを素電荷、kBをボルツマン定数とすれば換算温度はT ＝ eV/kBによりT ＝~ 1.2×104 Kである。この値は室温の300 Kに比べて十分に大きく、実施例９〜１２のような構成では温度の影響が無視でき、室温で動作させることができる。【０１１７】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【産業上の利用可能性】
【０１１８】
例えば全数探索を必要とするような課題を処理するための、計算機分野に利用可能である。
【符号の説明】
【０１１９】
100  手順
201  主記憶装置
202  演算装置
203  制御装置
204  補助記憶装置
205  入力装置
206  出力装置
1000  局所場応答演算装置
1100  制御部
1110  LED (LD)アレイ
1111  LD
1112  偏波変調器
1113  偏光分離器
1115  分波器
1120  可変マスク（可変減衰器）
1125  合波器
1130  検出器アレイ
1131  差動増幅器
1200  制御部
1210  バッファアレイ
1220  演算部
1221  メモリ
1230  バッファアレイ
【図１】
2016157333.tif 000016
【図２】
2016157333.tif 000017
【図３】
2016157333.tif 000018
【図４Ａ】
2016157333.tif 000019
【図４Ｂ】
2016157333.tif 000020
【図４Ｃ】
2016157333.tif 000021
【図４Ｄ】
2016157333.tif 000022
【図５Ａ】
2016157333.tif 000023
【図５Ｂ】
2016157333.tif 000024
【図５Ｃ】
2016157333.tif 000025
【図５Ｄ】
2016157333.tif 000026
【図６Ａ】
2016157333.tif 000027
【図６Ｂ】
2016157333.tif 000028
【図６Ｃ】
2016157333.tif 000029
【図６Ｄ】
2016157333.tif 000030
【図７】
2016157333.tif 000031
【図８】
2016157333.tif 000032
【図９】
2016157333.tif 000033
【図１０】
2016157333.tif 000034
【図１１】
2016157333.tif 000035
【図１２】
2016157333.tif 000036
【図１３】
2016157333.tif 000037
【国際調査報告】
2016157333.tif 000038
2016157333.tif 000039