(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0030】
以下図面について、本発明の一実施の形態を詳述する。
【0031】
(1)第1の実施の形態
(1−1)有向グラフに拡張したイジングモデル
本実施の形態ではイジングモデルを拡張した、以下の式で示されるモデルを、これ以降イジングモデルと称する。
【0033】
(1)式で示したイジングモデルとの違いは、(3)式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することが出来る。それは、イジングモデルの相互作用は、i番目スピンからj番目スピンへの相互作用係数J
i,jとj番目スピンからi番目スピンへの相互作用係数J
j,iを区別していないことによる。
【0034】
本発明はイジングモデルを拡張し、J
i,jとJ
j,iを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にJ
i,jとJ
j,iの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも(1)式のエネルギー関数に対して(3)式のエネルギー関数ではエネルギーの値が2倍になる。
【0035】
(1−2)本発明の全体像
図1は、本発明によるイジングモデルの基底状態探索を行う処理の流れを示す。本発明は、任意のイジングモデルである原問題110の基底状態となるスピン配列である解170を得ることを目的としている。その際に、入力可能な係数の値の種類に制限のあるk個(1個以上)の制限付基底状態探索140−1〜140−kを用いて解170を得る。制限付基底状態探索140−1〜140−kは後述する情報処理装置200ないしは情報処理装置2500上で実現されるが、同時にk個の制限付基底状態探索を並行的に実行しても良いし、単一の制限付基底状態探査を繰り返しk回実行しても良い。
【0036】
本実施の形態では、制限付基底状態探索140−1〜140−kは、+1,0,−1の3値のみを相互作用係数及び外部磁場係数で利用可能なものして説明を行う。
【0037】
制限付基底状態探索140−1〜140−kを用いて原問題110の基底状態探索を行うために、副問題生成120で原問題110からk個(1個以上)の副問題130−1〜130−kを生成する。この副問題130−1〜130−kは制限付基底状態探索140〜1〜140−kの受け付ける相互作用係数及び外部磁場係数のみで構成される。本実施の形態では、具体的には副問題生成120は+1,0,−1の3値のみを相互作用係数及び外部磁場係数とした副問題130−1〜130−kを生成する。
【0038】
この副問題130−1〜130−kのそれぞれについて制限付基底状態探索140−1〜140−kで基底状態探索を行い、解候補150−1〜150−kを生成する。解候補150−1〜150−kは、それぞれ副問題130−1〜130−kにとっての解であり、原問題110の解の候補となるものである(そのため解候補という表記をしている)。
【0039】
なお、制限付基底状態探索140−1〜140−kが出力する解候補150−1〜150−kは、必ずしも副問題130−1〜130−kの大域最適解でなくとも良い。エネルギーを最小化する最良のスピン配列でなくとも、エネルギーが2番目や3番目に低いスピン配列、すなわち近似解であっても良い。本発明は制限付基底状態探索140−1〜140−kが近似解法であったとしても適用できる。
【0040】
得られた制限付基底状態探索140−1〜140−kにより得られた解候補130−1〜130−kから、原問題110の解170を解生成160で生成する。これにより、制限付基底状態探索140−1〜140−kを用いて原問題110の解170を得るという当初の目的を達成することが出来る。
【0041】
本発明は、
図2に示すような情報処理装置200を用いて実現される。この情報処理装置200は現在幅広く利用されているパーソナルコンピュータ(PC:Personal Computer)やワークステーション、サーバのようなものを考えてよく、CPU(Central Processing Unit)210、RAM(Random Access Memory)220、HDD(Hard Disk Drive)260及びNIC(Network Interface Card)240などの構成要素をシステムバス230で接続した形態を取っている。本実施の形態では、この情報処理装置200は、本発明の背景で述べたようなイジングモデルの基底状態探索を行う専用ハードウェアである基底状態探索アクセラレータ270を有するものとする。
【0042】
基底状態探索アクセラレータ270は、パーソナルコンピュータを例とすれば、画面描画処理のための専用ハードウェアであるGPU(Graphics Processing Unit)のように、情報処理装置200に装着する拡張カードの形態を取るものと考えてよい。
【0043】
基底状態探索アクセラレータ270は、例えば1個のイジングモデルの基底状態探索を行う専用のハードウェアであるイジングチップ280−1,280−2を1個ないしは複数個並べ、それらを制御し、ホスト側(CPU210)との仲介を行うイジングチップコントローラ250から構成される。ここで、イジングチップ280−1,280−2で基底状態探索可能なイジングモデルは、相互作用係数及び外部磁場係数が+1,0,−1の3値に限られているものとする。すなわち、
図1の制限付基底状態探索140−1〜140−kは基底状態探索アクセラレータ270に対応する。
【0044】
情報処理装置200は、HDD260上に基底状態探索プログラム264、原問題データ265、副問題データ266−1〜266−k、解候補データ267−1〜267−k及び解データ268を有する。
図1の処理の流れで示した通り、原問題データ265を基底状態探索プログラム264に入力すると、解データ268を出力する。
【0045】
基底状態探索プログラム264は、副問題生成コマンド261、基底状態探索アクセラレータ制御コマンド262及び解生成コマンド263から構成されている。原問題データ265を基底状態探索プログラム264に入力すると、内部的には副問題生成コマンド261が実行され、副問題データ266−1〜266−kが生成される。そして、基底状態探索アクセラレータ制御コマンド262に副問題データ266−1〜266−kを入力すると、基底状態探索アクセラレータ制御コマンド262は基底状態探索アクセラレータ270を制御し、イジングチップ280−1〜280−2に副問題データ266−1〜266−kで定義されるイジングモデルの基底状態探索を行わせ、探索結果を解候補データ267−1〜267−kとしてHDD260上に書き出す。そして、解生成コマンド263は解候補データ267−1〜267−kを読出し、解データ268を生成する。
【0046】
また、情報処理装置200として、
図25に示す情報処理装置2500のように、専用ハードウェアを有しておらず、基底状態探索を行うソフトウェア(制限付基底状態探索コマンド2520)を有するものを適用することも出来る。基底状態探索を行うソフトウェアにおいても、専用ハードウェアと同様に係数の値の種類に制限を受ける可能性があることは、本発明の背景で述べた通りである。
【0047】
なお、イジングチップ280−1〜280−2のようなハードウェアの詳細な構造と、その構造に起因して本明細書の背景で述べたように、制限された値の種類の係数しか提供できないことについては、後述する。
【0048】
本発明は、基底状態を探索する手段が
図2の情報処理装置200のように専用ハードウェア(基底状態探索アクセラレータ270)で実現されていても、
図25の情報処理装置2500のようにソフトウェア(制限付基底状態探索コマンド2520)で実現されていても、同様に本発明の副問題生成コマンド261及び解生成コマンド263を基底状態探索のプリプロセッサ(前処理)とポストプロセッサ(後処理)として使用することで、任意の係数のイジングモデルの基底状態探索を実現する基底状態探索プログラム264ないしは2520を提供することが可能となる。
【0049】
(1−3)イジングモデルを表現するデータ構造と書式
図3に、情報処理装置200上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義300で定義され、相互作用係数を定義する相互作用定義部310と、外部磁場係数を定義する外部磁場係数部320とから構成される。
【0050】
相互作用定義部310は、相互作用の元となるスピンを指定する識別子(例えば、スピンに一意な番号を付与して、それを識別子とする)、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。
【0051】
外部磁場係数定義部320は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
【0052】
なお、相互作用定義部310で定義されていないスピン間の相互作用係数や、外部磁場係数320で定義されていないスピンへの外部磁場係数は0とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す0であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す0となる。
【0053】
図4は、
図3のデータ構造のより具体的な表現形式、特にHDD260上でデータを保持する場合の書式(ファイルフォーマット)の一例を示す。
図3のデータ構造は、HDD260上ではテキストファイルとして実現される。そのテキストファイルのフォーマットは、
図4において問題データ400として示すように、相互作用か外部磁場を識別するための識別子と、スピンの識別子及び係数とを並べたものである。原問題110を定義する原問題データ265及び副問題130−1〜130−kを定義する副問題データ266−1〜266−kは、
図4の問題データ400のような形式で表現される。
【0054】
(1−4)解を表現するデータ構造と書式
図5は、解170を示す解データ268及び解候補150−1〜150−kを示す解候補データ267−1〜267−kを情報処理装置200上で表現するデータ構造の例と、そのHDD260上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解500のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元にスピンの識別子を省略して、解データ550のようにスピンの値だけを列挙したテキストファイルとしてHDD260上に解データ268や、解候補データ267−1〜267−kを保持することが出来る。
【0055】
(1−5)副問題生成の説明
図6に副問題生成120の処理の一例をフローチャートとして示す。
【0056】
ステップS601では、HDD260から原問題データ265を読出し、RAM220上に展開する。これ以降、原問題データ265にあるi番目スピンからj番目スピンへの相互作用係数は「原問題のJ
i,j」、i番目スピンの外部磁場係数は「原問題のh
i」として参照できるものとする。
【0057】
ステップS602では、原問題のJ
i,j及び原問題のh
iを正規化する。原問題の相互作用係数と外部磁場係数は様々な値を含んでいるが、相互作用係数と外部磁場係数の両方を通して絶対値が最大の係数(これを係数深度と呼ぶ)で全ての係数を割って、係数を−1〜+1に正規化する。なお、相互作用係数と外部磁場係数をそれぞれ別に正規化しても良い。この場合、相互作用係数については、絶対値が最大の相互作用係数を係数深度として、各相互作用係数を係数深度で割ることによりそれぞれ正規化し、外部磁場係数については、絶対値が最大の外部磁場係数を係数深度として、各外部磁場係数を係数深度で割ることによりそれぞれ正規化する。
【0058】
ステップS603では、副問題の個数を決定する。副問題の個数は計算量と計算精度のトレードオフの関係にある。すなわち、副問題の個数を多くすることで、より近似度の高い(大域最適解に近い)解が得られる可能性が高くなる半面、多くの副問題の基底状態探索を行わなければならないため、計算量は増加する。情報処理装置200の基底状態探索の処理速度や、応用上生じる制約時間、及び、要求される精度から副問題の個数を決定する必要がある。一般的には、同じ近似度で解を求めるために必要な副問題の個数は、問題のサイズ(スピン数、相互作用の数、及び、外部磁場の数)と、ステップS602で求めた係数深度に比例して増加する傾向にある。
【0059】
ステップS604〜S608では、ステップS603で決定した副問題の個数分だけ、副問題を生成する処理を行う。まずステップS604で変数iを1に設定し、ステップS605で変数iと同じ値のi番目のスピンに対する副問題の相互作用係数、及び、外部磁場係数を決定し、ステップS606で副問題データ266−1〜266−kとして書き出す。この後、ステップS607で変数iを1増加させた値に更新し、ステップS608で変数iの値が副問題数よりも大きいか否かを判定する。変数iの値が副問題数よりも小さい場合にはステップS605に戻り、この後、変数iの値が副問題数よりも大きくなるまでステップS605〜S608の処理を繰り返す。
【0060】
ステップS604、S607及びS608は副問題の個数分だけステップS605〜S606を実行するためのループであるが、このループはループ内で前後の依存関係を持たないので、並列に実行可能な計算機環境上ではループ展開して用意に並列実行可能である。つまり、十分な並列性を有する計算機環境があれば、副問題の個数にかかわらず、副問題生成120の処理は定数時間で行うことができ、大規模な問題に対してもスケーラビリティを有する。ステップS605の詳細については、別の図面を参照して説明する。
【0061】
図7に、ステップS605について上述した副問題の相互作用係数、及び、外部磁場係数を決定する処理を示す。副問題の相互作用係数と外部磁場係数の決定は各々独立した処理で行うことができる。そのため、原問題の相互作用係数(正規化後)を入力としてステップS701で副問題の相互作用係数を決定し、原問題の外部磁場係数(正規化後)を入力としてステップS702で副問題の外部磁場係数を決定している。ステップS701及びS702は互いに依存関係は無いので、並列処理することが可能である。ステップS701及びステップS702の処理に関しては複数種のアルゴリズムがあり、その詳細は後述する。
【0062】
(1−6)原問題の相互作用係数から副問題の相互作用係数を生成する処理
図19に、ステップS701で示した正規化後の原問題の相互作用係数から、副問題の相互作用係数を生成する処理のフローチャートを示す。
【0063】
ステップS1901〜S1909では、原問題の2つのスピンの全ての組み合わせを列挙するためのループを回している。まずステップS1901でi番目のスピンに対応する変数iを初期化(0に設定)し、ステップS1902で変数iの値が全スピン数よりも小さいか否かを判定する。変数iの値が全スピン数よりも小さい場合には(S1902:YES)、j番目のスピンに対応する変数jを初期化し、ステップS1904で変数jの値が全スピン数よりも小さいか否かを判定する。
【0064】
変数jの値が全スピン数よりも小さい場合には(S1905:YES)、ステップS1905で変数i及び変数jが同じ値であるか否かを判定する。変数i及び変数jが同じ値である場合には(S1905:YES)、ステップS1906で副問題のi番目スピンからj番目スピンへの相互作用係数J
i,jを0に設定し、変数i及び変数jが同じ値でない場合には(S1905:NO)、原問題の相互作用係数J
i,jから副問題の相互作用係数J
i,jを生成する。この後、ステップSP1908で変数jの値を1増加させてステップS1904以降の処理を繰り返す。
【0065】
やがて変数jの値が全スピン数と同じ値になった場合には(S1904:NO)、ステップS1909で変数iの値を1増加させ、この後、ステップS1902以降の処理を繰り返す。さらに、この後、変数iの値が全スピン数と同じ値になった場合には(S1902:NO)、この処理を終了する。
【0066】
図19において、外側のループは変数i、内側のループは変数jでそれぞれスピン数分回るため、結果としてループの最内側にあるステップS1905〜S1907ではi、jの全ての組み合わせに対して実行されることになる。なお、ループ間に依存関係は無いので、ループ展開して並列実行することは容易である。
【0067】
このステップS1901〜S1909は相互作用係数J
i,jを2次元平面上に行列のように並べたときに、それを端から順次走査していくような動きをする。なお、外側ループの変数がi、内側ループの変数がjであることから、あるi,jが与えられた時にi>jであれば、j,iはすでに通過済み(処理済み)であることに留意されたい。
【0068】
相互作用は互いに異なる2つのスピン間にのみ存在するので、相互作用係数を順に走査する中で、i=jであるような相互作用係数(例えばJ
1,
1)は無いはずである。そこで、上述のようにステップS1905〜S1906でi=jとなる相互作用係数は0に設定する。それ以外のi,jの組み合わせについては、ステップS1907で原問題のJ
i,jから副問題のJ
i,jを生成する。
【0069】
ステップS1907の処理の一例を
図20及び
図23に示す。
図20及び
図23はステップS1907で行うべき処理のそれぞれ異なる2種類の形態であり、どちらを利用しても良い。
図20は原問題の相互作用係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成する。
図23は原問題の非零の相互作用係数は全て+1/−1で模擬するように副問題の係数を生成する。
【0070】
(1−7)正側係数を+1/0、負側係数を−1/0にするアルゴリズム
図20を用いて、原問題の相互作用係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成するステップS1907(
図19)の処理の詳細を説明する。
【0071】
ステップS2001は、与えられた変数i,jで指定される原問題のJ
i,jが、有向グラフとして与えられているものか、無向グラフの辺(無向辺)として与えられているものかの判定を行う。これは、原問題のJ
i,j及びJ
j,iが同一の値であれば(J
i,j=J
j,i)、無向辺であると判定する。なお、有向グラフの辺(有向辺)場合には、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用とが異なる、もしくは、どちらか一方の相互作用しかないため、原問題のJ
i,jとJ
j,iは異なる値をとる(J
i,j≠J
j,i)。
【0072】
図20の処理では、ステップS2005〜S2009で、原問題のJ
i,jの大きさに比例した確率で、+1ないしは−1を副問題の係数として発生させる。このとき乱数を用いるため、副問題のJ
i,jとJ
j,iは必ずしも同じ値にならない。原問題が有向辺で、もともと原問題のJ
i,jとJ
j,iが異なる値であれば、副問題のJ
i,jとJ
j,iが異なることは必然性がある。しかし、原問題が無向辺であるときには、副問題のJ
i,jとJ
j,iは同一の値になるべきである。
【0073】
そこで、ステップS2001のもう一つの判定条件である(i>j)が満たされているときには(S2001:YES)、原問題のJ
j,iから副問題のJ
j,iを生成する処理が既に完了しているので(i>jを満たすときには、j,iという組み合わせはすでに通過済みである)、ステップS2002で既に生成済みの副問題のJ
j,iの値を、副問題のJ
i,jの値として出力する。
【0074】
次に、ステップS2001の判定で、無向辺ではないか、無向辺であったとしても1回目の副問題の係数生成であった場合(S2001:NO)に行われる、ステップS2003〜S2009の処理を説明する。
【0075】
ステップS2003では原問題のJ
j,iが0であるかを判定する(J
i,j=0)。0であれば、ステップS2004で副問題のJ
j,iも0とする。
【0076】
原問題のJ
j,iが0ではない場合(S2003:NO)、原問題のJ
j,iの値の大きさに応じた確率で、原問題のJ
j,iが正であれば+1ないしは0を、原問題のJ
j,iが負であれば−1ないしは0を副問題のJ
j,iとして出力する処理をステップS2005〜S2009で行う。
【0077】
具体的に、ステップS2005では、0以上1以下の値域を持つ乱数rを生成する。
【0078】
ステップS2006では、原問題のJ
j,iの絶対値と、ステップS2005で生成した乱数rを比較する。(r≦原問題のJ
j,iの絶対値)であれば(S2006:YES)、ステップS2007で副問題のJ
j,i正の値であるか否かを判定し、原問題のJ
j,iが正の値の場合には(S2007:YES)、ステップS2008で副問題のJ
j,iを+1として出力し、原問題のJ
j,iが負の値の場合には(S2007:NO)、ステップS2009で副問題のJ
j,iを−1として出力する。また(r≦原問題のJ
j,iの絶対値)でなければ(S2006:NO)、ステップS2004で副問題のJ
j,iを0とする。このようにして、原問題の係数の大きさに比例した確率で、+1/0、ないしは、−1/0の副問題の係数が生成される。
【0079】
以上のアルゴリズムで、原問題の係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成することが出来る。
【0080】
なお、この方法は、生成された複数の副問題の各辺の相互作用係数(副問題のJ
j,i)の期待値ないしは平均値が、正規化された原問題のJ
j,iの値になるように、副問題のJ
j,iに+1/0/−1の値を与えているとも言うことが出来る。
【0081】
(1−8)正側係数、負側係数を共に+1/−1にするアルゴリズム
図23を用いて、原問題の非零の相互作用係数は全て+1/−1で模擬するように副問題の係数を生成するステップS1907の処理の詳細を説明する。
【0082】
ステップS2301〜S2302は、原問題の無向辺のための処理であり、
図20のステップS2001〜S2002と同じであるため、繰り返しの説明を省略する。
【0083】
次に、ステップS2301の判定で、無向辺ではないか、無向辺であったとしても1回目の副問題の係数生成であった場合に行われる、ステップS2303〜S2007の処理を説明する。
【0084】
ステップS2303において、原問題のJ
j,iの値に応じて、副問題の係数に+1を発生させる確率pを計算する。なお、(p−1)の確率で副問題の係数に−1を発生させるものとする。確率pは副問題のJ
j,iの期待値が、原問題のJ
j,iの値になるように定める。具体的には、次式
【数4】
で計算される。ここで参照している原問題のJ
j,iの値は正規化されている値であるため、−1〜+1の値域を持つ。仮に、原問題のJ
j,iの値が0の時には、p=0.5となり、副問題には+1と−1が等しい確率で発生する。原問題のJ
j,iの値が+1の時には、p=1となり、副問題には+1のみが発生する。原問題のJ
j,iの値が−1の時には、p=0となり、副問題には−1のみが発生する。
【0085】
ステップS2304では、0以上1以下の値域を持つ乱数rを生成する。
【0086】
ステップS2305では、ステップS2303で決定した確率pと、ステップS2304で生成した乱数rを比較する。r≦pであれば、ステップS2306で副問題のJ
j,iを+1として出力する。r≦pでなければ(r>pであれば)、ステップS2307で副問題のJ
j,iを−1として出力する。
【0087】
以上のアルゴリズムで、原問題の係数のうち、非零係数は全て+1/−1で模擬するように副問題の係数を生成することが出来る。
【0088】
(1−9)原問題の外部磁場係数から副問題の外部磁場係数を生成する処理
図21に、ステップS702で示した正規化後の原問題の外部磁場係数から、副問題の外部磁場係数を生成する処理のフローチャートを示す。
【0089】
ステップS2101〜S2104では、原問題の全てスピン(すなわち全ての外部磁場係数)をあたるためのループを回している。なお、ループ間に依存関係は無いので、ループ展開して並列実行することは容易である。
【0090】
ステップS2101では、スピンの番号を表す変数iを0に設定する。
【0091】
ステップS2102では、変数iの値が全スピン数よりも小さいか否かを判定し、変数iの値が全スピン数よりも小さい場合に(S2102:YES)、ステップS2103で原問題のh
iから副問題のh
iを生成する処理を行う。
【0092】
ステップS2104では、変数iの値を1増加させた値に更新し、変数iの値が全スピン数よりも大きくなるまで(S2102:NO)、ステップS2102〜S2104の処理を繰り返す。
【0093】
ステップS2103の処理の一例を
図22及び
図24に示す。
図20及び
図23に示した相互作用係数の場合と同様に、
図22及び
図24はステップS2103で行うべき処理のそれぞれ異なる2種類の形態であり、どちらを利用しても良い。
【0094】
図22は原問題の外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成する(相互作用係数に対する
図20の処理と類似する)。
図24は原問題の非零の外部磁場係数は全て+1/−1で模擬するように副問題の係数を生成する(相互作用係数に対する
図23の処理と類似する)。
【0095】
一般的には、相互作用係数と外部磁場係数の値の生成方法は同じ方法を揃えて用いる。つまり、相互作用係数に対する
図20のアルゴリズムと外部磁場係数に対する
図22のアルゴリズムを対にして用い、相互作用係数に対する
図23のアルゴリズムと外部磁場係数に対する
図24のアルゴリズムを対にして用いる。
【0096】
(1−10)正側係数を+1/0、負側係数を−1/0にするアルゴリズム
図22を用いて、原問題の外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の外部磁場係数を生成するステップS2103の処理の詳細を説明する。
【0097】
ステップS2201では原問題のh
iが0であるかを判定する(h
i=0)。原問題のh
iが0であれば、ステップS2202で副問題のh
iも0とする。
【0098】
原問題のh
iが0でない場合には、原問題のh
iの値の大きさに応じた確率で、原問題のh
iが正であれば+1ないしは0を、原問題のh
iが負であれば−1ないしは0を副問題のh
iとして出力する処理をステップS2203〜S2207で行う。
【0099】
ステップS2203では、0以上1以下の値域を持つ乱数rを生成する。
【0100】
ステップS2204では、原問題のh
iの絶対値と、ステップS2203で生成した乱数rを比較する。原問題のh
iの絶対値が乱数r以上(r≦原問題のh
iの絶対値)であれば、ステップS2205〜S207で副問題のh
iを+1(原問題のh
iが正の値の場合)、ないしは、−1(原問題のh
iが負の値の場合)として出力する。原問題のh
iの絶対値が乱数r以上(r≦原問題のh
iの絶対値)でなければ、ステップS2202で副問題のh
iを0とする。このようにして、原問題の外部磁場係数の大きさに比例した確率で、+1/0、ないしは、−1/0の副問題の外部磁場係数が生成される。
【0101】
ステップS2205では、原問題のh
iが正負のいずれかであるかを判定する。正であればステップS2206で副問題のh
iを+1として出力する。負であればステップS2207で副問題のh
iを−1として出力する。
【0102】
以上のアルゴリズムで、原問題の外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の外部磁場係数を生成することが出来る。
【0103】
なお、この方法は、生成された複数の副問題の各辺の外部磁場係数(副問題のh
i)の期待値ないしは平均値が、正規化された原問題のh
iの値になるように、副問題のh
iに+1/0/−1の値を与えているとも言うことが出来る。
【0104】
(1−11)正側係数及び負側係数を共に+1/−1にするアルゴリズム
図24を用いて、原問題の非零の外部磁場係数は全て+1/−1で模擬するように副問題の係数を生成するステップS2103の処理の詳細を説明する。
【0105】
図24のステップS2401〜S2405の処理は、
図23のステップS2303〜S2307について、相互作用係数(J
j,i)を外部磁場係数(h
i)に置き換えたものと見なすことが出来る。
【0106】
ステップS2401において、原問題のh
iの値に応じて、副問題の係数に+1を発生させる確率pを計算する。確率pの計算式は
【数5】
であり、
図23のステップS2303と同様の計算方法である。
【0107】
ステップS2402では、0以上1以下の値域を持つ乱数rを生成する。
【0108】
ステップS2403では、ステップS2401で決定した確率pと、ステップS2402で生成した乱数rとを比較する。r≦pであれば、ステップS2404で副問題のh
iを+1として出力する。r≦pでなければ(r>pであれば)ステップS2405で副問題のh
iを−1として出力する。
【0109】
以上のアルゴリズムで、原問題の外部磁場係数のうち、非零の外部磁場係数は全て+1/−1で模擬するように副問題の外部磁場係数を生成することが出来る。
【0110】
(1−12)解生成の説明
図8に解生成160の処理の一例をフローチャートとして示す。
図8の解生成160は解候補150−1〜kのうち、原問題110でのエネルギーが最も低くなる解を解170として出力するものである。
【0111】
ステップS801〜S807では、副問題の個数分だけS803〜S806の処理を繰り返す。ステップS801、S806及びS807は繰り返しのためのループ処理である。
【0112】
ステップS801では、変数iを初期化(1に設定)し、ステップS802では、ループ中で見つけた最小のエネルギーを一時的に記録しておくための変数minを初期化(−∞に設定)する。
【0113】
ステップS803では、1個以上の解候補のうちの1つを原問題のエネルギー関数で評価し、ステップS804では、ステップS803で得た評価値(エネルギー)が変数minよりも小さいか否かを判定する。
【0114】
ステップS803で得た評価値が変数minよりも小さい場合には(S804:YES)、ステップS805で、変数minをステップS803で得た評価値に更新すると共に、解候補を表す変数xをそのときの変数iの値に更新する。
【0115】
ステップS806では変数iを1増加させ、ステップS807では、変数iの値が副問題の数よりも大きいか否かを判断し、変数iの値が副問題の数以下である場合には(S807:YES)、ステップS803に戻る。そして、これ以降、ステップS803〜S807のループを変数iの値が副問題のよりも大きくなるまで繰り返す。
【0116】
このような処理により、最終的に最も小さいエネルギーが変数minに設定され、そのようなエネルギーとなる解候補に対応する変数iの値が変数xとして設定される。なお、変数x、ないしは、変数minをリスト構造として、複数の解を保持しても良い。
【0117】
なお、ステップS801〜S807の処理は、ツリー状のリダクション演算によって、並列計算機上で容易に並列実行が可能である。
【0118】
最後にステップS808で変数xに記憶されている解候補を、原問題110の解170として出力する。
【0119】
(1−13)具体的な問題を解く例
以上に述べた本発明の基底状態探索によって、具体的な問題を解く例を示す。
【0120】
(1−13−1)グラフの最大カット問題
図9にグラフの最大カット問題を示す。
図9のグラフG=(V、E)は、頂点の集合V={v0,v1,v2,v3,v4,v5}と、辺の集合E={e01,e02,e12,e13,e14,e24,e34,e35,e45}から構成される。なお、e01という辺は、頂点v0と頂点v1の間を接続する辺という意味である。各辺は重み係数を持っており、w(e01)=5,w(e02)=4,w(e12)=1,w(e13)=3,w(e14)=2,w(e24)=3,w(e34)=4,w(e35)=5,w(e45)=1となる。
【0121】
図10に示すように、このグラフの頂点Vを2つの部分集合V’とV’\Vに分割することをカットと呼ぶ。V’\VはVからV’を除いた集合を示す。ここで、分割されたV’とV’\Vの間を跨っている辺(
図10の例ではe01、e02、e13、e14、e24、e35及びe45)を、カットを跨いでいるエッジ、もしくは、カットエッジと呼ぶ。重みが無いグラフの場合にはカットエッジの本数、
図10のように重み付きのグラフの場合にはカットエッジの重みの総和を、カットの大きさと呼ぶ。
図10の例では、カットの大きさはw(V‘)=23である。
【0122】
最大カット問題とは、グラフG=(V,E)を与えられたとき、カットの大きさを最大化するカットを求めることである。換言すれば、カットの大きさを最大化するように、頂点VをV’とV’\Vにグループ分けすることと言っても良い。なお、
図10は最大カットになっている。また、このグラフはカットの仕方、つまり頂点Vの部分集合V‘とV’\Vへの仕方は異なるが、同じカットの大きさを持つもう一つの最大カットの答えがあり、
図11に示す。
図10、及び、
図11はいずれも
図9の最大カット問題の答えとして正しい。
【0123】
(1−13−2)イジングモデルによる最大カット問題の解法
図9のグラフの最大カット問題を、イジングモデルの基底状態探索で解けることを、
図12を用いて説明する。
図12のイジングモデルは、
図9のグラフの辺の重み係数の符号を全て反転させたものを、相互作用係数にしたものである。このイジングモデルは6個のスピンを持っており、それぞれが+1と−1の2状態を持つので、2^6個(64個)の実行可能解がある。この実行可能解が持つエネルギーは
図12に示すように、−36〜56の範囲内に16種類のエネルギーがある。
【0124】
図12のイジングモデルのエネルギーを最小化するスピン配列、すなわち大域最適解となる基底状態は
図12に示したように4種類あり、その時のエネルギーは−36である。なお、図示した基底状態のうち、(1)と(2)、(3)と(4)はそれぞれ互いにスピンの値を反転させた関係にある。イジングモデルでは、あるスピン配列があったときに、そのスピン配列の全てのスピンの値を反転させた時には、エネルギーは変わらない。
【0125】
図12の基底状態(1)及び(2)は
図11の最大カット問題の解に、基底状態(3)及び(4)は
図10の最大カット問題の解に対応している。最大カット問題をイジングモデルの基底状態探索として捉えると、カットエッジの端点の頂点(スピン)の値が異なるようにスピンの値を決定することである。カットした頂点集合V’に属する頂点は+1のスピン、V’\Vに属する頂点は−1のスピンとすることであると言っても良い。また、頂点集合V’が−1、V’\Vが+1というように、値が逆であっても良い。このことから、イジングモデルの基底状態探索とグラフの最大カット問題が対応していることが理解できよう。
【0126】
(1−13−3)本実施の形態による解の例
図12のイジングモデルの基底状態探索を、本実施の形態に記載した方法ないしは装置を用いて行った例を説明する。
図1に示した本発明の流れに沿って説明する。
【0127】
まず、原問題を用意する。
図12のイジングモデルを、
図4の書式に沿ってデータ化した
図13の原問題データ1300を原問題とする。なお、
図12のイジングモデルを正規化すると
図33に示すようなモデルになる。このことからも分かるように、本発明において原問題の係数は整数に限らず、実数を含んでいても良い。原問題の係数の値にかかわらず、一旦正規化して扱う。
図33の例は例えば+1〜−1の値域に正規化している。
【0128】
次に、この原問題データ1300に副問題生成120を適用して、
図14の副問題データ1401〜1403を生成する。なお、この副問題生成では、相互作用係数に対する
図20のアルゴリズムと外部磁場係数に対する
図22のアルゴリズムを対にして用い、原問題の相互作用係数及び外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成した。なお、図面の紙幅の都合で、この例では副問題数を3個としている。
【0129】
図14の副問題データ1401〜1403が、
図12の原問題のイジングモデルと比較してどのようなモデルになっているのかを見るために、
図15に副問題データ1401〜1403をグラフとして描画した副問題1501〜1503を示す。
【0130】
図15の副問題1501〜1503を見ると、相互作用が存在する辺は、全て係数−1の相互作用となっている。
図12のイジングモデルは負の相互作用係数のみを含んでいるため、
図20のアルゴリズムを適用すると、相互作用係数は−1か0かのどちらかとなり、係数0は相互作用が無いものとしてグラフには描画されないため、係数−1の辺のみが見えるのである。
【0131】
そして、副問題1501〜1503の各辺について見てみると、
図12の原問題で相互作用係数の絶対値が大きい辺(例えば、J
0,1=−5,J
0,2=−4,J
3,4=−4,J
3,5=−5)については、副問題1501〜1503のいずれでも係数−1の相互作用が発生している。一方、原問題で相互作用係数の絶対値が小さくなるほど、副問題1501〜1503で相互作用が発生する確率が低くなっていることが確認できる。
【0132】
この副問題1501〜1503(副問題データ1401〜1403)それぞれに対して、情報処理装置200の基底状態探索アクセラレータ270で制限付基底状態探索を行い、
図16の解候補データ1601〜1603を得る。
【0133】
図16の解候補データ1601〜1603は
図5の書式に沿っており、それぞれ副問題1501〜1503の基底状態である。つまり、例えば解候補データ1601は副問題1501の相互作用係数及び外部磁場係数で構成したエネルギー関数のエネルギーを最小化するようなスピン配列であり、その時のエネルギーは−8である。同様に、解候補データ1602は副問題1502のエネルギーを最小化するスピン配列であり副問題1502におけるエネルギーは−8、解候補データ1603は副問題1503のエネルギーを最小化するスピン配列であり副問題1503におけるエネルギーは−6となる。
【0134】
最後に、
図8に示した解生成160の手順で、解候補データ1601〜1603から
図17に示す解データ1701を生成する。
図16に示すように解候補データ1601〜1603を原問題のエネルギー関数で評価すると、それぞれ−36,−24,−36となる。この中で、エネルギーがより小さい解候補データ1601及び解候補データ1603(いずれも原問題でのエネルギーが−36)を併せて解データ1701として出力する(なお、解候補データ1601及び解候補データ1603のいずれか一方を解データ1701として出力しても良い)。
【0135】
図17に示した解データ1701を見ると、第一行目(解候補データ1601)は、
図12で示した基底状態の(4)、第二行目(解候補データ1603)は
図12で示した基底状態の(3)に対応している。
【0136】
なお、
図8に示したように、解生成の中で解候補データ1601〜1603それぞれの原問題でのエネルギーを評価すると計算時間がかかるという場合には、例えば解候補データ1601〜1603のスピン配列のスピンそれぞれについて最頻値などの代表値や統計量を取って、それを解データとする方法もある。
【0137】
例えば、
図18の解データ1801のスピン配列は、スピンそれぞれについて解候補データ1601〜1603での最頻値を取って生成したものである。解データ1801を原問題のエネルギー関数で評価するとエネルギーは−24であり、最良解のエネルギーである−36には及ばないが、実行可能解の16種類のエネルギーの中では3番目に良い値となっている。よって、近似解が出力されていると言える。
【0138】
(1−14)本実施の形態の性能評価
本実施の形態で説明したイジングモデルの基底状態探索装置、ないしは、方法の性能について、実験結果を
図26及び
図27に示す。
【0139】
図26は、相互作用係数に対する
図20のアルゴリズムと外部磁場係数に対する
図22のアルゴリズムを対にして用いた場合の実験結果である。
図27は、相互作用係数に対する
図23のアルゴリズムと外部磁場係数に対する
図24のアルゴリズムを対にして用いた場合の実験結果である。
【0140】
図26及び
図27のいずれも原問題は
図12のイジングモデルである。原問題から副問題生成120で1000個の副問題を生成する。1000個の副問題それぞれについて、基底状態探索の結果として出力されうる解候補(スピン配列)を列挙する。
【0141】
基底状態探索の結果として出力されうるスピン配列とは、大域最適解ないしは局所最適解である。一般的に、何らかの基底状態探索手段は、あるスピン配列の近傍(例えばハミング距離が近い他のスピン配列)に移行することで、解の質を改善する(エネルギーを下げる)ことができるのであれば移行し、できなければ留まるという局所探索法を用いている。これだけでは、近傍への移行だけでは解の質の改善が不可能という局所最適解にはまってしまい大域最適解へ到達することが出来ないため、熱揺らぎを導入するシミュレーテッドアニーリングなどの手法が用いられているが、それでも局所最適解から抜け出せないことがある。また、大域最適解も近傍への移行だけでは解の質の改善が不可能という点では、一種の局所最適解と見なすことができる。基底状態探索の結果として出力されるスピン配列は、大域最適解を含む広義の局所最適解であると言える。局所最適解が出力されたときには、近似解が得られたことになる。
【0142】
そこで、1000個の副問題それぞれについて、取りうる全てのスピン配列を列挙し、前述した局所探索法によってそれ以上の解の改善が可能なスピン配列であるかどうか、すなわち大域最適解ないしは局所最適解であるかどうかを判定し、大域最適解ないしは局所最適解であるスピン配列を、当該副問題を基底状態探索して出力されうるスピン配列として列挙した。
【0143】
その結果、1000個の副問題に対して、
図26の場合には合計10332通り、
図27の場合には合計9678通りとなる。平均すると1個の副問題あたり平均10個程度の局所最適解があることになる。
【0144】
そして、10332通り、ないしは、9678通りのそれぞれのケースにおいて、当該スピン配列を当該副問題のエネルギー関数で評価した時の解の品質、つまり何番目に低いエネルギーであるかを表の行方向で示している。列方向は、原問題のエネルギー関数で評価したときの解の品質である。
【0145】
例えば、
図26の1行1列目は14.0%であるが、これは1000個の副問題に対して、解として得られる10332通りのうち、14.0%が副問題でも原問題でも最良の解であることを示している。2行1列目の16.5%は副問題で評価すると2番目に良い解であるが、原問題で評価すると原問題の最良の解になっていることを意味している。
【0146】
4行目の「計」となっている行は、各列の合計である。この計となっている行は、原問題で所定の品質の解がどの程度の確率で得られるのかを示していると考えて良い。
【0147】
例えば原問題で1番良い解を得られる確率に注目してみると、
図26の場合(
図20のアルゴリズムと外部磁場係数に対する
図22のアルゴリズム)では34.5%、
図27の場合(
図23のアルゴリズムと外部磁場係数に対する
図24のアルゴリズム)は26.1%である。
【0148】
ここで、本発明を用いて、原問題で1番良い解を得たいときに、どの程度の数の副問題を用いれば十分かを求める。すなわち、
図6のステップS603(副問題数を決定)の一例を示す。
【0149】
図26の場合、原問題で1番良い解を得られる確率は34.5%である。逆に、それ以外の解が得られる確率は65.5%である。n回連続して1番良い解以外の解を得られる確率は65.5%×nとして計算できるが、11回で1%未満の値となる。よって、11個も副問題を生成すれば、原問題で1番良い解を得られる確率を十分に高められる。また、原問題で2番目以降に良い解、すなわち近似解を出力として許せば、この副問題数はさらに削減することが可能である。
【0150】
(1−15)イジングチップの構造と係数の制限
本実施の形態でイジングモデルの基底状態を探索する手段として用いているハードウェアであるイジングチップ280−1,280−2について、その構造の詳細と、その構造上生じる係数の制約について、
図34〜
図38を参照して説明する。
【0151】
図34は、本実施の形態のイジングチップ280−1,280−2の構成図の例である。イジングチップ280−1,280−2はスピンアレイ3410、I/O(Input/Output)ドライバ3420、I/Oアドレスデコーダ3430及び相互作用アドレスデコーダ3440から構成される。本実施の形態ではイジングチップ280−1,280−2は現在広く用いられているCMOS(Complementary Metal-Oxide Semiconductor)集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
【0152】
イジングチップ280−1,280−2は、スピンアレイ3410にリード/ライトを行うためのSRAM互換インタフェース3450を持っており、アドレスバス3490、データバス3491、R/W制御線3493及びI/Oクロック線3492から構成される。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース3460として、相互作用アドレス線3480及び相互作用クロック線3481を有している。また、イジングチップ280−1,280−2は、そのイジングチップ280−1,280−2を動作させるための電源線3440と、後述するようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数を注入するための乱数注入線3450とを有している。
【0153】
イジングチップ280−1,280−2では、イジングモデルのスピンσ
i、相互作用係数J
i,j及び外部磁場係数h
iを全てスピンアレイ3410内のメモリセルに記憶する情報で表現する。スピンσ
iの初期状態の設定及び基底探索完了後の解読み出しのためにスピンσ
iのリード/ライトをSRAM互換インタフェース3450で行う。また、基底状態を探索すべきイジングモデルをイジングチップ280−1,280−2に設定するために、相互作用係数J
i,j及び外部磁場係数h
iのリード/ライトもSRAM互換インタフェース3450で行う。そのため、スピンアレイ3410内のスピンσ
i、相互作用係数J
i,j及び外部磁場係数h
iにはアドレスが付与されている。
【0154】
また、イジングチップ280−1,280−2は、基底状態探索を行うために、スピンアレイ3410の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース3460であり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス線3480を介して入力し、相互作用クロック線3481を介して入力されるクロックに同期して相互作用を行う。
【0155】
情報処理装置200は、CPU210が基底状態探索アクセラレータ制御コマンド262を実行してイジングチップコントローラ250を制御し、イジングチップコントローラ250がイジングチップ280−1,280−2のSRAM互換インタフェース3450及び相互作用制御インタフェース3460を制御することで、イジングモデルの基底状態探索を実現する。
【0156】
ここで、イジングチップ280−1,280−2で扱うことのできるイジングモデルの係数が、ハードウェアの構造によって制限されていることをより詳細に説明する。
【0157】
スピンアレイ3410は、1個のスピン並びにそれに付随する相互作用係数及び外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット3500を基本構成単位として、スピンユニット3500を多数個並べて構成する。
図37は、スピンユニット3500を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。
図37の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。
図37の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
【0158】
図37に示す1個のスピンユニット3500には、隣接するスピン(例えば隣接するスピンが5個の場合)σ
j、σ
k、σ
l、σ
m、σ
nの値が入力される。また、スピンユニット300は、スピンσ
i及び外部磁場係数h
iに加え、上述した隣接するスピンσ
iとの相互作用係数であるJ
j,i、J
k,i、J
l,i、J
m,i、J
n,i(隣接する5スピンとの相互作用係数)を保持するメモリセルを有している。
【0159】
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した(1)式では、相互作用を表わす項として、J
i,j×σ
i×σ
jがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルではi番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、J
i,jとJ
j,iは同一である。しかし、本実施の形態のイジングチップ280−1,280−2では、先に述べたようにこのイジングモデルを有向グラフに拡張し((3)式)、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【0160】
そのため、1個のスピンユニット3500をi番目スピンσ
iと考えた時に、このスピンユニットが保持する相互作用係数であるJ
j,i、J
k,i、J
l,i、J
m,i、J
n,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσ
j、σ
k、σ
l、σ
m、σ
nから、i番目スピンσ
iへの相互作用を決めるものである。このことは、
図37において、スピンユニット3500に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット3500の外部のスピンから、スピンユニット3500の内部のスピンに向かっていることに対応している。
【0161】
スピンユニット3500の構成の一例を
図35及び
図36を用いて説明する。スピンユニット3500は2つの側面をもっており、便宜上、
図35及び
図36に分けて説明するが、1個のスピンユニット3500に
図35及び
図36の構成の双方が含まれるものである。
図35はスピンユニット3500間の相互作用を実現するための回路を図示し、
図36はスピンユニット3500が有するメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1にイジングチップ280−1,280−2外からアクセスするためのインタフェースであるワード線3620とビット線3610とに注目して図示したものである。
【0162】
スピンユニット3500は、イジングモデルのスピンσ
i、相互作用係数J
j,i〜J
n,
i及び外部磁場係数h
iを保持するために、複数の1ビットのメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1を備えている。なお、メモリセルIS0及びIS1、メモリセルIU0及びIU1、メモリセルIL0及びIL1、メモリセルIR0及びIR1、メモリセルID0及びID1、並びに、メモリセルIF0及びIF1は、それぞれ2個1組で役割を果たすものであるため、それぞれまとめてメモリセル対ISx,IUx,ILx,IRx,IDx又はIFxと略記する(
図38参照)。
【0163】
ここで、スピンユニット3500はi番目のスピンを表現するものとして説明を行う。メモリセルNはスピンσ
iを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルの2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
【0164】
図38を用いて、スピンユニット3500が有するメモリセル対ISx、IUx、ILx、IRx、IDx及びIFxと、
図5に示したイジングモデルのトポロジとの対応関係を示す。メモリセル対ISxは外部磁場係数を記憶する。また、メモリセル対IUx,ILx,IRx,IDx及びIFxは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対IUxは上側のスピン(Y軸方向で−1)、メモリセル対ILxは左側のスピン(X軸方向で−1)、メモリセル対IRxは右側のスピン(X軸方向で+1)、メモリセル対IDxは下側のスピン(Y軸方向で+1)、メモリセル対IFxは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)との相互作用係数J
i,jをそれぞれ記憶する。
【0165】
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット3500は最大で5個のスピンと接続される。本実施の形態のイジングチップ100では、外部磁場係数及び相互作用係数として+1/0/−1の3値に対応する。そのため、外部磁場係数及び相互作用係数を表わすためには、それぞれ2ビットのメモリセルが必要となる。メモリセル対ISx,IUx,ILx,IRx,IDx及びIFxは、末尾の数字が0と1の2つのメモリセル(例えばメモリセル対ISxの場合にはメモリセルIS0及びIS1)の組合せで、+1/0/−1の3値を表現する。例えば、メモリセル対ISxの場合には、メモリセルIS1で+1/−1を表現し、メモリセルIS1が保持する値が1の時は+1、メモリセルIS1が保持する値が0の時には−1を表す。これに加えて、メモリセルIS0が保持する値が0の時には外部磁場係数を0と見なし、メモリセルIS0が保持する値が1の時にはメモリセルIS1が保持する値で決まる+1/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、メモリセルIS0に保持された値は外部磁場係数のイネーブルビットであると言うことができる(IS0=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を記憶するメモリセル対IUx,ILx,IRx,IDx及びIFxも同様に係数とビットの値を対応させている。
【0166】
スピンユニット3500内のメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0及びIF1は、それぞれイジングチップ280−1,280−2の外部からリード/ライト可能でなければならない。そのために、
図36に示すように、スピンユニット3500はビット線3610とワード線3620とをそれぞれ有している。スピンユニット3500を半導体基板上にタイル状に並べてビット線3610とワード線3620とを接続し、I/Oアドレスデコーダ3430とI/Oドライバ3420とで駆動、制御又は読み出しすることで、一般的なSRAM(Static Random Access Memory)と同様にスピンユニット3500内のメモリセルをイジングチップ280−1,280−2のSRAM互換インタフェース3450でリード/ライトすることが出来る。
【0167】
スピンユニット3500は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット3500毎に独立して持っている。スピンの次状態を決定するための回路を
図35に示す。
図35ではスピンユニット3500は外部とのインタフェースとして、信号線EN,NU,NL,NR,ND,NF,ON及びGNDを有する。信号線ENは当該スピンユニット3500のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でセレクタ3550を制御することで、メモリセルNに保持されたスピンの値を、後述の多数決論理回路3530からOR回路3540を介してセレクタ3550に与えられる値に更新することが出来る。
【0168】
信号線ONは当該スピンユニット3500のスピンの値を他のスピンユニット3500(
図37のトポロジで隣接するユニット)に出力するインタフェースである。信号線NU,NL,NR,ND及びNFはそれぞれ他のスピンユニット3500(
図37のトポロジで隣接するユニット)の有するスピンの値を入力するためのインタフェースである。信号線NUは上側のスピン(Y軸方向で−1)、信号線NLは左側のスピン(X軸方向で−1)、信号線NRは右側のスピン(X軸方向で+1)、信号線NDは下側のスピン(Y軸方向で+1)、信号線NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。
【0169】
なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。
図37のトポロジのように単に端は打ち切るのであれば、信号線NU,NL,NR,ND及びNFのうち端に対するものは何も入力しなくて良い(回路上は0ないしは1の固定値に接続するなど、未使用入力端子として適切な処理をとる)。
【0170】
スピンユニット3500では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、i番目スピンσ
iに、スピンσ
j、σ
k、σ
l、σ
m及びσ
nが隣接しているとして、スピンσ
iの次状態は以下のように決まる。まず、隣接スピンの値はσ
j=+1、σ
k=−1、σ
l=+1、σ
m=−1、σ
n=+1とし、相互作用係数はJ
j,i=+1、J
k,i=+1、J
l,i=+1、J
m,i=−1、J
n,
i=−1、外部磁場係数h
i=+1とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σ
j×J
j,i=+1、σ
k×J
k,i=−1、σ
l×J
l,i=+1、σ
m×J
m,i=+1、σ
n×J
n,i=−1、h
i=+1となる。外部磁場係数は、常に値が+1のスピンとの相互作用係数と読み替えて良い。
【0171】
ここで、i番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には−1、i番目スピンを−1としたときには+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、i番目スピンを+1/−1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、+1と−1のどちらが多いか数えれば良い。先程の例では、+1が4個、−1が2個である。仮に、i番目スピンを+1とすると、エネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、−1の個数が多い時にはi番目スピンの次状態を−1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することが出来る。
【0172】
図35のスピンユニット3500に図示する論理回路は前記した相互作用を行うための回路である。まず、隣接スピンの状態と、相互作用係数の+1/−1を示すメモリセルIU1,IL1,IR1,ID1,IF1が保持する値との排他的論理和の否定(XNOR)をXNOR回路3510で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。もし、相互作用係数が+1/−1だけであれば、XNOR回路3510の出力のうち+1/−1のどちらが多いかを多数決論理回路3530において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路3530に入力すべき値となる。
【0173】
次に、係数0の実現方法について考える。n入力の多数決論理f(I
1,I
2,I
3,……,I
n)があるとき、以下の命題は真であると言える。まず、入力I
1,I
2,I
3,……,I
nの複製I’
1,I’
2,I’
3,……,I’
nがあるとする(任意のkについて、I
k=I’
kである)。このとき、f(I
1,I
2,I
3,……,I
n)の出力は、複製もあわせて入力したf(I
1,I
2,I
3,……,I
n、I’
1,I’
2,I’
3,……,I’
n)と等しい。つまり、各入力変数をそれぞれ2個ずつ入れても、出力は不変である。さらに、入力I
1、I
2、I
3,……,I
nの他に、もう一つの入力I
xと、その反転!I
xがあるとする。このとき、f(I
1,I
2,I
3,……,I
n,I
x,!I
x)の出力は、f(I
1,I
2,I
3,……,I
n)と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数0を実現する。具体的には、
図35に示すように、XOR回路3520を利用して、係数のイネーブルを決めるビット(ビットセルIS0,IU0,IL0,IR0,ID0及びiF0にそれぞれ保持されたビット)の値により、多数決論理回路3530に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセルIS0が保持するビットの値が0の場合、メモリセルIS1が保持するビットの値と、メモリセルIS1が保持するビットの値を反転させた値が同時に多数決論理回路3530に入力されるので、外部磁場係数の影響は無い(外部磁場係数が0に相当する)ことになる。また、メモリセルIS0が保持するビットの値が1の場合には、メモリセルIS1が保持するビットの値と、その値と同じ値(複製)が同時に多数決論理回路3530に入力されることになる。
【0174】
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転されるために、スピンユニット3500はRNDインタフェースを有する。イジングチップイジングチップ280−1及び280−2の外部から乱数注入線3450でランダムなビット列を注入し、スピンユニット3500のRNDインタフェースに介してOR回路3540に入力することで、スピンの値を確率的に反転させることができる。
【0175】
上述したような構成で、+1/0/−1の3種類の相互作用係数、及び、外部磁場係数を持つ3次元格子イジングモデルの基底状態探索を実現するイジングチップ280−1,280−2が提供できる。そして、今述べた「+1/0/−1の3種類」という係数の制限は、係数を保持するためのメモリセルISx,IUx,ILx,IRx,IDx及びIFxと、係数と隣接スピンの値からエネルギーを小さくするスピンの値を決定する多数決論理の構造とに起因していることが分かる。
【0176】
イジングチップ280−1及び280−2を実際に製造するために、詳細な回路設計やレイアウトを行うと、チップ面積のうちスピンアレイ3410の占める割合が大半を占める。そして、スピンアレイ3410の面積は、スピンユニット3500の面積にスピン数を乗じたものに比例することから、スピンユニット3500の面積の大小はイジングチップイジングチップ280−1,280−2のスケーラビリティに大きな影響を与える。一般的に半導体集積回路の製造に要する原価は、プロセスの世代(微細度)とチップ面積、及び、量産数で決まると言うことが出来る。同じプロセス世代と量産数であれば、スピンユニット3500の面積を小さくするほどコストを下げることが出来る。また、チップ面積が大きくなるほど製造不良による歩留まり低下の度合いが大きくなるため、より多くのスピン数を実現するという点からもスピンユニット3500の面積を小さくすることが望ましい。
【0177】
上述の構造では、係数を「+1/0/−1の3種類」に制限することで、係数を保持するメモリセルを1係数あたり2ビット(合計12ビット)にし、相互作用を計算するための回路を11個の排他的論理和回路(5個のXNOR回路3510及び6個のXOR回路3520)と、多数決論理回路3530とだけで実現することができた。これによって、スピンユニット3500の面積を小さくすることに寄与している。スピンユニット3500の面積は
図35の構成から明らかな通り、スピン値を保持するための構成要素(メモリセルN)よりも、相互作用のために必要な構成要素(メモリセル対ISx,IUx,ILx,IRx,IDx及びIFx、XNOR回路3510、XOR回路3520、並びに、多数決論理回路3530)が支配的であることが分かる。そのことから、相互作用に関する回路を簡略化することが、スケーラビリティを高める上で重要であることが理解できよう。
【0178】
ここで、仮に任意の係数を実現するために、ハードウェアを拡張して対応することを試行してみる。一般的に従来型コンピュータ上ではイジングモデルの係数を表わすために、32ビットや64ビットの整数値、ないしは、浮動小数点数が用いられることが多い。これをハードウェアに直接的に実装しようとすると、係数を保持するメモリセルだけで1係数あたり32ビット〜64ビット(合計192〜384ビット)を必要とする。これは、上述の実装と比較して16〜32倍もの物量増加になる。換言すれば、スケーラビリティは1/16〜1/32に悪化する。さらに、相互作用を計算するための回路については、上述の例では係数の制限を利用して回路を簡単化していたのに対して、汎用的な加算器、乗算器、及び、比較器を必要とする。この演算器による物量増加の影響は、メモリセルの増加分よりも大きくなることが容易に考えられる。そのため全体として,物量増加は16〜32倍よりも大きくなる。
【0179】
このことからも、ハードウェアのみで任意の係数のイジングモデルを解こうとすることが賢明な策ではないことが理解できる。そこで、本実施の形態で述べたように、係数に制限のあるハードウェアの使い方を工夫することで、任意の係数のイジングモデルを解くことが必要になる。
【0180】
(1−16)本実施の形態の効果
以上のように、本実施の形態においては、
図1について上述したように、原問題110から制限付基底状態探索140−1〜140−kが受付け得る相互作用係数J
i,j及び外部磁場係数h
iのみからなる複数の副問題130−1〜130−kを生成し、これらの副問題130−1〜130−kの解を解候補150−1〜150−kとして、これら解候補150−1〜150−kに基づいて原問題110の解を生成するようにしているため、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の値の種類が制限されている場合においても、その種類以外の係数からなるイジングモデルの原問題110の解を求めることができる。かくするにつき、本実施の形態によれば、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行うことができる。
【0181】
(2)第2の実施の形態
本実施の形態では、本発明の課題である、係数の値の種類が限られているイジングモデルの基底状態探索を行う装置ないしは方法を用いて、任意の値の係数を持つイジングモデルの基底状態探索を実現する装置及び方法の他の一例を説明する。
【0182】
本実施の形態は、副問題生成120と解生成160が第1の実施の形態と異なるため、第1の実施の形態との差分を説明する。
【0183】
第1の実施の形態では、副問題生成120において、乱数を用いていた(ステップS2005、S2203、S2304及びS2402)。しかし、組み込みシステムなど計算機資源が貧弱な環境では、乱数生成が大きな負荷になることがある。特に、本発明では相互作用係数と外部磁場係数の個数分、乱数を生成しなければならないため、原問題の大きさと副問題の個数に比例して乱数の生成回数が多くなる。
【0184】
そこで、本実施の形態では、乱数を用いることなく副問題生成120を行う。
【0185】
図28は、第2の実施の形態の副問題生成120の方法を説明する図である。副問題生成120では、第1の実施の形態と同様に原問題の相互作用係数及び外部磁場係数を正規化し、−1〜+1の値域を持つ実数とする(第1の実施の形態の
図6の処理を第2の実施の形態でも同様に行う)。
【0186】
第1の実施の形態の
図6の処理のうち、ステップS605の動作が第2の実施の形態では異なる。
図28は、第2の実施の形態においてステップS605で行うべき処理を示している。
【0187】
図28では、正規化された原問題の係数に、UT(Upper Threshold)とLT(Lower Threshold)という2種類の閾値を設けて、原問題の係数と閾値を比較することで、副問題の係数を生成する。
【0188】
具体的には、原問題の閾値がUTを超える場合には、副問題の係数を+1とする。また、原問題の閾値がLTを下回る場合には、副問題の係数を−1とする。どちらでもない場合、つまり原問題の係数がLT以上UT以下であるときには、副問題の係数を0とする。
【0189】
図29は、上述の処理を示したフローチャートである。
図29のフローチャートは
図6のステップS605に対応し、
図6のステップS603で決定された副問題数の回数分実行される。
【0190】
ステップS2901では、UTとLTを決定する。
図29は副問題の回数分実行されるが、その都度異なるUTとLTを用いる。
【0191】
ステップS2902では、ステップS2901で決定したUTとLTを用いて、原問題の全ての相互作用係数を、+1,0,−1の3値に丸めて、副問題として出力する。
【0192】
ステップS2903では、ステップS2901で決定したUTとLTを用いて、原問題の全ての外部磁場係数を、+1,0,−1の3値に丸めて、副問題として出力する。
【0193】
図12のイジングモデルから
図28及び
図29の方法で副問題を生成した例を
図30及び
図31に示す。この例では、副問題数を5として、UTとLTの組を(UT,LT)と表記したときに、副問題3001は(0,0)、副問題3002は(1,1)、副問題3003は(2,2)、副問題3004は(3,3)、副問題3005は(4,4)というように、UTとLTを変化させて副問題3001〜3005を生成している。
【0194】
図32は副問題3001〜3005それぞれの基底状態を探索した結果(解候補)と、解候補から生成した原問題の解を示している。
【0195】
第1の実施の形態の
図8と同様に、解候補それぞれを原問題のエネルギー関数で評価し、最良の解候補を原問題の解170として出力しても良い。この方法の場合、副問題3001及び副問題3002に対する解候補が原問題での評価が最も良く、解170として選択される。
【0196】
さらに、第1の実施の形態で述べたように、これらの解候補のスピン配列を、スピン毎に代表値(統計量)を取得して、解170のスピン配列を生成しても良い。
図32に最頻値(なお,スピンの値は+1と−1の2値であるから,平均値を取って+1ないしは−1のいずれか近い方に丸めることは,最頻値を求めることと同じである)として示したスピン配列は、副問題3001〜3005に対する解候補のスピン配列のスピン毎に、+1と−1のうち多い方を解として採用したものである。この例では、最頻値を取っても、原問題のエネルギー関数で最良の評価を得ることが出来ている。
【0197】
その他に、単に最頻値を取るのではなく、スピンの値である+1/−1の個数によって、解のスピンの値を決める方法もある。
図32で個数1、個数2、個数3、個数4、個数5と示した行は、副問題3001〜3005に対する解候補のスピン配列のスピン毎に、値が−1となっている個数を計数し、例えば個数2の場合には、−1の個数が2個以上の場合には−1、2個より少ない場合には+1というようにスピン配列を決めたものである。
【0198】
以上の本実施の形態によれば、乱数を用いることなく副問題生成120を行うことができるため、第1の実施の形態により得られる効果に加えて、より簡易に副問題生成120を行い得、ひいては原問題110の解をより容易に生成し得るという効果をも得ることができる。
【0199】
(3)他の実施の形態
なお上述の第1及び第2の実施の形態においては、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数が制限される場合について述べたが、本発明はこれに限らず、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の種類が制限される場合についても同様に対応することができる。
【0200】
この場合には、
図1の副問題生成120において、原問題110から基底状態を探索可能な種類の係数をもつイジングモデルから構成される複数の副問題130−1〜130−kを生成し、これら副問題130−1〜130−kの解を解候補150−1〜150−kとして、この後、第1及び第2の実施の形態の手順により原問題110の解を求めるようにすれば良い。