(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023113174
(43)【公開日】2023-08-16
(54)【発明の名称】イジングマシン装置およびその制御方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20230808BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022015328
(22)【出願日】2022-02-03
(71)【出願人】
【識別番号】511192595
【氏名又は名称】ディー・クルー・テクノロジーズ株式会社
(74)【代理人】
【識別番号】110000844
【氏名又は名称】弁理士法人クレイア特許事務所
(72)【発明者】
【氏名】市宮 淳次
(57)【要約】
【課題】エネルギー探索の制御を極力シンプルな構成とすることで、より高速でかつ小規模なイジングマシン装置およびその制御方法を提供する。
【解決手段】イジングマシン装置100は、スピン間結合係数を格納するメモリ10と、スピン間結合係数を読み出して、スピンが反転した場合のエネルギーの変化を計算する複数のスピン演算ユニット20と、反転時にエネルギーが低下するスピンを選出する反転候補選出モジュール30と、次のステップで反転させるスピンを選択する反転スピン選択モジュール40と、反転時にエネルギーが低下するスピンが存在しない場合に強制反転を指示するとともに、スピンの組合せおよび合計エネルギーの状態を記録するスピン制御モジュール50とを備え、スピンの反転を繰り返すことによって、基底状態を探索する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のスピンの間の相互作用を示すスピン間結合係数を格納する結合係数格納メモリと、
前記複数のスピンのそれぞれの状態を記憶し、前記スピン間結合係数を読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算する複数のスピン演算ユニットと、
前記複数のスピン演算ユニットの計算結果に基づき、スピン反転時にエネルギーが低下するスピンを選出する反転候補選出モジュールと、
前記反転候補選出モジュールの選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択する反転スピン選択モジュールと、
前記反転候補選出モジュールにおいて反転時にエネルギーが低下するスピンが存在しない場合に強制反転を指示するとともに、前記複数のスピンの組合せおよび合計エネルギーの状態を記録するスピン制御モジュールと、を含み、
1つまたは複数のスピンの反転を繰り返すことによって、合計エネルギーの低い状態である基底状態を探索する、イジングマシン装置。
【請求項2】
前記スピン制御モジュールは、現在のスピンの組合せと同じ組合せがスピンの組合せの履歴の中で所定の回数記録されていた場合に強制反転を行う、請求項1に記載のイジングマシン装置。
【請求項3】
前記スピン制御モジュールは、強制反転において、全体のスピンの中から順次、1つまたは複数のスピンを反転させる、請求項1または2に記載のイジングマシン装置。
【請求項4】
前記スピン制御モジュールは、強制反転において、“1”のスピンを優先的に反転させる、または“0”のスピンを優先的に反転させる、または“0”、“1”スピンの区別なく反転させる、請求項1から3のいずれか1項に記載のイジングマシン装置。
【請求項5】
前記スピン制御モジュールは、最低エネルギー記録レジスタを備え、合計エネルギーの低い側から所定の個数の合計エネルギーと、その場合のスピンの組合せとの履歴を記録し、
基底探索終了時には、前記最低エネルギー記録レジスタに記録された最も低い合計エネルギーと、その場合のスピンの状態とを基底状態とする、請求項1から4のいずれか1項に記載のイジングマシン装置。
【請求項6】
前記複数のスピンは、所定の個数のスピンごとに複数のスピングループに分割され、
前記複数のスピン演算ユニットおよび前記反転候補選出モジュールは、前記複数のスピングループのそれぞれに配置され、
各スピングループの前記反転候補選出モジュールは、同一スピングループの中の前記複数のスピン演算ユニットの計算結果に基づき各スピングループの反転候補を選出し、
前記反転スピン選択モジュールは、次のステップにおいて反転させる1つまたは複数のスピンを選択し、
前記スピン制御モジュールは、スピングループごとに反転時にエネルギーが低下するスピンが存在しない場合に各スピングループの前記反転候補選出モジュールに強制反転を指示するとともに、前記複数のスピンの組合せおよび合計エネルギーを記録する、請求項1から5のいずれか1項に記載のイジングマシン装置。
【請求項7】
次のステップにおいて反転させるスピンの数は、探索開始時のスピンの数が最も大きく、所定の回数の探索を実施後、反転させるスピンの数を所定の割合で減少させる、請求項6に記載のイジングマシン装置。
【請求項8】
前記反転スピン選択モジュールは、スピングループごとの反転スピンの数が均一になるように、各スピングループから選択する反転スピンの数を決定する、請求項6または7に記載のイジングマシン装置。
【請求項9】
前記基底探索はローカル基底探索を含み、
前記ローカル基底探索では、
前記複数のスピン演算ユニットの各々は同一スピングループ内のスピンとの前記スピン間結合係数のみを読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算し、
前記反転候補選出モジュールは反転時にエネルギーが低下するスピンを選出し、
前記反転スピン選択モジュールは前記反転候補選出モジュールの選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択するステップを繰り返すことによって、各スピングループの合計エネルギーの低い状態である基底状態を探索し、
前記基底探索では、
前記ローカル基底探索で探索された各スピングループの基底状態を初期値として、
前記複数のスピン演算ユニットの各々は全体のスピンとの前記スピン間結合係数を読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算し、
前記反転候補選出モジュールは反転時にエネルギーが低下するスピンを選出し、
前記反転スピン選択モジュールは前記反転候補選出モジュールの選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択するステップを繰り返すことによって、全体の合計エネルギーの低い状態である基底状態を探索する、請求項6から8のいずれか1項に記載のイジングマシン装置。
【請求項10】
さらに、前記基底探索終了後に、前記基底探索終了時のスピンの状態とは異なるスピンの状態を初期値として、再度前記基底探索と同一の方法で基底探索を行う拡張基底探索を備えた、請求項9に記載のイジングマシン装置。
【請求項11】
請求項6から10のいずれか1項に記載のイジングマシン装置の制御方法であって、ローカル基底探索工程と基底探索工程と拡張基底探索工程とを含み、
前記ローカル基底探索工程では、分割された前記複数のスピングループの各スピングループ内の前記スピン間結合係数のみを用いてエネルギーを計算することにより各スピングループの合計エネルギーの低い状態であるローカル基底状態を探索し、
前記基底探索工程では、前記ローカル基底探索工程で探索された各スピングループの基底状態を初期値として、全体のスピンとの前記スピン間結合係数を用いてエネルギーを計算することにより全体の合計エネルギーの低い状態である全体基底状態を探索し、
前記拡張基底探索工程では、前記基底探索工程で探索された全体の基底状態のスピンの状態とは異なるスピンの状態を初期値として、再度前記基底探索工程と同一の方法で基底探索を行う、イジングマシン装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、イジングマシンの基底探索アルゴリズムおよび、それを実装したハードウェアのアーキテクチャに関する。イジングマシンは、「二次形式の制約なし二値変数最適化」(QUBO、イジング問題とも呼ばれる)を解くマシンのことで、膨大な組合せの中から、最適な解を見つけ出すことを特徴とする。
【背景技術】
【0002】
イジングマシンに関連して例えば、以下の発明が出願されている。
【0003】
特許文献1(特開2018-41351号公報)には、計算速度を向上させたイジング装置が開示されている。
特許文献1に記載の情報処理装置は、複数のニューロンのうち第1のニューロンと結合する複数の第2のニューロンの状態を示す複数の第1の状態値のそれぞれに、第1のニューロンと複数の第2のニューロンとの結合の強さをそれぞれ示す複数の重み値のうち、対応する第1のニューロンと第2のニューロンとの間の結合の強さを示す重み値を掛けた値の総和に基づいて算出される第1のエネルギー値を、複数の第2のニューロンのうち状態が更新された更新ニューロンの第1の識別情報と、更新された更新ニューロンの状態を示す第2の状態値とに基づいて更新した第2のエネルギー値を算出する算出回路と、第2のエネルギー値、または、第1のニューロンの状態の変化時におけるニューラルネットワークのエネルギー関数の変化分と、第1のノイズ値とに基づき、第1のニューロンの状態を示す第3の状態値の変化が可能か否かを判定した判定結果を示す判定信号を出力する状態遷移判定回路と、をそれぞれが有し、互いに異なる第1のニューロンについての判定信号をそれぞれ出力する複数のイジング装置と、複数のイジング装置のそれぞれが出力する判定信号に基づき、複数のニューロンのうち第3の状態値の変化が可能と判定された第1のニューロンを選択し、選択した第1のニューロンの第2の識別情報を第1の識別情報として出力する更新ニューロン選択回路と、を有する。
【0004】
特許文献2(特開2017-219952号公報)には、最適解の収束性を改善するイジング装置が開示されている。
特許文献2に記載のイジング装置は、それぞれが、自身以外の複数の他のニューロン回路との接続の有無を示す複数の重み値と、複数の他のニューロン回路の複数の出力信号との積の総和に基づく第1の値を算出し、第1の値にノイズ値を加算した第2の値と閾値との比較結果に基づき、0または1を出力する複数のニューロン回路と、複数の重み値に基づき、複数のニューロン回路のうち、互いに接続されている複数の第1のニューロン回路の複数の第1の出力信号が同時に変化するとき、複数の第1のニューロン回路のうち1つ以外の第1の出力信号の更新を禁止し、互いに接続されていない複数の第2のニューロン回路の複数の第2の出力信号が同時に変化するとき、複数の第2の出力信号の更新を許可する調停回路と、を有する。
【0005】
特許文献3(再表2015-132883号公報)には、イジングモデルの基底状態を求めるために基本構成単位となる構成要素をアレイ状に配置した半導体装置が開示されている。
特許文献3に記載の半導体装置は、イジングモデルの1つのスピンの値を記憶するメモリセルと、該スピンに相互作用を及ぼす隣接するスピンからの相互作用係数を記憶するメモリセルと、1つのスピンの外部磁場係数を記憶するメモリセルと、並びに、各隣接スピンの値と対応する相互作用係数の積、及び外部磁場係数において、2値の多数決論理によって1つのスピンの次状態を決定する回路とを有するスピンユニットが構成され、イジングモデルの各スピンをそれぞれ割り付けられた複数のスピンユニットが、イジングモデルのトポロジを維持した状態で、半導体基板上の2次元平面に配置、接続されて構成されたスピンアレイを備えている。
【0006】
特許文献4(特開2019-179364号公報)には、制約条件を含むイジングモデルの基底状態探索を、効率よく実現可能な技術が開示されている。
特許文献4に記載の半導体装置は、ユニットを複数備える半導体装置であって、ユニットのそれぞれは、自ユニットの値を記憶する第1のメモリと、入力される他ユニットの値に対する係数を記憶する、第2のメモリと、自ユニットの値がイジングモデルの1つのスピンの状態を示す値か否かを識別するフラグ値を記憶する、第3のメモリと、他ユニットの値および係数に基づいて、自ユニットの値の更新値を決定する第1の演算回路と、フラグ値に基づいて、更新値を第1のメモリに記録するタイミングを決定する第2の演算回路と、を備える。
【0007】
特許文献5(特開2019-145010号公報)には、最適化問題を高速に計算できる計算装置、計算プログラム、記録媒体及び計算方法が開示されている。
特許文献5に記載の計算装置は、処理手順を繰り返す処理部を備え、処理手順は第1変数更新及び第2変数更新を含み、第1変数更新は、第1変数更新前のi番目(iは1以上N以下の整数であり、Nは2以上の整数)の第1変数xiに第1関数を加えてi番目の第1変数xiを更新することを含み、i番目の第1変数xiは、第1変数群{x}の1つであり、第1関数の変数は、i番目の第2変数yiを含み、i番目の第2変数yiは、第2変数群{y}の1つであり、第2変数更新は、第2変数更新前のi番目の第2変数yiに第2関数及び第3関数を加えてi番目の第2変数yiを更新することを含み、第2関数の変数は、i番目の第1変数xiを含み、第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含み、処理部は、少なくとも、処理手順を繰り返した後に得られるi番目の第1変数xi、及び、処理手順を繰り返した後に得られるi番目の第1変数xiの関数の少なくともいずれかを出力する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2018-41351号公報
【特許文献2】特開2017-219952号公報
【特許文献3】再表2015-132883号公報
【特許文献4】特開2019-179364号公報
【特許文献5】特開2019-145010号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
近年、様々な分野において、組合せ最適化問題が利用されている。例えば、ジョブ・スケジューリング問題(JSP: Job-shop Scheduling Problem)または巡回セールスマン問題(TSP: Traveling Salesman Problem)などがある。
これらの問題は、問題の規模が大きくなると、通常のコンピュータで解くことが劇的に難しくなることで知られる。これらの問題は、NP困難問題(NP-hard)と呼ばれ、その最適解を見つけることが非常に困難な問題である。
近年、量子アニーリングマシンをはじめとしたイジングマシンと呼ばれるタイプの計算機を用いてこれらの問題を解くアプローチが、研究・開発されている。これらのイジングマシンの中には、しばしば、近傍探索法として焼きなまし法(SA法:Simulated Annealing法)が用いられる。
【0010】
SA法は、大域的最適解を求めるためのランダムアルゴリズムである。焼きなましというのは、高い熱の状態では活発に探索し、徐々に熱を下げることによって、最適解の状態にだんだん収束させることを意味し、
図19に示すような動作を行う。
図19において、X軸はいろいろなスピンの組合せを示し、Y軸はその状態におけるエネルギーを示す。例えば、ランダムに決めた探索解aからスタートし、あらかじめ決めた確率の式(数式1)によって、最適解の探索を行う手法である。
【0011】
【0012】
数式1のAは、エネルギーがEの状態からE’の状態に遷移する確率を示しており、
ΔE=E’-E、また、Tはその時の温度に相当し、SA法では通常、探索開始時にはTを大きく、その後は小さくする。数式1によれば、E’がEより小さい場合は必ずEからE’に遷移し、E’がEより大きい場合にも一定の確率でE’に遷移する。この確率は、ΔEが大きいほど、または、温度Tが小さいほど小さくなる。
【0013】
このSA法には、以下の課題がある。
1)局所解を抜け出だし最適解を得るためには、温度および確率分布の調整ノウハウが必要である。
2)より最適な解を得るためには、温度を下げる速度をより小さくする必要があり、よりよい最適解を得るための探索時間が長くなる。
3)局所解が多い複雑なエネルギー分布の場合、最適解を得ることが難しい上、実行時間も長くなる。
4)温度調整および確率のための論理が必要になるため、回路規模が大きくなる。
【0014】
特許文献1に記載のイジング装置は、上記SA法の基本に沿った探索を行うものであるが、回路規模削減のために、一度に遷移するスピンの数を1つに限定している。
しかし、特許文献1に記載のイジング装置では以下の課題がある。スピンの数が多くなると、探索の繰り返し回数が多く必要になる。また、温度を下げる速度を小さくすると探索の繰り返し回数が多く必要になる。さらに、それでも局所解に収束し、最適解が求まらない可能性がある。
【0015】
特許文献2に記載のイジング装置は、特許文献1に記載のイジング装置を改良したもので、互いに接続されていない複数のスピンに対しては同時遷移を許可することで探索の繰り返し回数を少なくしたものである。この場合、探索の繰り返し回数を減らすことはできるが、やはり、局所解に収束し、最適解が求まらない可能性がある。
【0016】
特許文献3に記載の半導体装置は、スピン間の相互作用を最大4個の隣接するスピンに限定し、互いに隣接しないスピンを2つのスピングループに分け、1方に属するスピンのすべてに対して、並列にΔEを計算し、遷移でΔEが減少するスピンは同時に遷移させる。したがって、2回の反復ですべてのスピンの遷移を終えることができる。また、局所解からの脱出に対しては、スピンの値を記憶するメモリセルへ供給する電源電圧を下げることによって、スピンの値をランダムに反転させている。
特許文献3に記載の半導体装置では、スピン間の相互作用が4個を超える場合にはコピースピンを導入することで対応しているが、構成が複雑になり、またスピン間の相互作用が大幅に4個を超える場合は対応が困難になる。
【0017】
特許文献4に記載の半導体装置は、最大8個の隣接スピンを備えるKingGraphトポロジを用いることにより、スピン間の相互作用の数を増やすとともに、ワンホットなどの制約条件に対応するために制約スピンを導入している。また、スピンの反転をメモリセルへ供給する電源電圧を下げるのではなく、乱数を用いて確率的にスピンを反転させている。
特許文献4に記載の半導体装置の場合も、スピン間の相互作用が4個を超える場合にはコピースピンを導入する必要があり、やはりスピン間の相互作用が多い場合には対応が困難になる。
【0018】
特許文献5に記載の計算装置はSA法とは異なるアプローチで最適化問題を解く発明である。
この場合も、スピンの数が大きくなった場合には回路規模と反復回数とが増加するとの課題がある。
【0019】
本発明の主な目的は、従来のイジングマシンに対する上記課題をふまえて、エネルギー探索の制御を極力シンプルな構成とすることで、より高速でかつ小規模なイジングマシン装置およびその制御方法を提供することにある。
本発明の第2の目的は、エネルギー分布グラフの形によらず最適解を求めることのできるイジングマシン装置およびその制御方法を提供することにある。
【課題を解決するための手段】
【0020】
(1)
一局面に従うイジングマシン装置は、複数のスピンの間の相互作用を示すスピン間結合係数を格納する結合係数格納メモリと、複数のスピンのそれぞれの状態を記憶し、スピン間結合係数を読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算する複数のスピン演算ユニットと、複数のスピン演算ユニットの計算結果に基づき、スピン反転時にエネルギーが低下するスピンを選出する反転候補選出モジュールと、反転候補選出モジュールの選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択する反転スピン選択モジュールと、反転候補選出モジュールにおいて反転時にエネルギーが低下するスピンが存在しない場合に強制反転を指示するとともに、複数のスピンの組合せおよび合計エネルギーの状態を記録するスピン制御モジュールと、を含み、1つまたは複数のスピンの反転を繰り返すことによって、合計エネルギーの低い状態である基底状態を探索する。
【0021】
イジングマシン装置では、構成するスピンの数が多くなった場合に、回路規模、および/または演算回数が多くなるとの課題があった。そして、この課題に対する対策として、1回に反転するスピンの数を1個に限定する、または、結合するスピンの数を4個または8個に限定するなどの対策が行われてきた。
しかし、1回に反転するスピンの数を1個に限定した場合には1回全体の探索を終えるのにスピンの数の回数必要であること、また、結合するスピンの数を限定した場合には実使用において現実の問題に適用できない場合があることなどの課題があった。
一局面に従うイジングマシン装置では、結合係数格納メモリに格納されたスピン間結合係数を読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算する複数のスピン演算ユニットを設けるとともに、1度に反転するスピンの数を1または複数とし、エネルギー探索の制御を極力シンプルな構成とすることで、より高速でかつ小規模なイジングマシン装置を実現している。
【0022】
(2)
第2の発明にかかるイジングマシン装置は、一局面に従うイジングマシン装置において、スピン制御モジュールは、現在のスピンの組合せと同じ組合せがスピンの組合せの履歴の中で所定の回数記録されていた場合に強制反転を行うようにしてもよい。
【0023】
イジングマシン装置の課題の一つは、基底状態の探索において、最適解ではなく、局所解が探索されることにある。一局面に従うイジングマシン装置では、反転候補選出モジュールにおいて反転時にエネルギーが低下するスピンが存在しない場合に強制反転を指示することによって局所解からの脱却を行っているが、強制反転により局所解から脱却できた場合でも、例えば、第1の局所解と第2の局所解とを交互に探索している場合もある。このような場合には、スピンの組合せの履歴において、同じ組合せのスピンが所定の回数記録されていた場合に強制反転することが有効である。
なお、反転時にエネルギーが低下するスピンが存在しない場合の強制反転回数、および同じ組合せのスピンが所定の回数記録されていた場合の強制反転回数は、それぞれレジスタで設定してもよい。
【0024】
(3)
第3の発明にかかるイジングマシン装置は、一局面から第2の発明にかかるイジングマシン装置において、スピン制御モジュールは、強制反転において、全体のスピンの中から順次、1つまたは複数のスピンを反転させるようにしてもよい。
【0025】
この場合、強制反転するスピンを均等に選択することができ、基底探索範囲を広げられる可能性が高くなる。
【0026】
(4)
第4の発明にかかるイジングマシン装置は、一局面から第3の発明にかかるイジングマシン装置において、スピン制御モジュールは、強制反転において、“1”のスピンを優先的に反転させる、または“0”のスピンを優先的に反転させる、または“0”、“1”スピンの区別なく反転させるようにしてもよい。
【0027】
1のスピンを優先的に反転させる、0のスピンを優先的に反転させる、および0、1スピンの区別なく反転させる方法のうち、どの方法が最も局所解からの脱却に有効であるかは、初期値および問題の種類、基底探索タイミングなどによって異なる。したがって、これらの条件に合わせて、最適な強制反転方法を選択することが望ましい。
【0028】
(5)
第5の発明にかかるイジングマシン装置は、一局面から第4の発明にかかるイジングマシン装置において、スピン制御モジュールは、最低エネルギー記録レジスタを備え、合計エネルギーの低い側から所定の個数の合計エネルギーと、その場合のスピンの組合せとの履歴を記録し、基底探索終了時には、最低エネルギー記録レジスタに記録された最も低い合計エネルギーと、その場合のスピンの状態とを基底状態としてもよい。
なお、最低エネルギー記録レジスタには、合計エネルギーとその場合のスピンの状態だけでなく、エネルギーを記録した回数および/または探索回数も同時に記録してもよい。
【0029】
最も低いエネルギーとその時のスピンの状態は、探索終了時に基底状態の探索結果として出力される。また、必要に応じて、例えば低い側から4個のエネルギーとその時のスピンの状態を記録しておいて、それらが基底状態の候補として出力されてもよい。
また、最低エネルギー記録レジスタにエネルギーを記録した回数および/または探索回数も同時に記録することによって、その後の基底探索に利用することができる。
例えば、基底探索回数を確認することにより、どれくらいの基底探索を行うかの設定値の決定に役立てることができる。また、エネルギーを記録した回数を確認することにより、基底探索の無駄を検討し、基底自体の形状の特徴を知る可能性がある。これらの確認は、パラメータの設定値を決めるのに役立つ。
【0030】
(6)
第6の発明にかかるイジングマシン装置は、一局面から第5の発明にかかるイジングマシン装置において、複数のスピンは、所定の個数のスピンごとに複数のスピングループに分割され、複数のスピン演算ユニットおよび反転候補選出モジュールは、複数のスピングループのそれぞれに配置され、各スピングループの反転候補選出モジュールは、同一スピングループの中の複数のスピン演算ユニットの計算結果に基づき各スピングループの反転候補を選出し、反転スピン選択モジュールは、次のステップにおいて反転させる1つまたは複数のスピンを選択し、スピン制御モジュールは、スピングループごとに反転時にエネルギーが低下するスピンが存在しない場合に各スピングループの反転候補選出モジュールに強制反転を指示するとともに、複数のスピンの組合せおよび合計エネルギーを記録してもよい。
【0031】
スピン間結合係数は、スピンの番号をi,jとしたとき、Wi,jとして表されるが、例えばクリーク被覆問題など、多くの場合、各スピンに適切に番号を付けることにより、iとjとの差の少ないスピン間結合係数が大きくなるようにすることができる。そして、その場合、全体のスピンを所定の個数のスピンごとに複数のスピングループに分割し、まずスピングループごとに反転候補を選出し、その中から、次のステップにおいて反転させる1つまたは複数のスピンを選択することで、より効率的に基底状態を探索することができる。
【0032】
(7)
第7の発明にかかるイジングマシン装置は、第6の発明にかかるイジングマシン装置において、次のステップにおいて反転させるスピンの数は、探索開始時のスピンの数が最も大きく、所定の回数の探索を実施後、反転させるスピンの数を所定の割合で減少させてもよい。
【0033】
反転させるスピンの数は、多い方が探索のスピードを上げることができるが、スピン間結合係数が大きな2つのスピンを同時に反転した場合には、反転後の合計エネルギーが低くならない場合があり、探索の正確さが劣る。
したがって、探索の初期には反転させるスピンの数を多くして探索のスピードを上げ、探索が進んだ段階では反転させるスピンの数を減少させて探索の正確さを向上させることが望ましい。
【0034】
(8)
第8の発明にかかるイジングマシン装置は、第6から第7の発明にかかるイジングマシン装置において、反転スピン選択モジュールは、スピングループごとの反転スピンの数が均一になるように、各スピングループから選択する反転スピンの数を決定してもよい。
【0035】
多くの場合、iとjとの差の少ないスピン間結合係数Wi,jの値の絶対値が大きくなることから、異なるスピングループのスピンを反転することによって、スピン同時反転による基底探索の誤差を少なることができる。したがって、反転スピン選択モジュールは、スピングループごとの反転スピンの数がなるべく均一になるように、各スピングループから選択する反転スピンの数を決定することが望ましい。
【0036】
(9)
第9の発明にかかるイジングマシン装置は、第6から第8の発明にかかるイジングマシン装置において、基底探索はローカル基底探索を含み、ローカル基底探索では、複数のスピン演算ユニットの各々は同一スピングループ内のスピンとのスピン間結合係数のみを読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算し、反転候補選出モジュールは反転時にエネルギーが低下するスピンを選出し、反転スピン選択モジュールは反転候補選出モジュールの選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択するステップを繰り返すことによって、各スピングループの合計エネルギーの低い状態である基底状態を探索してもよい。
基底探索では、ローカル基底探索で探索された各スピングループの基底状態を初期値として、複数のスピン演算ユニットの各々は全体のスピンとのスピン間結合係数を読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算し、反転候補選出モジュールは反転時にエネルギーが低下するスピンを選出し、反転スピン選択モジュールは反転候補選出モジュールの選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択するステップを繰り返すことによって、全体の合計エネルギーの低い状態である基底状態を探索してもよい。
【0037】
スピン間結合係数は、多くの場合、iとjとの差の少ないスピン間結合係数Wi,jが大きくなるようにすることができることから、全体のスピンを所定の個数のスピンごとに複数のスピングループに分割した場合、スピングループごとに独立して基底状態を求めて得たスピンの組合せと、全体の基底状態を求めて得たスピンの組合せとは類似している場合が多い。
また、スピングループごとに独立して基底状態を求める場合は、各スピン演算ユニットの計算量が少なく、かつ、スピングループごとに並列して基底探索を行うことができるため、短時間で基底探索を行うことができる。
したがって、まず、ローカル基底探索においてスピングループごとに独立して基底状態となるスピンの組合せを求めて、それらのスピンの組合せを初期値として、基底探索で、全体の合計エネルギーが最低となるスピンの組合せを求めることにより、基底状態探索の時間を短縮することができる。
【0038】
(10)
第10の発明にかかるイジングマシン装置は、第9の発明にかかるイジングマシン装置において、イジングマシン装置が基底探索終了後に、基底探索終了時のスピンの状態とは異なるスピンの状態を初期値として、再度基底探索と同一の方法で基底探索を行う拡張基底探索をさらに備えてもよい。
【0039】
拡張探索の初期値としては、例えば、基底探索終了時のスピンの値をすべて反転するインバート値、スピンの初期値の値を4ビット単位で1010、または0101に変更する固定値、ユーザが指定した値に変更するユーザ指定値、ランダムな値に変更するランダム値などが用いられてよい。また、これらの変更するスピン位置は、ユーザによって選択できる。
これらの初期値を用いて再度全体検索することで、それまで見つけることのできなかった最適解を見つけることができる場合がある。
また、これらの拡張基底検索を終えた後、初期値を変更して再度拡張基底検索を行ってもよい。
【0040】
(11)
他の局面に従うイジングマシン装置の制御方法は、第6から第10の発明にかかるイジングマシン装置の制御方法であって、ローカル基底探索工程と基底探索工程と拡張基底探索工程とを含み、ローカル基底探索工程では、分割された複数のスピングループの各スピングループ内のスピン間結合係数のみを用いてエネルギーを計算することにより各スピングループの合計エネルギーの低い状態であるローカル基底状態を探索し、基底探索工程では、ローカル基底探索工程で探索された各スピングループの基底状態を初期値として、全体のスピンとのスピン間結合係数を用いてエネルギーを計算することにより全体の合計エネルギーの低い状態である全体基底状態を探索し、拡張基底探索工程では、基底探索工程で探索された全体の基底状態のスピンの状態とは異なるスピンの状態を初期値として、再度基底探索工程と同一の方法で基底探索を行う。
【0041】
イジングマシン装置では、スピン間結合係数を用いてエネルギーを計算することにより全体の合計エネルギーの低い状態である全体基底状態を探索する。
しかし、イジングマシンによる基底状態の探索では、スピン反転の繰り返し回数が多くなり探索時時間がかかりすぎる、また、探索結果が局所解にとどまり最適解を探索することができない、との課題がある。
他の局面に従うイジングマシン装置の制御方法では、スピン全体で基底状態を探索する前に、まず、ローカル基底探索工程で全体のスピンを複数のスピングループに分割し、各スピングループ内のスピン間結合係数のみを用いてそれぞれ独立にエネルギーを計算することにより各スピングループの合計エネルギーの低い状態であるローカル基底状態を探索する。そして、次に、ローカル基底探索工程で探索された各スピングループの基底状態を初期値として、基底探索工程を開始し、全体のスピンとのスピン間結合係数を用いてエネルギーを計算することにより、スピン反転の繰り返し回数を少なくし、探索時間を短くしている。
また、基底探索工程で全体基底状態を探索した後、拡張基底探索工程を開始し、基底探索工程で探索された全体の基底状態のスピンの状態とは異なるスピンの状態を初期値として、再度基底探索工程と同一の方法で基底探索を行うことにより、最適解探索の可能性を高めている。
【図面の簡単な説明】
【0042】
【
図1】第1の実施形態のイジングマシン装置の構成を示す模式的ブロック図である。
【
図2】スピンの数が6の場合のスピンの結合状態を示す模式図である。
【
図3】スピン間結合係数の、スピン間結合係数を格納する結合係数格納メモリ内の配置を示す模式図である。
【
図4】スピン演算ユニットの構成と動作を示す模式図である。
【
図5】第1の強制反転選択ユニットの一例の動作を示す模式図である。
【
図6】第2の強制反転選択ユニットの一例の構成と動作を示す模式図である。
【
図7】最低エネルギー記録レジスタの動作を示す模式図である。
【
図8】強制反転時の反転スピンの選択動作を示す模式図である。
【
図9】第2の実施形態のイジングマシン装置の構成を示す模式的ブロック図である。
【
図10】複数スピンを同時に反転する場合の反転スピン数の推移を示す模式図である。
【
図11】イジングマシン装置の基底探索の全体フローを示す模式図である。
【
図12】スピンのマトリックスにおいて、ローカル基底探索を行う領域を示す模式図である。
【
図13】クリーク被覆問題のグラフとその解答例を示す。
【
図14】
図12の問題を基底探索する場合のスピン間結合係数の一例を示す図である。
【
図15】ローカル基底探索フローを示す模式図である。
【
図17】拡張基底探索フローのイメージを示す模式図である。
【
図19】焼きなまし法(SA法)の動作を示す模式図である。
【発明を実施するための形態】
【0043】
以下、図面を参照しつつ、本発明の実施形態について説明する。以下の説明では、同一の部品には同一の符号を付す。また、同符号の場合には、それらの名称および機能も同一である。したがって、それらについての詳細な説明は繰り返さないものとする。
【0044】
[第1の実施形態]
図1は第1の実施形態の、スピンの数が6の場合のイジングマシン装置100の模式的ブロック図、
図2は同じくスピンの数が6の場合のスピンの結合状態を示す模式図、
図3はスピン間結合係数W
i,jの、スピン間結合係数W
i,jを格納する結合係数格納メモリ10内の配置を示す模式図である。
また、
図4はスピン演算ユニット20の構成と動作を示す模式図、
図5は第1の強制反転選択ユニット51aの一例の構成と動作を示す模式図、
図6は第2の強制反転選択ユニット51bの一例の構成と動作を示す模式図、
図7は最低エネルギー記録レジスタ60の動作を示す模式図、
図8は強制反転時の反転スピンの選択動作を示す模式図である。
【0045】
(イジングマシン装置100の構成)
イジングマシン装置100の基本的な装置構成を
図1に示す。以下の説明では例としてスピン6個の場合について説明する。
イジングマシン装置100は、結合係数格納メモリ10、スピン演算ユニット20、反転候補選出モジュール30、反転スピン選択モジュール40、スピン制御モジュール50、最低エネルギー記録レジスタ60を備えている。また、スピン制御モジュール50は、第1の強制反転選択ユニット51aと第2の強制反転選択ユニット51bと合計エネルギー計算/記録ユニット58とを備えている。
結合係数格納メモリ10は、複数のスピンの間の相互作用を示すスピン間結合係数W
i,jを格納し、スピン演算ユニット20は複数のスピンのそれぞれの状態を記憶し、スピン間結合係数W
i,jを読み出して、特定のスピンの状態に対して、それぞれのスピンが反転した場合のエネルギーの変化を計算する。また、反転候補選出モジュール30は、スピン演算ユニット20の計算結果に基づき、反転時にエネルギーが低下するスピンを選出する。反転スピン選択モジュール40は、反転候補選出モジュール30の選出結果に基づき、次のステップにおいて反転させる1つまたは複数のスピンを選択する。
スピン制御モジュール50は、反転候補選出モジュール30において反転時にエネルギーが低下するスピンが存在しない場合に強制反転を指示するとともに、前記複数のスピンの組合せおよび合計エネルギーの状態を記録する。
【0046】
本発明では、組合せ最適化問題において、最適な組合せを得るために、イジングモデルを用いる。イジングモデルとして、
図2(a)にスピン結合を示す。
図2(a)は、6スピンのケースを示しており、
図2(a)のスピンはすべてのスピンが接続された全結合モデルである。
それらのスピン間には、スピン間結合係数W
i,jが定義される。これらの係数は、スピン間の結合の関連性を表し、スピンは、“0”または、“1”に向きを変える。
スピンの向きS
iとスピン間結合係数W
i,jとに応じて下記数式2により全体のエネルギーHが得られる。
【0047】
【0048】
このエネルギーHが小さくなるほど、最適解に近づくように、スピン間結合係数Wi,jを設定する。設定したスピン間結合係数Wi,jに従って、全体のエネルギーHが小さくなるようにスピンの向きSiが、“0”または“1”に変化する。エネルギーHの小さいスピンの状態を観測することで最適な組合せを得る。このエネルギーHの最も低い状態が基底状態である。
【0049】
例えば、スピン0に注目すると
図2(b)のようになる。
図2(b)の実線で示すように、スピン0は、他のスピンに接続されており、各スピンとの影響を加味して、スピンiに関連するエネルギーh
iを計算すると、下記数式3のようになる。
【0050】
【0051】
θiは、スピンi自身のバイアス値を示している。
以下、このようなイジングモデルを用いて最適な組合せを得る装置である、イジングマシン装置100の動作について説明する。
【0052】
図1において、結合係数格納メモリ10にはスピン間結合係数W
i,jが格納されている。スピン演算ユニット20は結合係数格納メモリ10のスピン間結合係数W
i,jをリードして、数式3の計算を行うと同時に各スピンの向きS
iを記録している。
図3に、スピン間結合係数W
i,jの、スピン間結合係数W
i,jを格納する結合係数格納メモリ10内の配置を示した。
スピン演算ユニット20の番号iに対応するスピン間結合係数W
ijを結合係数格納メモリ10のワード線方向に配置する。スピン0の場合、下位アドレスから上に積み上げるように、W
0,0、W
0,1、W
0,2、W
0,3、W
0,4、W
0,5の順番に配置を行う。スピン1の場合、W
1,0、W
1,1、W
1,2、W
1,3、W
1,4、W
1,5とする。他のスピンも同じルールに従う。W
0,0や、W
1,1は、スピン自体のバイアスのため、取り扱いが特別となるので、別途、レジスタに格納する方法でもよい。
【0053】
図4に、スピン演算ユニット20の構成と動作とを示す。スピン演算ユニット20は反転されたスピンの影響を加味しながら演算を繰り返す。具体的には、反転スピン選択モジュール40からスピン反転指示パケットを受けて、そのスピンの影響を結合係数格納メモリ10から読み出して演算する。例えば、スピン0において、スピン1の反転指示を受けた場合は、スピンの反転向きに合わせてスピン間結合係数W
01を反映する。ただし、W
0,0またはW
1,1のデータは、自身のエネルギーのため、各スピン演算ユニット20が実行開始時に加算して、反転指示パケットを受信した場合は演算をスキップする。
演算が終われば、スピン演算ユニット20は、自スピンが反転すれば、エネルギーが下がるかどうかを判定し、判定結果を反転候補選出モジュール30に送信すると同時に、スピン制御モジュール50にも送信する。その時、スピン制御モジュール50へ、各スピン演算ユニット20での演算結果およびスピン情報も送信する。
この場合、反転するかどうかの判定において、自スピンが反転したときに、エネルギーが下がるかどうかではなく、自スピンが反転したときに所定の値よりエネルギーが下がるかどうかによって判定してもよい。
【0054】
スピン制御モジュール50は、スピン演算ユニット20の演算結果を受ける。スピン制御モジュール50は、第1の強制反転選択ユニット51aと第2の強制反転選択ユニット51bとを備える。
第1の強制反転選択ユニット51aは、
図5に示すように、受けた情報を集めて観測し、すべてのスピンにおいてエネルギーが下がらず反転しない場合、強制反転する。なお、
図5の強制反転選択ユニット51はNAND回路であって、すべての入力が0(すべてのスピンが反転してもエネルギーが下がらない)場合、出力が1(強制反転)となる。
第2の強制反転選択ユニット51bは、
図6に示すように、特定パターン抽出回路52、特定パターンレジスタ53、特定パターンカウンタ54、規定回数レジスタ55、第1比較器56、および第2比較器57を備える。
第2の強制反転選択ユニット51bは、スピンの状態の特定パターンを特定パターンレジスタ53に記録しており、記録された特定パターンと同じパターンが入力された場合、第1比較器56がパルスを出力し、特定パターンカウンタ54が特定パターンの入力された回数をカウントする。そして、特定パターンカウンタ54の出力が規定回数レジスタ55の出力と同じになった場合、第2比較器57の出力が1になり、その結果、第2の強制反転選択ユニット51bの出力が1(強制反転)となる。
【0055】
スピン制御モジュール50は、基底探索状態に合わせて、第1の強制反転選択ユニット51aおよび/または第2の強制反転選択ユニット51bを用いて強制反転出力を生成し、反転候補選出モジュール30に通知する。また、第1の強制反転選択ユニット51aおよび第2の強制反転選択ユニット51bの強制反転を行う回数はレジスタで設定することができる。
第1の強制反転選択ユニット51aおよび第2の強制反転選択ユニット51bは、発動条件が異なり、同時に動く場合もあれば、別途それぞれ発動する場合もある。また、第1の強制反転選択ユニット51aおよび第2の強制反転選択ユニット51bの発動状態によって、その後の動作、例えば、強制反転の回数を変更することができる。
【0056】
一方で、スピン制御モジュール50は、各スピン演算ユニット20からの演算結果を集めて、エネルギー合計値を計算し、最低エネルギー記録レジスタ60に、低い方のエネルギーから、順番に記録する。
図7に、最低エネルギー記録レジスタ60に、合計エネルギーが低い方から4つ記録する場合の例を示す。
図7に示すように、最低エネルギー記録レジスタ60は、最低エネルギー4つの記録と、そのエネルギーになるスピン組合せなど付随情報を保持する。また、最低エネルギー記録レジスタ60は、保存されたエネルギーと新規に記録するべきエネルギーとを比較して、順位に変動がある場合はそれを反映して、レジスタを更新する。例えば、
図7のように、新規のエネルギーが2番目の場合、これまでの順位が1位のエネルギーはそのままで、2,3位のエネルギーは、3,4位のエネルギー順位のレジスタに移動させ、新規エネルギーを順位2位に記録する。以前4位だったエネルギーのデータおよびスピン組合せは、保存対象から漏れるため破棄する。
この時、エネルギーと同時に同じエネルギーを記録した回数および探索回数も同時に記録すると基底探索改善のために有効に活用できる。
【0057】
第1の強制反転選択ユニット51aまたは第2の強制反転選択ユニット51bから出力された強制反転信号は、反転候補選出モジュール30に送られ、反転候補選出モジュール30は反転すべきスピンを選出する。
このとき、反転候補選出モジュール30が、反転候補の中から、反転すべきスピンを規則的に選出する方が基底探索範囲を広げられる可能性が高い。例えば、スピン選択は、ラウンドロビン方式のようになるべく均等にスピンを選ぶ方式を用いればよい。ラウンドロビン方式は、実際に選択したスピンを基に次のスピンの選択の優先度を決めるため、一般的に、均等に選択させる機会を与える方式と考えられる。
また、エネルギー値を実際に比較して選択するスピンを選ぶ方法もあるが、その場合、比較のための論理回路規模が大きくなるので、単純に一番大きなスピンを選ぶ方法を用いる等の選択論理を小さくする工夫が必要となる。
【0058】
第1の強制反転選択ユニット51aまたは第2の強制反転選択ユニット51bから出力された強制反転信号により強制スピン反転を行う場合は、そのスピンを反転してもエネルギーが下がらないものを選択する。
図8に、強制反転時の反転スピンの選択に関して3種類のモードを示す。
反転候補選出モジュール30は、優先的に“1”のスピンを反転させる、“1”反転モード、その逆の“0”反転モード、または、“0”、“1”スピンの区別なく強制的に反転させる”両”反転モードを備える。それぞれのモードは、初期値および/または問題の種類、基底探索タイミングなどによって切り替えて使用する。
選択されたスピンは、反転スピン選択モジュール40に通知される。複数のスピンが反転対象である場合には、1つのスピンが選択されて、スピン反転指示パケットを生成してスピン演算ユニット20等に送信される。このスピン反転指示パケットによりスピンが反転され、反転影響が各スピン演算ユニット20に反映される。
なお、後述するスピンの初期化についても反転スピン選択モジュール40から指示を出す。
【0059】
[第2の実施形態]
(イジングマシン装置100aの構成と制御)
図9は、第2の実施形態のイジングマシン装置100aの構成を示す模式的ブロック図である。第2の実施形態のイジングマシン装置100aでは、N個のスピンごとにスピングループ70に分割され、スピングループ70ごとに反転候補選出モジュール30、スピン制御モジュール50a、LocalFSM58aが設けられている。なお、FSMは、Finite State Machine(有限状態機械)の略称である。
第2の実施形態のイジングマシン装置100aの基本的なアーキテクチャは第1の実施形態のイジングマシン装置100と同様であるが、スピンの数が多くなった場合には複数のスピンをグループ化して扱う。
図9において、例えば全体で1024スピンの場合、Nスピンを備えるスピングループ70を(1024/N)個備えている。スピン数Nの数は、全体スピン数、設計プロセス、などを基に決定する。
図9の場合、まずN個のスピングループ70の反転候補選出モジュール30がそれぞれ反転スピン候補を選出し、これらの反転スピン候補が反転スピン選択モジュール40に送られ、反転スピン選択モジュール40はこれらの反転スピン候補の中から、さらに、実際反転するスピン選択し、各スピン演算ユニット20に、スピン反転指示パケットを送出する。
また、各スピングループのスピン制御モジュール50aは各スピングループ70ごとに反転時にエネルギーが低下するスピンが存在しない場合に各スピングループ70の反転候補選出モジュール30に強制反転を指示する。
また、スピン全体で反転時にエネルギーが低下するスピンが存在しない場合には、スピン制御モジュール50bによって、各スピングループ70に強制反転を指示する。
【0060】
このとき、各スピングループ70のスピン反転候補を同時に複数選択することも可能である。反転スピン選択モジュール40は、ユーザが指定した任意の数を基に動作する。複数スピン反転は、一度のスピン反転候補の選出によって、複数スピンを同時に反転する機能である。
複数スピンを同時に反転する場合の反転スピン数の推移の例を
図10に示す。
図10の縦軸は、反転スピン数を示し、横軸は反復回数を示す。反転スピン数の推移は、開始時の反転スピン数、同じ反転スピン数を継続する回数、および反転スピン数を減少させる場合の減少割合で規定する。
図10の場合は、開始時の反転スピン数が16であり、同じ反転スピン数を継続する回数が4回であり、反転スピン数を減少させる場合の減少割合1/2である。なお、反転スピン数が1になった場合は、その後は反転スピン数1の状態で基底探索を繰り返す。
【0061】
次に、複数スピンを同時に反転する場合のスピンの選択について示す。複数スピンを同時に反転する場合には、反転するスピン間を所定の距離空けて複数スピンを同時に反転させることが望ましい。この反転するスピンの選択は、
図9の反転スピン選択モジュール40で行う。
図9のような例では、Nスピンからなるスピングループ70毎の反転候補選出モジュール30で選出されたスピンを選択すればよい。
なお、反転スピンの選択をスピングループ70で1つというようにしておけば、反転するスピン間の距離をさらに広げる場合には、2つのスピングループ70で1つ、または4つのスピングループ70で1つと規定することによって、同時に反転させるスピン間の距離を広げることが可能となる。数多くの問題では、スピン間が近いところに、スピン間結合係数W
i,jが大きなものが割り当てられる傾向があるため、このように、スピン間の距離を広げてスピン反転すると、他のスピンに影響が少なくスピン反転することが可能となるケースが多くある。
また、スピングループ70の数よりも反転するスピンの数が多い場合には、各スピングループ70ごとの反転スピンの数がなるべく均一になるように、各スピングループ70から選択する反転スピンの数を決定することが望ましい。
【0062】
(基底探索の全体フロー)
図11は、イジングマシン装置100aの基底探索の全体フローを示す模式図である。本発明の基底探索フローは、ローカル基底探索(ステップS1)、基底探索(ステップS2)、拡張基底探索(ステップS3)の大きく3つのフェーズに分かれている。ただし、ローカル基底探索(ステップS1)、および/または拡張基底探索(ステップS3)は省略することも可能である。
【0063】
まず、ローカル基底探索(ステップS1)の内容とその効果について説明する。
図12は、横軸および縦軸にスピンをN個のスピングループ70ごとを配列し、横軸と縦軸の交差するところにスピン間結合係数W
i,jを配置した図である。したがって、同一スピングループ内のスピン間結合係数W
i,jは、
図12の斜め45度の長方形の中のN×Nの正方形の中に配置されている。本来の基底探索では
図12のすべてのスピン間結合係数W
i,jを用いて全体エネルギーを計算するが、ローカル基底探索では、
図12の斜め45度の長方形の中のN×Nの正方形の中のスピン間結合係数W
i,jのみを用いてローカル基底状態の探索を行う。
この場合、N個のスピングループ70それぞれのエネルギーは他のスピングループ70のスピンの状態に依存しない。したがって、
図9の各スピングループ70において同じスピングループ内のスピン間結合係数W
i,jのみを用い、各スピングループ70ごとに独立して基底探索を行うことができる。
ローカル基底探索は、全体の基底探索に比較して、スピン数が少なく、並列的に処理できるために、多スピンの基底探索時間を短縮できるメリットがある。
【0064】
もちろん、ローカル基底探索での探索結果と全体の基底探索の探索結果とが一致するわけではない。しかし、
図12の斜め45度の長方形の中のN×Nの正方形の中のスピン間結合係数W
i,jが他の領域のスピン間結合係数W
i,jに比べて絶対値として大きい場合、一般的に、ローカル基底探索での探索結果と全体の基底探索の探索結果とが近く、ローカル基底探索を行う事が有効だと考えられる。
例えば、ある問題では、ローカル基底探索の結果が、全体の基底探索結果と80%以上の結果で一致することが確認されている。
【0065】
(ローカル基底探索が有効な組合せ最適化問題の例)
図13にクリーク被覆問題(Clique Cover Problem)のグラフとその解答例を示す。クリーク被覆問題とは、あるグラフG=(V,E)をn個のクリーク(すべての頂点同士を繋ぐ辺が存在する頂点の集合)に分割できるかを決定する問題である。
図13の場合、丸形の3つの頂点、四角形の4つの頂点、五角形の3つの頂点はそれぞれを繋ぐ辺が存在しているので、3個のクリークに分割できているといえる。なお、V(Vertex)は頂点、E(Edge)は辺を意味する。
図13のクリーク被覆問題を最適化問題として基底探索する場合は、各頂点0から9までにクリークの数である3個のスピンを配置し、例えば頂点0がクリーク0である場合は、x
0,0=1、x
0,1=0、x
0,2=0として、全体のエネルギーHが最小となるスピンの組合せを求める。この場合の全体のエネルギーHは、下記数式4で表すことができる。なお、この全体のエネルギーHを表す数式4については、例えば「クリーク被覆問題をD-Waveマシンで解く」(https://gard.is.tohoku.ac.jp/T-Wave)に掲載されている。
【0066】
【0067】
ここで、kはクリークの種類0から2までを示し、vおよびuは
図13の頂点の番号0から9までを示す。また
は、u番目の頂点とv番目の頂点との間を繋ぐ辺が存在することを意味する。また、A,Bは定数である。
A=32、B=4として、上記数式4を用いてスピン間結合係数W
i,jを計算した。
図14に、横軸をi、縦軸をjとしたときのW
ij(ただしi>=j)の値を示した。数式4では、スピンは(v,k)のベクトルで表されているが、
図14ではスピンをi,j=3v+kとしてスカラー量で表現している。
図14からわかるように、クリーク被覆問題ではA,Bの値等を調整することにより、
図12の斜め45度の長方形の中のN×Nの正方形の中のスピン間結合係数W
i,jを他の領域のスピン間結合係数W
i,jに比べて絶対値として大きくすることができる。したがって、クリーク被覆問題では、A,Bの値等を調整することにより、ローカル基底探索での探索結果と全体の基底探索の探索結果とを近づけ、ローカル基底探索を行う事で多スピンの基底探索時間を短縮することができる。
ただし、基底探索の種類等によっては、ローカル基底探索を行ってもあまり良い結果が得られない場合もあるので、そのような場合には、上記A,B等を変更してスピン間結合係数W
i,jを調整するか、または、ローカル基底探索自体をやめて最初から全体の基底探索を行ってもよい。
【0068】
図15に、ローカル基底探索(ステップS1)のフローチャートを示す。ローカル基底探索では、まず、初めにN個のスピンからなるスピングループ70のローカル領域内で、スピンの初期化を行う(ステップS11)。初期化を行った後は、ローカルな領域のN×Nのスピン間結合係数W
i,jを用いて、基底探索を行う。基底探索では、まずエネルギー計算により反転した場合にエネルギーが低下するスピンがあるかどうかを計算し(ステップS12)、エネルギーが低下するスピンがある場合、または強制反転の条件に当てはまる場合にはスピン反転を指示する(ステップS14)。
一方、エネルギー計算の結果がユーザの指定する条件に当てはまる場合(ステップS13)にはローカル基底探索を終了する。ユーザの指定する条件とは、例えば、
図7において、一定期間、最小エネルギーの更新が行われない場合などである。
ローカルな基底探索を終えると、スピン演算ユニット20の演算結果をクリアする(ステップS15)と同時に、
図9の反転スピン選択モジュール40に転送する。反転スピン選択モジュール40は、スピングループ70の基底探索の結果を保存し、全体のスピンの初期化に反映する(ステップS16)。
【0069】
図16に全体の基底探索(ステップS2)のフローチャートを示す。基底探索では、まず、最初にスピンの初期化を行う(ステップS21)。初期スピンの設定は、ユーザが指定した値であったりランダムな値であったりする。
図11に示すローカル基底探索(S1)を行った場合は、ここで、ローカル基底探索結果を反映する。初期化のスピン反転は、同時に行われ、初期スピン状態“0”から反転させるスピンのみを“0”から“1”にスピン反転させる。
初期化を行ったあとは、これまで説明してきた制御に基づき、ローカル基底探索と同様に基底探索を行う(ステップS22乃至S24)。すなわち、全体の合計エネルギーの低い状態である全体基底状態を探索する。探索中に見つかったエネルギーの低い状態は、検出されたタイミングで最低エネルギー記録レジスタ60に記録される。
さらに、最低エネルギーを記録するレジスタ等が更新されなくなった場合などの終了条件をもって探索を終了する(ステップS23)。基底探索終了時には、その時の合計のエネルギーHと各スピンの状態が読み出し可能となる。
【0070】
図17に
図11に示す拡張基底探索(ステップS3)のイメージを示す。
拡張基底探索は、通常の基底探索を終えた後に、さらに探索位置を強制的に移動させて、そこから再度、基底探索を開始する機能である。
図17のように、左下の位置で、基底探索を終えた場合は、右上に探索位置を強制的に移動させる。移動させた基底探索位置から通常の基底探索と同じように基底探索を再度行う。移動前に使う基底探索位置は、
図7の最低エネルギー記録レジスタ60で記録された位置であってもよい。
【0071】
図18に、
図11に示す拡張基底探索(ステップS3)のフローを示す。
拡張探索フローでは、通常の基底探索を終えた後、拡張基底探索開始の位置にスピンの組合せを更新する(ステップS31)。スピンの組合せを更新することにより、エネルギーHも更新される。スピンの組合せとエネルギーHを更新した状態から、再度、
図16のフローに沿って基底探索を行う(ステップS32)。そして、基底探索後の探索結果により再度スピン組合せ更新を行うかどうかを決定する(ステップS33)。
拡張基底探索のスピン組合せ更新(ステップS31)方法としては、基底探索を終えたスピンの状態から、指定する範囲のスピンに対して、例えば以下のような方法でスピンのデータを変換してもよい。
・インバート:すべてのスピンを反転させる
・固定値(all ‘a’):スピンのデータを101010・・・に置き換える
・固定値(all ‘5’):スピンのデータを010101・・・に置き換える
・ユーザ指定:ユーザが指定したパターンに基づき反転させる
・ランダム:ランダムに反転させる
また、一度の基底探索フロー(ステップS32)を終えた後に、スピンのデータ変換範囲の位置をハードウェアが自動的にローテーションさせてスピンの組合せを更新し(ステップS31)、再度、基底探索フロー(ステップS32)を実行するようにしてもよい。
【0072】
以上、基底探索の様々な制御方法を説明してきたが、すべての組合せ最適化問題の解決にあたって、1つの方法だけですべてのスピン間係数における最適解を見つけることは非常に困難であるため、これらの探索方法を組合せて活用することで、真の最適解を得るように、基底探索を行うことが望ましい。
【0073】
本発明において、結合係数格納メモリ10が『結合係数格納メモリ』に相当し、スピン演算ユニット20が『スピン演算ユニット』に相当し、反転候補選出モジュール30が『反転候補選出モジュール』に相当し、反転スピン選択モジュール40が『反転スピン選択モジュール』に相当し、スピン制御モジュール50が『スピン制御モジュール』に相当し、イジングマシン装置100が『イジングマシン装置』に相当し、最低エネルギー記録レジスタ60が『最低エネルギー記録レジスタ』に相当し、スピングループ70が『スピングループ』に相当し、ローカル基底探索S1が『ローカル基底探索』に相当し、基底探索S2が『基底探索』に相当し、拡張基底探索S3が『拡張基底探索』に相当する。
【0074】
本発明の好ましい一実施形態は上記の通りであるが、本発明はそれだけに制限されない。本発明の精神と範囲から逸脱することのない様々な実施形態が他になされることは理解されよう。さらに、本実施形態において、本発明の構成による作用および効果を述べているが、これら作用および効果は、一例であり、本発明を限定するものではない。
【符号の説明】
【0075】
10 結合係数格納メモリ
20 スピン演算ユニット
30 反転候補選出モジュール
40 反転スピン選択モジュール
50、50a、50b スピン制御モジュール
60 最低エネルギー記録レジスタ
70 スピングループ
100、100a イジングマシン装置
S1 ローカル基底探索
S2 基底探索
S3 拡張基底探索