(57)【要約】  回路規模の増大に伴う演算速度の低下を抑制すること。  ビット演算回路（１ａ１，…，１ａＮ）の各々は、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、当該ビット列のうちの自ビットと反転されたビットとの相互作用の大きさを示す係数に基づいてイジングモデルのエネルギー変化値を計算し、エネルギー変化値に応じた自ビットの反転可否を示す第１の信号およびエネルギー変化値を示す第２の信号を出力する。選択回路部（２）は、第１の信号および第２の信号に基づいて、ビット列のうち反転させるビットと当該ビットに対応するエネルギー変化値とを選択し、選択したビットを示す第３の信号をビット演算回路（１ａ１，…，１ａＮ）の各々に出力するとともに、選択したエネルギー変化値を示す第４の信号を出力する。エネルギー計算部（５）は、第４の信号が示すエネルギー変化値に基づいてイジングモデルのエネルギーを計算する。
2020054062.tif 000002
【特許請求の範囲】
【請求項１】
イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと反転された前記ビットとの相互作用の大きさを示す係数に基づいて前記イジングモデルのエネルギー変化値を計算し、前記エネルギー変化値に応じた前記自ビットの反転可否を示す第１の信号と前記エネルギー変化値を示す第２の信号とを出力する複数のビット演算回路と、
前記第１の信号および前記第２の信号に基づいて、前記ビット列のうち反転させる前記ビットと当該ビットに対応する前記エネルギー変化値とを選択し、選択した前記ビットを示す第３の信号を前記複数のビット演算回路の各々に出力するとともに、選択した前記エネルギー変化値を示す第４の信号を出力する選択回路部と、
前記第４の信号が示す前記エネルギー変化値に基づいて前記イジングモデルのエネルギーを計算するエネルギー計算部と、
を有する最適化装置。
【請求項２】
前記選択回路部は、前記第１の信号および前記第２の信号の組を複数組ずつ受け付け、反転可を示す前記第１の信号を含む組を優先して何れか１つの組を選択し、出力する１段目の複数の第１の選択回路と、前段の複数の選択回路の各々が出力した前記第１の信号および前記第２の信号の組を複数組ずつ受け付け、反転可を示す前記第１の信号を含む組を優先して何れか１つの組を選択し、出力する２段目以降の１以上の第２の選択回路と、を有する、
請求項１記載の最適化装置。
【請求項３】
前記複数のビット演算回路は、複数のグループに分けられており、
１つのグループに属するビット演算回路の各々から入力された前記第１の信号および前記第２の信号の組のうちの何れか１つを選択し、出力する、前記複数のグループの各々に対して設けられたセレクタ部、を更に有し、
前記選択回路部は、複数の前記セレクタ部の各々により出力された前記第１の信号および前記第２の信号に基づいて、前記第３の信号と前記第４の信号とを出力する、
請求項１記載の最適化装置。
【請求項４】
前記複数のビット演算回路の各々は、前記自ビットの値を示す第５の信号を更に出力し、
前記選択回路部は、前記第５の信号に基づいて、反転させる前記ビットの値を、前記エネルギー変化値とともに選択し、選択した前記ビットの値を含む前記第３の信号を出力する、
請求項１記載の最適化装置。
【請求項５】
前記複数のビット演算回路の各々は、自身の識別情報を示す第６の信号を更に出力し、
前記選択回路部は、前記第６の信号に基づいて、反転させる前記ビットに対応するビット演算回路の前記識別情報を、前記エネルギー変化値とともに選択し、選択した前記識別情報を含む前記第３の信号を出力する、
請求項１記載の最適化装置。
【請求項６】
最適化装置の制御方法において、
前記最適化装置が有する複数のビット演算回路の各々が、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと反転された前記ビットとの相互作用の大きさを示す係数に基づいて前記イジングモデルのエネルギー変化値を計算し、前記エネルギー変化値に応じた前記自ビットの反転可否を示す第１の信号と前記エネルギー変化値を示す第２の信号とを出力し、
前記最適化装置が有する選択回路部が、前記第１の信号および前記第２の信号に基づいて、前記ビット列のうち反転させる前記ビットと当該ビットに対応する前記エネルギー変化値とを選択し、選択した前記ビットを示す第３の信号を前記複数のビット演算回路の各々に出力するとともに、選択した前記エネルギー変化値を示す第４の信号を出力し、
前記最適化装置が有するエネルギー計算部が、前記第４の信号が示す前記エネルギー変化値に基づいて前記イジングモデルのエネルギーを計算する、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は最適化装置および最適化装置の制御方法に関する。
【背景技術】
【０００２】
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置（イジングマシンまたはボルツマンマシンと呼ばれる場合もある）がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。【０００３】
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット（スピンビット）のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数（結合係数とも呼ばれる）とに応じて０または１を出力するニューロンとして機能する。最適化装置は、例えば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数（コスト関数、目的関数とも呼ばれる）の値（エネルギーと言う）の最小値が得られる各ビットの値の組合せを、解として求める。【０００４】
例えば、最適化装置は、種々の回路素子を含む電子回路により実現される。回路において、例えば、アドレス入力の上位２ビットの組み合わせにより得られた信号を用いてセレクタのアドレスを制御することにより、アドレス入力の信号数を全く増やすことなくセレクタの論理段数を少なくする提案がある。【０００５】
なお、実行時に乱数を発生させてカレント情報を指定することで、カレント情報に応じて実行する処理をランダムに決定するプログラム実行装置の提案がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−９４３６２号公報
【特許文献２】国際公開第２００６／００１３６５号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
最適化装置では、スピンビット数が増すほど、回路規模も増す。回路規模が増すと、回路面積が大きくなり、装置内での信号の往来パスの長さが増す。往来パスの長さの増大は、パスを経由する信号伝達の遅延を招き、演算速度の低下要因になる。【０００８】
１つの側面では、本発明は、回路規模の増大に伴う演算速度の低下を抑制できる最適化装置および最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、最適化装置が提供される。最適化装置は、複数のビット演算回路と選択回路部とエネルギー計算部とを有する。複数のビット演算回路の各々は、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、ビット列のうちの自ビットと反転されたビットとの相互作用の大きさを示す係数に基づいてイジングモデルのエネルギー変化値を計算し、エネルギー変化値に応じた自ビットの反転可否を示す第１の信号とエネルギー変化値を示す第２の信号とを出力する。選択回路部は、第１の信号および第２の信号に基づいて、ビット列のうち反転させるビットと当該ビットに対応するエネルギー変化値とを選択し、選択したビットを示す第３の信号を複数のビット演算回路の各々に出力するとともに、選択したエネルギー変化値を示す第４の信号を出力する。エネルギー計算部は、第４の信号が示すエネルギー変化値に基づいてイジングモデルのエネルギーを計算する。【００１０】
また、１つの態様では、最適化装置の制御方法が提供される。
【発明の効果】
【００１１】
１つの側面では、回路規模の増大に伴う演算速度の低下を抑制できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の最適化装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】情報処理装置のハードウェア例を示すブロック図である。
【図４】情報処理システムにおけるハードウェアの関係の例を示す図である。
【図５】制御部のハードウェア例を示すブロック図である。
【図６】組合せ最適化問題の例を示す図である。
【図７】最少エネルギーとなるバイナリ値の探索例を示す図である。
【図８】最適化装置の回路構成例を示す図である。
【図９】ランダムセレクタ部の回路構成例を示す図である。
【図１０】選択回路の回路構成例を示す図である。
【図１１】初期化処理の例を示すフローチャートである。
【図１２】演算処理の例を示すフローチャートである。
【図１３】ＬＦＥの配置による信号経路の例を示す図である。
【図１４】最適化装置の他の例を示す図である。
【図１５】信号経路の他の例を示す図である。
【図１６】最適化装置の回路構成の比較例を示す図である。
【図１７】演算処理の比較例を示すフローチャートである。
【図１８】信号経路の比較例を示す図である。
【図１９】信号経路の他の比較例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１４】
図１は、第１の実施の形態の最適化装置を示す図である。
最適化装置１は、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビット（スピンビット）のそれぞれの値の組合せ（状態）のうち、エネルギー関数が最小値となるときの各ビットの値（基底状態）を探索する。
【００１５】
イジング型のエネルギー関数Ｅ（ｘ）は、例えば、以下の式（１）で定義される。
【００１６】
【数１】
2020054062.tif 000003
【００１７】
右辺第１項は、イジングモデルに含まれる全ビットから選択可能な２つのビットの全組合せについて、漏れと重複なく、２つのビットの値（０または１）と結合係数との積を積算したものである。イジングモデルに含まれる全ビット数をＮ個（Ｎは２以上の整数）とする。また、ｉ，ｊの各々を、０以上Ｎ−１以下の整数とする。ｘｉは、ｉ番目のビットの値を表す変数（状態変数とも呼ばれる）である。ｘｊは、ｊ番目のビットの値を表す変数である。Ｗｉｊは、ｉ番目とｊ番目のビットの相互作用の大きさを示す重み係数である。なお、Ｗｉｉ＝０である。また、Ｗｉｊ＝Ｗｊｉであることが多い（すなわち、重み係数による係数行列は対称行列である場合が多い）。
【００１８】
右辺第２項は、全ビットのそれぞれのバイアス係数とビットの値との積の総和を求めたものである。ｂｉは、ｉ番目のビットのバイアス係数を示している。
また、変数ｘｉの値が変化して１−ｘｉとなると、変数ｘｉの増加分は、Δｘｉ＝（１−ｘｉ）−ｘｉ＝１−２ｘｉと表せる。したがって、スピン反転（値の変化）に伴うエネルギー変化ΔＥｉは、以下の式（２）で表される。
【００１９】
【数２】
2020054062.tif 000004
【００２０】
ｈｉはローカルフィールド（局所場）と呼ばれ、式（３）で表される。
【００２１】
【数３】
2020054062.tif 000005
【００２２】
Δｘｉに応じてローカルフィールドｈｉに符号（＋１または−１）を乗じたものがエネルギー変化ΔＥｉとなる。ローカルフィールドｈｉの変化分Δｈｉは式（４）で表される。
【００２３】
【数４】
2020054062.tif 000006
【００２４】
ある変数ｘｊが変化したときのローカルフィールドｈｉを更新する処理は並列に行われる。
最適化装置１は、例えば、１チップの半導体集積回路であり、ＦＰＧＡ（Field Programmable Gate Array）などを用いて実現される。最適化装置１は、ビット演算回路１ａ１，１ａ２，…，１ａＮ（複数のビット演算回路）、選択回路部２、閾値生成部３、乱数生成部４、エネルギー計算部５および制御部６を有する。ここで、Ｎは、最適化装置１が備えるビット演算回路の総数である。ビット演算回路１ａ１，１ａ２，…，１ａＮの各々には、識別情報（ｉｎｄｅｘ＝０，１，…，Ｎ−１）が対応付けられている。
【００２５】
ビット演算回路１ａ１，…，１ａＮは、イジングモデルの状態を表すビット列に含まれる１ビットを提供する単位素子である。当該ビット列は、スピンビット列や状態ベクトルなどと呼ばれてもよい。ビット演算回路１ａ１，…，１ａＮの各々は、自ビットと他ビットの間の重み係数を記憶する。ビット演算回路１ａ１，…，１ａＮの各々は、スピンビット列のうちの何れかのビットが反転されると、自ビットと反転されたビットとの重み係数に基づいてイジングモデルのエネルギー変化値ΔＥを計算する。ΔＥは、式（２）により計算される。ビット演算回路１ａ１，…，１ａＮの各々は、エネルギー変化値に応じた自ビットの反転可否を示す信号（第１の信号）、および、エネルギー変化値ΔＥを示す信号（第２の信号）を、選択回路部２に出力する。
【００２６】
選択回路部２は、ビット演算回路１ａ１，…，１ａＮの各々から出力された信号を受け付ける。選択回路部２は、ビット演算回路１ａ１，…，１ａＮの各々から出力された信号に基づいて、スピンビット列のうち反転させるビット（反転ビット）と当該ビットに対応するエネルギー変化値とを選択する。選択回路部２は、選択したビット（反転ビット）を示す信号（第３の信号）をビット演算回路１ａ１，…，１ａＮの各々に出力するとともに、選択したエネルギー変化値を示す信号（第４の信号）をエネルギー計算部５に出力する。選択した反転ビットを示す信号は、反転ビットの識別情報（ｉｎｄｅｘ＝ｊ）と、反転可否を示すフラグ（ｆｌｇｊ＝１）と、反転ビットの現在の値ｑｊ（今回の反転前の値）とを示す信号を含む。ただし、何れのビットも反転されないこともある。何れのビットも反転されない場合、選択回路部２は、ｆｌｇｊ＝０を出力する。ｉｎｄｅｘ＝ｊに対し、選択回路部２からエネルギー計算部５に供給されるエネルギー変化値は、ΔＥｊと表される。
【００２７】
なお、選択回路部２は、ビット演算回路１ａ１，…，１ａＮの各々から、各ビット演算回路の識別情報（ｉｎｄｅｘ）を示す信号を受け付けてもよい。選択回路部２は、当該識別情報を示す信号に基づいて、反転させるスピンビットに対応する識別情報を、エネルギー変化値とともに選択してもよい。あるいは、選択回路部２は、反転させるスピンビットに対応するビット演算回路の識別情報を選択回路部２により生成して出力してもよい。
【００２８】
閾値生成部３は、ビット演算回路１ａ１，…，１ａＮの各々に対し、ビットの反転可否を判定する際に用いられる閾値を生成する。ビット演算回路１ａ１，…，１ａＮの各々に当該閾値を示す信号を出力する。後述するように、閾値生成部３は、閾値の生成に、温度を示すパラメータ（温度パラメータ）Ｔと乱数とを用いる。閾値生成部３は、当該乱数を発生させる乱数発生器を有する。閾値生成部３は、ビット演算回路１ａ１，…，１ａＮの各々に対して個別に乱数発生器を有し、個別に閾値の生成と供給とを行うことが好ましい。ただし、閾値生成部３は、所定数のビット演算回路で乱数発生器を共用してもよい。
【００２９】
乱数生成部４は、乱数ビットを生成し、選択回路部２に出力する。乱数生成部４により生成された乱数ビットは、選択回路部２による反転ビットの選択に用いられる。
エネルギー計算部５は、イジングモデルのエネルギーを計算する。具体的には、エネルギー計算部５は、イジングモデルの現在の状態に対するエネルギーを保持するレジスタを有し、当該レジスタにより、現在の状態に対するエネルギーＥを記憶する。エネルギー計算部５は、エネルギー変化値ΔＥを示す信号を選択回路部２から受け付け、エネルギーＥにΔＥを加算することでＥを更新する（Ｅ＝Ｅ＋ΔＥ）。エネルギー計算部５は、更新後のＥを、エネルギー計算部５のレジスタに格納する。
【００３０】
制御部６は、温度パラメータＴやビット演算回路１ａ１，…，１ａＮの各々の記憶部に対する重み係数の設定を行い、ビット演算回路１ａ１，…，１ａＮによる演算の開始や終了を制御する。制御部６は、演算結果の出力を行う。例えば、制御部６は、ビット演算回路１ａ１，…，１ａＮを用いた演算が終了すると、ビット演算回路１ａ１，…，１ａＮに保持されるスピンビット列を読み出して出力する。
【００３１】
次に、ビット演算回路の回路構成を説明する。ビット演算回路１ａ１（ｉｎｄｅｘ＝０）を主に説明するが、他のビット演算回路も同様の回路構成で実現される（例えば、Ｘ番目（Ｘは１以上Ｎ以下の整数）のビット演算回路に対して、ｉｎｄｅｘ＝Ｘ−１とすればよい）。
【００３２】
ビット演算回路１ａ１は、記憶部１１、セレクタ１２、反転判定部１３、ビット保持部１４、エネルギー変化計算部１５および状態遷移判定部１６を有する。
記憶部１１は、例えば、レジスタやＳＲＡＭ（Static Random Access Memory）などである。記憶部１１は、自ビット（ここでは、ｉｎｄｅｘ＝０のビット）と他ビットとの間の重み係数を記憶する。ここで、スピンビット数Ｎに対して、重み係数の総数はＮ２である。記憶部１１には、ｉｎｄｅｘ＝０のビットに対して、Ｎ個の重み係数Ｗ００，Ｗ０１，…，Ｗ０，Ｎ−１が記憶される。なお、記憶部１１は、ビット演算回路１ａ１の外部であって、最適化装置１の内部に設けられてもよい（他のビット演算回路の記憶部も同様）。
【００３３】
セレクタ１２は、スピンビット列の何れかのビットが反転されると反転されたビットに対する重み係数を記憶部１１から読み出し、読み出した重み係数をエネルギー変化計算部１５に出力する。すなわち、セレクタ１２は、選択回路部２から反転ビットの識別情報を受け付け、記憶部１１から反転ビットと自ビットとの組に対応する重み係数を読み出して、エネルギー変化計算部１５に出力する。
【００３４】
反転判定部１３は、選択回路部２により出力されたｉｎｄｅｘ＝ｊとｆｌｇｊとを示す信号を受け付け、当該信号に基づいて反転ビットとして自ビットが選択されたか否かを判定する。反転ビットとして自ビットが選択された場合（すなわち、ｉｎｄｅｘ＝ｊが自ビットを示し、ｆｌｇｊが反転可を示す場合）、反転判定部１３は、ビット保持部１４に記憶されたビットを反転させる。すなわち、ビット保持部１４に保持されたビットが０の場合、当該ビットを１に変更する。また、ビット保持部１４に保持されたビットが１の場合、当該ビットを０に変更する。
【００３５】
ビット保持部１４は、１ビットを保持するレジスタである。ビット保持部１４は、保持するビットをエネルギー変化計算部１５および選択回路部２に出力する。
エネルギー変化計算部１５は、記憶部１１から読み出した重み係数を用いたイジングモデルのエネルギー変化値ΔＥ０を計算し、状態遷移判定部１６に出力する。具体的には、エネルギー変化計算部１５は、反転ビットの値（今回の反転前の値）を選択回路部２から受け付け、反転ビットが、１から０、または、０から１のどちらに反転するかに応じて、式（４）により、Δｈ０を計算する。そして、エネルギー変化計算部１５は、前回のｈ０にΔｈ０を加算することで、ｈ０を更新する。エネルギー変化計算部１５は、ｈ０を保持するレジスタを有し、当該レジスタにより更新後のｈ０を保持する。
【００３６】
更に、エネルギー変化計算部１５は、ビット保持部１４より現在の自ビットを受け付け、自ビットが０であれば０から１へ、自ビットが１であれば１から０へ、反転する場合のイジングモデルのエネルギー変化値ΔＥ０を式（２）により計算する。エネルギー変化計算部１５は、計算したエネルギー変化値ΔＥ０を、状態遷移判定部１６に出力する。
【００３７】
状態遷移判定部１６は、エネルギー変化計算部１５によるエネルギー変化の計算に応じて、自ビットの反転可否を示す信号ｆｌｇ０を選択回路部２に出力する。具体的には、状態遷移判定部１６は、エネルギー変化計算部１５により計算されたエネルギー変化値ΔＥ０を受け付け、閾値生成部３により生成された閾値との比較に応じて、自ビットの反転可否を判定する比較器である。ここで、状態遷移判定部１６による判定について説明する。
【００３８】
シミュレーテッド・アニーリングでは、あるエネルギー変化ΔＥを引き起こす状態遷移の許容確率ｐ（ΔＥ，Ｔ）を以下の式（５）のように決めれば、時刻（反復回数）無限大の極限で状態が最適解（基底状態）に到達することが知られている。
【００３９】
【数５】
2020054062.tif 000007
【００４０】
式（５）においてＴは、前述の温度パラメータＴである。ここで、関数ｆとして、式（６）（メトロポリス法）、または、式（７）（ギブス法）が用いられる。
【００４１】
【数６】
2020054062.tif 000008
【００４２】
【数７】
2020054062.tif 000009
【００４３】
温度パラメータＴは、例えば、式（８）で表される。すなわち、温度パラメータＴは、反復回数ｔに対して対数的に減少する関数で与えられる。例えば、定数ｃは問題に応じて決定される。
【００４４】
【数８】
2020054062.tif 000010
【００４５】
ここで、Ｔ０は、初期温度値であり問題に応じて十分に大きくとることが望ましい。
式（５）で表される許容確率ｐ（ΔＥ，Ｔ）を用いた場合、ある温度における状態遷移の十分な反復後に定常状態に達したとすると、当該状態はボルツマン分布に従って生成される。すなわち、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布に従う。よって、ある温度でボルツマン分布に従った状態を生成し、その後、当該温度よりも低い温度でボルツマン分布に従った状態を生成し、というように徐々に温度を下げていくことで、各温度におけるボルツマン分布に従った状態を追えることになる。そして、温度０としたときに、温度０でのボルツマン分布により最低エネルギーの状態（基底状態）が高確率で実現される。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれる。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００４６】
例えば、許容確率ｐ（ΔＥ，Ｔ）でエネルギー変化ΔＥを引き起こす状態遷移を許容することを示すフラグ（ｆｌｇ＝１）を出力する回路は、ｆ（−ΔＥ／Ｔ）と、区間［０，１）の値をとる一様乱数ｕとの比較に応じた値を出力する比較器により実現できる。
【００４７】
ただし、次のような変形を行っても同じ機能を実現可能である。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の２つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、ｆ（−ΔＥ／Ｔ）に作用させる単調増加関数としてｆ（−ΔＥ／Ｔ）の逆関数ｆ−１（−ΔＥ／Ｔ）、一様乱数ｕに作用させる単調増加関数としてｆ−１（−ΔＥ／Ｔ）の−ΔＥ／Ｔをｕとしたｆ−１（ｕ）を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、−ΔＥ／Ｔがｆ−１（ｕ）より大きいとき１を出力する回路でよい。更に、温度パラメータＴが正であることから、状態遷移判定部１６は、−ΔＥがＴ・ｆ−１（ｕ）より大きいとき（あるいは、ΔＥが−（Ｔ・ｆ−１（ｕ））より小さいとき）、ｆｌｇ０＝１を出力する回路でよい。
【００４８】
閾値生成部３は、一様乱数ｕを生成し、上記のｆ−１（ｕ）の値に変換する変換テーブルを用いて、ｆ−１（ｕ）の値を出力する。メトロポリス法が適用される場合、ｆ−１（ｕ）は、式（９）で与えられる。また、ギブス法が適用される場合、ｆ−１（ｕ）は、式（１０）で与えられる。
【００４９】
【数９】
2020054062.tif 000011
【００５０】
【数１０】
2020054062.tif 000012
【００５１】
変換テーブルは、例えば、閾値生成部３に接続されたＲＡＭ（Random Access Memory）、フラッシュメモリなどのメモリ（図示を省略している）に記憶される。閾値生成部３は、温度パラメータＴと、ｆ−１（ｕ）との積（Ｔ・ｆ−１（ｕ））を閾値として出力する。ここで、Ｔ・ｆ−１（ｕ）は、熱励起エネルギーに相当する。
【００５２】
なお、選択回路部２から状態遷移判定部１６に対してｆｌｇｊを入力し、当該ｆｌｇｊが状態遷移を許容しないことを示すとき（つまり状態遷移が生じないとき）、状態遷移判定部１６により−ΔＥ０にオフセット値を加算してから、閾値との比較を行ってもよい。また、状態遷移判定部１６は、状態遷移が生じないことが継続する場合に、加算するオフセット値を増加させてもよい。一方、状態遷移判定部１６は、ｆｌｇｊが、状態遷移を許容することを示すとき（つまり状態遷移が生じるとき）には、オフセット値を０にする。−ΔＥ０へのオフセット値の加算やオフセット値の増加により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
【００５３】
こうして、温度パラメータＴが徐々に小さく設定され、例えば、温度パラメータＴの値を所定回数、小さくした場合（または、温度パラメータＴが最小値に達した場合）のスピンビット列が、ビット演算回路１ａ１，…，１ａＮに保持される。最適化装置１は、温度パラメータＴの値を所定回数、小さくした場合（または、温度パラメータＴが最小値に達した場合）のスピンビット列を解として出力する。
【００５４】
最適化装置１によれば、選択回路部２により、ビット演算回路１ａ１，…，１ａＮの各々から出力された信号に基づいて、スピンビット列のうち反転させるビットと当該ビットに対応するエネルギー変化値とが選択される。そして、選択したビットを示す信号（ｑｊ，ｆｌｇｊ，ｉｎｄｅｘ＝ｊ）がビット演算回路１ａ１，…，１ａＮの各々に出力される。選択したエネルギー変化値ΔＥｊを示す信号がエネルギー計算部５に出力される。
【００５５】
これにより、回路規模の増大に伴う演算速度の低下を抑制できる。具体的には、次の通りである。
例えば、次のような比較例の回路構成が考えられる。すなわち、選択回路部による反転ビット（ｉｎｄｅｘ＝ｊ）の選択後に、選択回路部からｉｎｄｅｘ＝ｊに対応するビット演算回路のエネルギー変化計算部に、ΔＥｊを出力するよう所定の命令信号を供給することも考えられる。この場合、選択回路部はエネルギー変化値の選択を行わず、選択回路部はエネルギー計算部にΔＥｊを供給しない。また、この場合、エネルギー変化計算部から出力されたΔＥｊは、例えば、所定のΔＥ出力回路に供給される。ΔＥ出力回路は、全ビット演算回路から通常はΔＥ＝０の供給を受ける。ΔＥ出力回路は、反転ビットに対応するビット演算回路から、エネルギー変化計算部により計算されたΔＥｊを受け付け、ＯＲ論理などによってΔＥｊを出力する。ΔＥ出力回路のΔＥｊの出力先はエネルギー計算部である。
【００５６】
ところが、ΔＥ出力回路を用いる比較例の回路構成の場合、選択回路部から反転ビットに対応するビット演算回路への命令信号の供給のための第１信号パス、および、エネルギー変化計算部からΔＥ出力回路へのΔＥｊの供給のための第２信号パスを要する。したがって、第１信号パスおよび第２信号パスを経由する信号伝達に時間がかかる。最適化装置の回路面積が大きくなるほど、第１信号パスの長さおよび第２信号パスの長さは長くなる。第１信号パスおよび第２信号パスを介した信号伝達に伴う遅延は、最適化装置の回路規模が大きくなり回路面積が大きくなるほど、大きくなる。
【００５７】
当該遅延により、エネルギー計算部によるエネルギー計算の開始が遅れる。エネルギー計算の開始の遅れが過大になると、最適化装置の演算速度のボトルネックとなり得る。最適化装置は、各ビット演算回路のビット保持部に保持されるスピンビット列と、当該スピンビット列に対するエネルギーＥとを同期して保持する。したがって、エネルギーＥの計算が遅延すると、ビット演算回路によるスピンビット列の更新も遅延させることになり、最適化装置の全体の演算速度が低下し得る。
【００５８】
そこで、最適化装置１では、選択回路部２により、反転ビットの選択とともに、エネルギー変化値の選択も行い、選択回路部２により選択されたエネルギー変化値ΔＥｊをエネルギー計算部５に出力する。これにより、上記比較例の回路構成における第１信号パスおよび第２信号パスが不要となり、第１信号パスおよび第２信号パスを介した信号伝達が不要となる。また、比較例の回路構成で例示したΔＥ出力回路も不要となる。したがって、当該信号伝達に伴う遅延が低減され、比較例の回路構成よりも、エネルギー計算部５によるエネルギー計算を早く開始できる。その結果、最適化装置１の回路規模の増大に伴う演算速度の低下を抑制できる。
【００５９】
以下では、最適化装置１を用いる情報処理システムを例示し、最適化装置１の機能を更に詳細に説明する。
［第２の実施の形態］
次に、第２の実施の形態を説明する。
【００６０】
図２は、第２の実施の形態の情報処理システムの例を示す図である。
第２の実施の形態の情報処理システムは、情報処理装置２０とクライアント３０とを有する。情報処理装置２０およびクライアント３０は、ネットワーク４０に接続されている。ネットワーク４０は、例えば、ＬＡＮ（Local Area Network）でもよいし、ＷＡＮ（Wide Area Network）やインターネットなどでもよい。
【００６１】
情報処理装置２０は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
クライアント３０は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置２０への入力に用いられる。
【００６２】
図３は、情報処理装置のハードウェア例を示すブロック図である。
情報処理装置２０は、ＣＰＵ（Central Processing Unit）２１、ＤＲＡＭ（Dynamic Random Access Memory）２２、記憶装置２３、ＮＩＣ（Network Interface Card）２４および最適化装置２５を有する。ＣＰＵ２１、ＤＲＡＭ２２、記憶装置２３、ＮＩＣ２４および最適化装置２５は、情報処理装置２０のバス２９に接続されている。バス２９は、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）バスである。
【００６３】
ＣＰＵ２１は、ＤＲＡＭ２２に格納されたプログラムの命令を実行するプロセッサである。ＣＰＵ２１は、記憶装置２３に記憶されたプログラムやデータの少なくとも一部をＤＲＡＭ２２にロードし、プログラムを実行する。ＣＰＵ２１は、当該プログラムを実行することで発揮される機能により、最適化装置２５に対する設定や動作の制御を行う。
【００６４】
ＤＲＡＭ２２は、情報処理装置２０の主記憶装置であり、ＣＰＵ２１により実行されるプログラムや最適化装置２５に設定されるデータなどを一時的に記憶する。
記憶装置２３は、情報処理装置２０の補助記憶装置であり、ＣＰＵ２１により実行されるプログラムや最適化装置２５に設定されるデータなどを記憶する。記憶装置２３は、例えば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などである。
【００６５】
ＮＩＣ２４は、ネットワーク４０に接続され、ネットワーク４０を介してクライアント３０と通信する通信インタフェースである。ＮＩＣ２４は、例えば、ネットワーク４０に属するスイッチやルータなどの通信装置とケーブルで接続される。
【００６６】
最適化装置２５は、ＣＰＵ２１の制御により、イジングモデルの基底状態を探索する。最適化装置２５は、例えば、１チップの半導体集積回路であり、ＦＰＧＡなどにより実現される。最適化装置２５は、第１の実施の形態の最適化装置１の一例である。
【００６７】
なお、クライアント３０はＣＰＵ、主記憶装置、補助記憶装置およびＮＩＣを有する。
図４は、情報処理システムにおけるハードウェアの関係の例を示す図である。
クライアント３０は、ユーザプログラム３１を実行する。ユーザプログラム３１は、情報処理装置２０への各種データ（例えば、解くべき問題の内容や最適化装置２５の利用スケジュールなどの動作条件）の入力、および、最適化装置２５による演算結果の表示などを行う。
【００６８】
ＣＰＵ２１は、ライブラリ２１ａおよびドライバ２１ｂを実行するプロセッサ（演算部）である。ライブラリ２１ａのプログラム、および、ドライバ２１ｂのプログラムは、記憶装置２３に格納されており、ＣＰＵ２１による実行時にＤＲＡＭ２２にロードされる。
【００６９】
ライブラリ２１ａは、ユーザプログラム３１により入力された各種データを受け付け、ユーザが解くべき問題を、イジングモデルの最低エネルギー状態を探索する問題に変換する。ライブラリ２１ａは、変換後の問題に関する情報（例えば、スピンビット数、重み係数を表すビット数、重み係数の値、温度パラメータの初期値など）を、ドライバ２１ｂに提供する。また、ライブラリ２１ａは、最適化装置２５による解の探索結果をドライバ２１ｂから取得し、当該探索結果をユーザに分かり易い結果情報（例えば、結果表示画面の情報）に変換して、ユーザプログラム３１に提供する。
【００７０】
ドライバ２１ｂは、ライブラリ２１ａから提供された情報を最適化装置２５に供給する。また、ドライバ２１ｂは、イジングモデルによる解の探索結果を最適化装置２５から取得し、ライブラリ２１ａに提供する。
【００７１】
最適化装置２５は、ハードウェアとして、制御部２５ａおよびＬＦＢ（Local Field Block）５０を有する。
制御部２５ａは、ドライバ２１ｂから受け付けたＬＦＢ５０の動作条件を記憶するＲＡＭを有し、当該動作条件に基づいてＬＦＢ５０による演算を制御する。また、制御部２５ａは、ＬＦＢ５０が備える各種のレジスタへの初期値の設定、ＳＲＡＭへの重み係数の格納、および、演算終了後のスピンビット列（探索結果）の読み出しなどを行う。制御部２５ａは、例えば、ＦＰＧＡにおける回路などによって実現される。
【００７２】
ＬＦＢ５０は、複数のＬＦＥ（Local Field Element）を有する。ＬＦＥは、スピンビットに対応する単位素子である。１つのＬＦＥは、１つのスピンビットに対応する。後述するように、最適化装置２５は、複数のＬＦＢを有してもよい。
【００７３】
図５は、制御部のハードウェア例を示すブロック図である。
制御部２５ａは、ＣＰＵ入出力部２５ａ１、制御レジスタ２５ａ２、ＬＦＢ送信部２５ａ３およびＬＦＢ受信部２５ａ４を有する。
【００７４】
ＣＰＵ入出力部２５ａ１は、ＣＰＵ２１から受け付けたデータを、制御レジスタ２５ａ２またはＬＦＢ５０に入力する。例えば、ＣＰＵ入出力部２５ａ１は、ＣＰＵ２１により入力された各パラメータの初期値や結合定数などの設定データやＬＦＢ５０の動作条件のデータを、制御レジスタ２５ａ２を介してＬＦＢ５０に入力することもできるし、ＬＦＢ５０内の各レジスタやＲＡＭに入力することもできる。
【００７５】
制御レジスタ２５ａ２は、ＣＰＵ入出力部２５ａ１によるＬＦＢ５０に対する各種の設定データを保持し、ＬＦＢ送信部２５ａ３に出力する。また、制御レジスタ２５ａ２は、ＬＦＢ受信部２５ａ４によりＬＦＢ５０から受信されたデータを保持し、ＣＰＵ入出力部２５ａ１に出力する。
【００７６】
ＬＦＢ送信部２５ａ３は、制御レジスタ２５ａ２に保持された設定データを、ＬＦＢ５０に送信する。
ＬＦＢ受信部２５ａ４は、ＬＦＢ５０からデータ（演算結果などのデータ）を受信し、制御レジスタ２５ａ２に格納する。
【００７７】
図６は、組合せ最適化問題の例を示す図である。
組合せ最適化問題の一例として、巡回セールスマン問題を考える。ここでは、簡単のため、Ａ都市，Ｂ都市，Ｃ都市，Ｄ都市，Ｅ都市の５つの都市を、最少コスト（距離や料金など）で回る経路を求めるとする。グラフ２０１は、都市をノード、都市間の移動をエッジとした１つの経路を示す。この経路は、例えば、行を回る順番、列を都市に対応付けた行列２０２で表される。行列２０２は、行の小さい順に、ビット「１」が設定された都市を回ることを示す。更に、行列２０２は、スピンビット列に相当するバイナリ値２０３に変換できる。行列２０２の例では、バイナリ値２０３は、５×５＝２５ビットとなる。バイナリ値２０３（スピンビット列）のビット数は、巡回対象の都市が増すほど増加する。すなわち、組合せ最適化問題の規模が大きくなれば、より多くのスピンビットが所要され、スピンビット列のビット数（規模）が大きくなる。
【００７８】
次に、最少エネルギーとなるバイナリ値の探索例を説明する。
図７は、最少エネルギーとなるバイナリ値の探索例を示す図である。
まず、バイナリ値２２１のうちの１ビットを反転させる前（スピン反転前）のエネルギーをＥｉｎｉｔとする。
【００７９】
最適化装置２５は、バイナリ値２２１の任意の１ビットを反転させたときのエネルギー変化量ΔＥを計算する。グラフ２１１は、横軸をバイナリ値、縦軸をエネルギーとして、エネルギー関数に応じた１ビット反転に対するエネルギー変化を例示している。最適化装置２５は、式（２）によりΔＥを求める。
【００８０】
最適化装置２５は、上記の計算を、バイナリ値２２１の全ビットに適用し、各々のビットの反転に対して、エネルギー変化量ΔＥを計算する。例えば、バイナリ値２２１のビット数がＮのとき、反転パターン２２２はＮ個になる。グラフ２１２は、反転パターン毎のエネルギー変化の様子を例示する。
【００８１】
最適化装置２５は、反転パターン毎のΔＥに基づいて、反転条件（閾値とΔＥとの所定の判定条件）を満たした反転パターン２２２のうちからランダムで１つを選択する。最適化装置２５は、選択された反転パターンに対応するΔＥを、スピン反転前のＥｉｎｉｔに加減算し、スピン反転後のエネルギー値Ｅを計算する。最適化装置は、求めたエネルギー値ＥをＥｉｎｉｔとし、スピン反転後のバイナリ値２２３を用いて、上記の手順を繰り返し行う。
【００８２】
ここで、前述のように、式（２），（３）で用いられるＷの１要素は、ビット間の相互作用の大きさを示すスピン反転の重み係数である。当該重み係数を表すビット数を精度と呼ぶ。精度が高いほど、スピン反転時のエネルギー変化量ΔＥに対する条件を詳細に設定できる。例えば、Ｗの総サイズは、スピンビット列に含まれる２つのビットの全結合に対して「精度×スピンビット数×スピンビット数」である。一例として、スピンビット数が１ｋ（＝１０２４）の場合、Ｗの総サイズは、「精度×１ｋ×１ｋ」ビットとなる。
【００８３】
次に、図７で例示した探索を行う最適化装置２５の回路構成を説明する。
図８は、最適化装置の回路構成例を示す図である。
最適化装置２５（あるいは、最適化装置２５のＬＦＢ５０）は、ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎ、ランダムセレクタ部５２、閾値生成部５３、乱数生成部５４およびエネルギー計算部５５を有する。
【００８４】
ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎの各々は、スピンビットの１ビットとして用いられる。ｎは、２以上の整数であり、ＬＦＢ５０が備えるＬＦＥの数を示す。ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎの各々には、ＬＦＥの識別情報（ｉｎｄｅｘ）が対応付けられている。ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎの各々に対して、ｉｎｄｅｘ＝０，１，…，ｎ−１である。ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎは、第１の実施の形態のビット演算回路１ａ１，…，１ａＮの一例である。
【００８５】
以下では、ＬＦＥ５１ａ１の回路構成を説明する。ＬＦＥ５１ａ２，…，５１ａｎも、ＬＦＥ５１ａ１と同様の回路構成により実現される。ＬＦＥ５１ａ２，…，５１ａｎの回路構成の説明については、以下の説明における各要素の符号の末尾の「ａ１」の部分を、「ａ２」，…，「ａｎ」の各々に置換して（例えば、「６０ａ１」の符号を「６０ａｎ」のように置換して）読み替えればよい。また、ｈ，ｑ，ΔＥ，Ｗなどの各値の添え字についても、「ａ２」，…，「ａｎ」の各々に対応する添え字に置換して読み替えればよい。
【００８６】
ＬＦＥ５１ａ１は、ＳＲＡＭ６０ａ１、セレクタ６１ａ１、Δｈ生成部６２ａ１、加算器６３ａ１、ｈ格納レジスタ６４ａ１、反転判定部６５ａ１、ビット格納レジスタ６６ａ１、ΔＥ生成部６７ａ１、判定部６８ａ１およびｉｎｄｅｘ格納レジスタ６９ａ１を有する。
【００８７】
ＳＲＡＭ６０ａ１は、重み係数Ｗを格納する。ＳＲＡＭ６０ａ１は、第１の実施の形態の記憶部１１に対応する。ＳＲＡＭ６０ａ１には、全スピンビットの重み係数Ｗのうち、ＬＦＥ５１ａ１で使用される分だけ格納される。このため、スピンビット数をｎ（ｎは２以上の整数）とすると、ＳＲＡＭ６０ａ１に格納される全重み係数のサイズは、「精度×ｎ」ビットとなる。また、ＳＲＡＭ６０ａ１には、重み係数Ｗ００，Ｗ０１，…，Ｗ０，ｎ−１が格納される。
【００８８】
セレクタ６１ａ１は、反転ビットの識別情報であるｉｎｄｅｘと反転可を示すフラグＦとをランダムセレクタ部５２から取得し、反転ビットに対応する重み係数をＳＲＡＭ６０ａ１から読み出す。セレクタ６１ａ１は、読み出した重み係数を、Δｈ生成部６２ａ１に出力する。
【００８９】
Δｈ生成部６２ａ１は、ランダムセレクタ部５２から反転ビットの現在のビット値（今回の反転前のビット値）を受け付け、セレクタ６１ａ１から取得した重み係数を用いて、式（４）により、ローカルフィールドｈ０の変化量Δｈ０を計算する。Δｈ生成部６２ａ１は、Δｈ０を加算器６３ａ１に出力する。
【００９０】
加算器６３ａ１は、ｈ格納レジスタ６４ａ１に格納されたローカルフィールドｈ０にΔｈ０を加算し、ｈ格納レジスタ６４ａ１に出力する。
ｈ格納レジスタ６４ａ１は、図示しないクロック信号に同期して、加算器６３ａ１が出力する値（ローカルフィールドｈ０）を取り込む。ｈ格納レジスタ６４ａ１は、例えば、フリップフロップである。なお、ｈ格納レジスタ６４ａ１に格納されるローカルフィールドｈ０の初期値は、バイアス係数ｂ０である。当該初期値は、制御部２５ａにより設定される。
【００９１】
反転判定部６５ａ１は、反転ビットのｉｎｄｅｘ＝ｊと、反転可否を示すフラグＦｊとをランダムセレクタ部５２から受け付け、自ビットが反転ビットとして選択されたか否かを判定する。自ビットが反転ビットとして選択された場合、反転判定部６５ａ１は、ビット格納レジスタ６６ａ１に格納されたスピンビットを反転させる。
【００９２】
ビット格納レジスタ６６ａ１は、ＬＦＥ５１ａ１に対応するスピンビットを保持する。ビット格納レジスタ６６ａ１は、例えば、フリップフロップである。ビット格納レジスタ６６ａ１に格納されたスピンビットは、反転判定部６５ａ１により反転される。ビット格納レジスタ６６ａ１は、ΔＥ生成部６７ａ１およびランダムセレクタ部５２にスピンビットを出力する。
【００９３】
ΔＥ生成部６７ａ１は、ｈ格納レジスタ６４ａ１のローカルフィールドｈ０およびビット格納レジスタ６６ａ１のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔＥ０を、式（２）により計算する。ΔＥ生成部６７ａ１は、エネルギー変化量ΔＥ０を、判定部６８ａ１およびランダムセレクタ部５２に出力する。
【００９４】
判定部６８ａ１は、ΔＥ生成部６７ａ１により出力されたエネルギー変化量ΔＥ０と、閾値生成部５３により生成された閾値との比較により、自ビットの反転を許容するか否かを示す（自ビットの反転可否を示す）フラグＦ０を、ランダムセレクタ部５２に出力する。具体的には、判定部６８ａ１は、ΔＥ０が閾値−（Ｔ・ｆ−１（ｕ））より小さいときＦ０＝１（反転可）を出力し、ΔＥ０が閾値−（Ｔ・ｆ−１（ｕ））以上のときＦ０＝０（反転不可）を出力する。ここで、ｆ−１（ｕ）は、適用法則に応じて、式（９），（１０）の何れかで与えられる関数である。また、ｕは、区間［０，１）の一様乱数である。
【００９５】
ｉｎｄｅｘ格納レジスタ６９ａ１は、図示しないクロック信号に同期して、ＬＦＥ５１ａ１のｉｎｄｅｘ＝０を、ランダムセレクタ部５２に出力する。ｉｎｄｅｘ格納レジスタ６９ａ１は、例えば、フリップフロップである。
【００９６】
ランダムセレクタ部５２は、ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎの各々から、スピンビット、スピンビットの反転可否を示すフラグ、ｉｎｄｅｘおよびエネルギー変化量を受け付ける。ランダムセレクタ部５２は、反転可であるスピンビットのうち反転させるビット（反転ビット）を選択する。また、ランダムセレクタ部５２は、反転ビットとともに、当該反転ビットに対応するエネルギー変化値を選択する。
【００９７】
ランダムセレクタ部５２は、選択した反転ビットの現在のビット値（ビットｑｊ）を、ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎが備えるΔｈ生成部６２ａ１，６２ａ２，…，６２ａｎに供給する。ランダムセレクタ部５２は、第１の実施の形態の選択回路部２の一例である。
【００９８】
ランダムセレクタ部５２は、反転ビットのｉｎｄｅｘ＝ｊと、反転可否を示すフラグＦｊとを、ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎが備えるセレクタ６１ａ１，６１ａ２，…，６０ａｎ、および、反転判定部６５ａ１，６５ａ２，…，６５ａｎに供給する。
【００９９】
更に、ランダムセレクタ部５２は、選択した反転ビットに対応するΔＥｊを、エネルギー計算部５５に供給する。
閾値生成部５３は、ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎが備える判定部６８ａ１，６８ａ２，…，６８ａｎに対して、エネルギー変化量ΔＥとの比較に用いられる閾値を生成し、供給する。前述のように、閾値生成部５３は、温度パラメータＴと、区間［０，１）の一様乱数ｕと、式（９）または式（１０）で示されるｆ−１（ｕ）とを用いて、閾値を生成する。閾値生成部５３は、例えば、ＬＦＥ毎に個別に、乱数発生器を有し、ＬＦＥ毎に個別の乱数ｕを用いて閾値を生成する。ただし、幾つかのＬＦＥで乱数発生器が共有されてもよい。温度パラメータＴの初期値やシミュレーテッド・アニーリングにおける温度パラメータＴの減少サイクルや減少量などは、制御部２５ａによって制御される。
【０１００】
乱数生成部５４は、ランダムセレクタ部５２における反転ビットの選択に用いられる乱数ビットを生成し、ランダムセレクタ部５２に供給する。
エネルギー計算部５５は、現在のスピンビット列に対するイジングモデルのエネルギーを計算する。エネルギー計算部５５は、加算器５６およびＥ格納レジスタ５７を有する。
【０１０１】
加算器５６は、ランダムセレクタ部５２により出力されたエネルギー変化量ΔＥｊを受け付け、Ｅ格納レジスタ５７に格納されたエネルギー値ＥにΔＥｊを加算し、Ｅ格納レジスタ５７に出力する。
【０１０２】
Ｅ格納レジスタ５７は、図示しないクロック信号に同期して、加算器５６が出力するエネルギー値Ｅを取り込む。Ｅ格納レジスタ５７は、例えば、フリップフロップである。なお、エネルギー値Ｅの初期値は、スピンビット列の初期値に応じて、制御部２５ａによって式（１）を用いて計算され、Ｅ格納レジスタ５７に設定される。Ｅ格納レジスタ５７は、ＬＦＥ５１ａ１，…，５１ａｎが保持するスピンビット列に同期したエネルギー値Ｅを保持する。
【０１０３】
ここで、Ｅ格納レジスタ５７に格納されたエネルギー値Ｅは、例えば、スピンビット列とともに、制御部２５ａにより読み出される。例えば、制御部２５ａは、ＬＦＢ５０を複数用いて、あるイジングモデルのレプリカを複数実現し、レプリカ交換法と呼ばれる手法で、解の収束性を早め、演算を高速化することが考えられる。
【０１０４】
レプリカ交換法では、レプリカ毎に異なる温度パラメータＴを与えて解の探索を行い、エネルギー値Ｅおよび温度パラメータＴに基づく交換確率によりレプリカ間の温度を交換する。この場合、制御部２５ａは、解の探索の過程で、各レプリカによって実現された最低エネルギーとそのときのスピンビット列とを、該当レプリカに属するＬＦＢ内のＥ格納レジスタおよびビット格納レジスタから読み出して、制御部２５ａのＲＡＭに保存しておく。制御部２５ａは、最低エネルギーが更新されると、保存された最低エネルギーとスピンビット列を更新する。制御部２５ａは、所定回数の試行により最低エネルギーを与えたスピンビット列を解とすることが考えられる。なお、情報処理装置２０に複数の最適化装置２５を設けて、ＣＰＵ２１が複数の最適化装置２５により実現される複数のレプリカに対してレプリカ交換法による上記演算の制御（レプリカ間の温度交換や最低エネルギーとなるスピンビット列の特定）を行ってもよい。
【０１０５】
あるいは、Ｅ格納レジスタ５７に格納されたエネルギー値Ｅは、ライブラリ２１ａなどによる最適化装置２５の動作条件の検証などに用いられてもよい。
図９は、ランダムセレクタ部の回路構成例を示す図である。
【０１０６】
ランダムセレクタ部５２は、複数段にわたってツリー状に接続された複数の選択回路を有する。
初段の選択回路５２ａ１，５２ａ２，５２ａ３，５２ａ４，…，５２ａｑの各々には、ＬＦＥ５１ａ１，５１ａ２，…，５１ａｎのそれぞれが出力する変数ｑｉとＦｉとｉｎｄｅｘ＝ｉとΔＥｉの組（状態信号と言う）が２組ずつ入力される。例えば、選択回路５２ａ１には、ＬＦＥ５１ａ１が出力する変数ｑ０とＦ０とｉｎｄｅｘ＝０とΔＥ０による組と、ＬＦＥ５１ａ２が出力する変数ｑ１とＦ１とｉｎｄｅｘ＝１とΔＥ１による組とが入力される。また、選択回路５２ａ２には、変数ｑ２とＦ２とｉｎｄｅｘ＝２とΔＥ２による組と変数ｑ３とＦ３とｉｎｄｅｘ＝３とΔＥ３による組が入力される。選択回路５２ａ３には、変数ｑ４とＦ４とｉｎｄｅｘ＝４とΔＥ４による組と変数ｑ５とＦ５とｉｎｄｅｘ＝５とΔＥ５による組が入力される。更に、選択回路５２ａ４には、変数ｑ６とＦ６とｉｎｄｅｘ＝６とΔＥ６による組と変数ｑ７とＦ７とｉｎｄｅｘ＝７とΔＥ７による組が入力される。選択回路５２ａｑには、変数ｑｎ−２とＦｎ−２とｉｎｄｅｘ＝ｎ−２とΔＥｎ−２による組と変数ｑｎ−１とＦｎ−１とｉｎｄｅｘ＝ｎ−１とΔＥｎ−１による組が入力される。
【０１０７】
そして、選択回路５２ａ１，…，５２ａｑの各々は、入力された２組の変数ｑｉとＦｉとｉｎｄｅｘ＝ｉとΔＥｉと、乱数生成部５４が出力する１ビット乱数に基づいて、一方の組の変数ｑｉとＦｉとｉｎｄｅｘ＝ｉとΔＥｉを選択する。このとき、選択回路５２ａ１，…，５２ａｑの各々は、Ｆｉが１である組を優先的に選択し、両方の組が１の場合には１ビット乱数に基づいて何れか一方の組を選択する（他の選択回路も同様）。ここで、乱数生成部５４は、１ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。なお、初段の選択回路５２ａ１〜５２ａｑの数は、ＬＦＥ５１ａ１，…，５１ａｎの数の１／２、つまり、ｎ／２である。
【０１０８】
２段目の選択回路５２ｂ１，５２ｂ２，…，５２ｂｒの各々には、選択回路５２ａ１，…，５２ａｑが出力する状態信号が２つずつ入力される。例えば、選択回路５２ｂ１には、選択回路５２ａ１，５２ａ２が出力する状態信号が入力される。また、選択回路５２ｂ２には、選択回路５２ａ３，５２ａ４が出力する状態信号が入力される。
【０１０９】
そして、選択回路５２ｂ１，…，５２ｂｒの各々は、２つの状態信号と、乱数生成部５４が出力する１ビット乱数に基づいて、２つの状態信号の何れか一方を選択する。
３段目以降の選択回路においても同様の処理が行われ、最後段の選択回路５２ｐから、ランダムセレクタ部５２の出力である状態信号（Ｆｊ，ｑｊ，ｉｎｄｅｘ＝ｊ，ΔＥｊの組）が出力される。
【０１１０】
このように、ランダムセレクタ部５２は、１段目の複数の第１の選択回路（選択回路５２ａ１，…，５２ａｑ）と、２段目以降の１以上の第２の選択回路（選択回路５２ｂ１，…，５２ｐ）とを有する。複数の第１の選択回路の各々は、スピンビットの反転可否を示す信号（Ｆ）およびエネルギー変化値を示す信号（ΔＥ）の組を複数組ずつ受け付け、反転可を示す第１の信号を含む組を優先して何れか１つの組を選択し、出力する。１以上の第２の選択回路の各々は、前段の複数の選択回路の各々が出力した第１の信号および第２の信号の組を複数組ずつ受け付け、反転可を示す第１の信号を含む組を優先して何れか１つの組を選択し、出力する。各選択回路部へ入力される反転可否を示す信号とエネルギー変化値を示す信号との組の数として、２組を例示したが、３組以上でもよい。
【０１１１】
ＬＦＥ５１ａ１，…，５１ａｎの各々は、自ビットの値（ｑ）を示す信号を更に出力する。ランダムセレクタ部５２は、当該ビットの値を示す信号に基づいて、反転させるスピンビットの値を、エネルギー変化値とともに選択する。また、ＬＦＥ５１ａ１，…，５１ａｎの各々は、自身の識別情報（ｉｎｄｅｘ）を示す信号を更に出力する。ランダムセレクタ部５２は、当該識別情報を示す信号に基づいて、反転させるスピンビットに対応するＬＦＥの識別情報を、エネルギー変化値とともに選択する。
【０１１２】
次に、選択回路５２ａ１，…，５２ａｑ，５２ｂ１，…５２ｂｒ，…，５２ｐの回路構成例を説明する。選択回路５２ａ１について主に説明するが、選択回路５２ａｑ，５２ｂ１，…５２ｂｒ，…，５２ｐも同様の回路構成となる。
【０１１３】
図１０は、選択回路の回路構成例を示す図である。
選択回路５２ａ１は、ＯＲ回路７１、ＡＮＤ回路７２，７３、ＯＲ回路７４およびセレクタ７５，７６，７７を有する。
【０１１４】
ここで、選択回路５２ａ１には、状態信号（ｉｎｄｅｘ＿０，ΔＥ＿０，ｑ＿０，Ｆ＿０）および状態信号（ｉｎｄｅｘ＿１，ΔＥ＿１，ｑ＿１，Ｆ＿１）が入力される。選択回路５２ａ１の出力は、これら２つの状態信号のうちの何れか一方の状態信号（ｉｎｄｅｘ，ΔＥ，ｑ，Ｆ）である。
【０１１５】
ＯＲ回路７１は、フラグＦ＿０，Ｆ＿１が入力される。ＯＲ回路７１は、Ｆ＿０，Ｆ＿１の少なくとも一方が１であればＦ＝１を、Ｆ＿０，Ｆ＿１の両方が０であればＦ＝０を出力する。
【０１１６】
ＡＮＤ回路７２は、フラグＦ＿０および１ビット乱数（図中「ｒａｎｄｏｍ」と表記）が入力される。１ビット乱数は、乱数生成部５４により供給される。ＡＮＤ回路７２は、フラグＦ＿０および１ビット乱数の両方が１であれば１を、フラグＦ＿０および１ビット乱数の少なくとも一方が０であれば０を出力する。
【０１１７】
ＡＮＤ回路７３は、フラグＦ＿１の反転値、および、１ビット乱数の反転値が入力される。ここで、０の反転値は１であり、１の反転値は０である。ＡＮＤ回路７３は、フラグＦ＿１の反転値および１ビット乱数の反転値の両方が１であれば１を、フラグＦ＿１の反転値および１ビット乱数の反転値の少なくとも一方が０であれば０を出力する。
【０１１８】
ＯＲ回路７４は、ＡＮＤ回路７２，７３からの信号が入力される。ＡＮＤ回路７２，７３の出力の少なくとも一方が１であればｓｅｌ＝１を、ＡＮＤ回路７２，７３の出力の両方が０であればｓｅｌ＝０を出力する。
【０１１９】
セレクタ７５は、ｑ＿０，ｑ＿１，ｓｅｌが入力される。セレクタ７５は、ｓｅｌ＝１のときスピンビットｑ＿０を出力し、ｓｅｌ＝０のときスピンビットｑ＿１を出力する。
セレクタ７６は、ΔＥ＿０，ΔＥ＿１，ｓｅｌが入力される。セレクタ７６は、ｓｅｌ＝１のときエネルギー変化値ΔＥ＿０を出力し、ｓｅｌ＝０のときエネルギー変化値ΔＥ＿１を出力する。
【０１２０】
セレクタ７７は、ｉｎｄｅｘ＿０，ｉｎｄｅｘ＿１，ｓｅｌが入力される。セレクタ７７は、ｓｅｌ＝１のときｉｎｄｅｘ＿０を出力し、ｓｅｌ＝０のときｉｎｄｅｘ＿１を出力する。
【０１２１】
ＡＮＤ回路７２，７３およびＯＲ回路７４によれば、フラグＦ＿０，Ｆ＿１の両方が１のときは、フラグＦ＿０，Ｆ＿１の何れか一方に対応するｑ，ｉｎｄｅｘ，ΔＥが、１ビット乱数に応じて選択される。また、フラグＦ＿０，Ｆ＿１の何れか一方が１のときは、１であるフラグに対応するｑ，ｉｎｄｅｘ，ΔＥが選択される。更に、フラグＦ＿０，Ｆ＿１の両方が０のときは、出力されるフラグＦ＝０であり、１ビット乱数に応じてｑ，ｉｎｄｅｘ，ΔＥが選択される。
【０１２２】
なお、上記の例では、各ＬＦＥからｉｎｄｅｘが供給される例を示したが、ランダムセレクタ部５２によってｉｎｄｅｘを生成するようにしてもよい。例えば、ランダムセレクタ部５２の各選択回路は、変数ｑｉとＦｉとΔＥｉとの組である２つの状態信号のうち、何れを選択したかを示す識別値を生成し、ｉｎｄｅｘとする。初段の選択回路は１ビットの識別値を生成し、後段の選択回路は前段の選択回路に１ビットを追加して、識別値を更新していく。こうして、最終段の選択回路によって出力される２進数の識別値をｉｎｄｅｘとして、各ＬＦＥに供給してもよい。ランダムセレクタ部５２でｉｎｄｅｘを生成する場合、各ＬＦＥは、ｉｎｄｅｘ格納レジスタを有さなくてもよい。
【０１２３】
次に、最適化装置２５の処理手順を説明する。まず、最適化装置２５の初期化処理の例を説明する。
図１１は、初期化処理の例を示すフローチャートである。
【０１２４】
（Ｓ１０）ＣＰＵ２１は、問題に応じた初期値および動作条件を最適化装置２５に入力する。初期値は、例えば、エネルギー値Ｅ、ローカルフィールドｈｉ、スピンビットｑｉ、温度パラメータＴの初期値および重み係数Ｗなどを含む。また、動作条件は、１つの温度パラメータでの状態の更新回数Ｎ１、温度パラメータの変更回数Ｎ２および温度パラメータの下げ幅などを含む。制御部２５ａは、入力された初期値および重み係数Ｗを、前述の各ＬＦＥのレジスタおよびＳＲＡＭに設定する。
【０１２５】
（Ｓ１１）ＣＰＵ２１は、最適化装置２５に演算開始フラグ（例えば、演算開始フラグ＝１）を入力する。制御部２５ａは、演算開始フラグの入力を受け付け、ＬＦＢ５０による演算を開始する。こうして、初期化処理が終了する。
【０１２６】
図１２は、演算処理の例を示すフローチャートである。
ここで、図１２の説明では、ｉｎｄｅｘ＝ｉに対応するＬＦＥをＬＦＥ５１ａｘ（１番目のＬＦＥはＬＦＥ５１ａ１であり、ｎ番目のＬＦＥは５１ａｎである）と表記する。ＬＦＥ５１ａｘに含まれる各部についても、例えば、ＳＲＡＭ６０ａｘのように、符号の末尾に「ｘ」を付して表記する。ＬＦＥ５１ａ１，…，ＬＦＥ５１ａｎの各々による演算は並列に実行される。
【０１２７】
（Ｓ２０）ΔＥ生成部６７ａｘは、ｈ格納レジスタ６４ａｘに格納されたローカルフィールドｈｉおよびビット格納レジスタ６６ａｘに格納されたビットｑｉに基づいて、当該ビットｑｉを反転させた場合のエネルギー変化量ΔＥｉを生成する。ΔＥｉの生成には、式（２）が用いられる。ΔＥ生成部６７ａｘは、生成したエネルギー変化量ΔＥｉを、判定部６８ａｘおよびランダムセレクタ部５２に出力する。
【０１２８】
（Ｓ２１）判定部６８ａｘは、ΔＥ生成部６７ａｘにより生成されたエネルギー変化量ΔＥｉと、閾値生成部５３により生成された閾値（＝−（Ｔ・ｆ−１（ｕ）））とを比較し、閾値＞ΔＥｉであるか否かを判定する。閾値＞ΔＥｉの場合、ステップＳ２２に処理が進む。閾値≦ΔＥｉの場合、ステップＳ２３に処理が進む。
【０１２９】
（Ｓ２２）判定部６８ａｘは、反転候補信号（Ｆｉ＝１）をランダムセレクタ部５２に出力する。そして、ステップＳ２４に処理が進む。
（Ｓ２３）判定部６８ａｘは、非反転信号（Ｆｉ＝０）をランダムセレクタ部５２に出力する。そして、ステップＳ２４に処理が進む。
【０１３０】
（Ｓ２４）ランダムセレクタ部５２は、ＬＦＥ５１ａｘからｑｉ，Ｆｉ，ｉｎｄｅｘ＝ｉ，ΔＥｉを受け付け、ＬＦＥ５１ａ１，…，ＬＦＥ５１ａｎの各々から出力された全反転候補（Ｆｉ＝１であるＬＦＥに対応するビット）から、反転ビットを１つ選択する。なお、ランダムセレクタ部５２は、ＬＦＥ５１ａｘのｉｎｄｅｘ格納レジスタ６９ａｘからＬＦＥ５１ａｘのｉｎｄｅｘ＝ｉを取得する。ランダムセレクタ部５２は、選択した反転ビットに対応するｉｎｄｅｘ＝ｊ、Ｆｊ、ｑｊをＬＦＥ５１ａ１，…，ＬＦＥ５１ａｎに出力する。また、ランダムセレクタ部５２は、選択した反転ビットに対応するΔＥｊを、加算器５６に出力する。すると、次のステップＳ２５（エネルギー更新処理），Ｓ２６（状態更新処理）が並列に開始される。
【０１３１】
（Ｓ２５）加算器５６は、反転ビットに対応するエネルギー変化量ΔＥを、エネルギー値Ｅに加算することで、Ｅ格納レジスタ５７に格納されたエネルギー値Ｅを更新する。すなわち、Ｅ＝Ｅ＋ΔＥである。そして、エネルギー更新処理が終了する。
【０１３２】
（Ｓ２６）セレクタ６１ａｘは、反転ビットに対応するｉｎｄｅｘ＝ｊとフラグＦｊとを取得し、当該反転ビットと自ビットとに対応する重み係数をＳＲＡＭ６０ａｘから読み出し、Δｈ生成部６２ａｘに供給する。
【０１３３】
（Ｓ２７）Δｈ生成部６２ａｘは、反転ビットの反転方向と、セレクタ６１ａｘにより読み出された重み係数Ｗｉｊとに基づいて、Δｈｉを生成する。Δｈｉの生成には、式（４）が用いられる。また、反転ビットの反転方向は、ランダムセレクタ部５２により出力される反転ビットｑｊ（今回の反転前のビット）により判別される。
【０１３４】
（Ｓ２８）加算器６３ａｘは、Δｈ生成部６２ａｘにより生成されたΔｈｉを、ｈ格納レジスタ６４ａｘに格納されたローカルフィールドｈｉに加算することで、ｈ格納レジスタ６４ａｘに格納されたローカルフィールドｈｉを更新する。また、反転判定部６５ａｘは、ランダムセレクタ部５２により出力されたｉｎｄｅｘ＝ｊおよびフラグＦｊに基づいて、自ビットが反転ビットとして選択されたか否かを判定する。反転判定部６５ａｘは、自ビットが反転ビットとして選択された場合、ビット格納レジスタ６６ａｘに格納されたスピンビットを反転させ、自ビットが反転ビットとして選択されなかった場合、ビット格納レジスタ６６ａｘのスピンビットを維持する。ここで、自ビットが反転ビットとして選択された場合とは、ランダムセレクタ部５２により出力された信号について、ｉｎｄｅｘ＝ｊ＝ｉ、かつ、Ｆｊ＝１の場合である。
【０１３５】
（Ｓ２９）制御部２５ａは、現在の温度パラメータＴにおいて、ＬＦＥ５１ａ１，…，ＬＦＥ５１ａｎに保持される各スピンビットの更新処理回数がＮ１に達したか（更新処理回数＝Ｎ１であるか）否かを判定する。更新処理回数がＮ１に達した場合、ステップＳ３０に処理が進む。更新処理回数がＮ１に達していない場合、制御部２５ａは、更新処理回数に１を加算して、ステップＳ２０に処理を進める。
【０１３６】
（Ｓ３０）制御部２５ａは、温度パラメータＴの変更回数がＮ２に達したか（温度変更回数＝Ｎ２であるか）否かを判定する。温度変更回数がＮ２に達した場合、ステップＳ３２に処理が進む。温度変更回数がＮ２に達していない場合、制御部２５ａは、温度変更回数に１を加算して、ステップＳ３１に処理を進める。
【０１３７】
（Ｓ３１）制御部２５ａは、温度パラメータＴを変更する。具体的には、制御部２５ａは、動作条件に応じた下げ幅で、温度パラメータＴの値を減少させる（温度を下げることに相当する）。そして、ステップＳ２０に処理が進む。
【０１３８】
（Ｓ３２）制御部２５ａは、ビット格納レジスタ６６ａｘに格納されたスピンビットを読み出し、演算結果として出力する。具体的には、制御部２５ａは、ビット格納レジスタ６６ａ１，…，６６ａｎの各々に格納されたスピンビットを読み出し、ＣＰＵ２１に出力する。すなわち、制御部２５ａは、読み出したスピンビット列をＣＰＵ２１に供給する。そして、演算処理が終了する。
【０１３９】
上記のように、最適化装置２５では、ランダムセレクタ部５２により、ｑ，Ｆ，ｉｎｄｅｘとともにΔＥも選択して、ランダムセレクタ部５２によりエネルギー計算部５５にΔＥを供給する。このため、回路規模が増してもΔＥの信号経路の長さの増大を抑えられる。
【０１４０】
図１３は、ＬＦＥの配置による信号経路の例を示す図である。
最適化装置２５のチップ内（ＬＦＢ５０の内部）では、例えば、各ＬＦＥが１つの面（配置面）の上に配置される。図１３では、配置面を上から眺めたときの、各ＬＦＥ、ランダムセレクタ部５２およびエネルギー計算部５５のレイアウトの例を示す。ここで、一例として、ＬＦＢ５０が、１０２４個のＬＦＥを有する場合を示す。各ＬＦＥには、該当のＬＦＥのｉｎｄｅｘ（＝０，１，…，１０２３）が付されている。例えば、図１３で示される配置面の右上側、同右下側、同左上側、同左下側の４箇所の領域に、各々、２５６個のＬＦＥが配置されている。
【０１４１】
また、ランダムセレクタ部５２およびエネルギー計算部５５は、配置面の中央に配置される。すなわち、ランダムセレクタ部５２およびエネルギー計算部５５は、各ＬＦＥが配置された上記４箇所の領域よりも内側に配置されている。
【０１４２】
ＬＦＥ５１ａ１（ｉｎｄｅｘ＝０）のΔＥ０に関する信号経路について説明するが、他のＬＦＥ（符号を省略している）についても同様である。
区間Ｐ１，Ｐ２，Ｐ３の各々は、信号伝達に時間τを要する信号経路の一区間である。例えば、ＬＦＥ５１ａ１から出力された（ｑ０，Ｆ０，ｉｎｄｅｘ＝０，ΔＥ０）を含む状態信号は、区間Ｐ１，Ｐ２を経由して、ランダムセレクタ部５２に到達する。したがって、当該状態信号がランダムセレクタ部５２に到達するまでの時間は、２τである。
【０１４３】
更に、ランダムセレクタ部５２から出力されたΔＥｊは、区間Ｐ３を経由して、エネルギー計算部５５に到達する。したがって、ランダムセレクタ部５２から出力されたΔＥｊが、エネルギー計算部５５に到達するまでの時間はτである。
【０１４４】
各ＬＦＥからランダムセレクタ部５２までは並列に状態信号が供給される。各ＬＦＥからランダムセレクタ部５２までの信号経路の長さは同じか、または、各ＬＦＥのうち、ＬＦＥ５１ａ１がランダムセレクタ部５２から最も遠いＬＦＥであるとする。すると、各ＬＦＥにより状態信号が出力されてからエネルギー計算部５５にΔＥｊが到着するまでの信号経路（区間Ｐ１，Ｐ２，Ｐ３を通る経路）による遅延は２τ＋τ＝３τである。この遅延は、後述される比較例の回路構成（図１８）で生ずる遅延に比べて短い。
【０１４５】
次に、最適化装置２５の他の回路構成の例を説明する。
図１４は、最適化装置の他の例を示す図である。
最適化装置２６は、例えば、１チップの半導体集積回路であり、ＦＰＧＡなどにより実現される。最適化装置２６は、第１の実施の形態の最適化装置１の一例である。
【０１４６】
最適化装置２６は、ＬＦＢを複数搭載する。ＬＦＢを複数搭載することで、ＬＦＥの数が増し、スピンビット列のビット数を増やせる。スピンビット列のビット数が増すと、より大きな規模の問題に最適化装置２６を適用可能になる。一例として、最適化装置２６は、８個のＬＦＢを有するものとする。また、例えば、１つのＬＦＢは、１０２４個のＬＦＥを有する。ここで、ＬＦＢはＬＦＥのグループであると言える。したがって、最適化装置２６では、複数のＬＦＥは複数のグループに分けられていると言える。
【０１４７】
最適化装置２６はＬＦＢ８１ａ１，８１ａ２，…，８１ａ８、ランダムセレクタ部８２およびエネルギー計算部８３を有する。ただし、最適化装置２６は、ＬＦＢ８１ａ１，…，８１ａ８の各ＬＦＥに閾値を供給する閾値生成部（図示を省略）や、ＬＦＢ８１ａ１，…，８１ａ８の各々のＬＦＢのランダムセレクタ部に乱数を供給する乱数生成部（図示を省略）も有する。また、最適化装置２６は、ＣＰＵ２１からの指示により最適化装置２６による演算を制御する制御部（図示を省略）も有する。
【０１４８】
ＬＦＢ８１ａ１，…，８１ａ８の各々は、前述のＬＦＢ５０と同様の回路構成を有する。ただし、ＬＦＢ８１ａ１，…，８１ａ８の各々は、エネルギー計算部５５を有さない点がＬＦＢ５０と異なる。また、ＬＦＢ８１ａ１，…，８１ａ８の各々のランダムセレクタ部は、選択した状態信号を、ランダムセレクタ部８２に出力する点が、ＬＦＢ５０のランダムセレクタ部５２と異なる。例えば、ＬＦＢ８１ａ１から出力される状態信号は（ｑｊ０，Ｆｊ０，ｉｎｄｅｘ＝ｊ０，ΔＥｊ０）の組である。ＬＦＢ８１ａ１，…，８１ａ８の各々は、識別番号（０，…，８）に対応付けられている。
【０１４９】
例えば、ＬＦＢ８１ａ１は、ＬＦＥ９１ａ１，…，９１ａｍおよびランダムセレクタ部９２を有する。前述のように、例えば、ｍ＝１０２４である。ＬＦＥ９１ａ１，…，９１ａｍの各々は、ランダムセレクタ部９２に対して（ｑｉ，Ｆｉ，ｉｎｄｅｘ＝ｉ，ΔＥｉ）の組（状態信号）を出力する。ランダムセレクタ部９２は、ＬＦＥ９１ａ１，…，９１ａｍの各々から受け付けた状態信号のうち、Ｆｉ＝１のものを優先して１つ選択し、ランダムセレクタ部８２に出力する。ＬＦＢ８１ａ２，…，ＬＦＢ８２ａ８も、ＬＦＢ８１ａ１と同様の回路構成を有する。
【０１５０】
ランダムセレクタ部８２は、ＬＦＢ８１ａ１，…，８１ａ８の各々から出力された状態信号を受け付け、受け付けた複数の状態信号に基づいて、反転ビットに対応する何れかの状態信号を選択する。ランダムセレクタ部８２は、乱数生成部（図示を省略している）から乱数の供給を受け、当該乱数を用いて、状態信号を選択する。ランダムセレクタ部８２は、選択した状態信号のうち、（ｑｊ，Ｆｊ，ｉｎｄｅｘ＝ｊ）の組をＬＦＢ８１ａ１，…，８１ａ８に出力する。ランダムセレクタ部８２は、選択した状態信号のうちΔＥｊをエネルギー計算部８３に出力する。
【０１５１】
エネルギー計算部８３は、現在のスピンビット列に対するイジングモデルのエネルギーを計算する。エネルギー計算部８３は、加算器８４およびＥ格納レジスタ８５を有する。
加算器８４は、ランダムセレクタ部８２により出力されたエネルギー変化値ΔＥｊを受け付け、Ｅ格納レジスタ８５に格納されたエネルギー値ＥにΔＥｊを加算し、Ｅ格納レジスタ８５に出力する。
【０１５２】
Ｅ格納レジスタ８５は、図示しないクロック信号に同期して、加算器８４が出力するエネルギー値Ｅを取り込む。Ｅ格納レジスタ８５は、例えば、フリップフロップである。なお、エネルギー値Ｅの初期値は、制御部２５ａによって式（１）を用いて計算され、Ｅ格納レジスタ８５に設定される。
【０１５３】
このように、複数のＬＦＥは、複数のグループ（複数のＬＦＢ）に分けられて実装されもよい。この場合、最適化装置２６は、複数のグループの各々に対して設けられたランダムセレクタ部（ランダムセレクタ部９２を含む）を更に有する。例えば、ランダムセレクタ部９２は、１つのグループ（ＬＦＢ８１ａ１）に属するＬＦＥ９１ａ１，…，９１ａｍの各々から入力されたスピンビットの反転可否を示す信号およびエネルギー変化値を示す信号の組のうちの何れか１つを選択し、出力する。このとき、ランダムセレクタ部９２は、反転可を示す信号を含む組を優先して選択する。他のＬＦＢに設けられたランダムセレクタ部も同様である。そして、ランダムセレクタ部８２は、各ＬＦＢのランダムセレクタ部の各々により出力されたスピンビットの反転可否を示す信号およびエネルギー変化値を示す信号に基づいて、反転させるスピンビットと当該スピンビットに対応するエネルギー変化値とを選択する。ランダムセレクタ部８２は、選択したスピンビットを示す信号を最適化装置２６内の各ＬＦＥに出力する。また、ランダムセレクタ部８２は、選択したエネルギー変化値を示す信号をエネルギー計算部８３に出力する。
【０１５４】
上記のランダムセレクタ部８２により、ランダムセレクタ部５２と同様に、信号経路による遅延を低減可能である。
図１５は、信号経路の他の例を示す図である。
【０１５５】
最適化装置２６のチップ内では、例えば、各ＬＦＢが１つの面（配置面）の上に配置される。図１５では、配置面を上から眺めたときの、各ＬＦＢ、ランダムセレクタ部８２およびエネルギー計算部８３のレイアウトの例を示す。なお、各ＬＦＢに識別番号（＝０，…，７）を付している。例えば、図１５で示される配置面の右上側（＃０，＃２）、同右下側（＃１，＃３）、同左上側（＃４，＃６）、同左下側（＃５，＃７）の４箇所の領域に、各々、２個のＬＦＢが配置されている。
【０１５６】
また、ランダムセレクタ部８２およびエネルギー計算部８３は、配置面の中央に配置される。すなわち、ランダムセレクタ部８２およびエネルギー計算部８３は、各ＬＦＢが配置された上記４箇所の領域よりも内側に配置されている。
【０１５７】
ＬＦＢ８１ａ１（識別番号＝０）のΔＥｊ０に関する信号経路について説明するが、他のＬＦＢ（符号を省略している）についても同様である。
区間Ｐ１１，Ｐ１２，Ｐ１３，Ｐ１４，Ｐ１５，Ｐ１６の各々は、信号伝達に時間τを要する信号経路の一区間である。例えば、ＬＦＢ８１ａ１から出力された（ｑｊ０，Ｆｊ０，ｉｎｄｅｘ＝ｊ０，ΔＥｊ０）を含む状態信号は、区間Ｐ１１，Ｐ１２，Ｐ１３，Ｐ１４，Ｐ１５，Ｐ１６を経由して、ランダムセレクタ部８２に到達する。したがって、当該状態信号がランダムセレクタ部８２に到達するまでの時間は、６τである。
【０１５８】
更に、ランダムセレクタ部８２から出力されたΔＥｊは、区間Ｐ１７を経由して、エネルギー計算部８３に到達する。したがって、ランダムセレクタ部８２から出力されたΔＥｊが、エネルギー計算部８３に到達するまでの時間はτである。
【０１５９】
各ＬＦＢからランダムセレクタ部８２までは並列に状態信号が供給される。各ＬＦＥからランダムセレクタ部８２までの信号経路の長さは同じか、または、各ＬＦＢのうち、ＬＦＢ８１ａ１がランダムセレクタ部８２から最も遠いＬＦＢであるとする。すると、各ＬＦＢにより状態信号が出力されてからエネルギー計算部８３にΔＥｊが到着するまでの信号経路（区間Ｐ１１，Ｐ１２，Ｐ１３，Ｐ１４，Ｐ１５，Ｐ１６，Ｐ１７を通る経路）による遅延は、６τ＋τ＝７τである。この遅延は、後述される比較例の回路構成（図１９）で生ずる遅延に比べて短い。
【０１６０】
次に、最適化装置２５に対する比較例の回路構成を説明する。
図１６は、最適化装置の回路構成の比較例を示す図である。
最適化装置２７（最適化装置２７のＬＦＢ）は、ＬＦＥ５１ｂ１，…，５１ｂｎ、ランダムセレクタ部５２ｂ、閾値生成部５３、乱数生成部５４、ΔＥ出力部５８およびエネルギー計算部５９を有する。最適化装置２７は、ＣＰＵ２１からの指示により最適化装置２７による演算を制御する制御部を有するが、図示を省略している。
【０１６１】
ＬＦＥ５１ｂ１，…，５１ｂｎの各々は、スピンビットの１ビットとして用いられる。ｎは、２以上の整数であり、最適化装置２７が備えるＬＦＥの数を示す。ＬＦＥ５１ｂ１，…，５１ｂｎの各々には、ＬＦＥの識別情報（ｉｎｄｅｘ）が対応付けられている。ＬＦＥ５１ｂ１，５１ｂ２，…，５１ｂｎの各々に対して、ｉｎｄｅｘ＝０，１，…，ｎ−１である。
【０１６２】
以下では、ＬＦＥ５１ｂ１の回路構成を説明する。ＬＦＥ５１ｂ２，…，５１ｂｎも、ＬＦＥ５１ｂ１と同様の回路構成により実現される。
ＬＦＥ５１ｂ１は、ＳＲＡＭ６０ａ１、セレクタ６１ａ１、Δｈ生成部６２ａ１、加算器６３ａ１、ｈ格納レジスタ６４ａ１、反転判定部６５ａ１、ビット格納レジスタ６６ａ１、ΔＥ生成部６７ｂ１、判定部６８ａ１およびｉｎｄｅｘ格納レジスタ６９ａ１を有する。ＬＦＥ５１ｂ１は、ΔＥ生成部６７ａ１に代えて、ΔＥ生成部６７ｂ１を有する点が、ＬＦＥ５１ａ１と異なる。そこで、ΔＥ生成部６７ｂ１を主に説明する。
【０１６３】
ΔＥ生成部６７ｂ１は、ｈ格納レジスタ６４ａ１のローカルフィールドｈ０およびビット格納レジスタ６６ａ１のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔＥ０を、式（２）により計算する。ΔＥ生成部６７ｂ１は、ランダムセレクタ部５２ｂから所定の指示信号を受け付けると、計算したエネルギー変化量ΔＥ０を、ΔＥ出力部５８に出力する。なお、ΔＥ生成部６７ｂ１は、ランダムセレクタ部５２ｂから指示信号を受け付けない場合、ΔＥ出力部５８に０を出力する。
【０１６４】
ランダムセレクタ部５２ｂは、ＬＦＥ５１ｂ１，…，５１ｂｎの各々から、スピンビット、スピンビットの反転可否を示すフラグおよびｉｎｄｅｘを受け付ける。ランダムセレクタ部５２ｂは、反転可であるスピンビットのうち反転させるビット（反転ビット）を選択する。
【０１６５】
ランダムセレクタ部５２ｂは、選択した反転ビットの現在のビット値（ビットｑｊ）を、ＬＦＥ５１ｂ１，…，５１ｂｎが備えるΔｈ生成部６２ａ１，…，６２ａｎに供給する。
【０１６６】
ランダムセレクタ部５２ｂは、反転ビットのｉｎｄｅｘ＝ｊと、反転可否を示すフラグＦｊとを、ＬＦＥ５１ｂ１，…，５１ｂｎが備えるセレクタ６１ａ１，…，６０ａｎ、および、反転判定部６５ａ１，…，６５ａｎに供給する。
【０１６７】
ランダムセレクタ部５２ｂは、選択した反転ビットに対応するＬＦＥ（ｉｎｄｅｘ＝ｊに対応するＬＦＥ）のΔＥ生成部に対して、ΔＥを出力させる指示信号を出力する。すなわち、ランダムセレクタ部５２ｂは、ΔＥの選択を行わない点、および、ΔＥの出力を行わない点が、ランダムセレクタ部５２と異なる。
【０１６８】
閾値生成部５３および乱数生成部５４は、図８で説明した機能を有する。ただし、乱数生成部５４は、生成した乱数をランダムセレクタ部５２ｂに供給する。
ΔＥ出力部５８は、ＬＦＥ５１ｂ１，…，５１ｂｎの各々のΔＥ生成部からΔＥ０，…，ΔＥｎ−１の入力を受け付け、受け付けたΔＥ０，…，ΔＥｎ−１に対するＯＲ論理によって、ΔＥｊを出力するＯＲ回路である。ここで、ΔＥ出力部５８に入力されるΔＥは、ランダムセレクタ部５２ｂによる指示信号を受け付けたＬＦＥについては、ΔＥ＝ΔＥｊであり、それ以外のＬＦＥについてはΔＥ＝０である。ΔＥ出力部５８は、ΔＥｊをエネルギー計算部５９に出力する。
【０１６９】
エネルギー計算部５９は、現在のスピンビット列に対するイジングモデルのエネルギーを計算する。エネルギー計算部５９は、加算器５６ｂおよびＥ格納レジスタ５７ｂを有する。加算器５６ｂはΔＥ出力部５８により出力されたエネルギー変化量ΔＥｊを受け付け、Ｅ格納レジスタ５７ｂに格納されたエネルギー値ＥにΔＥｊを加算し、Ｅ格納レジスタ５７ｂに出力する。Ｅ格納レジスタ５７ｂは、図示しないクロック信号に同期して、加算器５６ｂが出力するエネルギー値Ｅを取り込む。
【０１７０】
次に、最適化装置２７による演算処理の比較例を説明する。
図１７は、演算処理の比較例を示すフローチャートである。
ここで、図１７の説明では、ｉｎｄｅｘ＝ｉに対応するＬＦＥをＬＦＥ５１ｂｘ（１番目のＬＦＥはＬＦＥ５１ｂ１であり、ｎ番目のＬＦＥは５１ｂｎである）と表記する。
【０１７１】
比較例の手順では、ステップＳ２４の実行後、ステップＳ２５の実行前に、ステップＳ２５ａが実行される点が、図１２で説明した手順と異なり、それ以外の手順は図１２と同様となる。そこで、ステップＳ２５ａを主に説明し、他のステップの説明を省略する。
【０１７２】
ただし、ステップＳ２０では、ΔＥ生成部６７ｂｘは、生成したΔＥを判定部６８ａｘにのみ供給し、ランダムセレクタ部５２ｂにΔＥを供給しない。ΔＥ生成部６７ｂｘは、ランダムセレクタ部５２ｂから指示信号を受け付けない限り、ΔＥ出力部５８にΔＥ＝０を出力する。また、ステップＳ２４では、ランダムセレクタ部５２ｂは、ΔＥの出力を行わない。更に、ステップＳ２５ａは、ステップＳ２４の実行後、ステップＳ２６とともに並列に実行開始される。
【０１７３】
（Ｓ２５ａ）ΔＥ出力部５８は、反転ビットのＬＦＥからΔＥを読み出す。具体的には、ランダムセレクタ部５２ｂは、選択した反転ビットのＬＦＥに含まれるΔＥ生成部に対してΔＥの出力を指示する指示信号を出力する。当該ΔＥ生成部は、ステップＳ２０で生成したΔＥｊを、ΔＥ出力部５８に出力する。このようにして、ΔＥ出力部５８によるΔＥの読み出しが行われる。ΔＥ出力部５８は、当該ΔＥ生成部からΔＥ＝ΔＥｊを受け付け、他のΔＥ＝０とのＯＲ論理によって、ΔＥｊを加算器５６ｂに出力する。
【０１７４】
このように、比較例の手順では、図１２の手順と比べて、ステップＳ２５ａが余計に実行される。ここで、ステップＳ２５ａのΔＥの読み出しにおける信号経路（往来パス）の例を説明する。
【０１７５】
図１８は、信号経路の比較例を示す図である。
最適化装置２７でも、最適化装置２５と同様に、ランダムセレクタ部５２ｂおよびエネルギー計算部５９がチップの配置面の中央に配置され、ランダムセレクタ部５２ｂおよびエネルギー計算部５９の周囲に各ＬＦＥが配置される。
【０１７６】
以下、ＬＦＥ５１ｂ１（ｉｎｄｅｘ＝０）のΔＥ０に関する信号経路について説明するが、他のＬＦＥ（符号を省略している）についても同様である。
区間Ｐ２１，Ｐ２２，Ｐ２３，Ｐ２４，Ｐ２５，Ｐ２６の各々は、信号伝達に時間τを要する信号経路の一区間である。ＬＦＥ５１ｂ１は、（ｑ０，Ｆ０，ｉｎｄｅｘ＝０）を含む状態信号を出力する（ステップＳＴ１）。例えば、ＬＦＥ５１ｂ１から出力された状態信号は、区間Ｐ２１，Ｐ２２を経由して、ランダムセレクタ部５２ｂに到達する。したがって、当該状態信号がランダムセレクタ部５２ｂに到達するまでの時間は、２τである。
【０１７７】
ランダムセレクタ部５２ｂは、各ＬＦＥから受け付けた状態信号により、反転ビットを選択する。ここで、一例として、ランダムセレクタ部５２ｂによりｑ０が反転ビットとして選択されたとする。ランダムセレクタ部５２ｂは、ΔＥ０の出力を指示する指示信号（図中のｃｏｍｍａｎｄ）を、ＬＦＥ５１ｂ１のΔＥ生成部６７ｂ１に出力する（ステップＳＴ２）。例えば、当該指示信号は、区間Ｐ２３，Ｐ２４を経由して、ΔＥ生成部６７ｂ１に到達する。したがって、当該指示信号が、ランダムセレクタ部５２ｂから出力されてΔＥ生成部６７ｂ１に到達するまでの時間は、２τである。
【０１７８】
ΔＥ生成部６７ｂ１は、指示信号を受け付けると、ΔＥ出力部５８を介して、エネルギー計算部５９に、ΔＥ０を出力する（ステップＳＴ３）。例えば、ΔＥ０を示す信号は、区間Ｐ２５，Ｐ２６（ΔＥ出力部５８を含む）を経由して、エネルギー計算部５９に到達する。したがって、当該ΔＥ０を示す信号がΔＥ生成部６７ｂ１より出力されてからエネルギー計算部５９に到達するまでの時間は、２τである。
【０１７９】
各ＬＦＥからランダムセレクタ部５２ｂまでは並列に状態信号が供給される。各ＬＦＥからランダムセレクタ部５２ｂまでの信号経路の長さは同じか、または、各ＬＦＥのうち、ＬＦＥ５１ｂ１がランダムセレクタ部５２ｂおよびエネルギー計算部５９から最も遠いＬＦＥであるとする。すると、各ＬＦＥにより状態信号が出力されてからエネルギー計算部５９にΔＥｊが到着するまでの信号経路（区間Ｐ２１〜Ｐ２６を通る経路）による遅延（遅延の最大値）は、２τ＋２τ＋２τ＝６τである。
【０１８０】
遅延６τは、図１３における遅延３τと比較される（６τ＞３τである）。すなわち、第２の実施の形態の最適化装置２５では、比較例の回路構成よりも、エネルギー計算の処理を開始するまでの遅延が抑制される。
【０１８１】
また、比較例のＬＦＢを複数用いて、図１４で例示したように回路規模を拡張することも考えられる。
図１９は、信号経路の他の比較例を示す図である。
【０１８２】
最適化装置２８は、最適化装置２６に対する比較例である。最適化装置２８は、ＬＦＢ８１ｂ１を含む複数のＬＦＢ（識別番号＝０，…，７）、ランダムセレクタ部８２ｂおよびエネルギー計算部８３ｂを有する。最適化装置２８は、エネルギー計算部８３ｂへΔＥを供給するΔＥ出力部を有する。ただし、図１９ではΔＥ出力部の図示を省略している。
【０１８３】
ＬＦＢ８１ｂ１を含む複数のＬＦＢの各々のランダムセレクタ部は、ΔＥの選択およびΔＥの出力を行わず、選択した反転ビットに対応するＬＦＥのΔＥ生成部に対して、ΔＥ出力部へのΔＥの出力を指示する。
【０１８４】
最適化装置２８でも、最適化装置２６と同様に、ランダムセレクタ部８２ｂおよびエネルギー計算部８３ｂがチップの配置面の中央に配置され、ランダムセレクタ部８２ｂおよびエネルギー計算部８３ｂの周囲に各ＬＦＢが配置される。
【０１８５】
ＬＦＢ８１ｂ１（識別番号＝０）のΔＥｊ０に関する信号経路について説明するが、他のＬＦＢ（符号を省略している）についても同様である。
区間Ｐ３１，Ｐ３２，…，Ｐ４８の各々は、信号伝達に時間τを要する信号経路の一区間である。ＬＦＥ８１ｂ１は、（ｑｊ０，Ｆｊ０，ｉｎｄｅｘ＝ｊ０）を含む状態信号を出力する（ステップＳＴ１１）。例えば、ＬＦＢ８１ｂ１から出力された状態信号は、区間Ｐ３１，Ｐ３２，Ｐ３３，Ｐ３４，Ｐ３５，Ｐ３６を経由して、ランダムセレクタ部８２ｂに到達する。したがって、当該状態信号がランダムセレクタ部８２ｂに到達するまでの時間は、６τである。
【０１８６】
ランダムセレクタ部８２ｂは、各ＬＦＢから受け付けた状態信号により、反転ビットを選択する。ここで、一例として、ランダムセレクタ部８２ｂによりｑｊ０が反転ビットとして選択されたとする。ランダムセレクタ部８２ｂは、ΔＥｊ０の出力を指示する指示信号（図中のｃｏｍｍａｎｄ）を、ＬＦＢ８１ｂ１のｑｊ０に対応するＬＦＥのΔＥ生成部に出力する（ステップＳＴ１２）。例えば、当該指示信号は、区間Ｐ３７，Ｐ３８，Ｐ３９，Ｐ４０，Ｐ４１，Ｐ４２を経由して、該当のΔＥ生成部に到達する。したがって、当該指示信号が該当のΔＥ生成部に到達するまでの時間は、６τである。
【０１８７】
ΔＥ生成部は、指示信号を受け付けると、ΔＥ出力部を介して、エネルギー計算部８３ｂに、ΔＥｊ０を出力する（ステップＳＴ１３）。例えば、ΔＥｊ０を示す信号は、区間Ｐ４３，Ｐ４４，Ｐ４５，Ｐ４６，Ｐ４７，Ｐ４８（ΔＥ出力部５８を含む）を経由して、エネルギー計算部８３ｂに到達する。したがって、当該ΔＥｊ０を示す信号がΔＥ生成部より出力されてからエネルギー計算部８３ｂに到達するまでの時間は、６τである。
【０１８８】
各ＬＦＢからランダムセレクタ部８２ｂまでは並列に状態信号が供給される。各ＬＦＢからランダムセレクタ部８２ｂまでの信号経路の長さは同じか、または、各ＬＦＥのうち、ＬＦＢ８１ｂ１がランダムセレクタ部８２ｂおよびエネルギー計算部８３ｂから最も遠いＬＦＢであるとする。すると、各ＬＦＢにより状態信号が出力されてからエネルギー計算部８３ｂにΔＥｊが到着するまでの信号経路（区間Ｐ３１〜Ｐ４８を通る経路）による遅延（遅延の最大値）は、６τ＋６τ＋６τ＝１８τである。
【０１８９】
遅延１８τは、図１５における遅延６τと比較される（１８τ＞６τである）。すなわち、第２の実施の形態の最適化装置２６では、比較例の回路構成よりも、エネルギー計算の処理を開始するまでの遅延が抑制される。
【０１９０】
ここで、図１７で例示した比較例の演算処理の手順では、図１２の手順と比べて、ステップＳ２５ａを余計に実行することになる。ステップＳ２５ａによる遅延は、例えば、図１８の回路構成のときに６τであり、図１９の回路構成のときに１８τである。回路規模が大きくなるほど、当該遅延は大きくなる。すると、ステップＳ２５ａ，Ｓ２５によりエネルギーＥの更新が完了するまでの所要時間が、状態更新に関する本流の処理（ステップＳ２６〜Ｓ２８、および、ステップＳ２０〜Ｓ２４）の１サイクルよりも長くなる可能性がある。この場合、エネルギーＥの更新処理がボトルネックとなり、演算性能が低下し得る。
【０１９１】
そこで、最適化装置２５では、ランダムセレクタ部５２が、反転させるビットの選択とともに、エネルギー変化値ΔＥの選択を行い、エネルギー計算部５５に出力することで、エネルギーＥの更新処理の遅延を低減できる。具体的には、最適化装置２５では、図１２で例示したように、図１７のステップＳ２５ａを実行しなくて済み、また、比較例の回路構成のようにΔＥ出力部５８も不要となる。これにより、エネルギーＥの更新処理がボトルネックとなって、演算速度が低下することを抑制できる。
【０１９２】
また、最適化装置２６のように、複数のＬＦＢを搭載して、スピンビット列の規模を増やすことも考えられる。この場合にも、ランダムセレクタ部８２が、反転させるビットの選択とともに、エネルギー変化値ΔＥの選択を行い、エネルギー計算部８３に出力することで、エネルギーＥの更新処理の遅延を低減できる。これにより、エネルギーＥの更新処理がボトルネックとなって、演算速度が低下することを抑制できる。
【０１９３】
ここで、例えば、図１８で示される信号経路と図１３で示される信号経路とを比べると、図１３の回路構成では、図１８の比較例の回路構成と比べて、配線の物理的圧迫もない。具体的には、図１８の比較例の回路構成では、ＬＦＥ５１ｂ１からエネルギー計算部５９（あるいは、ΔＥ出力部５８）へΔＥを示す信号を出力する信号経路が存在する。当該信号経路に対応する信号経路として、図１３の最適化装置２５の回路構成では、ＬＦＥ５１ａ１からランダムセレクタ部５２へΔＥを示す信号を出力する信号経路が存在することになる。
【０１９４】
このため、図１３の最適化装置２５の回路構成では、比較例の回路構成に比べて、配線数に大きな変化はない。したがって、配線面に関する実装の難易度に変化はなく、配線の物理的圧迫なしに、エネルギーＥの更新処理の遅延を低減できる。また、配線性の問題を生じさせずに、規模拡張を実現できる。
【０１９５】
図１５の最適化装置２６の回路構成についても同様に、図１９の比較例の回路構成に対して、配線の物理的圧迫なしで、エネルギーＥの更新処理の遅延を低減できる。また、配線性の問題を生じさせずに、規模拡張を実現できる。
【０１９６】
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１９７】
１  最適化装置
１ａ１，１ａ２，…，１ａＮ  ビット演算回路
２  選択回路部
３  閾値生成部
４  乱数生成部
５  エネルギー計算部
６  制御部
１１  記憶部
１２  セレクタ
１３  反転判定部
１４  ビット保持部
１５  エネルギー変化計算部
１６  状態遷移判定部
【図１】
2020054062.tif 000013
【図２】
2020054062.tif 000014
【図３】
2020054062.tif 000015
【図４】
2020054062.tif 000016
【図５】
2020054062.tif 000017
【図６】
2020054062.tif 000018
【図７】
2020054062.tif 000019
【図８】
2020054062.tif 000020
【図９】
2020054062.tif 000021
【図１０】
2020054062.tif 000022
【図１１】
2020054062.tif 000023
【図１２】
2020054062.tif 000024
【図１３】
2020054062.tif 000025
【図１４】
2020054062.tif 000026
【図１５】
2020054062.tif 000027
【図１６】
2020054062.tif 000028
【図１７】
2020054062.tif 000029
【図１８】
2020054062.tif 000030
【図１９】
2020054062.tif 000031
【国際調査報告】
2020054062.tif 000032
2020054062.tif 000033