(57)【要約】  全数探索を必要とするような課題に対して、量子コヒーレンスや極低温冷却装置を必要としない計算機、及び演算プログラムを提供する。  熱力学を拠り所に古典的手法で実現し、変数としてのスピンsjを局所的な有効磁場Bjに追従させることにより、問題設定系の基底状態に系を導く。その基底状態が解である。手順100に示すように、t = 0において全サイトで右向きに有効磁場Bjが印加され、全スピンsjが右向きに初期化される。時間tの経過に従い、徐々にz軸方向の磁場とスピン間相互作用が加えられ、最終的にスピンは+z方向あるいは-z方向となってスピンsjのz成分がsjz = +1あるいは-1となる。  また、スピンsjの向きを有効磁場Bj方向に追従させる際に量子力学的効果を起源とする補正パラメタを導入して計算性能を向上させる。
2015118639.tif 000002
【特許請求の範囲】
【請求項１】
演算部、記憶部、制御部を具備し、前記制御部の制御により、前記記憶部と前記演算部との間でデータをやり取りしながら演算を行う計算機であって、
N個の変数sj (j = 1, 2, …, N)が-1 ≦ sj ≦ 1の値域を取り、局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によって課題の設定がなされ、sj = -1 or 1が最終解となるもので、
時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0で初期値sj(t0) = 0、各時刻tkにおける変数sj(tk)の値はBj(tk) = (ΣiJijsi(tk-1) + gj)tk/tmにより定め、 sj(tk)の値域が-1 ≦ sj(tk) ≦ 1になるように関数fを定めてsj(tk) = f(Bj(tk) , tk)とし、
時刻ステップをt = t0からt = tmに進めるにつれてsjを-1あるいは1に近づけ、最終的にsj < 0ならばsj = -1、sj > 0ならばsj = 1として解を定める、
ことを特徴とする計算機。
【請求項２】
前記Bj(tk)に対してある比例定数γを用いてtanθ = Bj(tk)/γあるいはtanθ = Bj(tk)/{γ(1- tk/tm)}を定義し、当該θを用いて前記sj(tk)をsj(tk) = sinθによって定め、前記関数fをf(Bj(tk) , tk) = f(Bj(tk)) = sin(arctan(Bj(tk)/γ)) あるいはf(Bj(tk) , tk) = sin(arctan(Bj(tk)/{γ(1- tk/tm)}))とする、
ことを特徴とする請求項１記載の計算機。
【請求項３】
前記演算部は、断熱演算装置を具備し、各時刻tkにおける前記変数sj(tk)の値を求める演算を前記断熱演算装置で実施する、
ことを特徴とする請求項１記載の計算機。
【請求項４】
前記関数fに補正パラメタrs及びrBを追加し、前記関数fをf(Bj(tk)) = rs・sin(arctan(rB・Bj(tk)/γ))あるいはf(Bj(tk) , tk) = rs・sin(arctan(rB・Bj(tk)/{γ(1- tk/tm)}))とするもので、tanθ = rB・Bj(tk)/γあるいはtanθ = rB・Bj(tk)/{γ(1- tk/tm)}によりθを定義し、当該θを用いて前記sj(tk)をsj(tk) = rs・sinθにより決定する、
ことを特徴とする請求項２記載の計算機。
【請求項５】
前記補正パラメタrs及びrBを、前記tk、及び前記Bj(tk)に依存させる、
ことを特徴とする請求項４記載の計算機。
【請求項６】
前記時刻tk各々おいてsj(tk) < 0ならばsjzd(tk) = -1、sj(tk) > 0ならばsjzd(tk) = 1としてH(tk) = - Σi>jJijsizd(tk)sjzd(tk) - Σjgjsjzd(tk)を各時刻tkにおいて計算し、H(tk)が最小値となった時刻tkにおけるsjzd(tk)を最終解とする、
ことを特徴とする請求項１記載の計算機。
【請求項７】
演算部、記憶部、制御部を具備し、前記制御部の制御により、前記記憶部と前記演算部との間でデータをやり取りしながら、演算を行う計算機であって、
N個のベクトル変数sj (j = 1, 2, …, N, |sj| = 1)を使い、局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によって課題の設定がなされ、sjのz成分がsjz = -1 or 1として最終解となるもので、
時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0でsjのx成分が初期値としてsjx(t0) = 1を取り, z成分がsjz(t0) = 0を取り、各時刻tkにおける変数sjz(tk)の値はγをある定数として、Bjx(tk) = γ(1-tk/tm)及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により、あるいはBjx(tk) = γ及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により定め、 ベクトル変数sj(tk)が|sj(tk)| = 1になるように関数f1及びf2を定めてsjz(tk) = f1(Bjx(tk),Bjz(tk))、sjx(tk) = f2(Bjx(tk),Bjz(tk))とし、時刻ステップをt = t0からt = tmに進めるにつれてsjzを-1あるいは1に近づけ、最終的にsjz < 0ならばsjzd = -1、sjz > 0ならばsjzd = 1として解を定める、
ことを特徴とする計算機。
【請求項８】
補正パラメタrsを追加し、前記ベクトル変数sj(tk)が|sj(tk)| = rsとなるように関数f1及びf2を定める、
ことを特徴とする請求項７記載の計算機。
【請求項９】
前記補正パラメタrsを前記tk, 前記Bjz(tk), 及び前記Bjx(tk)に依存させる、
ことを特徴とする請求項８記載の計算機。
【請求項１０】
前記時刻tk各々においてsjz(tk) < 0ならばsjzd(tk) = -1、sjz(tk) > 0ならばsjzd(tk) = 1としてH(tk) = - Σi>jJijsizd(tk)sjzd(tk) - Σjgjsjzd(tk)を各時刻tkにおいて計算し、H(tk)が最小値となった時刻tkにおけるsjzd(tk)を最終解とする、
ことを特徴とする請求項７記載の計算機。
【請求項１１】
演算部で実行される演算プログラムであって、
N個の変数sj (j = 1, 2, …, N)が-1 ≦ sj ≦ 1の値域を取り、課題の設定は局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によってなされ、sj = -1 or 1を最終解とするものであり、
時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算し、
t = t0で初期値としてsj(t0) = 0を取り、各時刻tkにおける変数sj(tk)の値はBj(tk) = (ΣiJijsi(tk-1) + gj)tk/tmにより定め、 
sj(tk)の値域が-1 ≦ sj(tk) ≦ 1になるように関数fを定めてsj(tk) = f(Bj(tk), tk)とし、
時刻ステップをt = t0からt = tmに進めるにつれてsjを-1あるいは1に近づけ、最終的にsj < 0ならばsj = -1、sj > 0ならばsj = 1として解を定める、ように演算を実行させる、
ことを特徴とする演算プログラム。
【請求項１２】
前記Bj(tk)に対してある比例定数γを用いてtanθ = Bj(tk)/ γあるいはtanθ = Bj(tk)/{γ(1- tk/tm)}を定義し、このθを用いて前記sj(tk)をsj(tk) = sinθによって定めることとし、
前記関数fをf(Bj(tk) , tk) = f(Bj(tk)) = sin(arctan(Bj(tk)/γ))あるいはf(Bj(tk) , tk) = sin(arctan(Bj(tk)/{γ(1- tk/tm)}))として、演算を実行させる、
ことを特徴とする請求項１１記載の演算プログラム。
【請求項１３】
前記関数fに補正パラメタrs及びrBを追加し、前記関数fをf(Bj(tk)) = rs・sin(arctan(rB・Bj(tk)/γ))あるいはf(Bj(tk) , tk) = rs・sin(arctan(rB・Bj(tk)/{γ(1- tk/tm)}))とするもので、tanθ = rB・Bj(tk)/γあるいはtanθ = rB・Bj(tk)/{γ(1- tk/tm)}によりθを定義し、当該θを用いて前記sj(tk)をsj(tk) = rs・sinθにより決定して、演算を実行させる、
ことを特徴とする請求項１２記載の演算プログラム。
【請求項１４】
前記補正パラメタrs及びrBを、前記tk,、及び前記Bj(tk)に依存させて、演算を実行させる、
ことを特徴とする請求項１３記載の演算プログラム。
【請求項１５】
前記時刻tk 各々においてsj(tk) < 0ならばsjzd(tk) = -1、sj(tk) > 0ならばsjzd(tk) = 1としてH(tk) = - Σi>jJijsizd(tk)sjzd(tk) - Σj gjsjzd(tk)を各時刻tkにおいて計算し、H(tk)が最小値となった時刻tkにおけるsjzd(tk)を最終解とする、ように演算を実行させる、
ことを特徴とする請求項１１記載の演算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全数探索を必要とするような逆問題に対して高速演算を可能にする計算機に関するものである。
【背景技術】
【０００２】
ビッグデータといった言葉に代表されるように現代はデータが溢れている。この巨大データを如何に解析し、如何に扱うかは今後の情報科学の社会科学的な最重要課題である。ビッグデータは一般に何らかの現象の結果である。従って、ビッグデータの解析とは結果から原因を探索するある種の逆問題になっている場合が多い。コンピュータは規則的処理を行うもので、初期値が与えられればアルゴリズムに基づいて単純に計算する。しかし、結果から初期値を求めるような問題に対しては一般に効率的なアルゴリズムはなく、最悪の場合は初期値に関して全数探索しなければならない。従って、全数探索を必要とする問題を効率的に解けるコンピュータがあれば極めて有用である。【０００３】
全数探索問題に対しては量子コンピュータへの期待が大きい。量子コンピュータは量子ビットと呼ばれる基本素子からなり“0”と“1”を同時に実現する。そのためすべての解候補を初期値として同時に計算可能で、まさに全数探索を実現しうる可能性を持っている。しかし、量子コンピュータは全計算時間に亘って量子コヒーレンスを維持する必要があり、これを実現する目処は立っていない。【０００４】
こういった中で注目されるようになってきたのが断熱量子計算と呼ばれる手法である（非特許文献１）。これは問題の解が系の基底状態になるようにハミルトニアンH^pを設定し、それとは別に基底状態が明確で準備しやすい別のハミルトニアンH^0を設定し、計算系の状態をまずH^0の基底状態に準備し、十分に時間を掛けてハミルトニアンをH^0からH^pに移行させるものである。十分にゆっくりと移行すれば系は基底状態に居続けることが可能で、その原理で解を得る仕組みである。以上の計算原理は計算時間をτとして式(2)のハミルトニアンを利用して式(1)のシュレディンガー方程式により記述することができる。【０００５】
【数１】
2015118639.tif 000003
【０００６】
【数２】
2015118639.tif 000004
【０００７】
断熱量子計算は全数探索を必要とする問題に対しても適用可能で、一方向性の過程で解に到達する。しかし、計算過程が式(1)のシュレディンガー方程式に従う必要があるならば量子コンピュータと同様に量子コヒーレンスの維持が必要になる。但し、量子コンピュータが1 量子ビットあるいは2 量子ビット間に対するゲート操作を繰り返すものであるのに対して、断熱量子計算は量子ビット系全体を一斉に相互作用させるものであり、コヒーレンスの考え方が異なる。例えば、ある量子ビットへのゲート動作を考えてみる。この時もしその量子ビットと他の量子ビットとで相互作用があればそれはディコヒーレンスの原因になるが、断熱量子計算ではすべての量子ビットを同時に相互作用させるので、この例のような場合にはディコヒーレンスにならない。この違いを反映して断熱量子計算は量子コンピュータに比べてディコヒーレンスに対して頑強であると考えられている。【０００８】
しかし、断熱量子計算にも課題がある。ディコヒーレンスに関して量子コンピュータと比べて頑強になったとしても演算過程が式(1)のシュレディンガー方程式に従うならばやはり十分なコヒーレンスが必要である。また断熱量子計算を実現しうる系が超伝導磁束量子ビット系であるのも課題になる（特許文献１、非特許文献２）。なぜなら、超伝導を用いる場合には極低温冷却装置を必要とするからである。極低温を必要とすることは実用的なコンピュータ実現のためには課題になる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表2009-524857
【非特許文献】
【００１０】
【非特許文献１】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).
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以上述べたように、断熱量子計算は全数探索を必要とするような難問に対して有効であるが、依然として量子コヒーレンスを必要とし、また超伝導磁束量子ビットを用いる場合には極低温冷却装置も必要である。これら２つの必要条件を無くし、実用的な計算機を提供することが解決すべき真の課題である。【００１２】
本発明の目的は、上記の課題を解決し、量子コヒーレンスや極低温冷却装置を必要としない計算機、及び演算プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明においては、上記の目的を達成するため、演算部、記憶部、制御部を具備し、制御部の制御により、記憶部と演算部との間でデータをやり取りしながら演算を行う計算機であって、N個の変数sj (j = 1, 2, …, N)が-1 ≦ sj ≦ 1の値域を取り、局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によって課題の設定がなされ、sj = -1 or 1が最終解となるものであり、時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0で初期値sj(t0) = 0、各時刻tkにおける変数sj(tk)の値はBj(tk) = (ΣiJijsi(tk-1) + gj)tk/tmにより定め、 sj(tk)の値域が-1 ≦ sj(tk) ≦ 1になるように関数fを定めてsj(tk) = f(Bj(tk) , tk)とし、時刻ステップをt = t0からt = tmに進めるにつれてsjを-1あるいは1に近づけ、最終的にsj < 0ならばsj = -1、sj > 0ならばsj = 1として解を定める構成の計算機を提供する。【００１４】
また、本発明においては、上記の目的を達成するため、演算部、記憶部、制御部を具備し、制御部の制御により、記憶部と演算部との間でデータをやり取りしながら、演算を行う計算機であって、N個のベクトル変数sj (j = 1, 2, …, N, |sj| = 1)を使い、局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によって課題の設定がなされ、sjのz成分がsjz = -1 or 1として最終解となるものであり、時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0でsjのx成分が初期値としてsjx(t0) = 1を取り, z成分がsjz(t0) = 0を取り、各時刻tkにおける変数sjz(tk)の値はγをある定数として、Bjx(tk) = γ(1-tk/tm)及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により、あるいはBjx(tk) = γ及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により定め、 ベクトル変数sj(tk)が|sj(tk)| = 1あるいは|sj(tk)| < 1になるように関数f1及びf2を定めてsjz(tk) = f1(Bjx(tk),Bjz(tk))、sjx(tk) = f2(Bjx(tk),Bjz(tk))とし、時刻ステップをt = t0からt = tmに進めるにつれてsjzを-1あるいは1に近づけ、最終的にsjz < 0ならばsjzd = -1、sjz > 0ならばsjzd = 1として解を定める構成の計算機を提供する。【００１５】
更に、本発明においては、上記の目的を達成するため、演算部で実行される演算プログラムであって、N個の変数sj (j = 1, 2, …, N)が-1 ≦ sj ≦ 1の値域を取り、課題の設定は局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によってなされ、sj = -1 or 1を最終解とするものであり、時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算し、t = t0で初期値としてsj(t0) = 0を取り、各時刻tkにおける変数sj(tk)の値はBj(tk) = (ΣiJijsi(tk-1) + gj)tk/tmにより定め、 sj(tk)の値域が-1 ≦ sj(tk) ≦ 1になるように関数fを定めてsj(tk) = f(Bj(tk), tk)とし、時刻ステップをt = t0からt = tmに進めるにつれてsjを-1あるいは1に近づけ、最終的にsj < 0ならばsj = -1、sj > 0ならばsj = 1として解を定める、よう実行させる演算プログラムを提供する。
【発明の効果】
【００１６】
演算系として古典系も利用できるようになり、量子コヒーレンスを考慮する必要がなくなり使用可能なリソースが広範囲になる。ビットに関するエネルギースケールを温度のエネルギースケールよりも十分に大きくすれば擬似的に絶対零度とみなすことができ、極低温装置のような特殊装置・特殊環境が不要になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の原理のアルゴリズムを説明する模式図である。
【図２】実施例１に係る、アルゴリズムのフローチャートの一例を示す図である。
【図３】実施例２に係る、アルゴリズムのフローチャートの一例を示す図である。
【図４Ａ】実施例３に係る、アルゴリズムにおける最終な解決定法に関するフローチャートの一例を示す図である。
【図４Ｂ】実施例３に係る、最終な解決定法に関するフローチャートの他の例を示す図である。
【図４Ｃ】実施例３に係る、最終な解決定法に関するフローチャートの他の例を示す図である。
【図４Ｄ】実施例３に係る、最終な解決定法に関するフローチャートの他の例を示す図である。
【図５】実施例６に係る、計算機の一構成例を示す図である。
【図６】実施例６に係る、計算機の他の構成例を示す図でえある。
【図７】実施例７に係る、計算機に含まれる断熱演算装置の一構成例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面に従い本発明の演算の原理も交えて、各種の実施例を説明する。
【００１９】
絶対零度では基底状態が熱平衡状態である。熱平衡状態から熱平衡状態へは準静的過程で熱力学的に移行できる。従って、絶対零度における基底状態から基底状態への移行は量子系だけでなく古典系でも許された過程である。そこで、計算機を古典的アルゴリズムに基づき動作させることとし、準静的過程（断熱過程）を通してあるハミルトニアンの基底状態から、問題を反映したハミルトニアンの基底状態に導く。本発明においては、この準静的過程は、変数としてのスピンを局所的な有効磁場に追従させることで実現する。本発明におけるスピン及び有効磁場は古典量であるが、スピンの向きの有効磁場方向への追従に関して、量子力学的効果を起源とする補正パラメタを導入して計算性能を向上させる。尚、熱力学における準静的過程は力学系では慣習的に断熱過程と呼ばれる。そのため本明細書では、「準静的」と「断熱」は同義で用いる。
【００２０】
上述のように絶対零度では古典系においても基底状態から基底状態への準静的過程が可能である。この性質を拠り所にして、以下の実施例では解としての基底状態を得る古典的アルゴリズムと、それを実現するための装置に関して述べる。
【実施例１】
【００２１】
実施例１では、量子力学的な記述から出発して古典的な形式に移行することを通して本発明の原理を述べる。シュレディンガー方程式により記述される量子系は温度に関するパラメタを含まず純粋状態と呼ばれる状態であり、温度の観点から言い換えればシュレディンガー方程式は絶対零度における状態を記述していると言える。従って、以下の記述は基本的に絶対零度におけるものである。【００２２】
式(3)で与えられるイジングスピン・ハミルトニアンの基底状態探索問題はNP困難と呼ばれる分類に属し、有用な問題であることが知られている（非特許文献３）。【００２３】
【数３】
2015118639.tif 000005
【００２４】
Jij及びgjが課題設定パラメタであり、σ^jzはパウリのスピン行列のz成分で±1の固有値を取る。i, jはスピンのサイトを表す。イジングスピンとは値として±1だけを取りうる変数のことで、式(3)ではσ^jzの固有値が±1であることによりイジングスピン系となっている。式(3)のイジングスピンは文字通りのスピンである必要はなく、ハミルトニアンが式(3)で記述されるのであれば、物理的には何でも良い。例えば、光の偏波を考え、縦偏波と横偏波を±1に対応付けることも可能である。あるいは実施例７で述べるように光の位相を使うことも可能である。本実施例の断熱計算では断熱量子計算と同様に時刻t = 0において式(4)で与えられるハミルトニアンの基底状態に演算系を準備する。【００２５】
【数４】
2015118639.tif 000006
【００２６】
γは全サイトjに一様に掛かる外場の大きさで決まる比例定数であり、σ^jxはパウリのスピン行列のx成分である。演算系がスピンそのものであれば外場とは磁場を意味する。式(4)は横磁場を印加したことに相当し、すべてのスピンがx方向を向いた場合(γ>0)が基底状態である。問題設定のハミルトニアンはz成分のみのイジングスピン系として定義されたが、式(4)にはスピンのx成分が登場している。従って、演算過程でのスピンはイジングではなくベクトル的（ブロッホベクトル）である。t = 0では式(4)のハミルトニアンでスタートしたが、時刻tの進行と共に徐々に変化し、最終的には式(3)で記述されるハミルトニアンになりその基底状態が解になる。【００２７】
スピンが外場に対してどのように応答するかを１スピン系の場合にまず考察する。１スピン系のハミルトニアンは式(5)で与えられる。【００２８】
【数５】
2015118639.tif 000007
【００２９】
ここでσ^はパウリのスピン行列の３成分をベクトルとして表示している。基底状態はスピンが磁場方向を向いた場合で、<・>を量子力学的期待値として<σ^> = B/|B|と書ける。断熱過程では常に基底状態を維持しようとするのでスピンの向きは常に磁場の向きに追従する。【００３０】
以上の議論は多スピン系にも拡張できる。t = 0ではハミルトニアンが式(4)で与えられる。これは全スピンに対して一様に磁場Bjx =γが印加されたことを意味する。t > 0では磁場のx成分が徐々に弱まりBjx = γ(1-t/τ)である。z成分に関してはスピン間相互作用があるために有効磁場としては式(6)になる。【００３１】
【数６】
2015118639.tif 000008
【００３２】
スピンの向きは<σ^jz>/<σ^jx>で規定できるので、スピンの向きが磁場に追従するならば式(7)によりスピンの向きが定まる。言い替えるなら、変数としてのスピンを局所的な有効磁場に追従させることにより演算する。【００３３】
【数７】
2015118639.tif 000009
【００３４】
式(7)は量子力学的記述であるが期待値を取っているので、式(1) - (6)とは異なり古典量に関する関係式である。【００３５】
以上の原理を利用すれば図１のタイミングチャートで示す手順１００により課題を設定したハミルトニアンの基底状態にスピン系を導くことができる。図１の記述は古典量に関するものなのでサイト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におけるスピンの向きを求める。【００３８】
【数８】
2015118639.tif 000010
【００３９】
なお、式(8)は式(7)を古典量に関する表記に書き改めたものなので<・>の記号が付いていない。【００４０】
次に、t = tk+1の有効磁場をt = tkにおけるスピンの値を用いて求める。各時刻の有効磁場を具体的に書けば式(9)及び(10)となる。【００４１】
【数９】
2015118639.tif 000011
【００４２】
【数１０】
2015118639.tif 000012
【００４３】
以下、図１の手順100で模式的に示した手順に従い、スピンと有効磁場を交互に求めていく。【００４４】
式(8)に基づき各スピンのx,z成分を求める過程では、スピンベクトルが大きさ１であることを利用する。tanθ = Bjz(tk)/Bjx(tk)によりθを求めてsjz(tk) = sinθ、sjx(tk) = cosθとする。これはθを介してBjz(tk)及びBjx(tk)からsjz及びsjxを求める関数になっており、sjz(tk) = f1(Bjz(tk),Bjx(tk))、及びsjx = f2(Bjz(tk),Bjx(tk))と表記することもできる。f1, f2の値域は[-1, 1]である。f1を具体的に記せばf1(Bjz(tk),Bjx(tk)) = sin(arctan(Bjz(tk)/ Bjx(tk)))である。【００４５】
ここで、Bjx(tk)に対して式(9)を用いればtanθ = Bjz(tk)/{γ(1- tk/tm)}であり、関数f1は f1(Bjz(tk),Bjx(tk)) = sjz(tk) = sin(arctan(Bjz(tk)/{γ(1- tk/tm)}))≡ f(Bjz(tk), tk)となって、Bjz(tk)及びtkの値のみでsjz(tk)が求まる。有効磁場のx成分とスピンのx成分、即ち、Bjx(tk)及びsjx(tk)を求める必要がなくなる。この簡略性は演算装置を簡略化すると共に計算スピードを向上させる。最終的な解はsjzdと表記してsjzd = -1 or 1になる必要があり、sjz(τ) > 0ならばsjzd = 1、sjz(τ) < 0ならばsjzd = -1とする。【００４６】
断熱計算法ではx軸方向の外場は時間の経過と共に縮小し、t = τでなくなることを想定している。しかし、t = τで|Bjz(τ)| >> |Bjx(τ)|が成り立つならばBjx(tk)を一定に保って図１の手順１００を進めても良い。この場合簡略化がさらに可能で、f1(Bjz(tk),Bjx(tk)) -= sjz(tk) = sin(arctan(Bjz(tk)/γ)) ≡ f(Bjz(tk))となって計算がさらに簡単になる。【００４７】
以上をまとめると、tanθ = Bjz(tk)/{γ(1- tk/tm)}あるいはtanθ = Bjz(tk)/γとすれば、関数f1をf1(Bjz(tk),Bjx(tk)) = f(Bjz(tk) , tk) = sin(arctan(Bjz(tk)/{γ(1- tk/tm)})) あるいはf1(Bjz(tk),Bjx(tk)) = f(Bjz(tk)) = sin(arctan(Bjz(tk)/γ))と記述できる。【００４８】
図２に、以上説明した実施例１のアルゴリズムをフローチャートにまとめたものを示す。ここでtm =τである。図２のフローチャートの各ステップ101~109は、図1の手順100の時間t = 0からt = τに到る経過に順次対応している。すなわち、フローチャートのステップ102、104、106がそれぞれ、t = 1, tk+1, tmにおける上記の式(9)及び(10)に対応している。そして、最終的なステップ108において、sj < 0ならばsj = -1、sj > 0ならばsj = 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)>のθを利用してスピンベクトルの大きさが１になるように補正して古典的アルゴリズムを実現していた。しかし、この方法ではスピンベクトルの大きさが保存するとの古典的条件を満足する代わりにこの系が本来持っている量子縺れの性質を反映したものにはなっていない。そこで量子縺れの性質を一部反映させる方法を考える。【００５８】
上述のようにスピンベクトルは１に保存しない。そこでスピンの大きさを表す補正パラメタrs (0 ≦ rs ≦1)を定義する。またスピンベクトルが１に保存しないことを反映して式(8)の比例関係が成り立たなくなる。そこで補正パラメタrBを定義して式(8)を式(11)に変形する。【００５９】
【数１１】
2015118639.tif 000013
【００６０】
実施例１の場合と同様にスピンの向きを表す角度θをtanθ = sjz(tk)/sjx(tk)で定義する。これに式(11)を適用すればtanθ = rB・Bjz(tk)/Bjx(tk)である。スピンの大きさがrsであることを考慮すればsjz(tk) = rssinθ、sjx(tk) = rscosθとなる。これらの関係式により補正パラメタrs及びrBを通して量子縺れの効果が古典的なアルゴリズムに取り込まれる。f1の表記に直せばf1(Bjz(tk),Bjx(tk)) = rs・sin(arctan(rB・Bjz(tk)/ Bjx(tk)))である。【００６１】
すなわち、本実施例においては、補正パラメタrs及びrBを追加し、tanθ = rB・Bj(tk)/γあるいはtanθ = rB・Bj(tk)/{γ(1- tk/tm)}によりθを定義し、当該θを用いてsj(tk)をsj(tk) = rs・sinθにより決定する。関数fとしてはf(Bj(tk)) = rs・sin(arctan(rB・Bj(tk)/γ))あるいはf(Bj(tk) , tk) = rs・sin(arctan(rB・Bj(tk)/{γ(1- tk/tm)}))である。【００６２】
この補正パラメタrs及びrBは量子縺れを起源としており、tk, sjz(tk), sjx(tk)に依存して細かく制御されることが好ましい。しかし、実際の演算では正確に制御するための量子縺れに関する情報が十分に分かっているわけではない。これは原理的に困難なことであり何らかの対処法を考える必要がある。最も単純な方法は補正パラメタrs及びrBを定数で運用することである。大きさは経験的に決めることになるが定数で運用する場合は僅かな補正になるので、rs = 0.9、rB = 0.9程度がひとつの目安である。但し、補正パラメタrsとrBの最適値はJijと局所場gjの値の範囲や分布に依存するため、Jijと局所場gjが確定した時点で補正パラメタrs及びrBを決定することが好ましい。上記の目安rs = 0.9、rB = 0.9程度は１以下であったが、Jijと局所場gjの値の範囲や分布によっては補正パラメタrsやrBの最適値が１以上になる場合もある。また、演算をきめ細かく制御するためには両パラメタを利用することが好ましいが、演算の簡単化のために一方のパラメタを１に固定化し、もう一方のパラメタだけを利用しても効果はある。【００６３】
演算過程はsjx = 1で開始し、sjz = ±1で終了する。従って開始時と終了時は量子縺れになっていない。量子縺れになっているのは演算の中間段階である。これを反映して演算の開始時と終了時はrs = 1及びrB = 1とし、演算の進行と共に両者を徐々に小さく（大きく）し、その後は逆に徐々に大きく（小さく）して最終的にrs = 1、rB = 1に戻すことも有効である。【００６４】
サイト間の特徴が特別にない場合は補正パラメタrsやrBにサイト依存性を持たせないが、サイト別の特徴が事前にわかっている場合にはそれに対応して補正パラメタrsやrBをサイト依存にすることも有効である。【００６５】
図３にrs及びrBを導入した場合のフローチャートを示した。図２のフローチャートとの違いは、ステップ１０３、１０５、１０７がそれぞれ補正パラメタrsやrBを含むステップ１１０、１１１、１１２に変更された点にある。
【実施例３】
【００６６】
上述した式(2)等に見るように、演算時間はτを想定しているが、最終的な解の決定法にはいくつかの方法がある。実施例３として、解の各種決定方法を説明する。【００６７】
第１の方法は図４Ａに示すように、t =τ(t = tm)において（115）、sjz > 0ならばsjzd = 1、sjz < 0ならばsjzd = -1とするものである。図２及び図３の各実施例のフローチャートはこの場合を記述しており、解決定法のみに焦点を当てたフローチャートが図４Ａである。【００６８】
第２の方法は図４Ｂに示すように、sjzの収束性を見るもので、ある時刻tk以降ある十分な時間Δtの間のすべての時刻tLに対して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各々おいてsj(tk) < 0ならばsjzd(tk) = -1、sj(tk) > 0ならばsjzd(tk) = 1として（119）、H(tk) = - Σi>jJijsizd(tk)sjzd(tk) - Σjgjsjzd(tk)を各時刻tkにおいて計算し（123）、H(tk)が最小値となった時刻tkにおけるsjzd(tk)を最終解とする（124）。【００７１】
第４の方法は図４Ｄに示すように、第２の方法と同様にすべてのsjzが収束した段階で演算を打ち切る。但し、最終的な解は打ち切った時点でのsjzから判定するのではなく、第３の方法と同様に各時刻でのエネルギーを算出し、最低エネルギーを与えた時刻でのsjz(tk’)から最終的な解を決める（125）。いずれの方法を取るかは使用者が決めればよい。
【実施例４】
【００７２】
図１に見るように本発明では時間軸を離散的にして演算を実行する。準静的過程の原理に従えば時間間隔は細かい程よい。しかし、あまり細かく取りすぎると演算時間が長くなる。そこで演算の進行に合わせて時間間隔を変化させることもできる。演算過程で重要な時刻はsjzの符号が変化する時である。従って、符号の変化が少ない演算開始時と終了時近くは時間間隔を大きく設定しても問題ない。そこで第１の方法として、プログラム的に演算開始時には時間間隔を大きめにし、時間の経過と共に時間間隔を小さくし、その後逆に時間間隔を大きくしていく設定法がある。第２の方法は、まず大き目の時間間隔で演算を開始し、どれかひとつのスピンsjzの符号に変化があった時点で時間間隔を小さくし、別のスピンに符号反転があればさらに時間間隔を小さくすることを繰り返していくものである。この場合ある十分な時間の間に符号反転するスピンがなくなれば時間間隔を順次長くしていく。第３の方法は、まず大き目の時間間隔で演算を開始し、どれかひとつのスピン|sjz|が他のスピン比べて十分に小さくなった時点で時間間隔を小さくし、|sjz|が十分に大きくなった時点で時間間隔を大きな値に戻す。これを繰り返す。
【実施例５】
【００７３】
解に縮退がなく基底状態がひとつしかない場合は上記の実施例１−４の方法により演算可能であるが、解はひとつとは限らず２つ以上の解がある場合もある。即ち、縮退がある場合である。厳密な縮退ではなくエネルギー値がほとんど等しい擬縮退もある。このような場合には初期値に依存して異なる解になる場合がある。そこで、初期値をsjz = 0、sjx = 1とするのではなく、sjz ≠ 0の適当な値を初期値として演算を開始する方法もある。第１の方法は乱数で各sjzを決める。第２の方法は、まずsjz = 0を初期値として演算を行い解を得る。次にその解を符号反転して初期値とし、再度演算する。両演算結果のエネルギー値を比較して小さい値になった方を最終解にする。両結果のエネルギーが等しければ両者とも解とする。
【実施例６】
【００７４】
実施例１−５では演算原理及び演算アルゴリズムに関して説明した。実施例６では、このアルゴリズムをプログラムの実行で動作させる計算機の構成例を説明する。図５に本実施例の計算機構成の一例を示す。図５は通常の計算機と基本的に同じ構成で、記憶部である主記憶装置201から、演算部である演算装置202にデータを転送し、演算後、主記憶装置201にデータを返す。これを繰り返して演算を進める。その際の司令塔が制御部としての制御装置203である。本実施例の構成における演算は、図２や図３のフローに従い、時刻別、サイト別に演算装置202で実行する。【００７５】
演算装置202で実行されるプログラムは、記憶部である主記憶装置201に記憶する。主記憶装置201で記憶容量が足りない場合は、同じく記憶部である補助記憶装置204を利用する。データやプログラム等の入力には入力装置205を使用し、結果の出力には出力装置206を利用する。入力装置205はキーボードのような手入力装置の他、ネットワーク接続のためのインターフェースも含む。また、このインターフェースは出力装置も兼ねる。図５の構成ではアルゴリズムに関して、実施例１−５で説明したアルゴリズムを適用するが、装置そのものは通常の計算機を使う。通常の計算機はデジタル処理になっているので基本的にノイズはない。その意味で絶対零度の系になっている。【００７６】
一方、プログラムの実行で実現されるアルゴリズムだけでなく、図６に示すように、装置構成も含めて実施例１−５で説明した演算原理、アルゴリズムを利用する方法もある。図６に示す本実施例の計算機構成では、図５と比べて演算部として断熱演算装置1000が加わっている。断熱演算装置1000は、上述したアルゴリズムを実施するための専用演算部で、一般的な処理は演算装置202で実施し、実施例1−5で説明した断熱演算（準静的演算）に関してのみを断熱演算装置1000で行う。断熱演算装置1000で利用する情報は主記憶装置201から転送する。【００７７】
必要な情報とは変数間相互作用Jij, 局所場gjといった課題設定パラメタの他、時刻パラメタtkや、量子縺れに係わる補正パラメタrs及びrB等である。同期を取る等の処理は図５の構成の計算機と同様で制御装置203の役目である。断熱演算装置1000からは最終結果だけでなく途中経過の情報が必要に応じて時刻パラメタtkごとに制御装置203の指示に従い、主記憶装置201に転送される。演算の中間段階における断熱演算装置1000からの転送値は、例えば演算の中間段階でのイジングスピン・ハミルトニアンのエネルギー算出に利用する。【００７８】
実施例３で説明した第３及び第４の方法では、図４Ｃ、図４Ｄで示したように、このエネルギー値を使って最終的な解を判定する。sjzdが+1なのか-1なのかが決まっていればイジングスピン・ハミルトニアンのエネルギー値の計算は単純なものであり、通常の演算装置202を利用する。断熱演算装置1000は上述た断熱（準静的）過程専用の演算部でそれ以外の処理は通常の演算装置202を利用する。
【実施例７】
【００７９】
実施例６で説明した断熱演算装置1000はアクセラレータとして電気回路で実現することも可能であるが、sjzとして光の位相を使うことにより光学系で実現することも可能である。本実施例は、光学系で実現する断熱演算装置の実施例に係るものである。【００８０】
図７はビット数４の場合の、光学系で実現する断熱演算装置の構成を示すものであり、演算ブロック1100, 1200, 1300, 1400それぞれがひとつのビットを構成する。演算ブロック1100をビット１としてこれを例にして各ビットの動作を説明する。レーザー光源1101からの出力光は変調器を組み込んだマッハ・ツェンダー干渉計1104で位相変調を受けた後分配器1111及び1112に導かれる。分配器1111及び1112へ分配した光強度をI11及びI12としてs1z = (I11-I12)/(I11+I12)により-1 ≦ s1z ≦ 1となるスピンを表現する。I11及びI12への分配率は変調器1104により行う。変調器1104は２つの位相変調器からなり、一方の変調器の変調量をδθとすればもう一方は-δθとして両光路のバランスを取った上で合計で2δθの変調を行う。変調用の信号は信号源1102から出力される。t = t0では有効磁場は外場γだけなのでs1z = 0となるようにI11 = I12となる位相変調を行う。分配器1111及び1112では光信号が分割され、各分割信号のひとつずつが光検出器1141及び1142に導かれて受光される。受光された信号は差動アンプ1151により差信号となってt = t0でのスピン出力となる。分配器1111及び1112からの他の分割信号は他のスピンとの相互作用のために他のビット1200, 1300, 1400に導かれる。その際、変数間相互作用J1jの値に従い利得調整器1120において光強度が調整される。【００８１】
演算ブロック1100のビットにも、変数間相互作用Ji1に関する信号が他のビットから入力される。合波器1131及び1132で全ビットからの相互作用信号光が合波され、光検出器1143及び1144で受光され、差動アンプ1152により差信号になる。ここで差を取るのは他のビットからの相互作用信号がsjz = (Ij1-Ij2)/(Ij1+Ij2)だからである。尚、各ビットの波長はそれぞれ異なるものとし、任意の２つのレーザー光源の発振周波数をfi及びfjとして、演算のクロック周波数frとはfr << fj - fiの関係を満たすようにする。この条件は合波器1131及び1132における合波において光の干渉効果を無視できるようにするためのものである。差動アンプ1152からの出力信号は加算器1103で信号源1102からの信号に加算されて、有効磁場のz成分B1z(tk)を示す信号として変調器1104に導かれる。これにより時刻t = t0から時刻t = t1に移行する。この処理をt = tmまで繰り返す。【００８２】
本実施例の断熱演算装置の場合、変調器1104への入力が有効磁場のz成分B1z(tk)に対応し、差動アンプ1151からの出力がs1z(tk)に対応する。式(10)の第1項に含まれるtk+1, Jijに関する因子やrs及びrBの補正パラメタは利得調整器1120において調整される。式(10)の第２項に含まれる因子tk+1に関しては信号源1102で調整される。【００８３】
各時刻tkでのs1z(tk)は主記憶装置201に出力されてアルゴリズムに基づき解析に利用される。光の位相を利用した断熱演算装置1000の動作原理は以上であり、その他の通常の演算は主記憶装置201と演算装置202におけるデータのやり取りで実施される。【００８４】
本実施例における温度の影響は以下のように見積もられる。ビット操作は変調器1104で行われる。ビット反転に必要な変調器1104への印加電圧は例えば３Vである。eを素電荷、kBをボルツマン定数とすれば換算温度はT = eV/kBによりT = 3.5×104 Kである。この値は室温の300 Kに比べて十分に大きく、本実施例のような光学系では擬似的に絶対零度になっている。【００８５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。【００８６】
更に、本発明が適用される課題として、電力供給管理を例示して説明したが、設定される課題はこれに限定されるものではなく、例えば、旅行経路最適化、回路設計、商品供給管理、スケジューリング、金融資産選択等多くの課題に適用が可能である。【００８７】
上述した各構成、機能、処理部等は、それらの一部又は全部を実現するプログラムを利用し、演算部が実行する例を説明したが、それらの一部又は全部を例えば集積回路で設計する等によりハードウェアで実現しても良いことは言うまでもない。【００８８】
なお、実施例を説明した明細書の記載中には、特許請求の範囲に記載した発明のみならず、種々の発明が開示されている。それらの一部を列記すると下記のとおりである。
<記>
１）演算部で実行される演算プログラムであって、N個のベクトル変数sj (j = 1, 2, …, N, |sj| = 1)を使い、課題の設定は局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によってなされ、sjのz成分がsjz = -1 or 1として最終解となるもので、時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0でsjのx成分が初期値としてsjx(t0) = 1を取り, z成分がsjz(t0) = 0を取り、各時刻tkにおける変数sjz(tk)の値はγをある定数としてBjx(tk) = γ(1-tk/tm)及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により、あるいはBjx(tk) = γ及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により定め、 ベクトル変数sj(tk)が|sj(tk)| = 1になるように関数f1及びf2を定めてsjz(tk) = f1(Bjx(tk),Bjz(tk))、sjx(tk) = f2(Bjx(tk),Bjz(tk))とし、時刻ステップをt = t0からt = tmに進めるにつれてsjzを-1あるいは1に近づけ、最終的にsjz < 0ならばsjz = -1、sjz > 0ならばsjz = 1として解を定める、ように演算を実行させる、ことを特徴とする演算プログラム。
２）上記１記載の演算プログラムであって、補正パラメタrsを追加し、前記ベクトル変数sj(tk)が|sj(tk)| = rsとなるように関数f1及びf2を定める、ことを特徴とする演算プログラム。
３）上記２記載の演算プログラムであって、前記補正パラメタrsを前記tk, 前記Bjz(tk), 前記Bjx(tk))に依存させる、ことを特徴とする演算プログラム。
４）上記１記載の演算プログラムであって、各時刻tkにおいてsjz(tk) < 0ならばsjzd(tk) = -1、sjz(tk) > 0ならばsjzd(tk) = 1としてH(tk) = - Σi>jJijsizd(tk)sjzd(tk) - Σj gjsjzd(tk)を各時刻tkにおいて計算し、H(tk)が最小値となった時刻tkにおけるsjzd(tk)を最終解とする、ことを特徴とする演算プログラム。
５）演算部、記憶部、制御部を具備し、前記制御部の制御により、前記記憶部と前記演算部との間でデータをやり取りしながら、演算を行う計算機であって、
N個のベクトル変数sj (j = 1, 2, …, N, |sj| = 1)を使い、局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によって課題の設定がなされ、sjのz成分がsjz = -1 or 1として最終解となるもので、
時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0でsjのx成分が初期値としてsjx(t0) = 1を取り, z成分がsjz(t0) = 0を取り、各時刻tkにおける変数sjz(tk)の値はγをある定数として、Bjx(tk) = γ(1-tk/tm)及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により、あるいはBjx(tk) = γ及びBjz(tk) = (ΣiJijsiz(tk-1) + gj)tk/tm により定め、 ベクトル変数sj(tk)が|sj(tk)| = 1になるように関数f1及びf2を定めてsjz(tk) = f1(Bjx(tk),Bjz(tk))、sjx(tk) = f2(Bjx(tk),Bjz(tk))とし、時刻ステップをt = t0からt = tmに進めるにつれてsjzを-1あるいは1に近づけ、最終的にsjz < 0ならばsjzd = -1、sjz > 0ならばsjzd = 1として解を定め、
前記演算部は、断熱演算装置を具備し、各時刻tkにおける前記ベクトル変数sjz(tk)の値を求める演算を前記断熱演算装置で実施する、ことを特徴とする計算機。
６）演算部、記憶部、制御部を具備し、前記制御部の制御により、前記記憶部と前記演算部との間でデータをやり取りしながら演算を行う計算機であって、
N個の変数sj (j = 1, 2, …, N)が-1 ≦ sj ≦ 1の値域を取り、局所場gjと変数間相互作用Jij (i, j = 1, 2, …, N)によって課題の設定がなされ、sj = -1 or 1が最終解となるものであり、
時刻をm分割して離散的にt = t0 (t0 = 0)からtmまで演算するものとし、t = t0で初期値sj(t0) = 0、各時刻tkにおける変数sj(tk)の値はBj(tk) = (ΣiJijsi(tk-1) + gj)tk/tmにより定め、 sj(tk)の値域が-1 ≦ sj(tk) ≦ 1になるように関数fを定めてsj(tk) = f(Bj(tk) , tk)とし、
時刻ステップをt = t0からt = tmに進めるにつれてsjを-1あるいは1に近づけ、最終的にsj < 0ならばsj = -1、sj > 0ならばsj = 1として解を定め、
前記演算部は、断熱演算装置を具備し、各時刻tkにおける前記変数sj(tk)の値を求める演算を前記断熱演算装置で実施し、
前記断熱演算装置は、前記変数sj(tk)としてレーザ光の位相を用いる、ことを特徴とする計算機。
７）上記６記載の計算機であって、
前記断熱演算装置は、前記sj(tk) (j = 1, 2, …, N)に対応するＮ個の演算ブロックを含み、前記演算ブロック各々は、レーザ光源と、前記レーザ光源から出力されたレーザ光を前記Bj(tk)に基づき位相変調する変調器を含む、ことを特徴とする計算機。
【符号の説明】
【００８９】
100  手順
201  主記憶装置
202  演算装置
203  制御装置
204  補助記憶装置
205  入力装置
206  出力装置
1000  断熱演算装置
1100,1200,1300,1400  演算ブロック
1101  レーザー光源
1102  信号源
1103  加算器
1104  変調器
1111,1112  分配器
1120  利得調整器
1131,1132  合波器
1141,1142,1143,1144  光検出器
1151,1152  差動アンプ
【図１】
2015118639.tif 000014
【図２】
2015118639.tif 000015
【図３】
2015118639.tif 000016
【図４Ａ】
2015118639.tif 000017
【図４Ｂ】
2015118639.tif 000018
【図４Ｃ】
2015118639.tif 000019
【図４Ｄ】
2015118639.tif 000020
【図５】
2015118639.tif 000021
【図６】
2015118639.tif 000022
【図７】
2015118639.tif 000023
【手続補正書】
【提出日】平成28年6月30日(2016.6.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
【図１】本発明の原理のアルゴリズムを説明する模式図である。
【図２】実施例１に係る、アルゴリズムのフローチャートの一例を示す図である。
【図３】実施例２に係る、アルゴリズムのフローチャートの一例を示す図である。
【図４Ａ】実施例３に係る、アルゴリズムにおける最終な解決定法に関するフローチャートの一例を示す図である。
【図４Ｂ】実施例３に係る、最終な解決定法に関するフローチャートの他の例を示す図である。
【図４Ｃ】実施例３に係る、最終な解決定法に関するフローチャートの他の例を示す図である。
【図４Ｄ】実施例３に係る、最終な解決定法に関するフローチャートの他の例を示す図である。
【図５】実施例６に係る、計算機の一構成例を示す図である。
【図６】実施例６に係る、計算機の他の構成例を示す図である。
【図７】実施例７に係る、計算機に含まれる断熱演算装置の一構成例を示す図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
実施例３で説明した第３及び第４の方法では、図４Ｃ、図４Ｄで示したように、このエネルギー値を使って最終的な解を判定する。sjzdが+1なのか-1なのかが決まっていればイジングスピン・ハミルトニアンのエネルギー値の計算は単純なものであり、通常の演算装置202を利用する。断熱演算装置1000は上述した断熱（準静的）過程専用の演算部でそれ以外の処理は通常の演算装置202を利用する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
図７はビット数４の場合の、光学系で実現する断熱演算装置の構成を示すものであり、演算ブロック1100, 1200, 1300, 1400それぞれがひとつのビットを構成する。演算ブロック1100をビット１としてこれを例にして各ビットの動作を説明する。レーザー光源1101からの出力光は変調器を組み込んだマッハ・ツェンダー干渉計1104で位相変調を受けた後分配器1111及び1112に導かれる。分配器1111及び1112へ分配した光強度をI11及びI12としてs1z = (I11-I12)/(I11+I12)により-1 ≦ s1z ≦ 1となるスピンを表現する。I11及びI12への分配率は変調器1104により行う。変調器1104は２つの位相変調器からなり、一方の変調器の変調量をδθとすればもう一方は-δθとして両光路のバランスを取った上で合計で2δθの変調を行う。変調用の信号は信号源1102から出力される。t = t0では有効磁場は外場γだけなのでs1z = 0となるようにI11 = I12となる位相変調を行う。分配器1111及び1112では光信号が分割され、各分割信号のひとつずつが光検出器1141及び1142に導かれて受光される。受光された信号は差動アンプ1151により差信号となってt = t0でのスピン出力となる。分配器1111及び1112からの他の分割信号は他のスピンとの相互作用のために他のビット1200, 1300, 1400に導かれる。その際、変数間相互作用Jijの値に従い利得調整器1120において光強度が調整される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
演算ブロック1100のビットにも、変数間相互作用Jijに関する信号が他のビットから入力される。合波器1131及び1132で全ビットからの相互作用信号光が合波され、光検出器1143及び1144で受光され、差動アンプ1152により差信号になる。ここで差を取るのは他のビットからの相互作用信号がsjz = (Ij1-Ij2)/(Ij1+Ij2)だからである。尚、各ビットの波長はそれぞれ異なるものとし、任意の２つのレーザー光源の発振周波数をfi及びfjとして、演算のクロック周波数frとはfr << fj - fiの関係を満たすようにする。この条件は合波器1131及び1132における合波において光の干渉効果を無視できるようにするためのものである。差動アンプ1152からの出力信号は加算器1103で信号源1102からの信号に加算されて、有効磁場のz成分B1z(tk)を示す信号として変調器1104に導かれる。これにより時刻t = t0から時刻t = t1に移行する。この処理をt = tmまで繰り返す。
【国際調査報告】
2015118639.tif 000024
2015118639.tif 000025
2015118639.tif 000026