(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-15
(45)【発行日】2024-10-23
(54)【発明の名称】割り当て装置、割り当て方法、および割り当て記録媒体
(51)【国際特許分類】
G06N 10/80 20220101AFI20241016BHJP
G06N 99/00 20190101ALI20241016BHJP
【FI】
G06N10/80
G06N99/00 180
(21)【出願番号】P 2023520580
(86)(22)【出願日】2021-05-10
(86)【国際出願番号】 JP2021017690
(87)【国際公開番号】W WO2022239059
(87)【国際公開日】2022-11-17
【審査請求日】2023-10-20
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】宮崎 涼二
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2020-9301(JP,A)
【文献】山道智博,ジョセフソンパラメトリック発振器を用いたアニーリング型量子コンピュータの開発,2021年電子情報通信学会総合大会講演論文集 エレクトロニクス2,2021年02月23日,p.(SS-20)-(SS-23)
【文献】ARMAN ZARIBAFIYAN, 外2名,Systematic and Deterministic Graph Minor Embedding for Cartesian Products of Graphs,[online],2016年07月06日,p.1-22,[検索日 2024.06.19], インターネット<URL:https://arxiv.org/pdf/1602.04274>
【文献】DATTANI, N., et al.,Embedding quadratization gadgets on Chimera and Pegasus graphs [online],arXiv.org,2019年01月23日,[検索日 2021.07.06], Internet: <URL: https://arxiv.org/pdf/1901.07676.pdf>
【文献】ZBINDEN, S., et al., Embedding Algorithms for Quantum Annealers with Chimera and Pegasus Connection Topologies [online],SpringerLink,2020年06月15日,[検索日 2021.07.06], Internet: <URL: https://link.springer.com/chapter/10.1007/978-3-030-50743-5_10>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/80
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
LHZ方式のコスト関数を表したイジング問題の二値変数を、前記二値変数の数と前記二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当てる割り当て手段と、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力する出力手段と
を備え、
前記割り当て手段は、前記イジング問題の前記コスト関数で積になる前記二値変数の組の関係性を表した周期的構造を、前記ペガサスグラフ上の前記ノードとエッジとにおける周期的構造に反映させ、前記二値変数を前記ノードに割り当てる
ことを特徴とする割り当て装置。
【請求項2】
前記二値変数の数および前記パラメータの入力を受け付ける入力受付手段を備えた
請求項1記載の割り当て装置。
【請求項3】
タイルは、ペガサスグラフを構成する単位グラフであるユニットの3つ分からなり、
前記パラメータは、前記ノードの並ぶ任意の方向を表す値と、前記ノードの並ぶ方向についての前記タイルの番号と、前記タイル内での前記ノードの番号と、前記ノードの並ぶ方向と
直交する前記タイルの番号とからなる
請求項1または請求項2記載の割り当て装置。
【請求項4】
前記コスト関数が下記式(A)で表され、前記イジング問題の二値変数は、下記式(A)中のσとτとであり、下記式(A)中のJ
ijは、行列Jのi行j列の値であり、iとjとは、ともに1,2,...,N-1の値を取り、下記式(A)中のCは、正の値の範囲で調節すべきパラメータである
請求項3記載の割り当て装置。
【数11】
【請求項5】
前記割り当て手段は、前記イジング問題のコスト関数の二値変数をノードへ割り当てる際に、前記ノードの集合として、2つのノードで構成される4種類のチェインα,チェインβ,チェインγ,チェインδを用い、
チェインの種類を、前記ペガサスグラフ上の隣接する2つの第1ユニット,第2ユニット内のノードの相対的な位置のみによって決め、
前記第1ユニットの前記ノードの並ぶ任意の方向を表す値が0である前記ノードを前記タイル内での前記ノードの番号が小さい順にA00,A01,A02,A03とし、
前記第1ユニットの前記ノードの並ぶ任意の方向を表す値が1である前記ノードを前記タイル内での前記ノードの番号が小さい順にA10,A11,A12,A13とし、
前記第2ユニットの前記ノードの並ぶ任意の方向を表す値が0である前記ノードを前記タイル内での前記ノードの番号が小さい順にB00,B01,B02,B03とし、
前記第2ユニットの前記ノードの並ぶ任意の方向を表す値が1である前記ノードを前記タイル内での前記ノードの番号が小さい順にB10,B11,B12,B13としたとき、
前記チェインαは、前記A12と前記A02とによって構成され、
前記チェインβは、前記A01と前記A11とによって構成され、
前記チェインγは、前記A03と前記B13とによって構成され、
前記チェインδは、前記A10と前記B00とによって構成される
請求項3または請求項4記載の割り当て装置。
【請求項6】
前記ペガサスグラフ上の前記ユニットの座標を3つのパラメータの組(w,k,z)で表し、
前記割り当て手段は、
前記イジング問題のコスト関数の二値変数をノードへ割り当てる際に、前記ノードの集合として、2つのノードで構成される4種類のチェインα,チェインβ,チェインγ,チェインδを用い、
整数iを整数jで割ったときの余りをi%jと表し、i%4が0のとき
前記チェインα、i%4が1のとき
前記チェインβ、i%4が2のとき
前記チェインγ、i%4が3のとき
前記チェインδを指定する関数c[i]を利用し、
前記二値変数の1つであるイジング変数σ
1,2を(w
0,k
0,z
0)で指定される前記ユニットにパラメータc
0と
c[c
0]で指定されるチェインの種類へ割り当て、前記チェインをチェインc[c
0](w
0,k
0,z
0)と表し、
前記割り当て手段は、i=1,2,...,Nの二値変数σ
i,2を割り当てる前記チェインの種類をc[c
0+1]で決め、前記チェインが属する前記ユニットを(w
i,k
i,z
i)とし、
二値変数σ
1,jが割り当てられる前記ユニットを(w
j+1,k
j+1,z
j+1)とするとき、
前記割り当て手段は、前記(w
j+1,k
j+1,z
j+1)を、
(c
0+j-2)%4が0か2のときは、下記の式(B)で決め、
(c
0+j-2)%4が3のときは、下記の式(C)で決め、
(c
0+j-2)%4が1のときは、下記の式(D)で決め、
前記割り当て手段は、上記規則で逐次的にj=2,...,N-2の前記イジング変数σ
1,jを割り当て、
前記二値変数のイジング変数σ
i+m,j-m(ただし、i+m<j-m)を割り当てる前記チェインの種類を前記チェインc[c
0+i+j-3]とし、前記イジング変数σ
1,i+j-1が割り当てられる前記ユニットは上記の規則によって決められ、他の前記mについては、前記mが1大きくなるごとに、イジング変数が割り当てられる前記ユニットが、ユニット列内の右上隣のユニットへ変わり、前記右上隣のユニットへ移るときの座標の変化は、下記の式(E)で表され、
前記割り当て手段は、前記イジング変数σ
i+m,j-mが割り当てられる前記ユニットを(w
m,k
m,z
m)とするとき、前記イジング変数σ
i+m+1,j-m-1が割り当てられる前記ユニット(w
m+1,k
m+1,z
m+1)を、下記の式(F)で決め、
前記割り当て手段は、上記規則に従って逐次的に前記イジング変数σ
i+m,j-mの割り当てを行い、
前記チェインαに割り当てられた前記イジング変数σ
i,jの添え字i,jに対して、前記イジング変数τ
i-1,j-1を、前記イジング変数σ
i,jが割り当てられた前記ノードが含まれる前記ユニットの前記チェインβに割り当て、前記イジング変数τ
i,j-1を、前記イジング変数σ
i,jが割り当てられた前記ノードが含まれる前記ユニットの前記チェインγに割り当て、
前記チェインβに割り当てられた前記イジング変数σ
i,jの添え字i,jに対して、前記イジング変数τ
i,jを、前記イジング変数σ
i,jが割り当てられた前記ノードが含まれる前記ユニットの前記チェインαに割り当て、前記イジング変数τ
i,j-1を、前記イジング変数σ
i,jが割り当てられた前記ノードが含まれる前記ユニットの前記チェインδに割り当てる
請求項3または請求項4に記載の割り当て装置。
【数12】
【数13】
【数14】
(w,k,z)->(w,4,z-1) (k=0のとき)
(w,8,z) (k=4のとき)
(w+1,0,z) (k=8のとき)
式(E)
【数15】
【請求項7】
イジング問題において複数の変数からコスト関数を算出する処理手順を表す情報から、前記複数の変数を、該処理手順における参照関係に従い、周期的構造を有する複数の処理群に分け、量子アニーリングマシンのハードウェアにおける複数の構成要素が、構成要素間の接続関係に従いグループ分けされた所定のグループ情報に従い、前記処理群を、それぞれ、1つの
グループが処理するよう割り当てを決める割り当て手段
を備える割り当て装置。
【請求項8】
コンピュータが、
LHZ方式のコスト関数を表したイジング問題の二値変数を、前記二値変数の数と前記二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当て、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力し、
前記イジング問題の前記コスト関数で積になる前記二値変数の組の関係性を表した周期的構造を、前記ペガサスグラフ上の前記ノードとエッジとにおける周期的構造に反映させ、前記二値変数を前記ノードに割り当てる
ことを特徴とする割り当て方法。
【請求項9】
コンピュータに、
LHZ方式のコスト関数を表したイジング問題の二値変数を、前記二値変数の数と前記二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当てる割り当て処理と、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力する出力処理と
を実行させ、
前記割り当て処理で、前記イジング問題の前記コスト関数で積になる前記二値変数の組の関係性を表した周期的構造を、前記ペガサスグラフ上の前記ノードとエッジとにおける周期的構造に反映させ、前記二値変数を前記ノードに割り当てさせる
ための割り当てプログラム。
【請求項10】
コンピュータに、
前記二値変数の数および前記パラメータの入力を受け付ける入力受付処理を実行させる
請求項9記載の割り当てプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子アニーリングにおける割り当て装置、割り当て方法、および割り当て記録媒体に関する。
【背景技術】
【0002】
組合せ最適化問題を解く方法の1つに、量子アニーリングがある。量子アニーリングでは、コスト関数が定義される。そして、そのコスト関数の値が最小になる状態が組合せ最適化問題の解と対応付けられる。
【0003】
ここで用いられるコスト関数は、イジング変数もしくはイジングスピンと呼ばれる変数の関数である。以下では、イジング変数を用いて議論する。イジング変数は、1と-1の値のみを取り得る変数である。多数のイジング変数によってコスト関数が表される。イジング変数は、組合せ最適化問題の変数と対応付けられている。組合せ最適化問題の変数の値の任意の組合せは、コスト関数のイジング変数の値の組合せで表される。特に、コスト関数の値が小さいほど組合せ最適化問題における、より良い組合せである。よって、イジング変数の組合せのうちコスト関数の値を最も小さくするものが、その組合せ最適化問題における最適な組合せ、すなわち最適解を表す。
【0004】
このようにイジング変数のコスト関数を最小化する問題として表された組合せ最適化問題をイジング問題と呼ぶ。以下では、このイジング問題を解くことを念頭において議論する。
【0005】
量子アニーリングでは、定義されたコスト関数を最小にするイジング変数の組合せが探索される。その際、コスト関数のイジング変数は、量子ビットで表される。量子ビットは、量子アニーリングという方法においては単なる変数であるが、その着想は物理的実体に起源を持ち、2つの状態を取ることができる。その2つの状態がイジング変数の1と-1に対応付けられる。この方法が実装されたハードウェアとして量子アニーリングマシンがある。
【0006】
複数の量子ビットからなるシステム全体のエネルギーを定義可能である。そのエネルギーが、例えば、最も低くなる量子ビットの状態の組合せを見つける方法が量子アニーリングである。量子アニーリングを、イジング問題を解くことに利用できる。すなわち、量子アニーリングマシンにおいては、量子ビットの2つの状態をイジング変数に対応させ、量子ビット全体のエネルギーをイジング問題のコスト関数に対応させる。これにより、量子アニーリングで量子ビット全体のエネルギーの低い状態を得ることが、イジング問題のコスト関数の値を小さくする変数の組合せを見つけることに対応する。
【0007】
イジング問題と対応するコスト関数の表し方についてLHZ(Lechner-Hauke-Zoller)方式(特許文献1)と呼ばれる方式がある。LHZ方式で扱われるコスト関数に対して量子アニーリングを行うことを、LHZ方式の量子アニーリングと呼ぶことにする。LHZ方式の量子アニーリングを量子アニーリングマシンで行うためには、量子アニーリングマシンにおいて4つの量子ビットを直接的に相互作用(四体相互作用)させる必要がある。
【0008】
現在商用利用されている量子アニーリングマシンは、D-wave Systems inc. が開発した量子アニーリングマシン(以下、D-wave(登録商標)と呼ぶ)のみである。しかし、D-waveにおけるハードウェアが扱えるのは、2つの量子ビットの相互作用(二体相互作用)のみである。すなわち、D-waveは、四体相互作用を、直接、扱うことはできず、LHZ方式の量子アニーリングを直接扱うことはできない。
【0009】
ただ、D-waveにおいては、LHZ方式の量子アニーリングが実効的に実現できる可能性はある。四体相互作用は、複数の二体相互作用に変換することによって、D-waveにおいては、LHZ方式の量子アニーリングを扱うことができる。この変換前後で、システム全体のエネルギーを低くする量子ビットの状態は一致する。そのため、D-waveは、低いエネルギーの状態を探索することを目的とする量子アニーリングを実効的に実現することが可能である。
【0010】
LHZ方式に限らず、D-waveを用いて量子アニーリングを行う際、コスト関数の中に現れるイジング変数の積を量子ビット間相互作用に対応させる。D-waveの量子ビットの相互作用ネットワークは、ノードとエッジとで構成されたキメラグラフやペガサスグラフと呼ばれる構造を有する。本明細書ではペガサスグラフに注目する。D-waveによってイジング問題を量子アニーリングで解くために、コスト関数の変数をペガサスグラフ上のノードへ適切に割り当てる。適切な割り当てを見つける方法の一例が非特許文献1および非特許文献2に記載されている。
【先行技術文献】
【特許文献】
【0011】
【非特許文献】
【0012】
【文献】K. Boothby, et al., “Technical report”, [online], D-wave Systems inc., [令和3 年3 月23日検索] インターネット<URL:https://www.dwavesys.com/sites/default/files/14-1026A-C_Next-Generation-Topology-of-DW-Quantum-Processors.pdf>
【文献】J. Cai, et al., “A practical heuristic for finding graph minors”, arXiv:1406.2741 (2014).
【文献】A. Rocchetto, et al., “Stabilizers as a design tool for new forms of the Lechner-Hauke-zoller annealer”, Science Advances 2, e1601246 (2016).
【発明の概要】
【発明が解決しようとする課題】
【0013】
非特許文献1に記載されている方法は、どのようなイジング問題にも適用できる方法である。しかし、非特許文献1に記載されている方法は、どのようなイジング問題に対しても同じ割り当てを行う。すると、それぞれのイジング問題についてペガサスグラフ上で使用するノードの数をより少なくできる割り当てがある可能性がある。非特許文献2に記載されている方法は、ヒューリスティックな方法である。非特許文献2に記載されている方法では、割り当ては見つかるが、毎回の実施で同じ割り当てを得られる保証はない。特に、非特許文献2に記載されている方法は、使用するノードの数を少なくできる保証もない。また、非特許文献2に記載されている方法では、各変数が割り当てられるノードの数に偏りが生じ得る。したがって、上述した2つの方法では、イジング問題をペガサスグラフ上で表現して解く際に、使用するノード数が少なく、かつ、偏りが少ない割り当てを見つけられない、または、見つけ出せる保証がない、という課題があった。
【0014】
本発明は、このような問題を解決することを目的の1つとし、LHZ方式の量子アニーリングを行う際に扱うイジング問題の変数とイジング問題を解くためのグラフのノードとの対応関係として、各変数が割り当てられるノード数の偏りが少なく、使用するノード数が少ない対応関係を得ることができる割り当て装置、割り当て方法、および割り当て記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明による割り当て装置は、LHZ方式のコスト関数を表したイジング問題の二値変数を、二値変数の数と二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当てる割り当て手段と、二値変数のノードへの割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する出力手段とを含み、割り当て手段は、イジング問題のコスト関数で積になる二値変数の組の関係性を表した周期的構造を、ペガサスグラフ上のノードとエッジとにおける周期的構造に反映させ、二値変数をノードに割り当てる。
【0016】
本発明による割り当て方法は、LHZ方式のコスト関数を表したイジング問題の二値変数を、二値変数の数と二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当て、二値変数のノードへの割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力し、イジング問題のコスト関数で積になる二値変数の組の関係性を表した周期的構造を、ペガサスグラフ上のノードとエッジとにおける周期的構造に反映させ、二値変数をノードに割り当てる。
【0017】
本発明による割り当て記録媒体は、コンピュータで実行されるときに、LHZ方式のコスト関数を表したイジング問題の二値変数を、二値変数の数と二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当てる割り当て処理と、二値変数のノードへの割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する出力処理とを実行させ、割り当て処理で、イジング問題のコスト関数で積になる二値変数の組の関係性を表した周期的構造を、ペガサスグラフ上のノードとエッジとにおける周期的構造に反映させ、二値変数をノードに割り当てさせる割り当てプログラムを記録する。
【発明の効果】
【0018】
本発明によれば、量子ビット結合構造がペガサスグラフであるLHZ方式の量子アニーリングが実施される際に、少ない量子ビットで偏りのない変数の割り当てを行うことができる。
【図面の簡単な説明】
【0019】
【
図1】LHZ方式を用いたコスト関数の四体相互作用を示す説明図である。
【
図3】ペガサスグラフにおけるユニットの一例を示す説明図である。
【
図4】ペガサスグラフにおけるu=0のタイルを示す説明図である。
【
図5】ペガサスグラフにおけるu=1のタイルを示す説明図である。
【
図7】コスト関数における変数間の積の構造を示す説明図である。
【
図8】コスト関数における変数間の積の構造の一部を示す説明図である。
【
図9】コスト関数における変数間の積の構造の一部を示す説明図である。
【
図10】ペガサスグラフにおけるユニット列を示す説明図である。
【
図11】コスト関数における変数間の積の構造の一部とプラケット列とを示す説明図である。
【
図14】割り当て装置の構成の一例を示すブロック図である。
【
図15】割り当て装置のハードウェア構成の一例を示すブロック図である。
【
図16】コスト関数における変数間の積の構造の一部とプラケット列とを示す説明図である。
【
図17】割り当て装置の動作の流れを示すフローチャートである。
【
図18】計算システムによるイジング問題の計算動作の流れを示すフローチャートである。
【
図19】本実施形態の効果を説明するための説明図である。
【
図20】割り当て装置の主要部を示すブロック図である。
【発明を実施するための形態】
【0020】
実施形態の理解を助けるために、まず、イジング問題、LHZ方式の量子アニーリング、ペガサスグラフ、イジング問題をペガサスグラフ上で表すこと、および、それらと関連している量子アニーリングマシンについて説明する。
【0021】
イジング問題は、一般に次のように表される。まず1と-1の値を取り得る変数、すなわち二値変数を例えばN(Nは、自然数)個用意する。それらをsiと表す。ただし、iは1,2,...,Nの値を取り得て、iの値の違いによりsiを区別する。コスト関数Hは、例えば、以下の式(1)のように定義される。
【0022】
【0023】
式(1)の右辺のJijは行列Jのi行j列の値であり、iとjとは、ともに1,2,...,N-1の値を取り得る。式(1)の右辺のhiはベクトルhのi列の値であり、iは1,2,...,N-1の値を取り得る。Jijおよびhiは、実数の値を取ることができる。式(1)は、1か-1の値のみを取るN-1個の変数siからなる1次と2次の実数係数多項式の一般的表現である。さらにsN=1、JiN=hiとし、iとjとがNの値も取ることができるとすると、式(1)は式(2)で表される。
【0024】
【0025】
sNが1と-1の値を取り得るとした場合、式(1)は、特殊な場合として式(2)に含まれる。以下では、コスト関数を式(2)の形で考える。また、i>jのJijの値はすべて0としても一般的表現として十分である。よって、以下では、i≧jのJijの値はすべて0とし、i<jのJijだけを考える。イジング問題は、行列Jが具体的に与えられたときに式(2)のコスト関数Hを最小にするsi(i=1,2,...,N)の値の組合せを見つける問題である。
【0026】
上述したように、イジング問題を解くための1つの方法として量子アニーリングがある。量子アニーリングの方式の1つとしてLHZ方式がある。LHZ方式の量子アニーリングは、式(2)でコスト関数が表されるイジング問題を解くために、以下に示すコスト関数HLHZを最小化する。
【0027】
【0028】
式(3)のJijは、式(2)のJijと同じである。σijは、1と-1の値を取り得る変数で、siと同様に二値変数である。式(3)では、siと区別するために文字σが使われている。Jijのiとjは、式(2)のiとjと同じ範囲の値を取る。しかし、σijのiとjは、Jijの範囲に加えて、i=jにもなる。ただし、σiiは、表現を簡潔にするために導入されたものであり、常に1と等しく、変数ではなく定数である。Cは、正の値の範囲で調節すべきパラメータである。
【0029】
図1は、LHZ方式を用いたコスト関数の四体相互作用を示す説明図である。4つのσの積(σ
ikσ
ilσ
jkσ
jl)の和の範囲は、
図1によって理解され得る。
図1では、式(3)の変数σ
ijが格子点上にある変数として表されている。4つのσの積(σ
ikσ
ilσ
jkσ
jl)の和は、
図1の斜線部で表された四角形の4つの頂点に記載されているσの積の和である。4つのσの積の一例は、σ
13σ
14σ
23σ
24である。
【0030】
σの値は1か-1であるため、4つのσの積(σikσilσjkσjl)も1か-1になる。Cが大きい正の値のとき、HLHZを最小にするσij(i=1,2,...,N、j=i+1,i+2,...,N)の値の組合せでは、式(3)の右辺第2項(以下、2つ目の和という。)の4つのσの積(σikσilσjkσjl)は1になる。2つ目の和の4つのσの積がすべて1になるσij(i=1,2,...,N、j=i+1,i+2,...,N)の値の組合せは複数あり、2つ目の和はそれらの組合せにおいて等しい値になる。それらの中でHLHZを最小にするものはΣi<jJijσijを最小にする。また、2つ目の和の4つの積がすべて1になるとき、σij=sisjとすることができる。このsiは式(2)のsiと同様に、1と-1を取り得る二値変数である。実際、σij=sisjのときσikσilσkjσlj=sisksislsksjslsj=1となる。上記の通りσii=1としているが、これはσii=sisi=1を満たす。したがって、Cが大きいときのHLHZの値を最小にするσij(i=1,2,...,N、j=i+1,i+2,...,N)の値の組合せは、Σi<jJijsisjを最小にするsi(i=1,2,...,N)を与える。すなわち、ここで得られるsiは、式(2)のコスト関数Hを最小にし、当初のイジング問題の解である。
【0031】
次に、ペガサスグラフについての必要最低限の事項を説明する。
図2は、ペガサスグラフの一例を示す説明図である。ペガサスグラフは、複数のノード901とそれらをつなぐエッジ902とからなる。ペガサスグラフは、ユニット903を並べて構成される。ユニット903は、ペガサスグラフを構成する単位グラフである。ペガサスグラフにおいて、ノード901やユニット903は周期的に並べられる。言い換えると、ペガサスグラフは、量子アニーリングマシンが有するハードウェア構成を表す情報であるともいうことができる。該ハードウェア構成は、例えば、複数の量子ビットと、該複数の量子ビット間を結合している構造とを表す。この周期的な配置について以下で説明する。
【0032】
ペガサスグラフにおける座標を(u,w,k,z)で表す。それぞれu=0,1、w=0,1,...,M-1、k=0,1,...,11、z=0,1,...,M-2のように値を取り得る。Mは、ペガサスグラフ全体の大きさを表すパラメータである。例えば、
図2に示すペガサスグラフのMは3である。
図3は、ペガサスグラフにおけるユニットの一例を示す説明図である。
図3に示すように、ユニット内で横に並ぶ4つのノード911a,911b,911c,911dのuは0である。縦に並ぶ4つのノード912a,912b,912c,912dのuは1である。u=0のノードは、横方向に隣接する12個ごとにまとめられる。
図2に示す例では、ユニット3つ分に相当し、タイルと呼ばれる。タイルは、横方向と縦方向に正方格子状に並んでいる。タイルの横方向の番号はwで表される。タイルの縦方向の番号はzで表される。言い換えると、(u,w,k,z)は、ペガサスグラフにおける、ある構造(「単位構造」と表す)が繰り返し現れる繰り返し構造、および、各単位構造における構造を表すパラメータであるということもできる。なお、単位構造は、必ずしも、ある1つの構造でなくともよく、単位構造であると判定される構造であってもよい。その判定処理は、例えば、2つの構造の類似性に基づき行ってもよいし、同一の構造に対する、異なっている構造の差異の度合いに基づき行ってもよい。繰り返し構造を判定する処理は、上述した例に限定されない。
【0033】
図4は、ペガサスグラフにおけるu=0のタイルを示す説明図である。
図4に示す例では、u=0、w=0、z=0のタイルは、タイル921である。u=0、w=1、z=0のタイルは、タイル922である。u=0、w=0、z=1のタイルは、タイル924である。u=1のノードもタイルとしてまとめられる。しかし、u=0の場合と異なり、u=1のノードは、縦方向に隣接する12個ごとにタイルとしてまとめられる。そして、タイルの縦方向の番号がwで表され、横方向の番号がzで表される。
【0034】
図5は、ペガサスグラフにおけるu=1のタイルを示す説明図である。
図5に示す例では、u=1、w=0、z=0のタイルは、タイル931である。u=1、w=1、z=0のタイルは、タイル932である。u=1、w=0、z=1のタイルは、タイル934である。すなわち、u=0,1ともに、そのノードの並ぶ方向についてのタイルの番号がwで表され、それと直交する方向についてのタイルの番号がzで表される。kは、各タイル内でのノードの番号を表す。例えば、
図4では、u=0、w=2、z=0のタイルはタイル923であるが、タイル923内のノード927a,927b,927c,...,927lのkは、k=0,1,2,...,11である。
【0035】
次に、イジング問題をペガサスグラフ上で表現することを説明する。イジング問題をペガサスグラフ上で表現することは、イジング問題のコスト関数の変数を適切にペガサスグラフのノードに割り当てることに相当する。何をもって適切とするかは後述する。割り当ては、イジング問題の変数、すなわちコスト関数の変数のそれぞれが割り当てられるノードを列挙することで表現される。このとき1つの変数が割り当てられるノードは複数でも良い。
【0036】
コスト関数の変数をペガサスグラフのノードへ割り当てることの背景には、そうすることで、ペガサスグラフを用いるマシン、例えば量子アニーリングマシンによってイジング問題を解くことができる、ということがある。必ずしも量子アニーリングマシンが使用されなくても良いが、以下ではイジング問題を解く際に量子アニーリングマシンを使用することを想定する。
【0037】
量子アニーリングマシンは、量子ビット、および量子ビット間の結合をもつ。量子ビットには主に2つの状態があり、量子ビットが、その2つのどちらの状態にあるかということを、二値の変数として扱うことができる。また、量子アニーリングマシンにおいては、量子ビット全体のエネルギーを定義することができる。そのエネルギーが最も低くなる量子ビットの状態の組合せを見つける方法が、量子アニーリングである。量子アニーリングマシンは、量子アニーリングを実行し、エネルギーが最も低くなる量子ビットの状態の組合せを見つけることを目指す。組合せを見つけることは、次のようにイジング問題を解くことに利用できる。量子アニーリングマシンにおいては、量子ビットの2つの状態をイジング変数に対応させ、量子ビット全体のエネルギーをイジング問題のコスト関数に対応させる。これにより、量子アニーリングマシンで量子ビット全体のエネルギーの低い状態を得ることが、対応するイジング問題のコスト関数の値を小さくする変数の組合せを見つけることになる。
【0038】
量子アニーリングマシンの量子ビット全体のエネルギーをイジング問題のコスト関数に対応させるために、量子ビットの2つの状態をイジング問題の変数に対応させ、かつ、量子ビット間の結合をコスト関数内の変数の積に対応させる。結合と変数の積とを対応させるために、例えば、i番目の量子ビットとj番目の量子ビットとの結合の強さをコスト関数のJijと等しくする。そして、コスト関数の行列Jのすべての要素を量子ビット間の結合の強さに対応させると、量子ビット全体のエネルギーがイジング問題のコスト関数に対応する。したがって、量子アニーリングマシンでイジング問題を解くためには、行列Jが量子アニーリングマシンに入力され、量子アニーリングマシンが量子ビット間の結合の強さをJijと一致するように調節する。しかし、量子アニーリングマシンの量子ビット間の結合が、すべての量子ビットの組合せについて存在するとは限らない。実際、D-wave Systems inc. が開発した量子アニーリングマシンにおける量子ビットの結合は、ペガサスグラフの構造かキメラグラフの構造になっている。本明細書では、ペガサスグラフのみに注目し、キメラグラフは考慮されない。量子ビットは、ペガサスグラフのノードに対応する。量子ビット間の結合は、ペガサスグラフのエッジに対応する。
【0039】
以上に説明したように、イジング問題の変数、量子ビット、ペガサスグラフのノードの3つは対応関係をもつ。同時に、イジング問題の変数の積、量子ビットの結合、ペガサスグラフのエッジの3つも対応関係をもつ。イジング問題を量子アニーリングマシンで解くために、イジング問題の変数と量子ビットとを対応させる。それはすなわち、イジング問題の変数とペガサスグラフのノードとを対応させることに相当する。そして同時に、イジング問題の変数の積を量子ビットの結合に対応させるために、変数の積をペガサスグラフのエッジに対応させる。
【0040】
以上のように、量子アニーリングマシンでイジング問題を解くとき、問題の変数をペガサスグラフのノードに割り当てることになる。また、その割り当ては、イジング問題の変数の積がペガサスグラフのエッジに対応するような割り当てである。そのような割り当てが、適切な割り当てである。適切な割り当てが得られると、量子アニーリングマシンがイジング問題の変数の積をペガサスグラフ上のどの量子ビット間の結合に対応させればよいかがわかる。この割り当てとイジング問題の行列Jとを量子アニーリングマシンに入力すると、量子アニーリングマシンにおいては、量子ビット間の結合の強さを行列Jと対応させることが可能になる。その結果、量子アニーリングマシンがイジング問題を解くことができる。
【0041】
上述したように、一般に、イジング問題をペガサスグラフ上で表現するためには、変数がノードへ適切に割り当てられることが求められる。1つの変数を複数のノードに割り当ててもよい。どのような割り当てが適切かを具体的に説明するために、まず、チェインを導入する。チェインは、同一の変数が割り当てられるノードの集合であり、エッジでつながっている一連のノード群である。ここで、添え字まで含めて値が一致する場合に、変数が同一と判定される。例えば、sとσとは異なる変数である。σとτとは異なる変数である。例えば、s
iとs
jは、iとjとが異なる場合に異なる変数であり、iとjとが同じ場合に同一の変数である。ただし、チェイン内のノード数は1つでも複数でもよい。チェイン内のノード数が複数の場合、チェイン内の全てのノードは、同一チェイン内のノードの少なくとも1つとエッジでつながっている。
図6は、チェインの例を示す説明図である。
【0042】
適切な割り当ての条件は、イジング問題のコスト関数で積になる変数の組のすべてについて、各組の2つのチェインがエッジでつながっていることである。チェインがエッジでつながるとは、一方のチェイン内のノードの少なくとも1つが、他方のチェイン内のノードの少なくとも1つとエッジでつながることである。ここで、積になる変数の組とは、一般に、式(1)においてJij≠0であるiとjとで表されるsiとsjとの組のことである。Jij=0の場合、siとsjとの組はコスト関数に積として現れていないと解釈する。
【0043】
例えば、
図6に示されているチェインは、以下の式(4)で表されるイジング問題のコスト関数のペガサスグラフへの適切な割り当てを与える。
【0044】
【0045】
図6に示すノード941,942,943,944は、それぞれ1つのノードからなるチェインに相当する。ノード945aとノード945bとは、2つのノードがエッジ946によってつながったチェインを構成する。式(4)は、イジング問題の変数が5つあり、任意の2変数の組がコスト関数で積として現れている。式(4)では、すべてのiとjとについてJ
ij=1である。式(4)における変数のそれぞれが、
図6に例示されたチェインの1つに割り当てられる。この場合は重複がなければ、どの変数をどのチェインに割り当てても適切な割り当てになる。例えば、s
1を
図6におけるノード941に割り当てる。s
2をノード942に割り当てる。s
3をノード943に割り当てる。s
4をノード944に割り当てる。s
5をノード945aとノード945bとからなるチェインに割り当てる。
【0046】
割り当てについての条件の背景は以下の通りである。上述したように、量子アニーリングマシンでイジング問題を解く場合には、イジング問題のコスト関数の変数の積とペガサスグラフのエッジとを対応させる。したがって、変数のノードへの割り当ての条件は、素朴には、コスト関数で積になっている2つの変数が割り当てられたノード同士がエッジでつながっていることである。しかし、ペガサスグラフでは全てのノードの組同士がエッジでつながっているわけではない。そこで、チェインを利用する。
【0047】
チェイン内のノードには、イジング問題の同じ変数が割り当てられている。そのため、2つのチェインがエッジでつながっていれば、その2つのチェインに対応する変数の積がペガサスグラフ上で表現できたことになる。よって、チェインをうまく構成することで、コスト関数における変数の全ての積をペガサスグラフ上のチェイン間のエッジとして表すことが可能である。実際、非特許文献1において、その方法の一例が示されている。以上が、上で述べた条件の背景である。
【0048】
ペガサスグラフ上のノードへの変数の割り当てを行って量子アニーリングマシンなどで問題を解く際、注意すべき点がある。すなわち、量子アニーリングマシンは、チェインの存在を認識していない。また、量子アニーリングマシンは、チェイン内のノードの量子ビットを異なる変数として問題を解いているという点である。しかし、イジング問題を解くために、チェイン内のノードに、元のイジング問題における変数と同じ変数が割り当てられている。よって、チェイン内のノードの量子ビットの状態は全て同じであることが要請される。そのため、チェイン内のノードをつなぐエッジに対応する量子ビット間の結合を強め、チェイン内のノードの量子ビットが結果的にすべて同じ状態になるようにする。この結合の強さは、例えば、量子アニーリングマシンで問題を解く際にユーザによって指定される。
【0049】
量子アニーリングマシンにおいてはペガサスグラフ上の異なるノードを異なる変数として問題を解いているという事実は、次のことも意味する。すなわち、1つのイジング問題について、異なる割り当てにより変数をペガサスグラフ上へ割り当てた場合、それら異なる割り当てによって得られるペガサスグラフ上での問題の表現は、量子アニーリングマシンにとっては異なる問題と認識される。そのため、異なる割り当てが存在するとき、どの割り当てを行うべきか、ということが考慮されるべきである。
【0050】
特定の問題に対して上述の条件を満たした割り当ては、一般に一意でない。そして、複数あり得る割り当ての中でも、使用するノードが少ない割り当ての方が望ましい。なぜなら、量子アニーリングマシンなどで問題を解く際、ペガサスグラフ上のノードを多く使用した方が正解を得ることが難しくなる傾向があるからである。また、使用するノードの数はそれぞれの変数について偏りがない方が望ましい。なぜなら、割り当てによる影響が均一化されることが好ましいからである。特に、ノードを多く使用した方が正解を得ることが難しくなる理由は以下の通りである。
【0051】
イジング問題を解く際、変数の数が多い方が、組合せの数が増えるため、一般に正解を得ることがより困難になる。これは、正解を確実に得るまでの計算時間が長くなる、と言い換えることもできる。そして、量子アニーリングマシンは、実際には、ペガサスグラフ上で表現された問題を解く。量子アニーリングマシンが解く問題の変数の数は、ペガサスグラフ上で使用されるノードの数である。よって、割り当てによって使用するノードの数が多いと、量子アニーリングマシンが解く問題の変数の数も多くなり、正解を得ることが難しくなる。つまり、元々のイジング問題が同じでも、異なる割り当てを行うと、量子アニーリングマシンを用いて正解を得る難しさが変化する。そのため、複数あり得る割り当ての中でも、使用されるノードが少ない割り当ての方が望ましい。
【0052】
上述した非特許文献1および非特許文献2に記載された技術は、使用ノード数の少ない割り当てを見つけることを目指してはいない。適切な割り当てとしての条件を満たし、かつ、使用ノード数の少ない割り当てを見つけることは容易でない。
【0053】
以下、ペガサスグラフ上でLHZ方式を実効的に実施する際に、イジング問題の変数とイジング問題を解くためのグラフのノードとの対応関係として、使用するノード数が抑制され、かつ、偏りのない対応関係を得ることができる実施形態を説明する。以降、説明の便宜上、「偏りのない」と表すが、「偏りが小さい」と読み替えることもできる。例えば、偏りの小ささの判定は、偏りが所定の基準を満たしているか否かによって判定する。所定の基準とは、偏りが小さいことを判定する基準であり、例えば、偏りが所定の値よりも小さいという基準である。
<実施形態の概要>
【0054】
実施形態を具体的に説明する前に、概要を説明する。本実施形態の割り当て装置および割り当て方法は、イジング問題をLHZ方式で表し、かつ、LHZ方式をペガサスグラフ上に表現して解く際、イジング問題の変数をペガサスグラフ上のノードに割り当てる。
【0055】
本実施形態の割り当て方法は、大きく2つのステップに分けられる。
【0056】
第1のステップは、LHZ方式で用いられるコスト関数(式(3))を3つ以上の変数の積が現れないコスト関数に変換する。この変換として、例えば、非特許文献3に記載されている方法を用いる。変換後のコスト関数は以下の通りである。
【0057】
【0058】
式(5)におけるJij、σij、Cは、変換前のコスト関数である式(3)におけるJij、σij、Cと同じである。式(5)において、iおよびjも式(3)におけるiおよびjと同じ範囲の値を取り得る。τi,jは1か-1を取り得るイジング変数で、変換によって新しく生じた変数(補助変数)である。
【0059】
式(5)のコスト関数は、イジング変数が3つ以上からなる積を含まないので、σとτとを区別せずにイジング変数sとして表せば、式(2)の形で表すことができる。このときのsiとsjとの係数であるJijは、一般に、式(5)に現れるJijとは異なるが、Jijの値とCとの値に基づいて計算し、導出することができる。
【0060】
式(5)のコスト関数を最小にするσijの値の組合せは、式(3)のコスト関数を最小にするσijの値の組合せと同じである。コスト関数を最小にするときτi,jの値も定まるが、それは解こうとしている問題(Jijで定まる問題)の解には含まれない。τi,jは、式(5)のコスト関数内の変数σの4つの積を2つの積に分解するために導入されている。
【0061】
図7は、コスト関数における変数間の積の構造を示す説明図である。式(5)で表されるコスト関数の変数を
図7に例示されているような格子点上の変数としたとき、コスト関数における変数の積を、格子点間のエッジとして記述できる。格子点間のエッジは、
図7には示されていない。例えば、σ
12、σ
13、σ
22、σ
23、τ
12の部分だけ取り出してエッジを描くと
図8に示すようになる。
図8は、コスト関数における変数間の積の構造の一部を示す説明図である。σ同士のエッジは実線で図示され、σとτの間のエッジは点線で図示されている。格子の他の部分にも同様の構造が見られる。
【0062】
図9は、コスト関数における変数間の積の構造の一部を示す説明図である。コスト関数の変数間の関係性を表した周期的構造として、
図9のような正方格子を考えることもできる。丸はσ、四角はτを表す。
図9に示されているエッジは、式(5)で表されるコスト関数の変数の積の一部を表している。変数の積は、例えば、σとτとの積である。コスト関数にはσ同士の積もあるが、それらは
図9ではエッジとして表されていない。それらは、
図9におけるノード間の空間的距離に基づいて、第2近接ノードの変数同士と第3近接ノードとの変数同士の積である。この格子構造は以下に述べる第2のステップで用いる。
【0063】
第2のステップは、第1のステップでの変換によって得られた式(5)のコスト関数の変数σとτi,jとをペガサスグラフ上の複数のノードに割り当てるステップである。このとき、ノードの数が少ないチェインを構成することで、全体の使用ノード数が少なくなることを目指す。また、偏りのない割り当てが実現されることを目指す。チェインを構成するための方針を以下で説明する。特に、ノードの数が少ないチェインを構成するための方針と、その具体的方法を説明する。
【0064】
少ないノードのチェインによる割り当てを構成する基本的な方針は、式(5)のコスト関数の変数間の関係性を表した周期的構造とペガサスグラフの周期的構造とを対応させることである。コスト関数についての周期的構造とは上記の正方格子構造のことである。
図9には、
図7に示された構造に対応した周期的構造が示されている。上述したように、正方格子構造では隣接する格子点に割り当てられた変数同士のみが積としてコスト関数に現れる。ある格子点に隣接とは、該ある格子点にて定義される変数に対する積が定義されている格子であることを表す。ペガサスグラフではエッジでつながっているノードの組は限られている。エッジでつながっているノード同士は隣接するノードと解釈できる。正方格子構造がペガサスグラフ上に反映されることで、コスト関数で積になる変数同士を隣接するノード同士、もしくは隣接するノードに隣接する別のノードに割り当てることができる。これにより、チェインを長くする必要がなくなる。
【0065】
具体的に正方格子構造とペガサスグラフとの構造をどのように対応させるかを説明するために、まず、ペガサスグラフの構造を考える。
図10は、ペガサスグラフにおけるユニット列を示す説明図である。ペガサスグラフにおけるユニットは、他の複数のユニットと結合をもつ。
図2に示す例では、ユニット自身の左下隣と右上隣のユニットとが最も多くの結合をもつ。このような多くの結合をもつユニットの列として、
図10に示すように左下から右上方向に延びるユニット列951a~951eを考えることができる。以下、これらの各々を単にユニット列と呼ぶ。ただし、
図10におけるユニット列951a,951b,951d,951eのように、ペガサスグラフ全体の端付近では、ユニット列に一部のノードが欠けたユニットが含まれることがある。ペガサスグラフには、ユニット列内のユニット間をつなぐエッジと、隣接するユニット列をつなぐエッジのみが存在する。隣接するユニット列とは、
図10におけるユニット列951bとユニット列951cのような、エッジでつながったユニット列の組を意味する。ユニット列951a,951b,951d,951eは、量子アニーリングマシンのハードウェアにおける複数の構成要素(ユニット)が、構成要素間の接続関係に従いグループ(ユニット列)分けされたグループ情報であるということもできる。グループ情報は、所与のグループ情報であってもよいし、構成要素間の接続関係に従いグループ分けする処理に従い取得される情報であってもよい。
【0066】
次に、式(5)のコスト関数の変数間の関係性を表した正方格子(
図9参照)の格子点を
図11に示すように周期的に分割することを考える。
図11は、コスト関数における変数間の積の構造の一部とプラケット列とを示す説明図である。4つの格子点からなる正方形をプラケットと呼び、ここで分割されたそれぞれをプラケット列と呼ぶ。プラケット列は、例えば、
図11における部位961bなどである。変数を表す格子点全体の端付近では、4つの格子点からなる完全なプラケットではない部分もあるが、これらも含めて、周期的に分割し、分割によって生じたそれぞれの部分をプラケット列と呼ぶことにする。つまり、本実施形態では、部位961aや部位961eもプラケット列である。
【0067】
図14を参照しながら後述するように、割り当て部102は、式(5)に例示されるような、イジング問題において複数の変数からコスト関数を算出する処理手順を表す情報から、該複数の変数を、該処理手順における参照関係(あるいは、関係性)に従い、周期的構造を有する複数の処理群(プラケット列)に分ける処理を実行してもよい。言い換えると、割り当て部102は、式(5)に例示されているような処理(または、プログラム)を字句解析、構文解析等を実行することによって、該処理にて用いられている複数の変数を、添え字まで含めて特定する。割り当て部102は、2つの変数が掛け算されている場合に、該処理において該2つの変数に参照関係(あるいは、関係性)があると判定する。割り当て部102は、該関係性から周期的構造を抽出することによって、該処理(または、プログラム)を、周期的構造を有する複数の処理群(プラケット列)に分ける。周期的構造を判定する処理は、上述したような単位構造に基づく方法であってもよいし、異なる方法であってもよい。
【0068】
上述したように、変数の割り当てにおいて正方格子構造とペガサスグラフの構造とを対応させる。それは、プラケット列をユニット列に対応させることを意味する。1つのプラケット列内にある変数は、すべて同一のユニット列内に割り当てられる。異なるプラケット列は異なるユニット列に割り当てられる。そして、異なるプラケット列に属する変数の積は、異なるユニット列間のエッジとして表される。
【0069】
次に、変数の割り当ての概略を説明する。プラケット列の変数をユニット列のノードに割り当てることに注目する。まず、1つのプラケット(例えば、
図11におけるプラケット962a)を考える。プラケットの4つの変数が1つのユニット(
図10におけるユニット952aとする。)内のノードに割り当てられる。具体的には、プラケットの4つの変数は、ユニット内の左下の4つのノード(
図3におけるノード911a,911b,912c,912d)に割り当てられる。プラケット内のノードとエッジとはペガサスグラフにおける4つのノードとそれらをつなぐエッジの部分グラフである。よって、ペガサスグラフにおける4つのノードでプラケットを表すことができる。
【0070】
プラケット列内の隣のプラケット(例えば、
図11におけるプラケット962b)の4つの変数がペガサスグラフの同じユニット(
図10におけるユニット952a)内の残りの4つのノードに割り当てられる。ユニットの対称性により、この新しいプラケットも残りの4つのノード(
図3におけるノード911c,911d,912a,912b)によって表すことができる。2つのプラケットの両方に属する変数が2つある(
図11における変数963aと変数963b)。これらは、ペガサスグラフのユニット内の2つのノードに割り当てられることになる。具体的には、変数963aが、ノード911bとノード912bとに割り当てられる。変数963bが、ノード911cとノード912cとに割り当てられる。これらの2つのノードはエッジでつながっている。変数で割り当てられたノードが、この変数のチェインになる。さらに、2つのプラケットに属する変数の積も、ユニット内のエッジで表すことができる。したがって、1つのユニットで、2つのプラケット内の変数とそれらの積とをすべて表すことができる。
【0071】
同じプラケット列内のさらに隣のプラケット(例えば、
図11におけるプラケット962c)を考える。このプラケットは、ユニット列内の隣のユニット(
図10におけるユニット952b)の左下の4つのノード(
図3におけるノード911a,911b,912c,912d)に割り当てられる。プラケット962bとプラケット962cとの両方に属している変数(
図11における変数963cと変数963d)は、ユニット952aの1つのノードとユニット952bの1つのノードとの合計2つのノードに割り当てられる。具体的には、変数963cがユニット952aのノード912aとユニット952bのノード911aとに割り当てられる。変数963dがユニット952aのノード911dとユニット952bのノード912dとに割り当てられる。これらの2つのノードはエッジでつながっている。変数が割り当てられたノードが、この変数のチェインになる。プラケット962bとプラケット962cとに属する変数の積も、ユニット間のエッジで表すことができる。したがって、2つのユニット952a,952bで、2つのプラケット962b,962cの変数とそれらの積とをすべて表すことができる。
【0072】
上記の処理が繰り返されることで、プラケット列の変数とプラケット列内の変数の積とがユニット列のノードに適切に割り当てられる。そして、各変数のチェインの長さは2である。
【0073】
次に、隣接するプラケット列(
図11におけるプラケット列961cとプラケット列961d)に属する変数同士の積を隣接するユニット列間のエッジで表すことを考える。具体的には、
図11におけるプラケット962cとプラケット962dとに属する変数同士の積を考える。プラケット962cの変数とプラケット962dの変数とは、それぞれ
図10におけるユニット列951cとユニット列951dとに割り当てられる。特に、
図10におけるユニット952bとユニット952cとに割り当てられることで、プラケット間の変数の積をすべてエッジで表すことができる。
【0074】
上記のような処理を繰り返すことで第1のプラケット列と第2のプラケット列とに属する変数間の積をすべて第1のユニット列と第2のユニット列との間のエッジとして表すことができる。プラケット列間の変数の積を表すために新しいチェインは新しく導入されていない。また、既存のチェインに新たにノードが加わることもない。したがって、各変数のチェインの長さは2のままである。
【0075】
図12は、チェインを示す説明図である。上記の割り当ての方法で用いられるチェインは、
図12に例示されているようにユニット列内で任意の隣接する2つのユニットを考えたときに、チェイン971a,971b,971c,971dの4種類に分類される。これらのチェインの種類については後述する。変数を割り当てる際には、ペガサスグラフ内のユニットとチェインの種類とが指定される。そのようにして、使用するノードが一意に指定される。1つのイジング変数が割り当てられるユニットの位置とチェインの種類とが決められると、上述の手順により、すべての変数の割り当てを行うことができる。この割り当てによって、変数同士の積はペガサスグラフのエッジとしてすべて表される。後述するが、1つ目のイジング変数の割り当てを決めるためのパラメータは、c
0、w
0、k
0、z
0と表される。これらのパラメータは、コスト関数における変数間の関係を表す繰り返し構造と、ペガサスグラフが有する繰り返し構造とを対応付けする基準を表しているということもできる。したがって、後述するように、このような所与の基準を用いて、コスト関数における繰り返し構造と、ペガサスグラフにおける繰り返し構造とを対応付けすることができる。
【0076】
以下、実施形態を、図面を参照して詳細に説明する。
[構成の説明]
【0077】
図13は、本実施形態の計算システム10の一例を示す説明図である。本実施形態では、割り当て装置100が、イジング問題の変数とノードとの対応関係を決定する。
図13に示す計算システム10では、イジング問題を解くために量子アニーリングマシン200が使用されることを想定する。なお、量子アニーリングマシン200の代わりに、ペガサスグラフを用いてイジング問題を解く他の任意の装置が用いられてもよい。また、計算システム10は、量子アニーリングマシン200に問題を入力し、計算結果の出力を得るための補助的な装置として、計算装置300と入出力装置400とを含む。このように、
図13に示す例では、計算システム10は、割り当て装置100と、量子アニーリングマシン200と、計算装置300と、入出力装置400とを有する。
【0078】
割り当て装置100は、入力として、イジング問題のイジング変数の数N、および、割り当てについてのパラメータであるc0、w0、k0、z0を受付けて、イジング問題の変数とペガサスグラフのノードとの対応関係を示す情報を出力する装置である。本実施形態では、イジング問題の変数とペガサスグラフのノードとの対応関係を示す情報は、入出力装置400に入力される。入出力装置400への情報の入力は、ユーザの入力操作を介して行われてもよいし、割り当て装置100から直接入力されてもよい。イジング問題の変数の係数は、入出力装置400に入力される。入出力装置400への係数の入力は、ユーザの入力操作を介して行われてもよいし、計算装置300から直接入力されてもよい。入出力装置400は、量子アニーリングマシン200との間の入出力処理を行う装置である。入出力装置400は、割り当て装置100および計算装置300の出力結果に基づいて、使用する量子ビットと、量子ビット間の結合の強さとを量子アニーリングマシン200に対し出力する。また、入出力装置400は、量子アニーリングマシン200から量子ビットの最終状態を取得し、イジング問題の解を出力する。
【0079】
なお、割り当て装置100、計算装置300、および入出力装置400は、一般的なコンピュータ、すなわち、いわゆる古典コンピュータである。計算装置300および入出力装置400の機能の一部または全てが割り当て装置100に組み込まれていてもよい。
【0080】
また、割り当て装置100、量子アニーリングマシン200、計算装置300、および入出力装置400の一部または全てはクラウドにより実現されてもよい。例えば、量子アニーリングマシン200と入出力装置400とだけがクラウドにより実現されてもよい。量子アニーリングマシン200と入出力装置400とだけがクラウドにより実現される場合、割り当て装置100と計算装置300とからの出力は、ネットワークを介して入出力装置400に入力されてもよい。そして、入出力装置400の出力が量子アニーリングマシン200に入力され、量子アニーリングマシン200からの出力が入出力装置400に入力される。さらに、入出力装置400からの計算結果の出力は、ネットワークを介して行われる。
【0081】
上述したように、割り当て装置100は、イジング問題のイジング変数の数Nとイジング変数σ1,2が割り当てられるノードのパラメータc0、w0、k0、z0とを入力として受け付ける。そして、割り当て装置100は、イジング問題のコスト関数(式(2))の表現に基づき、コスト関数のイジング変数をペガサスグラフ上のどのノードに割り当てるかを示す情報を出力する。
【0082】
また、計算装置300は、解こうとしているイジング問題の変数の係数であるJijと正の値の範囲で調節すべきパラメータであるCとを入力として受け取る。そして、計算装置300は、この入力に基づいて、式(5)で示されるコスト関数のイジング変数の係数を計算し、出力する。イジング変数の係数とは、式(5)を式(2)の形で表したときの式(2)におけるJijを意味する。具体的には、計算装置300は、i=1,2,...,Nと、j=i,i+1,i+2,...,Nと、k=1,2,...,Nと、l=k,k+1,k+2,...,Nとについて、変数σijの係数および変数σijとσklとの積の係数のリストを出力する。
【0083】
割り当て装置100の出力(割り当て結果)と計算装置300の出力(イジング変数の係数)とは、入出力装置400に入力される。さらに、ユーザが、チェイン内のノードをつなぐエッジに対応する量子ビット間の結合の強さ(チェイン強度)を指定し、入出力装置400にその強さの値を入力する。この値として、チェイン内のノードの量子ビットがすべて同じ状態になるような値が入力される。ここで指定するチェイン強度は、すべてのチェインで同一であるとする。
【0084】
入出力装置400は、割り当て結果、イジング変数の係数、チェイン強度を使って、量子アニーリングマシン200で使用する量子ビットを決め、量子ビット間の結合の強さを算出する。ここで算出された量子ビット間の結合の強さには、チェイン内のエッジに対応する結合の強さも含まれている。結合の強さは、すべて、指定したチェイン強度と等しくなっている。そして、入出力装置400は、使用する量子ビットのリストと量子ビット間の結合の強さとを量子アニーリングマシン200へ入力する。
【0085】
量子アニーリングマシン200は、入力で指定された量子ビットにおいて、入力で指定された量子ビット間結合の強さを実現する。そして、量子アニーリングマシン200は、量子アニーリングを実行し、最終的な量子ビットの状態を示すリストを入出力装置400に出力する。入出力装置400は、量子ビットの状態を示すリストをイジング変数の値を示すリストに変換する。入出力装置400は、図示しない出力装置(例えば、ディスプレイや電子ファイルなど)にリストを出力する。
【0086】
ペガサスグラフと量子アニーリングマシンとの関係は、上述した通りである。つまり、量子アニーリングマシン200のどの量子ビットとどの量子ビットとが結合しているかが、ペガサスグラフの構造に対応している。すなわち、量子ビットはペガサスグラフのノードに対応し、量子ビット間の結合はペガサスグラフのエッジに対応する。量子ビットは2つの状態からなり、量子アニーリングマシン200は、どちらの状態であるかを二値変数として扱うことができる。そして、量子アニーリングマシン200は、この二値変数をイジング問題の変数に対応させることができる。量子アニーリングマシン200は、イジング問題をペガサスグラフに対応させ、ペガサスグラフ上のノードに割り当てられたイジング変数の値と量子ビットの状態とを対応させることで、イジング問題を解くことができる。ただし、上述したように、量子アニーリングマシン200は、イジング問題をペガサスグラフに対応させる際に、イジング問題の変数をペガサスグラフ上のノードに適切に割り当てる。
【0087】
以下、割り当て装置100を詳細に説明する。
図14は、割り当て装置100の構成の一例を示すブロック図である。割り当て装置100は、
図14に示されるように、入力受付部101と、割り当て部102と、出力部103とを有する。入力受付部101は、イジング問題の変数の数N、イジング変数σ
1,2の割り当てについてのパラメータであるc
0、w
0、k
0、z
0の入力を受付ける。この入力は、例えば、キーボードなどの入力装置(図示せず)を介して実行される。例えば、ユーザは、解きたいイジング問題の変数の数Nと、具体的に値を指定したc
0、w
0、k
0、z
0とを入力する。
【0088】
割り当て部102は、イジング問題のイジング変数を、ペガサスグラフ上のノードに割り当てる処理を行う。すなわち、割り当て部102は、イジング問題のコスト関数における周期的構造をペガサスグラフの周期的構造に反映させ、各イジング変数をペガサスグラフのノードに割り当てる。
【0089】
出力部103は、割り当て部102による二値変数のノードへの割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する。例えば、出力部103は、ディスプレイなどの出力装置(図示せず)に、対応関係を示す情報を出力する。出力部103は、例えば、二値変数とノードとの対応関係を示すリストを出力する。例えば、出力部103は、イジング変数σi,jやイジング変数τi,jが割り当てられるペガサスグラフ上のノードを列挙したリストを、i=1,2,...,Nとj=i+1,i+2,...,Nについて列挙したリスト、すなわち、リストを含むリストを出力する。例えば、割り当て部102が、イジング変数σ1,2をノード0とノード1とに割り当て、イジング変数σ2,3をノード2とノード3とに割り当て、イジング変数τ1,2をノード4とノード5とに割り当て、イジング変数τ2,3をノード6とノード7とに割り当てる場合、出力部103は、{σ1,2:[0,1],σ2,3:[2,3],τ1,2:[4,5],τ2,3:[6,7]}と表される情報を出力する。
【0090】
図15は、割り当て装置100のハードウェア構成の一例を示すブロック図である。
図15に示す割り当て装置100は、ネットワークインタフェース150、メモリ151、およびプロセッサ152を含む。ネットワークインタフェース150、メモリ151、およびプロセッサ152は、データバスなどを介して相互に接続されている。
【0091】
ネットワークインタフェース150は、他の任意の装置と通信するために使用される。ネットワークインタフェース150は、例えば、ネットワークインタフェースカード(NiC)を含んでもよい。
【0092】
メモリ151は、例えば、揮発性メモリと不揮発性メモリとの組合せによって構成される。メモリ151は、プロセッサ152により実行される、1以上の命令を含むソフトウェア(コンピュータプログラム)、および割り当て装置100の各種処理に用いるデータなどを格納するために使用される。
【0093】
プロセッサ152は、メモリ151からソフトウェア(コンピュータプログラム)を読み出して実行することで、
図14に示した各構成要素の処理を行う。
【0094】
プロセッサ152は、例えば、マイクロプロセッサ、MPU(Micro Processor Unit)、またはCPU(Central Processing Unit)である。プロセッサ152は、複数のプロセッサを含んでもよい。
【0095】
このように、割り当て装置100は、コンピュータとして機能する装置(情報処理装置)で実現可能である。
【0096】
なお、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)に格納され、コンピュータに供給され得る。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスク)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-RW、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))である。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体は、例えば、RAM(Random Access Memory)である。プログラムは、電線および光ファイバ等の有線通信路、または無線通信路を介して、コンピュータに供給されてもよい。
【0097】
以下、割り当て部102による割り当てを説明する。
【0098】
上述したように、割り当て部102は、割り当ての際、ユニットの位置とチェインの種類とを指定する。そこで、まず、ペガサスグラフのノードの指定方法を説明する。そして、ユニットの位置を指定する方法を説明し、その後、チェインの種類を説明する。
【0099】
上述したように、ペガサスグラフ上のノードの座標は、(u,w,k,z)によって表される。取り得る値は、それぞれu=0,1、w=0,1,...,M-1、k=0,1,...,11、z=0,1,...,M-2である。Mは、ペガサスグラフ全体の大きさを表すパラメータである。ここでは、Mは十分大きいとする。ただし、割り当て装置100がイジング変数のノードへの割り当てのリストを出力する際に、ノードの座標自体は出力に用いられない。その代わりに、座標から一意に決まるノードの番号が用いられる。ノードの座標が(u,w,k,z)のとき、そのノードの番号をxとすると、xは、式(6)で与えられる。
【0100】
【0101】
ただし、(u,w,k,z)からxに変換する処理は、式(6)に例示された処理に限定されない。変換する処理は、異なる2つの座標(u,w,k,z)が、異なるxに変換される処理であればよい。
【0102】
ただし、以下の説明では、上記のxではなく、座標(u,w,k,z)を用いる。
【0103】
次に、割り当て部102がユニットの位置を指定する方法を説明する。ユニット内のノードのうちu=0である4つのノードを考える。これら4つのノードのうちkが最も小さいノード(
図3におけるノード911a)の座標が(0,w
0,k
0,z
0)であるとする。このユニットをユニット(w
0,k
0,z
0)と呼ぶことにする。k
0は、0、4、8のいずれかの値を取り得る。ユニット(w
0,k
0,z
0)のu=1の4つのノードのうちkが最も小さいノード(
図3におけるノード912a)の座標は、k
0の値ごとに次のように決まる。k
0=0のとき、ノード912aの座標は、(1,z
0,8,w
0-1)である。k
0=4のとき、ノード912aの座標は、(1,z
0+1,4,w
0)である。k
0=8のとき、ノード912aの座標は、(1,z
0+1,0,w
0)である。また、ユニット(w
0,k
0,z
0)と同じユニット列に属し連接するユニットを、以下のようにk
0の値に応じて指定できる。k
0=0のとき、連接するユニットは、ユニット(w
0,8,z)とユニット(w
0,4,z-1)である。k
0=4のとき、連接するユニットは、ユニット(w
0,0,z+1)とユニット(w
0,8,z)である。k
0=8のとき、連接するユニットは、ユニット(w
0,4,z)とユニット(w
0+1,0,z)である。それぞれのk
0に応じた2つずつのユニットのうち、前者を左下隣のユニット、後者を右上隣のユニットと呼ぶことにする。特に右上隣のユニットへ移るときの座標の変化は、以下のように式(7)で表される。
【0104】
(w,k,z)->(w,4,z-1) (k=0のとき)
(w,8,z) (k=4のとき) 式(7)
(w+1,0,z) (k=8のとき)
【0105】
次に、チェインの種類を説明する。チェインの種類は、隣接する2つのユニット内のノードの相対的な位置関係のみによって決まる。チェインの種類は、隣接する2つのユニットのペガサスグラフ内での位置には依存しない。そのため、
図12に示すようにユニット列で隣接する2つのユニット972aとユニット972bとを考える。ユニット972bは、ユニット972aの右上隣のユニットである。ペガサスグラフ内でのユニット972aの位置は、任意である。ここで、ユニット972aのu=0の4つのノードをkの小さい順にノードA00,A01,A02,A03と呼び、ユニット972aのu=1の4つのノードをkの小さい順にノードA10,A11,A12,A13と呼ぶ。ユニット972bのu=0の4つのノードをkの小さい順にノードB00,B01,B02,B03と呼び、ユニット972bのu=1の4つのノードをkの小さい順にノードB10,B11,B12,B13と呼ぶ。チェインの種類は4つある。それらをチェイン種類(以下、これもチェインと呼ぶ。)α,β,γ,δと呼ぶことにする。これらは、すべて2つのノードからなる。それぞれのチェインで使用するノードは、上記のノードで次のように構成される。チェインαは、ノードA12とノードA02とで構成される。チェインβは、ノードA01とノードA11とで構成される。チェインγは、ノードA03とノードB13とで構成される。チェインδは、ノードA10とノードB00とで構成される。つまり、
図12において、チェインαはチェイン971aである。チェインβはチェイン971bである。チェインγはチェイン971cである。チェインδはチェイン971dである。
【0106】
割り当て部102は、変数を割り当てる際に、上記のユニット972aのペガサスグラフ内での位置(w,k,z)とチェインの種類とを指定する。これにより、割り当てるノードが特定される。そこで、ユニット972aの位置とチェインの種類とを1つにして表すことで、ノードが特定されたチェインを表すことにする。例えば、ユニット972aがユニット(w0,k0,z0)であり、チェインの種類がチェインαであるとき、このチェインをα(w0,k0,z0)と表す。チェインの種類がチェインβ,γ,δのときも同様に表す。変数の割り当ては、各変数と上記の各チェインとを対応付けることに帰着する。
【0107】
以下、割り当て部102がユニットの位置とチェインの種類とを指定することで変数の割り当てを行う具体的な方法を説明する。
【0108】
上述したように、割り当て部102は、イジング変数の正方格子構造におけるプラケット列をユニット列に対応させるように割り当てを行う。まずは、割り当て部102が1つのプラケットを1つのユニットに対応させる方法を示す。イジング変数σ
i+1,j+1、τ
i,j、τ
i+1,j、σ
i+1,jからなる1つのプラケットを考える。
図16において、イジング変数σ
i+1,j+1,τ
i,j,τ
i+1,j,σ
i+1,jは、それぞれ、イジング変数981a,981b,981c,981dであるとする。プラケットは、プラケット982aであるとする。割り当て部102は、プラケット982aの各イジング変数をそれぞれチェインα(w
0,k
0,z
0)、チェインβ(w
0,k
0,z
0)、チェインγ(w
0,k
0,z
0)、チェインδ(w
0,k
0,z
0)に割り当てる。
【0109】
次に、割り当て部102が、プラケット列をユニット列に対応させる方法を説明する。プラケット982aが属するプラケット列983a内で、プラケット982aの2つ隣のプラケット982bを考える。プラケット982bは、イジング変数σi+2,j,τi+1,j-1,τi+2,j-1,σi+2,j-1からなる。割り当て部102は、この4つの変数をユニット(w0,k0,z0)の右上隣のユニットにあるチェインα,β,γ,δにそれぞれ割り当てる。右上隣のユニットへ移るとき、式(7)のように座標が変化する。割り当て部102は、これを繰り返して、プラケット列983aのすべてのイジング変数を同一ユニット列のノードからなるチェインに割り当てることができる。したがって、プラケット列内の1つのプラケットをどのユニットに割り当てるかを決めれば、そのプラケット列内のすべてのプラケットの割り当てが決まる。したがって、割り当て部102は、量子アニーリングマシンのハードウェアにおける複数の構成要素(ユニット)が、構成要素間の接続関係に従いグループ(ユニット列)分けされた所与のグループ情報に従い、処理群(すなわち、プラケット列)を、それぞれ、1つのグループ(ユニット列)が処理するよう割り当てを決めるともいうことができる。係る処理によれば、ノード数の偏りが少なく、使用するノード数が少なくなるよう割り当てをすることができる。これは、周期的構造を有する複数の処理群について、量子アニーリングマシンのハードウェア構成が有する周期的な構成に従い、各処理群を各グループに割り当てるからである。
【0110】
プラケット列をユニット列へ対応させる際、次のような規則に従って、イジング変数がチェインの種類に割り当てられる。2つの添え字の和が等しいイジング変数σは、すべて同じ種類のチェインに割り当てられる。同様に、2つの添え字の和が等しいイジング変数τは、すべて同じ種類のチェインに割り当てられる。この規則が成立するのは、ペガサスグラフにおいてユニット列の右上へユニット1つ分進むと、割り当てられるイジング変数の1つ目の添え字が1だけ増え、2つ目の添え字が1だけ減るためである。上記のプラケット列983aの場合、2つの添え字の和がi+j+2のイジング変数σがチェインαに割り当てられる。2つの添え字の和がi+j+1のイジング変数σがチェインδに割り当てられる。そして、2つの添え字の和がi+jのイジング変数τがチェインβに割り当てられる。2つの添え字の和がi+j+1のイジング変数τがチェインγに割り当てられる。
【0111】
次に、隣接するプラケット列を考える。
図16に示す例では、上記のプラケット列983aに隣接するプラケット列は、プラケット列983bである。プラケット列983bに含まれるイジング変数は、隣接するユニット列のチェインに割り当てられる。割り当て部102は、隣接するプラケット列内のイジング変数の積が、ノード間のエッジで表されるように割り当てるユニットを選ぶ。イジング変数σ
i+1,j+1,τ
i,j,τ
i+1,j,σ
i+1,jからなるプラケットとイジング変数τ
i+1,j+2,σ
i+1,j+2,σ
i+2,j+2,τ
i+1,j+1からなるプラケットとを考える。
【0112】
図16において、それらのプラケットは、イジング変数981a,981b,981c,981dからなるプラケット982aと、イジング変数981i,981j,981k,981lからなるプラケット982cである。割り当て部102が、プラケット982aのイジング変数981a,981b,981c,981dをこの順にユニット(w
0,k
0,z
0)のチェインα,β,γ,δに割り当てるとする。プラケット982cが割り当てられるユニットは、k
0の値に応じて以下のように定まる。すなわち、割り当て部102は、以下のように、プラケット982cをユニットに割り当てる。k
0=0のとき、割り当て部102は、プラケット982cをユニット(w
0,4,z
0)に割り当てる。k
0=4のとき、割り当て部102は、プラケット982cをユニット(w
0,8,z
0+1))に割り当てる。k
0=8のとき、割り当て部102は、プラケット982cをユニット(w
0+1,0,z
0+1)に割り当てる。2つのプラケットが割り当てられるユニットのペガサスグラフ内での相対的な位置関係は、すべてのk
0の値で同じである。プラケット982cの各イジング変数981i,981j,981k,981lは、この順でそのユニットのチェインα,β,γ,δに割り当てられる。以上のようにして、1つのプラケット列が割り当てられるユニットが決まると、隣接するプラケット列が割り当てられるユニットがすべて一意に決まる。この割り当てにより、隣接するプラケットに属するイジング変数の積は、すべてペガサスグラフのエッジに対応付けられる。
【0113】
上記の割り当てにおいて、プラケット982cが属するプラケット列983bでは、2つの添え字の和がi+j+3のイジング変数σがチェインβに割り当てられる。2つの添え字の和がi+j+4のイジング変数σがチェインγに割り当てられる。2つの添え字の和がi+j+3のイジング変数τがチェインαに割り当てられる。2つの添え字の和がi+j+2のイジング変数τがチェインδに割り当てられる。プラケット982aでは、イジング変数σがチェインαとチェインδとに割り当てられるのに対して、プラケット982cでは、イジング変数σがチェインβとチェインγとに割り当てられる。つまり、プラケット列のイジング変数σがチェインαとチェインδとに割り当てられるとき、そのプラケット列に隣接するプラケット列に属するイジング変数σは、チェインβとチェインγとに割り当てられる。
【0114】
上記の2つのプラケット列983aとプラケット列983bとにおけるイジング変数σの2つの添え字の和とチェインの種類とをまとめると、添え字の和とチェインの種類とは、i+j+1とチェインδ、i+j+2とチェインα、i+j+3とチェインβ、i+j+4とチェインγとなっている。ここでの割り当てにおいて、プラケットは、イジング変数σの2つの添え字の和が2だけ増えるごとに隣接するユニット列に割り当てられる。そして、添え字の和とチェインの種類との対応関係は、添え字の和について周期4の周期性がある。つまり、上記の例では、例えば和がi+j+5とi+j+7の変数は、隣接するユニット列のチェインδとチェインβとにそれぞれ割り当てられる。周期性はあるものの、添え字の和だけでチェインの種類が一意に定まるわけではないことに注意する。割り当て部102が、いずれか1つのイジング変数のチェインの種類を指定することで、添え字の和とチェインの種類とを一意に対応させることができる。例えば、上記の場合、イジング変数σi+1,j+1がチェインαに割り当てられているため、他のイジング変数が割り当てられるチェインが一意に定まる。
【0115】
同様の周期性はτにもみられる。周期性に加えて次のような関係性もある。イジング変数σi,jについてi+j=mのとき、2つの添え字の和がm+1であるイジング変数τは、イジング変数σi,jが割り当てられるチェインと同じ種類のチェインに割り当てられる。例えば、上記の割り当てでは、イジング変数σi+1,j+1がチェインαに割り当てられ、イジング変数τi+1,j+2もチェインαに割り当てられる。これは、隣のプラケット列へ移るごとに割り当てるチェインの種類がイジング変数σとイジング変数τとで入れ替わることに由来する。
【0116】
プラケット列のイジング変数σが同一ユニット列のチェインαとチェインδとに割り当てられるとき、隣接するプラケット列がどのように割り当てられるかが説明された。一方、プラケット列のイジング変数σが同一ユニット列のチェインβとチェインγとに割り当てられるとき、隣接するプラケット列をどのように割り当てるかを以下で説明する。
【0117】
イジング変数τ
i+1,j+2,σ
i+1,j+2,σ
i+2,j+2,τ
i+1,j+1からなるプラケットが、この順にユニット(w
0,k
0,z
0)のチェインα,β,γ,δに割り当てられているとする。このプラケットは、
図16に示す例では、イジング変数981i,981j,981k,981lからなるプラケット982cである。プラケット982cは、プラケット列983bに含まれている。隣接するプラケット列のイジング変数σ
i+3,j+3,τ
i+2,j+2,τ
i+3,j+2,σ
i+3,j+2からなるプラケットを考える。このプラケットは、
図16に示す例では、イジング変数981m,981n,981o,981pからなるプラケット982dである。プラケット982dは、プラケット列983cに含まれている。割り当て部102は、プラケット982dを、k
0の値に応じて、以下のように、ユニットに割り当てる。k
0=0のとき、割り当て部102は、プラケット982dを、ユニット(w
0,8,z
0)に割り当てる。k
0=4のとき、割り当て部102は、プラケット982dを、ユニット(w
0+1,0,z
0+1)に割り当てる。k
0=8のとき、割り当て部102は、プラケット982dを、ユニット(w
0+1,4,z
0)に割り当てる。そして、割り当て部102は、イジング変数σ
i+3,j+3,τ
i+2,j+2,τ
i+3,j+2,σ
i+3,j+2をこの順にそのユニットのチェインα,β,γ,δに割り当てる。なお、プラケット982dのイジング変数σ
i+3,j+3,τ
i+2,j+2,τ
i+3,j+2,σ
i+3,j+2の添え字の値は、最初に考えたプラケット982aのイジング変数σ
i+1,j+1,τ
i,j,τ
i+1,j,σ
i+1,jのiとjとをそれぞれ2だけ大きくすると得られる。
【0118】
これまでに見てきた関係性から1つのユニットに割り当てられるプラケット内のイジング変数の添え字の相対的な関係とチェインとの組合せがわかる。この相対的な関係とは、1つのイジング変数とそれが割り当てられるチェインとが与えられれば、そのイジング変数と同じユニットに割り当てられるプラケット内の他のイジング変数とそれらが割り当てられるチェインとを特定できるということを意味する。このような相対的な関係は、2種類ある。
【0119】
1種類目は、プラケット982aに対するイジング変数σi+1,j+1,τi,j,τi+1,j,σi+1,jについての関係である。チェインの種類は、この順にチェインα,β,γ,δである。これらのイジング変数の添え字のiを正の整数mだけ大きくし、jをmだけ小さくすると、それらイジング変数は同じユニット列のmだけ右上隣に移動したユニットに割り当てるイジング変数の添え字の値になる。また、iとjをともに2×mだけ大きくすると、2×mだけ隣のプラケット列のプラケットのイジング変数の添え字になり、それらイジング変数は2×mだけ隣のユニット列に割り当てられる。
【0120】
2種類目は、プラケット982cに対するイジング変数τi+1,j+2,σi+1,j+2,σi+2,j+2,τi+1,j+1についての関係である。チェインの種類は、この順にチェインα,β,γ,δである。このプラケットは、1種類目のプラケットの隣のプラケット列に属する。このプラケットは、1種類目のプラケット列が割り当てられるユニット列の隣のユニット列に割り当てられる。1種類目のプラケットと同様に、イジング変数の添え字のiをmだけ大きくし、jをmだけ小さくすると、それらイジング変数は同じユニット列のmだけ右上隣に移動したユニットに割り当てられるイジング変数の添え字の値になる。また、iとjをともに2×mだけ大きくすると、2×mだけ隣のプラケット列のプラケットのイジング変数の添え字になり、それらイジング変数は2×mだけ隣のユニット列に割り当てられる。この2種類のみでユニットに割り当てられるすべてのプラケットが表される。例えば、イジング変数σ1,3がチェインαに割り当てられたとき、このイジング変数は、1種類目のプラケットに属する。そして、同じプラケットにあるイジング変数τ0,2、τ1,2、σ1,2が同じユニットのチェインβ、γ、δにそれぞれ割り当てられる。また、イジング変数σ1,3がチェインβに割り当てられたとき、このイジング変数は、2種類目のプラケットに属する。そして、同じプラケットにあるイジング変数τ1,3、σ2,3、τ1,2が同じユニットのチェインα、γ、δにそれぞれ割り当てられる。
【0121】
以上のように、1つのプラケットが割り当てられるユニットを割り当て部102が指定することで、すべてのプラケットが割り当てられるユニットが定まる。一般には、割り当て部102が最初に指定するプラケットは、どのプラケット列のものでも良い。最初に指定するプラケット列のイジング変数σがチェインαとチェインδとに割り当てられるかチェインβとチェインγとに割り当てられるかは任意である。したがって、1つのイジング変数が割り当てられるチェインの種類と位置とを割り当て部102が定めると、その変数が属するプラケット内の他の変数が割り当てられるチェインが定まる。これにより最初のプラケットの割り当てが決まる。上記の割り当て方法により、すべてのプラケット、つまりすべての変数が割り当てられるチェインが定まる。
【0122】
本実施形態では、割り当て部102は、まず、イジング変数σ1,2が割り当てられるチェインを指定する。次に、隣接するプラケット列を順に考え、割り当て部102が、j=3,4,...,Nのイジング変数σ1,jが割り当てられるチェインを指定する。その後、割り当て部102は、他のイジング変数の割り当てを行う。割り当て部102が、チェインを指定する際に関数c[i]を利用する。また、整数iを整数jで割ったときの余りを、i%jと表す。c[i]は、チェインの種類を表す。i%4が0のとき、チェインの種類はチェインαである。i%4が1のとき、チェインの種類はチェインβである。i%4が2のとき、チェインの種類はチェインγである。i%4が3のとき、チェインの種類はチェインδである。
【0123】
イジング変数σ1,2が割り当てられるチェインをc[c0](w0,k0,z0)と呼ぶことにする。c0は、0、1、2、3のいずれかである。このとき、イジング変数σ1,jが割り当てられるチェインの種類は、チェインc[c0+j-2]である。チェインが属するユニットは、以下の規則で導出される。イジング変数σ1,jがチェインc[c0+j-2](wj,kj,zj)に割り当てられているとき、イジング変数σ1,j+1が割り当てられるユニットを(wj+1,kj+1,zj+1)とする。(c0+j-2)%4が0か2のときは、(wj+1,kj+1,zj+1)は、式(8)のようになる。
【0124】
【0125】
(c0+j-2)%4が3のときは、(wj+1,kj+1,zj+1)は、式(9)のようになる。
【0126】
【0127】
(c0+j-2)%4が1のときは、(wj+1,kj+1,zj+1)は、式(10)のようになる。
【0128】
【0129】
イジング変数σ1,j+1は、上記の規則に従って得られるチェインc[c0+j-1](wj+1,kj+1,zj+1)に割り当てられる。この規則に基づいて、割り当て部102は、逐次的にj=2,3,...,Nのイジング変数σ1,jを割り当てることができる。
【0130】
次に、割り当て部102は、イジング変数σi+m,j-m(ただし、i+m<j-m)が割り当てられるチェインを指定する。チェインの種類は2つの添え字の和で決まる。この場合、添え字の和は、任意のmで、i+jである。したがって、チェインの種類は任意のmで等しい。m=1-iのとき、つまり、イジング変数σ1,i+j-1に関して、チェインの種類は、チェインc[c0+i+j-3]である。イジング変数σ1,i+j-1が割り当てられるユニットは、上記の規則によって決められる。他のmについては、mが1大きくなるごとに、イジング変数が割り当てられるユニットが、ユニット列内の右上隣のユニットへ変わる。右上隣のユニットへ移るときの座標の変化は、式(7)で表される。これを明示的に示すために、イジング変数σi+m,j-mが割り当てられるユニットを(wm,km,zm)としたとき、イジング変数σi+m+1,j-m-1が割り当てられるユニット(wm+1,km+1,zm+1)は、式(11)のようになる。
【0131】
【0132】
この規則に従って、割り当て部102は、逐次的に、イジング変数σi+m,j-mの割り当てを行うことができる。
【0133】
割り当て部102は、以上のようにして割り当てたイジング変数σを用いて、イジング変数τが割り当てられるチェインも指定できる。上記の通り、1つのユニットに割り当てられるプラケット内のイジング変数の添え字の相対的な関係とチェインとの組合せは2種類のみである。そのため、同じプラケットに属するイジング変数σが割り当てられたチェインから、イジング変数τが割り当てられるチェインが一意に決まる。具体的には、チェインαに割り当てられたイジング変数σi,jの添え字i,jを用いて、イジング変数τi-1,j-1は、同じプラケットのチェインβに割り当てられる。イジング変数τi,j-1は、同じプラケットのチェインγに割り当てられる。チェインβに割り当てられたイジング変数σi,jの添え字i、jを用いて、イジング変数τi,jは、同じプラケットのチェインαに割り当てられる。イジング変数τi,j-1は、チェインδに割り当てられる。割り当て部102は、このような割り当てを、ユニットに割り当てられた各プラケットに対して行う。以上の処理により、すべてのイジング変数τがチェインに割り当てられる。
【0134】
以上のように、割り当て部102が上記のc0、w0、k0、z0を指定すれば、逐次的に、すべてのイジング変数がペガサスグラフ上のチェインに割り当てられる。
【0135】
[動作の説明]
次に、本実施形態の動作を図を参照して説明する。
図17は、割り当て装置100の動作の流れを示すフローチャートである。また、
図18は、計算システム10によるイジング問題の計算動作の流れを示すフローチャートである。
【0136】
図17を参照して、割り当て装置100の動作の流れを説明する。
【0137】
まず、割り当て装置100の入力受付部101は、図示しない入力装置を介して、イジング問題の二値変数(イジング変数)の数Nと、1つのイジング変数σ0,1が割り当てられノードに関する情報であるc0、w0、k0、z0との入力を受付ける(ステップS101)。
【0138】
次に、割り当て装置100の割り当て部102は、入力されたイジング変数の数のイジング問題を、予め記憶されている式(5)の形のイジング問題として表し、イジング変数σとイジング変数τとをペガサスグラフ上のノードへ割り当てる(ステップS102)。このとき、式(5)において、どの変数とどの変数とが積の形で現れるかという情報だけが必要であり、式(5)におけるその積の係数の具体的な値は不要である。割り当て部102は、N、c0、w0、k0、z0の値に応じて、上述したように割り当てを実行する。
【0139】
次に、割り当て装置100の出力部103は、割り当て部102の割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する(ステップS103)。この出力は、例えば、ディスプレイなどの出力装置(図示せず)に対して行われてもよいし、電子ファイルとしての出力であってもよい。
【0140】
次に、計算システム10によるイジング問題の計算動作の流れを説明する。イジング問題を量子アニーリングマシン200で解く場合、動作の流れは、
図18のフローチャートに示されるような流れとなる。
【0141】
まず、割り当て装置100の出力(割り当てのリスト)と計算装置300の出力(イジング変数の係数)とが、入出力装置400に入力される(ステップS201)。さらに、ステップS201では、ユーザが、チェイン内のノードをつなぐエッジに対応する量子ビット間の結合の強さ(チェイン強度)を指定し、入出力装置400にその強さの値を入力する。ここで指定するチェイン強度は、すべてのチェインで同一である。
【0142】
次に、入出力装置400は、割り当てのリスト、イジング変数の係数、およびチェイン強度を使って、量子アニーリングマシン200で使用する量子ビットを決めるとともに、量子ビット間の結合の強さを算出する(ステップS202)。量子アニーリングマシン200は、上記の3つの入力があれば容易に計算を行える。ここで算出された量子ビット間の結合の強さには、チェイン内のエッジに対応する結合の強さも含まれている。結合の強さは、すべて、指定されたチェイン強度と等しくなっている。
【0143】
次に、入出力装置400は、使用対象の量子ビットのリストと量子ビット間の結合の強さとを量子アニーリングマシン200へ入力する(ステップS203)。
【0144】
次に、量子アニーリングマシン200は入力で指定された量子ビットにおいて、入力で指定された量子ビット間の結合の強さを実現する(ステップS204)。
【0145】
次に、量子アニーリングマシン200が量子アニーリングを実行する(ステップS205)。具体的には、量子アニーリングマシン200内の量子ビットの状態が、初期状態から、量子ビット全体のエネルギーを最低にする状態へ遷移する。各量子ビットは、一般に2つの状態を取り得るが、最終的にどちらかの状態になる。
【0146】
そして、このときの各量子ビットの状態のリストが、量子アニーリングマシン200から入出力装置400に出力される(ステップS206)。
【0147】
次に、入出力装置400は、量子ビットの状態のリストをイジング変数の値のリストに変換する(ステップS207)。変換結果は、例えば、σ1,2=0、σ1,3=2、...というものである。
【0148】
入出力装置400は、このリストを出力する(ステップS208)。この出力は、例えば、ディスプレイなどの出力装置(図示せず)に対して行われてもよいし、電子ファイルとして出力されてもよい。
【0149】
[効果の説明]
本実施形態では、割り当て装置100が、LHZ方式のコスト関数によって表されたイジング問題の変数をペガサスグラフ上のノードに割り当てる。上述したように、本実施形態による割り当てによれば、ペガサスグラフ上でのチェインの配置を工夫することにより、ノードの数が少ないチェインが構成される。その結果、全体の使用ノード数を少なくすることができる。また、割り当て装置100は、各チェインに含まれるノード数に偏りのない割り当てを実現することができる。なお、本実施形態では、各チェインに含まれるノード数は、イジング問題の変数の数Nに依存せず、2である。
【0150】
比較のため、式(5)のコスト関数が与えられたとき、非特許文献1に記載された割り当て方法に基づく割り当てを行うことを考える。非特許文献1に記載された割り当て方法に基づく割り当ての中でも、チェインに含まれるノード数に偏りのない方法を用いる。この場合、割り当てを行うことができる最大の変数の数Nは19である。この割り当てでは、例えば、N=19の場合、各チェインに含まれるノードの数は15である。
【0151】
同様に、式(5)のコスト関数が与えられたとき、非特許文献2に記載された割り当て方法に基づく割り当てを行うことを考える。
図19には、非特許文献2に記載された割り当て方法に基づく割り当てについての実験結果と本実施形態の割り当ての結果とが比較されている表が示されている。この例では、変数の数N=30である。非特許文献2に記載された割り当て方法に基づく割り当てでは、試行ごとに割り当てが異なる。そこで、非特許文献2に記載された割り当て方法に基づく割り当てを100回試行した。各試行において、それぞれのチェインに含まれるノードの数のチェイン間(変数間)での平均と標準偏差とを計算した。そして、チェイン間での平均と分散とを計算し、100回の試行における平均値と最小値とを計算した。計算結果が、
図19の表に示されている。100回の試行におけるチェインに含まれるノード数の平均値は2.2であり、最小値は1.9であった。本実施形態の割り当てでは、チェインに含まれるノード数は2である。本実施形態におけるノード数は、非特許文献2に記載された割り当ての100回の試行のノード数の平均値よりも小さな値になっている。すなわち、本実施形態の割り当ての方が全体の使用ノード数が少ない。しかし、非特許文献2に記載された割り当て方法の場合のチェインに含まれるノード数の平均の最小値は1.9である。すなわち、試行によっては非特許文献2に記載された割り当て方法に基づく割り当ての方が本実施形態の割り当てより少ない使用ノード数になる。しかし、非特許文献2に記載された割り当て方法に基づく割り当てのチェインに含まれるノード数の標準偏差の100回の試行における平均値は1.5であり、最小値は1.0であった。つまり、非特許文献2に記載された割り当て方法に基づく割り当てでは、いずれの試行においてもチェインに含まれるノード数に偏りがある。本実施形態の割り当てでは、すべてのチェインにおいてノード数は2であるため、ノード数の偏りがない。したがって、本実施形態の割り当ては、チェインに含まれるノード数に偏りのない割り当てを実現できる。
【0152】
次に、本発明の概要を説明する。
図20は、本発明による割り当て装置の主要部を示すブロック図である。割り当て装置800は、LHZ方式のコスト関数を表したイジング問題の二値変数を、二値変数の数と二値変数の割り当てを決めるためのパラメータとに応じて、ペガサスグラフ上のノードに割り当てる割り当て手段801(実施形態では、割り当て部102で実現される。)と、二値変数のノードへの割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する出力手段802(実施形態では、出力部103で実現される。)とを含み、割り当て手段801は、イジング問題のコスト関数で積になる二値変数の組の関係性を表した周期的構造を、ペガサスグラフ上のノードとエッジとにおける周期的構造に反映させ、二値変数をノードに割り当てる。
【0153】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0154】
100 割り当て装置
101 入力受付部
102 割り当て部
103 出力部
150 ネットワークインタフェース
151 メモリ
152 プロセッサ
200 量子アニーリングマシン
300 計算装置
400 入出力装置
800 割り当て装置
801 割り当て手段
802 出力手段