(57)【要約】【課題】組合せ最適化問題の計算速度を上げる。【解決手段】状態保持部２１は、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する。評価関数計算部２２は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する。温度制御部２３は、温度を示す温度値を制御する。遷移制御部２４は、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、温度値とエネルギーの変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、複数の状態遷移のうち、何れかの状態遷移を選択する。エネルギー比較部２５は、選択された状態遷移に基づいて更新されるエネルギーが、複数回更新された中で最低値となるときの複数の状態変数の値である最低エネルギー状態を出力する。【選択図】図１
2020140631.tif 000002
【特許請求の範囲】
【請求項１】
エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、
前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する評価関数計算部と、
温度を示す温度値を制御する温度制御部と、
各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、前記温度値と前記変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、前記複数の状態遷移のうち、何れかの状態遷移を選択する遷移制御部と、
選択された状態遷移に基づいて更新される前記エネルギーが、複数回更新された中で最低値となるときの前記複数の状態変数の値である最低エネルギー状態を出力するエネルギー比較部と、
を有する最適化装置。
【請求項２】
前記識別情報は、各状態遷移をそれぞれ識別する複数の番号であり、
前記遷移制御部は、前記優先度情報に基づいて、番号の小さい方、または番号の大きい方から優先的に状態遷移を選択する、
請求項１に記載の最適化装置。
【請求項３】
前記遷移制御部は、番号の小さい方から優先的に状態遷移を選択する場合、前記複数の番号のうち、前回更新された状態遷移を識別する更新番号よりも１つ大きい番号に対して、前記優先度情報として第１の値を設定し、それ以外の番号に対して、前記優先度情報として前記第１の値とは異なる第２の値を設定し、番号の大きい方から優先的に状態遷移を選択する場合、前記更新番号よりも１つ小さい番号に対して、前記優先度情報として前記第１の値を設定し、それ以外の番号に対して、前記優先度情報として前記第２の値を設定する、
請求項２に記載の最適化装置。
【請求項４】
前記遷移制御部は、番号の小さい方から優先的に状態遷移を選択する場合、前記複数の番号のうち、前回更新された状態遷移を識別する更新番号よりも大きい番号に対して、前記優先度情報として第１の値を設定し、前記更新番号以下の番号に対して、前記優先度情報として前記第１の値とは異なる第２の値を設定し、番号の大きい方から優先的に状態遷移を選択する場合、前記更新番号よりも小さい番号に対して、前記優先度情報として前記第１の値を設定し、前記更新番号以上の番号に対して、前記優先度情報として前記第２の値を設定する、
請求項２に記載の最適化装置。
【請求項５】
前記遷移制御部は、入力されるモード信号に応じて、前記優先度情報に基づいて状態遷移を選択するか、乱数値に基づいてランダムに状態遷移を選択するか切り替える、
請求項１乃至４の何れか一項に記載の最適化装置。
【請求項６】
最適化装置の制御方法において、
前記最適化装置が有する状態保持部が、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持し、
前記最適化装置が有する評価関数計算部が、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算し、
前記最適化装置が有する温度制御部が、温度を示す温度値を制御し、
前記最適化装置が有する遷移制御部が、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、前記温度値と前記変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、前記複数の状態遷移のうち、何れかの状態遷移を選択し、
前記最適化装置が有するエネルギー比較部が、選択された状態遷移に基づいて更新される前記エネルギーが、複数回更新された中で最低値となるときの前記複数の状態変数の値である最低エネルギー状態を出力する、
最適化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適化装置及び最適化装置の制御方法に関する。
【背景技術】
【０００２】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータなどの演算装置を用いて行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御などが行われる。これらの情報処理の１つの分野として最適化問題があり重要な分野となっている。例えば、ある処理を行う場合に必要な資源やコストを最小化する問題、またはその処理による効果を最大化する解を求める問題などである。これらの問題が非常に重要であるのは明らかであろう。
【０００３】
最適化問題の代表的なものとして線形計画問題がある。これは複数の連続変数の線形和で表される評価関数を、線形和で表される制約条件の下で最大化または最小化する変数の値を求めるものであり、製品の生産計画など様々な分野で利用されている。この線形計画問題には単体法や内点法といった優れた解法が知られており、何十万以上の変数を持つ問題でも効率的に解くことができる。
【０００４】
一方最適化問題には、変数が連続値ではなく離散的な値を取るものも多く知られている。例えば、複数の都市を順番に回り元に戻るときの最短経路を求める巡回セールスマン問題や、ナップザックに異なる品物を詰めるときその価値の和が最大となるような組み合わせを求めるナップザック問題などが挙げられる。このような問題は、離散最適化問題、組合せ最適化問題などと呼ばれ、最適解を得るのが非常に難しいことが知られている。
【０００５】
組合せ最適化問題を解くのが難しい最大の原因は、各変数が離散値しか取れないため、評価関数が改善される方向に変数を連続的に変化させることで最適解に到達させるという手法が使えないことである。そして本来の最適値を与える変数の値（最適解、大域解）以外に、局所的に評価関数の極値を与える値（極小（大）解、局所解）が非常に多数存在することである。このため最適解を確実に得るにはしらみつぶしのような方法を取らざるを得ず、計算時間が非常に長くなる。組合せ最適化問題には計算量理論でＮＰ（Non-deterministic Polynomial）困難問題と呼ばれる、最適解を求めるための計算時間が問題の大きさ（すなわち変数の数）に対して指数的に増加すると予想される問題が多い。上記巡回セールスマン問題やナップザック問題もＮＰ困難問題である。
【０００６】
以上述べたように、組合せ最適化問題の最適解を確実に求めることは非常に困難である。このため実用上重要な組合せ最適化問題にはその問題に固有な性質を利用した解法が考え出されている。上記のように多くの組合せ最適化問題では厳密解を得るには指数関数的に増大する計算時間がかかると予想されるため、実用的な解法の多くは近似解法であり、最適解ではないものの評価関数の値が最適値に近い値となる解を得ることができるものである。
【０００７】
これらの問題に特化した近似解法に対して、問題の性質を用いることなく解くため広範囲な問題を扱える近似解法も知られている。これらはメタヒューリスティックな解法と呼ばれ、疑似焼き鈍し法（シミュレーテッド・アニーリング法、ＳＡ法）、遺伝的アルゴリズム、ニューラルネットワークなどが挙げられる。これらの方法は、問題の性質をうまく利用した解法よりは効率が悪い可能性があるが、厳密解を得る解法よりは高速に解を得ることが期待できる。
【０００８】
以下、疑似焼き鈍し法について説明する。
疑似焼き鈍し法はモンテカルロ法の一種であり、乱数値を用いて確率的に解を求める方法である。以下では最適化したい評価関数の値を最小化する問題を例に説明し、評価関数の値をエネルギーと呼ぶことにする。最大化の場合は、評価関数の符号を変えればよい。
【０００９】
各変数（以下状態変数という）に離散値の１つを代入した初期状態からはじめ、現在の状態（状態変数の値の組み合わせ）から、それに近い状態（例えば１つの状態変数だけ変化させた状態）を選び、その状態遷移を考える。その状態遷移に対するエネルギーの変化を計算し、その値に応じてその状態遷移を採択して状態を変化させるか、採択せずに元の状態を保つかを確率的に決める。エネルギーが下がる場合の採択確率をエネルギーが上がる場合より大きく選ぶと、平均的にはエネルギーが下がる方向に状態変化が起こり、時間の経過とともにより適切な状態へ状態遷移することが期待できる。そして最終的には最適解または最適値に近いエネルギーを与える近似解を得られる可能性がある。もし、これを決定論的にエネルギーが下がる場合に採択、上がる場合に不採択とすれば、エネルギーの変化は時間に対して広義単調減少となるが、局所解に到達したらそれ以上変化が起こらなくなってしまう。上記のように組合せ最適化問題には非常に多数の局所解が存在するために、状態が、多くの場合あまり最適値に近くない局所解に捕まってしまう。したがって、採択するかどうかを確率的に決定することが重要である。
【００１０】
疑似焼き鈍し法においては、状態遷移の採択（受入）確率を次のように決めれば、時刻（反復回数）無限大の極限で状態が最適解に到達することが証明されている。
状態遷移に伴うエネルギー変化（ΔＥ）に対して、その状態遷移の受入確率ｐは式（１）で表される次の関数ｆ（ｘ）により決める。式（２）はメトロポリス法である。式（３）はギブス法である。
【００１１】
【数１】
2020140631.tif 000003
【００１２】
【数２】
2020140631.tif 000004
【００１３】
【数３】
2020140631.tif 000005
【００１４】
ここでＴは温度を示す値であり、次のように変化させる。
すなわち、温度Ｔを次式で表されるように反復回数ｔに対数的に減少させる。
【００１５】
【数４】
2020140631.tif 000006
【００１６】
ここでＴ０は初期温度であり問題に応じて十分大きくとる必要がある。
式（１）〜（３）で表される受入確率を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法は疑似焼き鈍し法と呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
【００１７】
上記のように疑似焼き鈍し法では、反復回数を無限に取れば最適解が得られるが、現実には有限の反復回数で解を得る必要があるため、最適解を確実に求めることはできない。また上の式では温度の下がり方が非常にゆっくりであるため、有限時間では十分に温度が下がらない。したがって実際の疑似焼き鈍し法では対数的な温度変化ではなくより速く温度を下げることが多い。
【００１８】
図１７に疑似焼き鈍し法による最適化装置の概念的構成を示す。ただし、下記説明では、状態遷移の候補を複数発生させる場合についても述べているが、本来の基本的な疑似焼き鈍し法は遷移候補を１つずつ発生させるものである。
【００１９】
最適化装置１０には、まず現在の状態ｓ（複数の状態変数の値）を保持する状態保持部１１がある。また、複数の状態変数の値の何れかが変化することによる現在の状態ｓからの状態遷移が起こった場合の、各状態遷移のエネルギーの変化値（以下エネルギー変化｛−ΔＥｉ｝と表記する）を計算する評価関数計算部１２がある。そして、最適化装置１０には、温度Ｔを制御する温度制御部１３、状態変化を制御するための遷移制御部１４がある。遷移制御部１４は、温度Ｔとエネルギー変化｛−ΔＥｉ｝と乱数値とに基づいて、エネルギー変化｛−ΔＥｉ｝と熱励起エネルギーとの相対関係によって複数の状態遷移の何れかを受け入れるか否かを確率的に決定するものである。さらに、最適化装置１０には、状態遷移により生じた各状態のうち、最低エネルギー状態Ｓを特定するエネルギー比較部１５がある。
【００２０】
一回の反復における動作は次のようなものである。まず、遷移制御部１４は、状態保持部１１に保持された現在の状態ｓから次の状態への状態遷移の候補（候補番号｛Ｎｉ｝）を１つまたは複数発生する。評価関数計算部１２は、現在の状態ｓと状態遷移の候補を用いて候補に挙げられた各状態遷移に対するエネルギー変化｛−ΔＥｉ｝を計算する。遷移制御部１４は、温度制御部１３で発生した温度Ｔと遷移制御部１４内の乱数生成部で生成した確率変数（乱数値）を用い、各状態遷移のエネルギー変化｛−ΔＥｉ｝に応じて、上記の式（１）〜（３）の受入確率でその状態遷移を許容する。そして、遷移制御部１４は、各状態遷移を受け入れるか否か（状態遷移の可否）を示す遷移可否｛ｆｉ｝を計算する。許容された状態遷移が複数ある場合には、遷移制御部１４は、乱数値を用いてランダムにそのうちの１つを選択する。そして、遷移制御部１４は、選択した状態遷移の遷移番号Ｎと、遷移可否Ｆを出力する。許容された状態遷移が存在した場合、採択された状態遷移に応じて状態保持部１１に記憶された状態変数の値が更新される。
【００２１】
初期状態から始めて、温度制御部１３で温度値を下げながら上記反復を繰り返し、一定の反復回数に達したときや、エネルギーが一定の値を下回るなどの終了判定条件が満たされたときに、動作が終了する。最適化装置１０が出力する答えは終了時の状態である。ただし、実際には有限の反復回数では温度Ｔが０にならないため、終了時においても状態の占有確率はボルツマン分布などで表される分布を持っており、必ずしも最適値やよい解になっているとは限らない。したがって、反復の途中でこれまでに得られたエネルギーが最低の状態を保持し、最後にそれを出力するのが現実的な解法となる。
【００２２】
状態遷移の候補を複数発生させ、その中から１つの状態遷移を選択する方式（以下、並列探索方式という）では、状態遷移の候補を１つずつ発生させる方式よりも、遷移確率を高めることができる。例えば、状態遷移の数がＮ個の焼き鈍し法による最適化装置１０での並列探索時の状態の遷移確率は、遷移確率が十分小さい時、式（５），（６）で示されるように、状態遷移の候補を１つずつ発生させる方式の約Ｎ倍になる。
【００２３】
【数５】
2020140631.tif 000007
【００２４】
【数６】
2020140631.tif 000008
【００２５】
ここで、Ｎは状態遷移の数である。Ａ（ΔＥｉ）は、ｉ番目の状態遷移の受入確率であり、十分小さい。Ｐｓｉｎｇｌｅは、１つの状態遷移単体で探索する場合の遷移確率である。Ｐｐａｒａｌｌｅｌは、Ｎ個の状態遷移に対して並列探索したときの遷移確率である。
【００２６】
遷移制御部１４がハードウェアにより実現される場合、遷移制御部１４は、例えば、遷移可否｛ｆｉ｝から、乱数値を用いてランダムにそのうちの１つである遷移可否Ｆを選択する選択回路を有する。選択回路は、例えば、２進木構造で配置された複数のセレクタを有する（例えば、特許文献１参照）。各セレクタは、入力される２つの遷移可否のうち、遷移可である方を優先して出力する。また、各セレクタは、入力される２つの遷移可否が同じ（両方遷移可または両方遷移否）である場合、乱数発生回路が出力する乱数値を用いてランダムに何れか一方を選択して出力する。
【００２７】
ここで、遷移制御部１４により、式（１）〜（３）で表される受入確率で状態遷移を許容するメカニズムについてはこれまで説明していないのでこれを補足する。
受入確率ｐで１を、（１−ｐ）で０を出力する回路は、２つの入力ａ，ｂを持ち、ａ＞ｂのとき１を出力し、ａ＜ｂのとき０を出力する比較器の入力ａに受入確率ｐを、入力ｂに区間［０，１）の値をとる一様乱数を入力することで実現することができる。したがってこの比較器の入力ａに、エネルギー変化と温度Ｔにより式（１）を用いて計算される受入確率ｐの値を入力すれば、上記の機能を実現することができる。
【００２８】
すなわちｆを式（１）で用いる関数、ｕを区間［０，１）の値をとる一様乱数とするとき、ｆ（ΔＥ／Ｔ）がｕより大きいとき遷移可否Ｆとして１を出力する回路で、上記の機能を実現できる。
【００２９】
このままでもよいのだが、次のような変形を行っても同じ機能が実現できる。２つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の２つの入力に同じ単調増加関数を作用させても出力は変わらない。この単調増加関数としてｆの逆関数ｆ−１を採用すると、−ΔＥ／Ｔがｆ−１（ｕ）より大きいとき１を出力する回路、またはΔＥ／Ｔがｆ−１（ｕ）以下のとき１を出力する回路でよいことがわかる。さらに、温度Ｔが正であることから−ΔＥがＴｆ−１（ｕ）より大きいとき１を出力する回路、またはΔＥがＴｆ−１（ｕ）以下のとき１を出力する回路でよい。遷移制御部１４は、一様乱数ｕを生成し、上記のｆ−１（ｕ）の値に変換する変換テーブルを用いて、ｆ−１（ｕ）の値を出力する。メトロポリス法が適用される場合、ｆ−１（ｕ）は、式（７）で与えられる。また、ギブス法が適用される場合、ｆ−１（ｕ）は、式（８）で与えられる。
【００３０】
【数７】
2020140631.tif 000009
【００３１】
【数８】
2020140631.tif 000010
【００３２】
ところで、ソフトウェアによる最適化問題の計算手法として、各状態遷移についての遷移可否｛ｆｉ｝のうちの１つを、ランダムではなく各状態遷移を識別する番号（以下ビット番号という）順にシーケンシャルに探索していく方法が知られている。この探索方法では、例えば、まず、ビット番号の一番小さい状態遷移が遷移候補として選択され、その状態遷移の遷移可否が探索され、遷移可否が“１”（遷移可）であればその状態遷移が行われ、遷移可否が“０”（遷移否）であれば状態遷移が行われない。その後、前回探索されたビット番号よりも１つ大きいビット番号の状態遷移が遷移候補として選択され、その状態遷移の遷移可否が探索され、同様に遷移可否に応じた処理が繰り返される。そして、前回一番大きなビット番号の状態遷移についての遷移可否が探索された場合、次は再び一番小さいビット番号の状態遷移についての遷移可否の探索が行われる。
【００３３】
なお、従来、イジングモデルのスピンに対応するユニットを複数アレイ状に設けた半導体装置において、更新するスピンに隣接するスピンについては同時に更新しないようにしつつ、複数のスピンの同時更新を行う技術があった（例えば、特許文献２参照）。また、量子計算機において、最近接結合に限定された量子ビットの一次元配列における量子計算を、量子ビットの順序の並べ替えなどを行って効率化する技術があった（例えば、特許文献３参照）。
【００３４】
最適化問題を解くモンテカルロ法として、擬似焼き鈍し法以外の方法もある。中でもレプリカ交換法（交換モンテカルロ法とも呼ばれる）は、擬似焼き鈍し法で温度を徐々に下げる代わりに、複数の温度に対して独立に（論理的に）並列に状態遷移を行い、適切な判定基準により異なる温度の間で状態を交換することにより焼き鈍しと同様な効果を得る方法である。
【先行技術文献】
【特許文献】
【００３５】
【特許文献１】特開２０１８−４１３５１号公報
【特許文献２】特開２０１６−６６３７８号公報
【特許文献３】特表２００４−５３１７９３号公報
【発明の概要】
【発明が解決しようとする課題】
【００３６】
擬似焼き鈍し法やレプリカ交換法などのマルコフ連鎖モンテカルロ法においては、遷移候補をランダムに１つずつ発生させる方式が理論的に扱いやすく基本となっている。しかしながら、実際に最適解の探索を行ってみると、多くの問題で遷移候補を順番に一つずつ発生させる方式の方が早く最適解に達することが知られている。例えば、最大カット問題、巡回セールスマン問題、スピングラス問題では実験的に、遷移候補を順番に発生させた方が高速であることがわかっている。
【００３７】
並列探索を行う従来の最適化装置では、遷移候補となる状態遷移をランダムに選択するものであり、遷移候補を順番に発生させる方式を回路の並列化により高速化したものではない。このため、従来の最適化装置では、組合せ最適化問題の種類によっては計算速度が遅くなる場合があったと考えられる。
【００３８】
１つの側面では、本発明は、組合せ最適化問題を高速に解くことができる最適化装置及び最適化装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００３９】
１つの実施態様では、エネルギーを表す評価関数に含まれる複数の状態変数の値をそれぞれ保持する状態保持部と、前記複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、前記エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する評価関数計算部と、温度を示す温度値を制御する温度制御部と、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の情報に基づいて設定された優先度情報と、前記温度値と前記変化値と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報とに基づいて、前記複数の状態遷移のうち、何れかの状態遷移を選択する遷移制御部と、選択された状態遷移に基づいて更新される前記エネルギーが、複数回更新された中で最低値となるときの前記複数の状態変数の値である最低エネルギー状態を出力するエネルギー比較部と、を有する最適化装置が提供される。
【００４０】
また、１つの実施態様では、最適化装置の制御方法が提供される。
【発明の効果】
【００４１】
１つの側面では、本発明は、遷移候補を順番に発生させる方式を回路的に並列に動作させることにより組合せ最適化問題を高速に解くことを可能とするものである。
【図面の簡単な説明】
【００４２】
【図１】第１の実施の形態の最適化装置の一例を示す図である。
【図２】最適化装置による動作の一例の流れを示すフローチャートである。
【図３】並列探索を行わずに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。
【図４】並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。
【図５】並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して巡回セールスマン問題を計算したシミュレーション結果の例を示す図である。
【図６】遷移可否選択回路の一例を示す図である。
【図７】選択回路部のセレクタの一例を示す図である
【図８】第２の実施の形態の最適化装置の一例を示す図である。
【図９】遷移可否選択回路の一例を示す図である。
【図１０】優先度の更新例を示す図である。
【図１１】選択回路部のセレクタの一例を示す図である。
【図１２】第３の実施の形態の最適化装置の例を示す図である。
【図１３】第３の実施の形態の最適化装置における遷移可否選択回路の一例を示す図である。
【図１４】選択回路部のセレクタの一例を示す図である。
【図１５】第３の実施の形態の最適化装置における遷移可否選択回路の他の例を示す図である。
【図１６】選択回路部のセレクタの一例を示す図である。
【図１７】疑似焼き鈍し法による最適化装置の概念的構成を示す。
【発明を実施するための形態】
【００４３】
以下、発明を実施するための形態を、図面を参照しつつ説明する。説明は擬似焼き鈍し法を例にして行うが、レプリカ交換法でも各温度における状態の遷移規則は擬似焼き鈍し法と全く同じであるため同様に適用できる。また、最適化すべき目的関数（エネルギー）が２値変数に対する２次式で表されるイジングモデルを例に説明を行うが、そうでない場合でも、遷移番号が定義できれば基本的に同じ手法が適用できる。
【００４４】
なお、イジングモデルの疑似焼き鈍しにおいては、状態遷移に伴い変化する状態変数は１つだけである。そこで、以下では各状態遷移をそれぞれ識別する識別情報は、１つの状態変数（ビットとも呼ばれる）のビット番号と等しいものとして説明を行っているが、状態遷移番号と状態遷移に伴い変化する変数の番号が一致する形態に限定されるものではない。
【００４５】
（第１の実施の形態）
図１は、第１の実施の形態の最適化装置の一例を示す図である。
最適化装置２０は、状態保持部２１、評価関数計算部２２、温度制御部２３、遷移制御部２４、エネルギー比較部２５を有する。
【００４６】
状態保持部２１は、エネルギーを表す評価関数に含まれる状態ｓ（複数の状態変数の値）を保持する。また、状態保持部２１は、遷移制御部２４が出力する遷移可否Ｆと遷移番号Ｎに基づいて、状態変数の値を更新する。状態保持部２１は、例えば、複数の状態変数の値をそれぞれ保持するレジスタやメモリ（例えば、ＲＡＭ（Random Access Memory））、遷移可否Ｆと遷移番号Ｎに基づいて、状態変数の値を１から０または０から１に反転する論理回路などを用いて実現できる。遷移可否Ｆが遷移番号Ｎの状態遷移を許容する値（例えば、１）である場合、遷移番号Ｎに対応する状態変数の値が変化する。
【００４７】
評価関数計算部２２は、複数の状態変数の値の何れかが変化することに応じて状態遷移が起こる場合、エネルギーの変化値を複数の状態遷移のそれぞれに対して計算する。以下では、複数の状態遷移のそれぞれに対して計算されたエネルギーの変化値を、エネルギー変化｛−ΔＥｉ｝と表記する。
【００４８】
エネルギーを表す評価関数Ｅ（ｘ）は、例えば、以下の式（９）で表される。
【００４９】
【数９】
2020140631.tif 000011
【００５０】
右辺の１項目は、状態変数の全組み合わせについて、漏れと重複なく、２つの状態変数の値（０または１）と重み係数との積を積算したものである。ｘｉは、識別情報（以下ビット番号という）がｉの状態変数、ｘｊは、ビット番号＝ｊの状態変数であり、Ｗｉｊは、ビット番号＝ｉ，ｊの状態変数の相互作用の大きさを示す重み係数である。なお、Ｗｉｉ＝０である。また、Ｗｉｊ＝Ｗｊｉであることが多い（つまり、重み係数による係数行列は対称行列である場合が多い）。また重み係数Ｗｉｊは、所定のビット幅（例えば、１６ビット、３２ビット、６４ビット、１２８ビットなど）をもつ。
【００５１】
右辺の２項目は、全状態変数のそれぞれについてのバイアス係数と状態変数の値との積の総和を求めたものである。ｂｉは、ビット番号がｉの状態変数についてのバイアス係数を示している。
【００５２】
また、状態変数ｘｉが変化して１−ｘｉとなると、状態変数ｘｉの増加分は、Δｘｉ＝（１−ｘｉ）−ｘｉ＝１−２ｘｉと表せる。スピン反転（状態変数の値の変化）に伴うエネルギー変化ΔＥｉは、以下の式（１０）で表される。
【００５３】
【数１０】
2020140631.tif 000012
【００５４】
式（１０）において、状態変数ｘｉが１から０に変化するとき、Δｘｉは−１となり、状態変数ｘｉが０から１に変化するとき、Δｘｉは１となる。なお、ｈｉはローカルフィールド（局所場）と呼ばれ、Δｘｉに応じてローカルフィールドｈｉに符号（＋１または−１）を乗じたものがエネルギー変化ΔＥｉである。
【００５５】
また、状態変数ｘｊが０から１に変化したときのローカルフィールドｈｉの変化分Δｈｉは、＋Ｗｉｊ、状態変数ｘｊが１から０に変化したときの変化分Δｈｉは、−Ｗｉｊと表せる。したがって、ローカルフィールドｈｉは行列演算により毎回計算しなおす必要はなく、状態遷移に伴って変化のあった状態変数による変化分だけＷｉｊを加減算すればよい。
【００５６】
評価関数計算部２２は、例えば、積和演算回路などの論理回路、重み係数やバイアス係数を保持するレジスタまたはメモリ（例えば、ＲＡＭ）などを用いて実現される。なお、重み係数やバイアス係数を保持するレジスタまたはメモリは、評価関数計算部２２の外にあってもよい。
【００５７】
温度制御部２３は、温度Ｔを制御する。温度制御部２３は、擬似焼き鈍し法を実現するために、例えば、温度Ｔを所定のスケジュールにしたがって下げていく制御を行う。
温度制御部２３は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路にて実現できる。なお、温度制御部２３は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサであってもよい。その場合、プロセッサは、図示しないメモリに記憶されたプログラムを実行することで、上記の温度Ｔの制御を行う。
【００５８】
遷移制御部２４は、各状態遷移をそれぞれ識別する識別情報に対し、前回更新された状態遷移の番号に基づいて設定された優先度情報（以下、優先度｛ｐｉ｝と表記する）を保持している。そして、遷移制御部２４は、優先度｛ｐｉ｝と、温度Ｔとエネルギー変化｛−ΔＥｉ｝と生成された熱雑音とに基づいて判定された遷移可否を表す遷移可否情報（前述の遷移可否｛ｆｉ｝）とに基づいて、複数の状態遷移のうち、何れかの状態遷移を選択する。
【００５９】
遷移制御部２４は、例えば、図１に示すように、熱雑音生成回路２４ａ、比較器２４ｂ、遷移可否選択回路２４ｃを有する。
熱雑音生成回路２４ａは、例えば、ビット番号ごとに独立の乱数値｛ｕｉ｝を、前述した逆関数ｆ−１（ｕ）の値に変換するノイズテーブルを記憶するメモリ（例えば、ＲＡＭ）を有する。そして、熱雑音生成回路２４ａは、ノイズテーブルが出力する各値に温度Ｔを乗算した積を、メトロポリス法またはギブス法における熱雑音（Ｔｆ−１（ｕ））として出力する。
【００６０】
比較器２４ｂは、熱雑音生成回路２４ａが出力する各ビット番号についての熱雑音と、対応するビット番号のエネルギー変化｛−ΔＥｉ｝との比較結果に応じて、各ビット番号の状態遷移の可否を示す遷移可否｛ｆｉ｝を出力する。比較器２４ｂが｛−ΔＥｉ｝＜Ｔｆ−１（ｕ）の場合に、状態遷移を受け入れることを示す遷移可否Ｆを出力する回路である場合、エネルギー変化｛−ΔＥｉ｝が正に大きくなるほど、状態遷移の受入確率は小さくなる。
【００６１】
遷移可否選択回路２４ｃは、前回更新された状態遷移の情報（遷移可否Ｆと遷移番号Ｎ）に基づいて優先度｛ｐｉ｝を設定する。なお、遷移可否選択回路２４ｃは、優先度｛ｐｉ｝を保持する保持部を有している。そして、遷移可否選択回路２４ｃは、優先度｛ｐｉ｝と遷移可否｛ｆｉ｝とに基づいて、複数の状態遷移のうち、何れかの状態遷移を選択し、選択した状態遷移のビット番号として遷移番号Ｎと、選択した状態遷移の遷移可否｛ｆｉ｝として遷移可否Ｆを出力する。
【００６２】
遷移可否選択回路２４ｃは、優先度情報である優先度｛ｐｉ｝に基づいて、ビット番号の小さい方、またはビット番号の大きい方から優先的に、遷移候補とする状態遷移を選択することでシーケンシャルな選択を実現する。
【００６３】
遷移可否選択回路２４ｃは、以下のルールにしたがって状態遷移の優先順位を決定する。なお、以下では、遷移可否選択回路２４ｃがビット番号の小さい方から優先的に、遷移候補とする状態遷移を選択する例を示す。
【００６４】
遷移可否選択回路２４ｃは、前回遷移した状態変数を再び遷移させる状態遷移の優先順位を最低とし、その状態遷移よりビット番号が１つ大きな状態遷移の優先順位を最高とする。遷移可否選択回路２４ｃは、優先順位が最高となる状態遷移のビット番号よりもビット番号が大きい状態遷移については、ビット番号が大きくなるほど優先順位を下げる。また、遷移可否選択回路２４ｃは、ビット番号が最小の状態遷移の優先順位を、ビット番号が最大の状態遷移の優先順位よりも１つ低くする。そして、遷移可否選択回路２４ｃは、優先順位が最低となる状態遷移のビット番号よりもビット番号が小さい状態遷移については、ビット番号が大きくなるほど優先順位を下げる。
【００６５】
上記のルールは、各ビット番号に対して以下のように設定されるそれぞれ１ビットの優先度｛ｐｉ｝と、以下のルールにしたがって２つの遷移可否のうち一方を選択してそれぞれ出力する、２進木構造で配置された複数のセレクタを用いて実現できる。
【００６６】
例えば、遷移可否選択回路２４ｃは、複数のビット番号のうち、前回更新された状態遷移（前回遷移した状態変数）を識別するビット番号（更新ビット番号）よりも１つ大きなビット番号の状態遷移についての優先度｛ｐｉ｝として１を設定する。そして、遷移可否選択回路２４ｃは、それ以外のビット番号の状態遷移についての優先度｛ｐｉ｝として０を設定する。
【００６７】
図１には、更新ビット番号が１０である場合の、３２個の状態遷移について設定された優先度｛ｐｉ｝（ｐ０〜ｐ３１）の例が示されている。図１に示されているように、ビット番号が１０より１つ大きいビット番号が１１の状態遷移については、優先度ｐ１１として１が設定されており、それ以外のビット番号の状態遷移については、優先度ｐ０〜ｐ１０，ｐ１２〜ｐ３１として０が設定されている。なお、０と１は逆に設定されていてもよい。
【００６８】
２進木構造で配置された複数のセレクタのそれぞれは、２つの状態遷移の遷移可否｛ｆｉ｝と、それら２つの状態遷移についての優先度｛ｐｉ｝と、ビット番号を入力する。例えば、２進木構造で配置された複数のセレクタのうち初段の複数のセレクタのそれぞれは、ビット番号が隣接する２つの状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝と、ビット番号を入力する。ビット番号は、例えば、エネルギー変化｛−ΔＥｉ｝と対応付いて評価関数計算部２２から供給される。なお、複数のセレクタのそれぞれが、選択したビット番号に対応したアドレスを生成するようにしてもよい。ビット番号を示すアドレスを生成するセレクタの例については後述する。以下では、ビット番号を示すアドレスについてもビット番号と呼ぶことにする。
【００６９】
２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝のうち一方が１の場合、遷移可否｛ｆｉ｝が１である状態遷移についての遷移可否｛ｆｉ｝と、ビット番号を出力する。
【００７０】
一方、２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝が両方１でビット番号の大きい方の優先度｛ｐｉ｝が１の場合、ビット番号が大きい方の状態遷移についての遷移可否｛ｆｉ｝とビット番号とを出力する。それ以外の場合、複数のセレクタのそれぞれは、ビット番号が小さい方の状態遷移についての遷移可否｛ｆｉ｝とビット番号とを出力する。
【００７１】
また、２進木構造で配置された複数のセレクタのそれぞれは、以下のルールで優先度｛ｐｉ｝を次段に伝播する。
複数のセレクタのそれぞれは、入力される２つの優先度｛ｐｉ｝のうち、ビット番号が小さい方の状態遷移についての優先度｛ｐｉ｝が１の場合、次段のセレクタに優先度｛ｐｉ｝として１を供給する。複数のセレクタのそれぞれは、入力される２つの優先度｛ｐｉ｝のうち、ビット番号が大きい方の状態遷移についての優先度｛ｐｉ｝が１で、その状態遷移の遷移可否｛ｆｉ｝が１の場合、次段のセレクタに優先度｛ｐｉ｝として１を供給する。
【００７２】
一方、複数のセレクタのそれぞれは、入力される２つの優先度｛ｐｉ｝のうち、ビット番号が大きい方の状態遷移についての優先度｛ｐｉ｝が１で、その状態遷移の遷移可否｛ｆｉ｝が０の場合、自身の次段のセレクタに優先度｛ｐｉ｝として０を供給する。さらにその場合、同じ次段のセレクタに接続された２つのセレクタのうち、２進木構造上の右側に位置するセレクタは、次段のセレクタの右隣のセレクタに対し、ビット番号の小さい方の状態遷移についての優先度｛ｐｉ｝を１にする信号を供給する。以下、その信号を、優先度伝達信号という。なお、次段のセレクタの右隣にセレクタがない場合には、優先度伝達信号の供給は行われない。
【００７３】
図１の例で、遷移可否ｆ８〜ｆ１５のうち、遷移可否ｆ８，ｆ１５が１、遷移可否ｆ９〜ｆ１４が０、優先度ｐ１１が１であるとする。このとき、上記ルールにより、２段目のあるセレクタから、ビット番号が８〜１１の状態遷移のうちビット番号が８の状態遷移についての遷移可否ｆ８とビット番号と、優先度＝０が出力される。一方、上記ルールにより、２段目の上記セレクタの右隣のセレクタからは、ビット番号が１２〜１５の状態遷移のうちビット番号が１５の状態遷移についての遷移可否ｆ１５とビット番号と、優先度＝１が出力される。優先度伝達信号を用いない場合、遷移可否ｆ８と、遷移可否ｆ１５を入力する３段目のセレクタは、ビット番号＝１５の状態遷移よりも優先順位の低いビット番号＝８の状態遷移についての遷移可否ｆ８とビット番号を出力してしまう。これに対して、優先度伝達信号を用いることで、３段目のセレクタは、右上のセレクタから入力される優先度が１になっているため、ビット番号＝８の状態遷移よりも優先順位の高いビット番号が１５の状態遷移についての遷移可否ｆ１５とビット番号を出力できる。
【００７４】
このような遷移可否選択回路２４ｃによって、ビット番号の小さい方から優先的に遷移候補となる状態遷移がシーケンシャルに選択される。
なお、遷移可否選択回路２４ｃは、ビット番号の大きい方から優先的に遷移候補となる状態遷移をシーケンシャルに選択してもよい。その場合には、以下の処理が行われる。遷移可否選択回路２４ｃは、前回遷移した状態変数を再び遷移させる状態遷移の優先順位を最低とし、その状態遷移より、ビット番号が１つ小さな状態遷移の優先順位を最高とする。遷移可否選択回路２４ｃは、優先順位が最高となる状態遷移のビット番号よりもビット番号が小さい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。また、遷移可否選択回路２４ｃは、ビット番号が最大の状態遷移の優先順位を、ビット番号が最小の状態遷移の優先順位よりも１つ低くする。そして、遷移可否選択回路２４ｃは、優先順位が最低となる状態遷移のビット番号よりもビット番号が大きい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。
【００７５】
上記のルールは、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合と同様に、それぞれ１ビットの優先度｛ｐｉ｝と、２進木構造で配置された複数のセレクタを用いて実現できる。例えば、遷移可否選択回路２４ｃは、更新ビット番号より１つ小さなビット番号の状態遷移についての優先度｛ｐｉ｝として１を設定し、それ以外のビット番号の状態遷移についての優先度｛ｐｉ｝として０を設定する。
【００７６】
そして２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝のうち一方が１の場合、遷移可否｛ｆｉ｝が１である状態遷移についての遷移可否｛ｆｉ｝と、ビット番号を出力する。一方、２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝が両方１で、ビット番号の小さい方の優先度｛ｐｉ｝が１の場合、ビット番号が小さい方の状態遷移についての遷移可否｛ｆｉ｝とビット番号とを出力する。それ以外の場合、複数のセレクタのそれぞれは、ビット番号が大きい方の状態遷移についての遷移可否｛ｆｉ｝とビット番号とを出力する。
【００７７】
また、ビット番号の大きい方から優先的に遷移候補となる状態遷移をシーケンシャルに選択する場合、２進木構造で配置された複数のセレクタのそれぞれは、以下のルールで優先度｛ｐｉ｝を次段に伝播する。
【００７８】
複数のセレクタのそれぞれは、入力される２つの優先度｛ｐｉ｝のうち、ビット番号が大きい方の状態遷移についての優先度｛ｐｉ｝が１の場合、次段のセレクタに優先度｛ｐｉ｝として１を供給する。複数のセレクタのそれぞれは、入力される２つの優先度｛ｐｉ｝のうち、ビット番号が小さい方の状態遷移についての優先度｛ｐｉ｝が１で、その状態遷移の遷移可否｛ｆｉ｝が１の場合、次段のセレクタに優先度｛ｐｉ｝として１を供給する。
【００７９】
一方、複数のセレクタのそれぞれは、入力される２つの優先度｛ｐｉ｝のうち、ビット番号が小さい方の状態遷移についての優先度｛ｐｉ｝が１で、その状態遷移の遷移可否｛ｆｉ｝が０の場合、自身の次段のセレクタに優先度｛ｐｉ｝として０を供給する。さらにその場合、同じ次段のセレクタに接続された２つのセレクタのうち、２進木構造上の左側に位置するセレクタは、次段のセレクタの左隣のセレクタに対し、ビット番号の大きい方の状態遷移についての優先度｛ｐｉ｝を１にする優先度伝達信号を供給する。なお、次段のセレクタの左隣にセレクタがない場合には、優先度伝達信号の供給は行われない。
【００８０】
なお、遷移可否選択回路２４ｃは、最小または最大のビット番号からではなく最小のビット番号と最大のビット番号の間のビット番号から、ビット番号の小さい方へまたは大きい方へ状態遷移をシーケンシャルに選択してもよい。
【００８１】
優先度｛ｐｉ｝の生成例や、遷移可否選択回路２４ｃの回路例については後述する。
なお、遷移制御部２４は許容された状態遷移がない場合、状態遷移の受入確率が上昇するように、エネルギー変化｛−ΔＥｉ｝またはＴｆ−１（ｕ）の一方にオフセット値を加算または減算するようにしてもよい（例えば特開２０１８−０６３６２６号公報参照）。
【００８２】
エネルギー比較部２５は、遷移制御部２４によって選択された状態遷移に基づいて更新されるエネルギーが、複数回更新された中で最低値となるときの複数の状態変数の値である最低エネルギー状態Ｓを出力する。例えば、エネルギー比較部２５は、状態ｓが更新されるたびに、状態ｓと重み係数とバイアス値とを用いて現在の状態ｓに対するエネルギーを計算する。また、エネルギー比較部２５は、最低エネルギーと最低エネルギーが得られたときの状態（最低エネルギー状態Ｓ）を保持する。エネルギー比較部２５は、現在の状態ｓから得られたエネルギーが、これまでの最低エネルギーよりも低い場合には最低エネルギーを更新するとともに、その状態ｓを、最低エネルギー状態Ｓとして記憶する。そして、エネルギー比較部２５は、エネルギーが複数回更新された中で、最低値となるときの最低エネルギー状態Ｓを、組合せ最適化問題の解として出力する。このようなエネルギー比較部２５は、例えば、積和演算回路、比較器、レジスタまたはメモリ（例えば、ＲＡＭ）などを用いて実現可能である。なお、評価関数計算部２２がエネルギー自体を計算する場合には、エネルギー比較部２５は、評価関数計算部２２からエネルギーを受信すればよく、自らエネルギーの計算を行わなくてもよい。
【００８３】
なお、状態ｓを更新する処理が所定回数行われた後の状態ｓを最適化の結果として出力する場合には、エネルギー比較部２５はなくてもよい。
以下、最適化装置２０の動作例を説明する。
【００８４】
図２は、最適化装置による動作の一例の流れを示すフローチャートである。
まず、最適化装置２０において、反復回数を管理する図示しない制御部（コントローラ）により反復回数が初期化される（ステップＳ１）。その後、前述した評価関数計算部２２の処理により、エネルギー変化｛−ΔＥｉ｝が計算される（ステップＳ２）。
【００８５】
そして、確率的探索が行われる（ステップＳ３）。確率的探索は、前述した、遷移制御部２４が、遷移可否｛ｆｉ｝を求め、遷移可否｛ｆｉ｝の他、優先度｛ｐｉ｝を用いて遷移候補となる状態遷移を選択する前述の処理、優先度｛ｐｉ｝の更新処理を含む。また、確率的探索は、状態保持部２１が、遷移可否Ｆ、遷移番号Ｎに基づいて状態変数を更新する処理も含む。
【００８６】
その後、制御部により反復回数がインクリメントされ（ステップＳ４）、反復回数が所定回数に達したか否かが判定される（ステップＳ５）。反復回数が所定回数に達していない場合には、ステップＳ２からの処理が繰り返され、反復回数が所定回数に達した場合、制御部は、エネルギー比較部２５に最低エネルギー状態Ｓを出力させ（ステップＳ６）、処理を終える。なお、図２には示されていないが、温度制御部２３は、擬似焼き鈍し法を実現するために、例えば、反復回数がある回数（上記の所定回数よりも少ない）に達するたびに、温度Ｔを下げていく制御を行う。このため、温度制御部２３が、反復回数を管理する制御部（コントローラ）の処理を行ってもよい。
【００８７】
上記のような最適化装置２０は、複数の状態遷移の中から遷移候補を選択する際に、ランダムに選択するのではなく優先度情報に基づいて選択することで、状態遷移をビット番号順にシーケンシャルに選ぶ探索が可能になる。これにより、最大カット問題、巡回セールスマン問題、スピングラス問題など、遷移候補となる状態遷移をシーケンシャルに選ぶ探索が適した組合せ最適化問題を高速に解くことができる。
【００８８】
以下、各種シミュレーション結果を示す。
図３は、並列探索を行わずに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。横軸はイタレーション回数を表し、縦軸は正解数を表す。計算対象の最大カット問題は、Ｍａｘｃｕｔ（Ｇ４３）という１０００ビット規模の問題である。
【００８９】
図３において結果３０は、遷移候補となる状態遷移をランダムに選択した場合の計算結果を示し、結果３１は、遷移候補となる状態遷移をシーケンシャルに選択した場合の計算結果を示す。結果３０，３１から、遷移候補となる状態遷移をランダムに選択した場合よりも、シーケンシャルに選択した場合の方が、約２倍の速さで正解数が増加していることがわかる。
【００９０】
図４は、並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して最大カット問題を計算したシミュレーション結果の例を示す図である。
また、図５は、並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルまたはランダムに選択して巡回セールスマン問題を計算したシミュレーション結果の例を示す図である。
【００９１】
図４、図５とも横軸はイタレーション回数を表し、縦軸は最適解到達率を表す。計算対象の最大カット問題はＭａｘｃｕｔ（Ｇ４３）であり、計算対象の巡回セールスマン問題における都市数は３２都市である。
【００９２】
図４、図５において結果３２，３５は、並列探索を行うとともに、遷移候補となる状態遷移をシーケンシャルに選択する場合の計算結果を示し、結果３３，３６は、並列探索を行うとともに、遷移候補となる状態遷移をランダムに選択する場合の計算結果を示す。なお、図４、図５では、比較のために並列探索を行わずに、遷移候補となる状態遷移をシーケンシャルに選択して最大カット問題または巡回セールスマン問題を計算した結果３４，３７が示されている。
【００９３】
図４、図５から、並列探索を行うとともに状態遷移をランダムに選択する場合よりも、図１の最適化装置２０のように並列探索を行うとともに状態遷移をシーケンシャルに選択する場合の方が、最適解到達率の増加速度が約２倍速くなることがわかる。また、図４、図５から、並列探索を行わずに状態遷移をシーケンシャルに選択する場合よりも、図１の最適化装置２０のように並列探索を行うとともに状態遷移をシーケンシャルに選択する場合の方が、最適解到達率の増加速度が１０〜１００倍程度速くなることがわかる。
【００９４】
（遷移可否選択回路２４ｃの例）
図６は、遷移可否選択回路の一例を示す図である。なお、以下では、遷移可否選択回路２４ｃが、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合について説明するが、ビット番号の大きい方から優先的に選ぶ場合もほぼ同様の回路で実現できる。
【００９５】
遷移可否選択回路２４ｃは、優先度保持部４０、選択回路部４１、優先度更新回路４２を有する。
優先度保持部４０は、各ビット番号に対して設定された優先度｛ｐｉ｝を保持する。優先度保持部４０は、例えば、それぞれ１ビットの優先度｛ｐｉ｝を保持する複数のレジスタを有する。
【００９６】
選択回路部４１は、２進木構造で複数段、配置された複数のセレクタ（セレクタ４１ａ１，４１ａ２，４１ｂ１，４１ｂ２，４１ｃなど）を有する。複数のセレクタのそれぞれは、２つの状態遷移の遷移可否｛ｆｉ｝と、それら２つの状態遷移のビット番号に対して設定された優先度｛ｐｉ｝とを入力するとともに、初段のセレクタ以外は前段の２つのセレクタが出力するビット番号に対応するアドレスを入力する。また、２段目以降のセレクタのうち、最後段のセレクタと各段の左端以外のセレクタは、前述の優先度伝達信号を入力する。そして、複数のセレクタのそれぞれは、入力される２つの状態遷移についての遷移可否｛ｆｉ｝及び優先度｛ｐｉ｝と、優先度伝達信号に基づいて、遷移可否｛ｆｉ｝、優先度｛ｐｉ｝、ビット番号に対応するアドレスを出力する。また、同じ次段のセレクタに接続された２つのセレクタのうち、２進木構造上の右側に位置するセレクタは、次段のセレクタの右隣のセレクタに対し、前述の優先度伝達信号を供給する。
【００９７】
例えば、セレクタ４１ａ２は、入力される２つの状態遷移の遷移可否｛ｆｉ｝（遷移可否ｆ２，ｆ３）のうち一方が１の場合、遷移可否｛ｆｉ｝が１である状態遷移についての遷移可否｛ｆｉ｝と、ビット番号に対応するアドレス（０か１）を出力する。一方、セレクタ４１ａ２は、遷移可否ｆ２，ｆ３が両方１で、ビット番号の大きい方の優先度｛ｐｉ｝（優先度ｐ３）が１の場合、遷移可否ｆ３とビット番号に対応するアドレス（例えば、１）とを出力する。それ以外の場合、セレクタ４１ａ２は、ビット番号が小さい方の状態遷移についての遷移可否ｆ２とビット番号に対応するアドレス（例えば、０）とを出力する。
【００９８】
また、セレクタ４１ａ２は、入力される２つの優先度ｐ２，ｐ３のうち、ビット番号が小さい方の状態遷移についての優先度ｐ２が１の場合、次段のセレクタ４１ｂ１に優先度として１を供給する。また、セレクタ４１ａ２は、優先度ｐ２，ｐ３のうち、ビット番号が大きい方の状態遷移についての優先度ｐ３が１で、その状態遷移の遷移可否ｆ３が１の場合、次段のセレクタ４１ｂ１に優先度として１を供給する。一方、セレクタ４１ａ２は、優先度ｐ２，ｐ３のうち、ビット番号が大きい方の状態遷移についての優先度ｐ３が１で、その状態遷移の遷移可否ｆ３が０の場合、次段のセレクタ４１ｂ１に優先度として０を供給する。さらにその場合、セレクタ４１ａ２は、次段のセレクタ４１ｂ１の右隣のセレクタ４１ｂ２に対し、ビット番号の小さい方の状態遷移についての優先度を１にする優先度伝達信号を供給する。
【００９９】
ビット番号に対応するアドレスは、各段のセレクタを通過するたびに、１ビットずつビット幅が増えていき、最後段のセレクタ４１ｃが出力するアドレスが、選択された状態遷移のビット番号、すなわち遷移番号Ｎとなる。また、最後段のセレクタ４１ｃが出力する遷移可否｛ｆｉ｝が遷移可否Ｆとなる。なお、最後段のセレクタ４１ｃは、優先度を出力しなくてもよい。
【０１００】
優先度更新回路４２は、遷移可否Ｆと遷移番号Ｎとに基づいて、優先度｛ｐｉ｝を更新する。優先度更新回路４２は、遷移可否Ｆが１の場合、遷移番号Ｎよりも１つ大きなビット番号の状態遷移についての優先度｛ｐｉ｝を０から１に変更し、これまで１であった優先度｛ｐｉ｝を０に変更する。遷移可否Ｆが０の場合、優先度更新回路４２は、優先度｛ｐｉ｝を変更しない。このような更新を行う優先度更新回路４２は、インバータ回路などを用いて実現できる。
【０１０１】
図７は、選択回路部のセレクタの一例を示す図である。図７では、図６に示した２段目のセレクタ４１ｂ２の例が示されている。
セレクタ４１ｂ２は、ＸＯＲ（排他的論理和）回路５０、ＡＮＤ（論理積）回路５１，５２、ＯＲ（論理和）回路５３，５４、２：１セレクタ５５、ＡＮＤ回路５６、２：１セレクタ５７を有する。
【０１０２】
ＸＯＲ回路５０は、前段の２つのセレクタが出力する遷移可否ｆ＿ｌ，ｆ＿ｕを入力する。遷移可否ｆ＿ｌ，ｆ＿ｕのうち、遷移可否ｆ＿ｌは、ビット番号が小さい方の状態遷移の遷移可否であり、遷移可否ｆ＿ｕは、ビット番号が大きい方の状態遷移の遷移可否である。ＸＯＲ回路５０は、遷移可否ｆ＿ｌ，ｆ＿ｕの値が一致していれば０、異なっていれば１を出力する。
【０１０３】
ＡＮＤ回路５１は、遷移可否ｆ＿ｕと、優先度ｐ＿ｕを入力し、遷移可否ｆ＿ｕと、優先度ｐ＿ｕとの論理積を出力する。優先度ｐ＿ｕは、前段の２つのセレクタが出力する優先度ｐ＿ｌ，ｐ＿ｕのうち、ビット番号が大きい方に対して設定された優先度である。
【０１０４】
ＡＮＤ回路５２は、遷移可否ｆ＿ｕを反転した値と、優先度ｐ＿ｕを入力し、遷移可否ｆ＿ｕを反転した値と、優先度ｐ＿ｕとの論理積である優先度伝達信号ｐｒを出力する。
ＯＲ回路５３は、優先度ｐ＿ｌ，ｐ＿ｕと、セレクタ４１ａ２が出力する優先度伝達信号ｐｒ＿ｌを入力し、優先度ｐ＿ｌ，ｐ＿ｕと、優先度伝達信号ｐｒ＿ｌとの論理和を出力する。
【０１０５】
ＯＲ回路５４は、遷移可否ｆ＿ｌ，ｆ＿ｕを入力し、遷移可否ｆ＿ｌ，ｆ＿ｕの論理和である遷移可否（ｆと表記している）を出力する。
２：１セレクタ５５は、遷移可否ｆ＿ｕと、ＡＮＤ回路５１が出力する０または１の値を入力する。そして、２：１セレクタ５５は、ＸＯＲ回路５０の出力が１のときは、遷移可否ｆ＿ｕの値を選択して出力し、ＸＯＲ回路５０の出力が０のときは、ＡＮＤ回路５１が出力する値を選択して出力する。
【０１０６】
ＡＮＤ回路５６は、ＡＮＤ回路５２の出力（優先度伝達信号ｐｒ）を反転した値と、ＯＲ回路５３が出力する０または１の値を入力する。そして、ＡＮＤ回路５６は、優先度伝達信号ｐｒを反転した値と、ＯＲ回路５３が出力する値との論理積である優先度（ｐと表記されている）を出力する。
【０１０７】
２：１セレクタ５７は、前段の２つのセレクタが出力するビット番号に対応するアドレスａｄｄｒ＿ｌ，ａｄｄｒ＿ｕを入力する。アドレスａｄｄｒ＿ｌ，ａｄｄｒ＿ｕのうち、アドレスａｄｄｒ＿ｌは、ビット番号が小さい方に対応するアドレスであり、アドレスａｄｄｒ＿ｕは、ビット番号が大きい方に対応するアドレスである。２：１セレクタ５７は、２：１セレクタ５５の出力が０のときは、アドレスａｄｄｒ＿ｌを選択して出力し、２：１セレクタ５５の出力が１のときは、アドレスａｄｄｒ＿ｕを選択して出力する。２：１セレクタ５５が出力するアドレスａｄｄｒ＿ｌまたはアドレスａｄｄｒ＿ｕに、２：１セレクタ５５が出力する１ビットの値を追加したもの（上位ビットに追加したもの）が、セレクタ４１ｂ２が出力するアドレスａｄｄｒである。
【０１０８】
図６に示した他のセレクタについても、図７に示したセレクタ４１ｂ２とほぼ同じ回路構成により実現できる。ただ、初段のセレクタには、図７に示した２：１セレクタ５７が設けられておらず、ＯＲ回路５３に優先度伝達信号ｐｒ＿ｌは入力されない。また、同じ次段のセレクタに接続された２つのセレクタのうち、２進木構造上の左側に位置するセレクタや、右側に位置するセレクタであっても次段のセレクタの右隣にセレクタがないものについては、優先度伝達信号ｐｒを出力しない。また、最後段のセレクタ４１ｃには、ＡＮＤ回路５２，５６、ＯＲ回路５３が設けられていなくてもよい。
【０１０９】
第１の実施の形態の最適化装置２０は、例えば、上記のような回路構成の遷移可否選択回路２４ｃを用いて実現可能である。
（第２の実施の形態）
図８は、第２の実施の形態の最適化装置の一例を示す図である。図８において、図１に示した最適化装置２０と同じ要素については同じ符号が付されている。
【０１１０】
第２の実施の形態の最適化装置６０において、遷移制御部６１の遷移可否選択回路６１ａが、第１の実施の形態の最適化装置２０における遷移制御部２４の遷移可否選択回路２４ｃとは異なっている。
【０１１１】
遷移可否選択回路６１ａは、複数のビット番号のうち、前回更新された状態遷移（前回遷移した状態変数）を識別するビット番号（更新ビット番号）よりも大きいビット番号の状態遷移についての優先度｛ｐｉ｝として１を設定する。そして、遷移可否選択回路６１ａは、更新ビット番号以下のビット番号の状態遷移についての優先度｛ｐｉ｝として０を設定する。
【０１１２】
図８には、更新ビット番号が１０である場合の、３２個の状態遷移について設定された優先度｛ｐｉ｝（ｐ０〜ｐ３１）の例が示されている。図８に示されているように、ビット番号が１０より大きな状態遷移については、優先度ｐ１１〜ｐ３１として１が設定されており、それ以外のビット番号の状態遷移については、優先度ｐ１１〜ｐ３１として０が設定されている。なお、０と１は逆に設定されていてもよい。
【０１１３】
遷移可否選択回路６１ａは、第１の実施の形態の遷移可否選択回路２４ｃと同様に２進木構造で配置された複数のセレクタを有する。
２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝のうち一方が１の場合、遷移可否｛ｆｉ｝が１である状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝と、ビット番号を出力する。一方、２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝が両方同じ値の場合、優先度｛ｐｉ｝が同じならビット番号が小さい状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とビット番号とを出力する。２進木構造で配置された複数のセレクタのそれぞれは、優先度｛ｐｉ｝が異なるならビット番号が大きい状態遷移（優先度｛ｐｉ｝が１の状態遷移）についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とビット番号とを出力する。
【０１１４】
このような遷移可否選択回路６１ａによっても、第１の実施の形態の遷移可否選択回路２４ｃと同様に、ビット番号の小さい方から優先的に遷移候補となる状態遷移がシーケンシャルに選択される。
【０１１５】
なお、遷移可否選択回路６１ａは、ビット番号の大きい方から優先的に遷移候補となる状態遷移をシーケンシャルに選択してもよい。その場合には、以下の処理が行われる。遷移可否選択回路６１ａは、前回遷移した状態変数を再び遷移させる状態遷移の優先順位を最低とし、その状態遷移より、ビット番号が１つ小さな状態遷移の優先順位を最高とする。遷移可否選択回路６１ａは、優先順位が最高となる状態遷移のビット番号よりもビット番号が小さい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。また、遷移可否選択回路６１ａは、ビット番号が最大の状態遷移の優先順位を、ビット番号が最小の状態遷移の優先順位よりも１つ低くする。そして、遷移可否選択回路６１ａは、優先順位が最低となる状態遷移のビット番号よりもビット番号が大きい状態遷移については、ビット番号が小さくなるほど優先順位を下げる。
【０１１６】
上記のルールは、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合と同様に、それぞれ１ビットの優先度｛ｐｉ｝と、２進木構造で配置された複数のセレクタを用いて実現できる。例えば、遷移可否選択回路６１ａは、更新ビット番号より小さなビット番号の状態遷移についての優先度｛ｐｉ｝として１を設定し、それ以外のビット番号の状態遷移についての優先度｛ｐｉ｝として０を設定する。２進木構造で配置された複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝が両方同じ値の場合、優先度｛ｐｉ｝が同じならビット番号が大きい状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とビット番号とを出力する。２進木構造で配置された複数のセレクタのそれぞれは、優先度｛ｐｉ｝が異なるならビット番号が小さい状態遷移（優先度｛ｐｉ｝が１の状態遷移）についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とビット番号とを出力する。
【０１１７】
なお、遷移可否選択回路６１ａは、最小または最大のビット番号からではなく最小のビット番号と最大のビット番号の間のビット番号から、ビット番号の小さい方へまたは大きい方へ状態遷移をシーケンシャルに選択してもよい。
【０１１８】
図９は、遷移可否選択回路の一例を示す図である。図９において、図６に示した遷移可否選択回路２４ｃと同じ要素については同一符号が付されている。なお、以下では、遷移可否選択回路６１ａが、ビット番号の小さい方から優先的に遷移候補となる状態遷移を選択する場合について説明するが、ビット番号の大きい方から優先的に選ぶ場合も同様の回路で実現できる。
【０１１９】
選択回路部４３は、２進木構造で複数段、配置された複数のセレクタ（セレクタ４３ａ，４３ｂ，４３ｃなど）を有する。複数のセレクタのそれぞれは、２つの状態遷移の遷移可否｛ｆｉ｝と、それら２つの状態遷移のビット番号に対して設定された優先度｛ｐｉ｝とを入力するとともに、初段のセレクタ以外は前段の２つのセレクタが出力するビット番号に対応するアドレスを入力する。そして、複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝のうち一方が１の場合、遷移可否｛ｆｉ｝が１である状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とビット番号に対応するアドレスとを出力する。一方、複数のセレクタのそれぞれは、入力される２つの状態遷移の遷移可否｛ｆｉ｝が両方同じ値の場合、優先度｛ｐｉ｝が同じならビット番号が小さい状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とビット番号に対応するアドレスとを出力する。
【０１２０】
例えば、初段のセレクタ４３ａは、ビット番号が隣接する２つの状態遷移についての遷移可否ｆ０，ｆ１と優先度ｐ０，ｐ１を入力する。そして、セレクタ４３ａは、遷移可否ｆ０，ｆ１のうち一方が１の場合、遷移可否ｆ０，ｆ１が１である状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝と、ビット番号に対応する１ビットのアドレス（０か１）とを出力する。一方、セレクタ４３ａは、遷移可否ｆ０，ｆ１が両方同じ値の場合、優先度ｐ０，ｐ１が同じならビット番号が小さい状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とアドレス、すなわち遷移可否ｆ０と優先度ｐ０と０とを出力する。セレクタ４３ａは、優先度ｐ０，ｐ１が異なるなら、ビット番号が大きい状態遷移についての遷移可否｛ｆｉ｝と優先度｛ｐｉ｝とアドレス、すなわち遷移可否ｆ１と優先度ｐ１と１とを出力する。
【０１２１】
ビット番号に対応するアドレスは、各段のセレクタを通過するたびに、１ビットずつビット幅が増えていき、最後段のセレクタ４３ｃが出力するアドレスが、選択された状態遷移のビット番号、すなわち遷移番号Ｎとなる。また、最後段のセレクタ４３ｃが出力する遷移可否｛ｆｉ｝が遷移可否Ｆとなる。なお、最後段のセレクタ４３ｃは、優先度｛ｐｉ｝を出力しなくてもよい。
【０１２２】
優先度更新回路４４は、遷移可否Ｆと遷移番号Ｎとに基づいて、優先度｛ｐｉ｝を更新する。優先度｛ｐｉ｝の更新方法として、例えば、以下の２つの方法がある。
（優先度｛ｐｉ｝の更新方法例１）
優先度更新回路４４は、優先度｛ｐｉ｝を、前回遷移した状態変数のビット番号（更新ビット番号）と各状態変数のビット番号との比較結果に基づいて更新する。
【０１２３】
優先度更新回路４４は、遷移可否Ｆが“１”であるときの遷移番号Ｎを、更新ビット番号Ｎｕｐｄａｔｅとする。そして、優先度更新回路４４は、ビット番号Ｎｉ＞Ｎｕｐｄａｔｅとなる、ビット番号Ｎｉに対して設定された優先度ｐｉを１とし、ビット番号Ｎｉ≦Ｎｕｐｄａｔｅとなる、ビット番号Ｎｉに対して設定された優先度ｐｉを０とする。
【０１２４】
このような更新を行う優先度更新回路４４は、比較回路などを用いて実現できる。
（優先度｛ｐｉ｝の更新方法例２）
優先度｛ｐｉ｝の更新方法例２を行う優先度更新回路４４では、各ビット番号に対して設定される優先度｛ｐｉ｝を、各ビット番号より１つ小さいビット番号に対して設定された優先度と同じ値にする回路が用いられる。そして、優先度更新回路４４は、前回遷移した状態変数のビット番号よりも１つ大きいビット番号に対して設定された優先度を強制的に１にする。このとき、上記回路により、優先度が１とされたビット番号よりも大きいビット番号の優先度は全て１となる。
【０１２５】
図１０は、優先度の更新例を示す図である。
初期状態では、優先度｛ｐｉ｝は、最小のビット番号に対して設定された優先度ｐ０の値＝０にしたがって、全て０になっている。ビット番号＝１０の状態変数において遷移が発生した場合、優先度更新回路４４は、ビット番号＝１１に対して設定されている優先度ｐ１１を強制的に１に反転する。そして、優先度更新回路４４は、優先度｛ｐｉ｝を、各ビット番号より１つ小さいビット番号に対して設定された優先度と同じ値にする回路により、ビット番号＝１１よりも大きいビット番号に対して設定されている優先度｛ｐｉ｝を１にする。その後、ビット番号＝１３の状態変数において遷移が発生した場合、優先度更新回路４４は、ビット番号＝１４に対して設定されている優先度ｐ１４を１に維持する。そして、優先度更新回路４４は、優先度｛ｐｉ｝を、各ビット番号より１つ小さいビット番号に対して設定された優先度と同じ値にする回路により、値が１に反転されていた優先度ｐ１１〜ｐ１３を、０に反転する。
【０１２６】
このような処理を行う優先度更新回路４４は、例えば、各ビット番号に対応して設けられたＯＲ回路などを用いて実現できる。ビット番号Ｎｉに対応して設けられたＯＲ回路の一方の入力端子には、ビット番号Ｎｉより１つ小さいビット番号Ｎｉ−１の優先度が入力され、他方の入力端子には制御値が入力される。制御値は、優先度更新回路４４によって、遷移可否Ｆ及び遷移番号Ｎに基づいて生成される。制御値は、ビット番号Ｎｉの状態変数において遷移が発生したときに、１になる。このようなＯＲ回路は、制御値が０の場合、１つ小さいビット番号Ｎｉ−１の優先度をビット番号Ｎｉの優先度として出力し、制御値が１の場合、１つ小さいビット番号Ｎｉ−１の優先度にかかわらず、ビット番号Ｎｉの優先度として１を出力する。
【０１２７】
図１１は、選択回路部のセレクタの一例を示す図である。図１１では、図９に示した２段目のセレクタ４３ｂの例が示されている。
セレクタ４３ｂは、ＸＯＲ回路７０，７１、ＯＲ回路７２、２：１セレクタ７３，７４，７５を有する。
【０１２８】
ＸＯＲ回路７０は、前段の２つのセレクタが出力する遷移可否ｆ＿ｌ，ｆ＿ｕを入力する。遷移可否ｆ＿ｌ，ｆ＿ｕのうち、遷移可否ｆ＿ｌは、ビット番号が小さい方の状態遷移の遷移可否であり、遷移可否ｆ＿ｕは、ビット番号が大きい方の状態遷移の遷移可否である。ＸＯＲ回路７０は、遷移可否ｆ＿ｌ，ｆ＿ｕの値が一致していれば０、異なっていれば１を出力する。
【０１２９】
ＸＯＲ回路７１は、前段の２つのセレクタが出力する優先度ｐ＿ｌ，ｐ＿ｕを入力する。優先度ｐ＿ｌ，ｐ＿ｕのうち、優先度ｐ＿ｌは、ビット番号が小さい方に対して設定された優先度であり、優先度ｐ＿ｕは、ビット番号が大きい方に対して設定された優先度である。ＸＯＲ回路７１は、優先度ｐ＿ｌ，ｐ＿ｕの値が一致していれば０、異なっていれば１を出力する。
【０１３０】
ＯＲ回路７２は、遷移可否ｆ＿ｌ，ｆ＿ｕを入力し、遷移可否ｆ＿ｌ，ｆ＿ｕの何れか一方または両方が１ならば、遷移可否（ｆと表記している）として１を出力し、遷移可否ｆ＿ｌ，ｆ＿ｕの両方が０ならば遷移可否ｆとして０を出力する。
【０１３１】
２：１セレクタ７３は、遷移可否ｆ＿ｕと、ＸＯＲ回路７１が出力する０または１の値を入力する。そして、２：１セレクタ７３は、ＸＯＲ回路７０の出力が１のときは、遷移可否ｆ＿ｕの値を選択して出力し、ＸＯＲ回路７０の出力が０のときは、ＸＯＲ回路７１が出力する値を選択して出力する。
【０１３２】
２：１セレクタ７４は、前段の２つのセレクタが出力するビット番号に対応するアドレスａｄｄｒ＿ｌ，ａｄｄｒ＿ｕを入力する。アドレスａｄｄｒ＿ｌ，ａｄｄｒ＿ｕのうち、アドレスａｄｄｒ＿ｌは、ビット番号が小さい方に対応するアドレスであり、アドレスａｄｄｒ＿ｕは、ビット番号が大きい方に対応するアドレスである。２：１セレクタ７４は、２：１セレクタ７３の出力が０のときは、アドレスａｄｄｒ＿ｌを選択して出力し、２：１セレクタ７３の出力が１のときは、アドレスａｄｄｒ＿ｕを選択して出力する。２：１セレクタ７４が出力するアドレスａｄｄｒ＿ｌまたはアドレスａｄｄｒ＿ｕに、２：１セレクタ７３が出力する１ビットの値を追加したもの（上位ビットに追加したもの）が、セレクタ４３ｂが出力するアドレスａｄｄｒである。
【０１３３】
２：１セレクタ７５は、優先度ｐ＿ｌ，ｐ＿ｕを入力し、２：１セレクタ７３の出力が０のときは、優先度ｐ＿ｌを選択して出力し、２：１セレクタ７３の出力が１のときは、優先度ｐ＿ｕを選択して出力する。なお、２：１セレクタ７５が出力する優先度はｐと表記されている。
【０１３４】
図９に示した初段以外の他のセレクタについても、図１１に示したセレクタ４３ｂと同じ回路構成により実現できる。初段のセレクタは、図１１に示した２：１セレクタ７４がない回路構成となっている。
【０１３５】
第２の実施の形態の最適化装置６０は、例えば、上記のような回路構成の遷移可否選択回路６１ａを用いて実現可能である。
（第３の実施の形態）
図１２は、第３の実施の形態の最適化装置の例を示す図である。図１２において、図１に示した最適化装置２０、または、図８に示した最適化装置６０と同じ要素については同じ符号が付されている。
【０１３６】
第３の実施の形態の最適化装置８０において、遷移制御部８１は、最適化装置２０，６０の遷移制御部２４，６１と同様の機能を有する。さらに、遷移制御部８１は、モード信号ＭＯＤＥに応じて、優先度情報（優先度｛ｐｉ｝）に基づいて遷移候補となる状態遷移を選択（シーケンシャル選択）するか、乱数値に基づいてランダムに遷移候補となる状態遷移を選択するか切り替える機能を有する。
【０１３７】
例えば、遷移制御部８１は、モード信号ＭＯＤＥが１の場合、シーケンシャル選択を行い、モード信号ＭＯＤＥが０の場合、遷移候補となる状態遷移を乱数値に基づいてランダムに選択する。
【０１３８】
モード信号ＭＯＤＥは、例えば、図１２に示すようなモード切替制御部８２から入力される。なお、モード切替制御部８２と温度制御部２３は、同一の制御部（コントローラ）であってもよい。
【０１３９】
上記の切り替えは、遷移制御部８１の遷移可否選択回路８１ａにて行われる。
図１３は、第３の実施の形態の最適化装置における遷移可否選択回路の一例を示す図である。図１３において、図６に示した遷移可否選択回路２４ｃと同じ要素については同じ符号が付されている。なお、図１３では、優先度更新回路４２については図示が省略されている。
【０１４０】
第３の実施の形態の最適化装置８０における遷移可否選択回路８１ａは、乱数発生回路９０を有する。乱数発生回路９０は、乱数値を生成し、生成した乱数値を選択回路部９１に供給する。例えば、乱数発生回路９０は、選択回路部９１において２進木構造で複数段、配置された複数のセレクタに対して、各段で異なる乱数値を生成して供給する。乱数発生回路９０として、例えば、ＬＦＳＲ（Linear Feedback Shift Register）などを用いることができる。
【０１４１】
選択回路部９１には、モード信号ＭＯＤＥと、乱数発生回路９０が出力する乱数値が供給される。選択回路部９１は、図６の選択回路部４１と同様に、２進木構造で複数段、配置された複数のセレクタ（セレクタ９１ａ１，９１ａ２，９１ｂ１，９１ｂ２，９１ｃなど）を有するが、各セレクタには、乱数値と、モード信号ＭＯＤＥが供給される。
【０１４２】
図１４は、選択回路部のセレクタの一例を示す図である。図１４では、図１３に示した２段目のセレクタ９１ｂ２の例が示されている。図１４において、図７に示したセレクタ４１ｂ２と同じ要素については同じ符号が付されている。
【０１４３】
セレクタ９１ｂ２は、一方の入力端子にＡＮＤ回路５１の出力端子が接続されており、他方の入力端子に乱数値ｒａｎｄが入力され、モード信号ＭＯＤＥに応じてＡＮＤ回路５１の出力値と乱数値ｒａｎｄの一方を選択して出力する２：１セレクタ１００を有する。乱数値ｒａｎｄは、１ビットの値（０または１）である。
【０１４４】
図１４の例では、２：１セレクタ１００は、モード信号ＭＯＤＥが０の場合、乱数発生回路９０から供給される乱数値ｒａｎｄを選択して出力し、モード信号ＭＯＤＥが１の場合、ＡＮＤ回路５１の出力値を選択して出力する。
【０１４５】
２：１セレクタ５５は、ＸＯＲ回路５０が出力する値が０の場合、２：１セレクタ１００の出力を選択して出力する。
このようなセレクタ９１ｂ２を用いることで、２つの状態遷移についての遷移可否ｆ＿ｌ，ｆ＿ｕが同じ値の場合、モード信号ＭＯＤＥが、１のときシーケンシャル選択が行われ、０のとき遷移候補となる状態遷移がランダムに選択されることになる。
【０１４６】
図１３に示した他のセレクタについても、図１４に示したセレクタ９１ｂ２とほぼ同じ回路構成により実現できる。ただ、初段のセレクタには、図１４に示した２：１セレクタ５７が設けられておらず、ＯＲ回路５３に優先度伝達信号ｐｒ＿ｌは入力されない。また、同じ次段のセレクタに接続された２つのセレクタのうち、２進木構造上の左側に位置するセレクタや、右側に位置するセレクタであっても次段のセレクタの右隣にセレクタがないものについては、優先度伝達信号ｐｒを出力しない。また、最後段のセレクタ４１ｃには、ＡＮＤ回路５２，５６、ＯＲ回路５３が設けられていなくてもよい。
【０１４７】
なお、第２の実施の形態の最適化装置６０の遷移可否選択回路６１ａに、上記の切り替え機能を搭載することもできる。
図１５は、第３の実施の形態の最適化装置における遷移可否選択回路の他の例を示す図である。図１５に示す遷移可否選択回路８１ｂは、第２の実施の形態の最適化装置６０の遷移可否選択回路６１ａに、上記の切り替え機能を搭載したものである。図１５において、図９に示した遷移可否選択回路６１ａや図１３に示した遷移可否選択回路８１ａと同じ要素については同じ符号が付されている。なお、図１５では、優先度更新回路４４については図示が省略されている。
【０１４８】
選択回路部９２には、モード信号ＭＯＤＥと、乱数発生回路９０が出力する乱数値が供給される。選択回路部９２は、図９の選択回路部４３と同様に、２進木構造で複数段、配置された複数のセレクタ（セレクタ９２ａ，９２ｂ，９２ｃなど）を有するが、各セレクタには、乱数値と、モード信号ＭＯＤＥが供給される。
【０１４９】
図１６は、選択回路部のセレクタの一例を示す図である。図１６では、図１５に示した２段目のセレクタ９２ｂの例が示されている。図１６において、図１１に示したセレクタ４３ｂと同じ要素については同じ符号が付されている。
【０１５０】
セレクタ９２ｂは、一方の入力端子にＸＯＲ回路７１の出力端子が接続されており、他方の入力端子に乱数値ｒａｎｄが入力され、モード信号ＭＯＤＥに応じてＸＯＲ回路７１の出力値と乱数値ｒａｎｄの一方を選択して出力する２：１セレクタ１１０を有する。乱数値ｒａｎｄは、１ビットの値（０または１）である。
【０１５１】
図１６の例では、２：１セレクタ１１０は、モード信号ＭＯＤＥが０の場合、乱数発生回路９０から供給される乱数値ｒａｎｄを選択して出力し、モード信号ＭＯＤＥが１の場合、ＸＯＲ回路７１が出力する値を選択して出力する。
【０１５２】
２：１セレクタ７３は、ＸＯＲ回路７０が出力する値が０の場合、２：１セレクタ１１０の出力を選択して出力する。
このようなセレクタ９２ｂを用いることで、２つの状態遷移についての遷移可否ｆ＿ｌ，ｆ＿ｕが同じ値の場合、モード信号ＭＯＤＥが、１のときシーケンシャル選択が行われ、０のとき遷移候補となる状態遷移がランダムに選択されることになる。
【０１５３】
図１５に示した初段以外の他のセレクタについても、図１６に示したセレクタ９２ｂと同じ回路構成により実現できる。初段のセレクタは、図１６に示した２：１セレクタ７４がない回路構成となる。
【０１５４】
第３の実施の形態の最適化装置８０は、遷移候補となる状態遷移を、優先度情報に基づいて選択（シーケンシャル選択）するか、ランダムに選択するかの切り替えが可能となるため、計算対象の組合せ最適化問題に適した計算が選択できるようになる。
【０１５５】
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１５６】
２０  最適化装置
２１  状態保持部
２２  評価関数計算部
２３  温度制御部
２４  遷移制御部
２４ａ  熱雑音生成回路
２４ｂ  比較器
２４ｃ  遷移可否選択回路
【図１】
2020140631.tif 000013
【図２】
2020140631.tif 000014
【図３】
2020140631.tif 000015
【図４】
2020140631.tif 000016
【図５】
2020140631.tif 000017
【図６】
2020140631.tif 000018
【図７】
2020140631.tif 000019
【図８】
2020140631.tif 000020
【図９】
2020140631.tif 000021
【図１０】
2020140631.tif 000022
【図１１】
2020140631.tif 000023
【図１２】
2020140631.tif 000024
【図１３】
2020140631.tif 000025
【図１４】
2020140631.tif 000026
【図１５】
2020140631.tif 000027
【図１６】
2020140631.tif 000028
【図１７】
2020140631.tif 000029