(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-19
(45)【発行日】2024-08-27
(54)【発明の名称】割り当て装置、割り当て方法、及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20240820BHJP
G06N 10/60 20220101ALI20240820BHJP
G06Q 10/047 20230101ALI20240820BHJP
【FI】
G06N99/00 180
G06N10/60
G06Q10/047
(21)【出願番号】P 2020123262
(22)【出願日】2020-07-17
【審査請求日】2023-06-07
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人新エネルギー・産業技術総合開発機構「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/次世代コンピューティング技術の開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】宮崎 涼二
【審査官】山本 俊介
(56)【参考文献】
【文献】特表2016-531343(JP,A)
【文献】米国特許出願公開第2019/0087388(US,A1)
【文献】齋藤 和広ほか,配送計画問題への量子アニーリング適用に関する初期評価,第12回データ工学と情報マネジメントに関するフォーラム (第18回日本データベース学会年次大会),2020年03月04日
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
巡回セールスマン問題の都市数の入力を受付ける入力受付部と、
QUBO(Quadratic Unconstrained Binary Optimization)問題として表された前記巡回セールスマン問題の前記都市数に応じた二値変数を、キメラグラフ上のノードに割り当てる割り当て部と、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力する出力部と
を有し、
前記割り当て部は、前記QUBO問題の目的関数において積にならない前記二値変数の組よりも、前記QUBO問題の目的関数において積になる前記二値変数の組を、優先して、前記キメラグラフにおいてエッジで相互につながっている前記ノードへと割り当てる
割り当て装置。
【請求項2】
前記割り当て部は、
チェイン内の全ての前記ノードが他の所定数のチェインの前記ノードと同じユニットを共有するよう各チェインを構成するノードを決定し、前記チェインはエッジでつながっている一連のノード群であり、前記ユニットは、前記キメラグラフを構成する単位グラフであり、
特定のノードの少なくとも一つが前記チェインの端に配置されるように、前記チェインに前記二値変数を割り当て、前記特定のノードは、前記QUBO問題の目的関数において積になる前記二値変数が割り当てられるチェインとエッジでつながらない前記ノードであり、
前記チェインの端から前記特定のノードを除去し、
除去されていない前記特定のノードによりつながっている第1の部分チェインと第2の部分チェインとを含む前記チェインの前記第1の部分チェインと前記第2の部分チェインとを、前記特定のノードを介さずにつなぐように、前記キメラグラフにおいて前記チェインを構成するノードを変更し、前記特定のノードを前記チェインから除去することにより、前記二値変数の前記ノードへの最終的な割り当てを決定する
請求項1に記載の割り当て装置。
【請求項3】
前記目的関数が下記の第1の式のHで表され、前記QUBO問題の前記二値変数は当該第1の式において添え字で区別されるxである、請求項1又は2に記載の割り当て装置。
(第1の式)
【数18】
ただし、Nは、前記巡回セールスマン問題の前記都市数であり、x
i,aは、都市iをa番目に訪問するか否かを表す変数であり、W
ijは、都市iと都市jの距離を表す整数であり、Cは正の所定の値である。
【請求項4】
前記キメラグラフを構成する単位グラフであるユニットが2r個(ただし、rは、自然数)の前記ノードにより構成されているとしたときの、前記キメラグラフのm行n列目の前記ユニットのk番目の前記ノードの識別番号f
r(m,n,k)を以下の第2の式で表すとすると、
前記割り当て部は、r+2≦N≦2r+1の場合、iの値が0, 1, … , r-1のいずれかである二値変数x
i,aを以下の第3の式で表されたN+3個の前記ノードに割り当て、iの値がr, r+1, …, N-2のいずれかである二値変数x
i,aを以下の第4の式で表されたN+3個の前記ノードに割り当てる
請求項3に記載の割り当て装置。
(第2の式)
【数19】
ただし、m, n, kは0以上の整数であり、Lは整数であり、m及びnの上限値がL-1である。
(第3の式)
【数20】
(第4の式)
【数21】
【請求項5】
前記キメラグラフを構成する単位グラフであるユニットが2r個(ただし、rは、自然数)の前記ノードにより構成されているとしたときの、前記キメラグラフのm行n列目の前記ユニットのk番目の前記ノードの識別番号f
r(m,n,k)を以下の第2の式で表すとすると、
前記割り当て部は、2r (p - 1) + 2≦N≦2rp + 1の場合(pは2以上の自然数)、
iの値が0, 1, …, r-1のいずれかである二値変数x
i,aを以下の第5の式で表されたp (N + 3)個の前記ノードに割り当て、
iの値がrp, rp + 1, … , r(p+1) -1のいずれかである二値変数x
i,aを第6の式で表されたp (N + 3)個の前記ノードに割り当て、
iの値がrq, rq + 1, … , r(q+1) -1(ただし、qは1≦q<pを満たす整数)のいずれかである二値変数x
i,aを、二値変数x
i-r,aが割り当てられている前記ノードの位置から前記ユニットに関して行を+1、列を+1だけ並行移動した位置の前記ノードに割り当て、ただし、その際の割り当て先の前記ノードがf
r(p(N + 1), pa + q, i - rq)で表される前記ノードである場合には当該ノードの代わりにf
r(pa + 2p + q, pa + q, i - r(q - 1))で表される前記ノードに割り当て、
iの値がr(p + q), r(p + q) + 1, … , r(p + q + 1) -1(ただし、qは1≦q<pを満たす整数)のいずれかである二値変数x
i,aを、二値変数x
i-r,aが割り当てられている前記ノードの位置から前記ユニットに関して行を+1、列を+1だけ並行移動した位置の前記ノードに割り当て、ただし、その際の割り当て先の前記ノードがf
r(pa + q, p(N + 1), i - r(p + q-1))で表される前記ノードである場合には当該ノードの代わりにf
r(pa + q, pa + 2p + q , i - r(p + q))で表される前記ノードに割り当てる
請求項3に記載の割り当て装置。
(第2の式)
【数22】
ただし、m, n, kは0以上の整数であり、Lは整数であり、m及びnの上限値がL-1である。
(第5の式)
【数23】
(第6の式)
【数24】
【請求項6】
前記割り当て部は、4≦N≦r+1の場合、二値変数x
i,aを以下の第7の式で表されたN個の前記ノードに割り当てる
請求項4又は5に記載の割り当て装置。
(第7の式)
【数25】
【請求項7】
前記入力受付部は、さらに、前記rの値の入力を受付け、
前記割り当て部は、前記rの値として、入力された前記値を用いる
請求項4乃至6のいずれか1項に記載の割り当て装置。
【請求項8】
巡回セールスマン問題の都市数の入力を受付け、
QUBO問題として表された前記巡回セールスマン問題の前記都市数に応じた二値変数を、キメラグラフ上のノードに割り当て、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力し、
前記ノードへの前記二値変数の割り当てにおいて、前記QUBO問題の目的関数において積にならない前記二値変数の組よりも、前記QUBO問題の目的関数において積になる前記二値変数の組を、優先して、前記キメラグラフにおいてエッジで相互につながっている前記ノードへと割り当てる
割り当て方法。
【請求項9】
巡回セールスマン問題の都市数の入力を受付ける入力受付ステップと、
QUBO問題として表された前記巡回セールスマン問題の前記都市数に応じた二値変数を、キメラグラフ上のノードに割り当てる割り当てステップと、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力する出力ステップと
をコンピュータに実行させ、
前記割り当てステップでは、前記QUBO問題の目的関数において積にならない前記二値変数の組よりも、前記QUBO問題の目的関数において積になる前記二値変数の組を、優先して、前記キメラグラフにおいてエッジで相互につながっている前記ノードへと割り当てる
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は割り当て装置、割り当て方法、及びプログラムに関し、特に、巡回セールスマン問題のキメラグラフへの変換に関する。
【背景技術】
【0002】
巡回セールスマン問題のキメラグラフへの変換は、巡回セールスマン問題をQUBO(Quadratic Unconstrained Binary Optimization)問題として表した際の目的関数と、ノードとエッジで構成された特定のキメラグラフとの対応関係の特定に相当する。キメラグラフへの変換を実施する背景には、量子アニーリングマシンなどによって巡回セールスマン問題を解く際にキメラグラフへの変換が必要であるということがある。つまり、巡回セールスマン問題をQUBO問題として表し、量子アニーリングなどによって解く際に、そのような変換が必要である。
【0003】
一般にQUBO問題をキメラグラフ上で表現するためには、目的関数の変数をノードへ適切に割り当てる必要がある。
【0004】
巡回セールスマン問題に限らず一般のQUBO問題に対して、条件を満たした割り当てをみつける方法の一例が非特許文献1に、もう一つの例が非特許文献2に記載されている。
【先行技術文献】
【非特許文献】
【0005】
【文献】P. I. Bunyk et al, “Architectural Considerations in the Design of a Superconducting Quantum Annealing Processor”, IEEE Transactions on Applied Superconductivity, vol. 24, 2014
【文献】J. Cai et al., “A practical heuristic for finding graph minors”, arXiv:1406.2741 (2014).
【発明の概要】
【発明が解決しようとする課題】
【0006】
非特許文献1に記載されている方法はどのようなQUBO問題にも適用できる方法である。しかしながら、この方法では、すべてのQUBO問題に対して同じ割り当てを行うため、それぞれのQUBO問題についてキメラグラフ上で使用するノードの数をより少なくできる割り当てがある可能性がある。非特許文献2に記載されている方法は、ヒューリスティックな方法である。この方法では、割り当てはみつかるが、毎回の実施で同じ割り当てを得られる保証はない。特に、使用するノードの数を少なくできる保証もない。したがって、上述の二つの方法では、巡回セールスマン問題をキメラグラフ上で表現して解く際に、使用するノード数の少ない割り当てを見つけられない、あるいは見つけ出せる保証がない、という課題があった。
【0007】
本開示はこのような問題を解決するためになされたものであり、巡回セールスマン問題に対応するQUBO問題の変数と、このQUBO問題を解くためのグラフのノードとの対応関係として、使用するノード数を抑制した対応関係を得ることができる割り当て装置、割り当て方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本開示の第1の態様にかかる割り当て装置は、
巡回セールスマン問題の都市数の入力を受付ける入力受付部と、
QUBO(Quadratic Unconstrained Binary Optimization)問題として表された前記巡回セールスマン問題の前記都市数に応じた二値変数を、キメラグラフ上のノードに割り当てる割り当て部と、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力する出力部と
を有し、
前記割り当て部は、前記QUBO問題の目的関数において積にならない前記二値変数の組よりも、前記QUBO問題の目的関数において積になる前記二値変数の組を、優先して、前記キメラグラフにおいてエッジで相互につながっている前記ノードへと割り当てる。
【0009】
本開示の第2の態様にかかる割り当て方法では、
巡回セールスマン問題の都市数の入力を受付け、
QUBO問題として表された前記巡回セールスマン問題の前記都市数に応じた二値変数を、キメラグラフ上のノードに割り当て、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力し、
前記ノードへの前記二値変数の割り当てにおいて、前記QUBO問題の目的関数において積にならない前記二値変数の組よりも、前記QUBO問題の目的関数において積になる前記二値変数の組を、優先して、前記キメラグラフにおいてエッジで相互につながっている前記ノードへと割り当てる。
【0010】
本開示の第3の態様にかかるプログラムは、
巡回セールスマン問題の都市数の入力を受付ける入力受付ステップと、
QUBO問題として表された前記巡回セールスマン問題の前記都市数に応じた二値変数を、キメラグラフ上のノードに割り当てる割り当てステップと、
前記二値変数の前記ノードへの割り当て結果に基づいて、前記二値変数と前記ノードとの対応関係を示す情報を出力する出力ステップと
をコンピュータに実行させ、
前記割り当てステップでは、前記QUBO問題の目的関数において積にならない前記二値変数の組よりも、前記QUBO問題の目的関数において積になる前記二値変数の組を、優先して、前記キメラグラフにおいてエッジで相互につながっている前記ノードへと割り当てる。
【発明の効果】
【0011】
上述の態様によれば、巡回セールスマン問題に対応するQUBO問題の変数と、このQUBO問題を解くためのグラフのノードとの対応関係として、使用するノード数を抑制した対応関係を得ることができる割り当て装置、割り当て方法、及びプログラム提供することができる。
【図面の簡単な説明】
【0012】
【
図1】K(4)のユニットが4行4列に並んでいるキメラグラフを示す模式図である。
【
図3】3つのチェインがエッジでつながっていることを示す模式図である。
【
図4】実施の形態1にかかる計算システムの一例を示す模式図である。
【
図5】実施の形態1にかかる割り当て装置の機能的な構成の一例を示すブロック図である。
【
図6】実施の形態にかかる割り当て装置のハードウェア構成の一例を示すブロック図である。
【
図8】四つめの過程が行われる前の使用対象のノードをブロックに分けて示す模式図である。
【
図9】四つめの過程が行われた後の使用対象のノードをブロックに分けて示す模式図である。
【
図10】ノードの位置を表す番号の例を示す模式図である。
【
図11】実施の形態1によるN=5の場合の割り当て結果を示す模式図である。
【
図12】
図11に示される割り当てにおいて、各バンドルが使用するユニット群を示す模式図である。
【
図13】三つめの過程が終わった段階のバンドルの配置を示す模式図である。
【
図14】実施の形態1によるN=6の場合の割り当て結果を示す模式図である。
【
図15】
図14に示される割り当てにおいて、各バンドルが使用するユニット群を示す模式図である。
【
図16】実施形態1にかかる割り当て装置の動作の流れを示すフローチャートである。
【
図17】実施形態にかかる計算システムによる巡回セールスマン問題(QUBO問題)の計算動作の流れを示すフローチャートである。
【
図18】都市数8の巡回セールスマン問題についての実験結果を表す表である。
【
図19】実施の形態2にかかる計算システムの一例を示す模式図である。
【
図20】実施の形態2にかかる割り当て装置の動作の流れを示すフローチャートである。
【発明を実施するための形態】
【0013】
以下の説明では、変数の添え字について、添え字であることを明確にすべく、アンダーバーを用いて表すことがある。例えば、x_iという表記は、iがxの添え字であることを示す。
【0014】
実施の形態の理解を助けるために、以下で、巡回セールスマン問題、QUBO問題、キメラグラフ、QUBO問題として表された巡回セールスマン問題をキメラグラフ上で表すこと、およびそれらと関連している量子アニーリングマシンについて説明する。
【0015】
巡回セールスマン問題は、セールスマンが与えられた都市を全て一回ずつ訪問して最初の都市に戻ってくるときに、どの順番で回れば経路が最短になるか、という問題であり、解くことの困難な組合せ最適化問題である。巡回セールスマン問題の具体的問題は都市数と都市間の距離によって与えられる。巡回セールスマン問題は以下で説明するQUBO問題として表すこともできる。
【0016】
QUBO問題とは、一般に次のように表される。まず0と1の値を取り得る変数、すなわち二値変数をたとえばN個用意する。それらをx_iと表す。ただしi は 1, 2, ..., Nの値を取り得て、iの値の違いによりx_iを区別する。そして目的関数Hを以下の式(1)のように定義する。
【0017】
【0018】
式(1)の右辺のQ_ijは行列Qのi行j列の値であり、iとjは、ともに1, 2, ..., Nの値を取り得る。Q_ijは実数の値を取ることができる。x_iは0か1であるため、x_i×x_i = x_iであることに注意する。すなわち、Q_ii x_i x_i = Q_ii x_iである。したがって、式(1)は0か1の値のみをとるN個の変数x_iからなる1次と2次の実数係数多項式の一般的表現である。また、i>jのQ_ijはすべて0としても一般的表現として十分であるため、以下ではi>jのQ_ijはすべて0とし、i≦jのQ_ijだけを考える。QUBO問題は行列Qが具体的に与えられたときに式(1)のHを最小にするx_i (i = 1, 2, ..., N) の値の組合せをみつける問題である。
【0019】
巡回セールスマン問題はQUBO問題として表すことができる。つまり巡回セールスマン問題の具体的問題に対応する行列Qが必ず存在し、それを用いて巡回セールスマン問題を式(1)の形で表すことができる。別の言い方をすると、巡回セールスマン問題は、目的関数の最小値を与える変数の組み合わせを探す問題として表すことができ、しかもその目的関数は、0か1の値のみをとる変数の1次と2次の実数係数多項式として表せる。巡回セールスマン問題のQUBO問題としての表現は複数存在する。つまり対応する行列Qが複数存在する。以下の式(2)はそれら表現のうちの一つである。この表現ではQUBO問題の目的関数Hが式(2)で表される。
【0020】
【0021】
式(2)において、添え字で区別されるxがQUBO問題の二値変数である。すなわち、式(2)でx_i,aやx_j,a+1のように添え字を持つxはQUBO問題の二値変数であり、0と1の値を取り得る。この表現においてはそれぞれのxに対して添え字が二つある。一つ目の添え字(iおよびjと表されているもの)は巡回セールスマン問題の具体的問題の都市を指定し、0からN-2の整数を取り得る。ここでNは都市数を表す。xのもう一つの添え字(a、a+1、N-2および0と表されているもの)は何番目に訪問する都市であるかを意味し、0からN-2の整数を取り得る。なお、これらの添え字の値が、N-1にならない理由については、後述する。x_i,aは0と1の値を取り得るが、x_i,a = 0は都市iにa番目に訪問しないことを意味し、x_i,a = 1は都市iにa番目に訪問することを意味する。このように、x_i,aは、都市iをa番目に訪問するか否かを表す変数である。全てのxの値を決めると、それが後で述べる条件を満たすとき、どの都市に何番目に訪問するかが一意に決まる。つまりxの値の組合せと都市を訪問する順番が対応する。W_ijは都市iと都市jの間の距離を表す整数である。また、Cは調節すべきパラメータである。後述するように、Cを調節することで、Hを最小にするxの値の組み合わせが巡回セールスマン問題の解になるようにすることができる。ただしCは正の所定の値とする。
【0022】
式(2)は0と1のみを取る変数x_i,aの1次と2次の多項式であるため、式(1)の形で表すことができる。ただし式(2)の添え字と式(1)の添え字は別のものである。式(2)の二つの添え字iとaによる組(i, a)が式(1)におけるiやjなどに対応することに注意する。式(2)の添え字のどの組と式(1)のどの添え字を対応させるかには任意性がある。たとえば(i, a) = (0,0)を式(1)のi = 1に対応させ、(i, a) = (0, 1)を式(1)のi = 2に対応させるとすると、式(2)を式(1)の形で書いたときQ_11 = Q_22 = -2C、Q_12 = 2Cである。ただしW_00 = 0であることに注意する。さらに(i, a) = (1, 1)を式(1)のi = 3に対応させるとすると、式(2)を式(1)の形で書いたときQ_33 = -2C、Q_13 = W_01、Q_23 = 2Cである。このように式(2)は式(1)の形で表すことができ、そしてそのように表したときの行列Qの各要素はWとCで表される。行列Qの各要素が具体的にどのように表されるかは、式(2)をxに関して展開し、その係数を確認すれば得ることができる。
【0023】
xの値の組合せが都市を巡回する経路を一意に決めるための条件は以下の二つが満たされることである。一つ目は、iの値が同じでaの値が異なるx_i,aのうち一つだけが1で他が全て0になり、しかもそれが全てのiの値について成り立つことである。二つ目は、aの値が同じでiの値が異なるx_i,aのうち一つだけが1で他が全て0になり、しかもそれが全てのaの値について成り立つことである。一つ目を満たすことは、都市iに訪問する回数が1であることを意味する。二つ目を満たすことは、a番目に訪問する都市が一つであることを意味する。xの値の組合せとしてはこれらを満たさないものもあり得るが、その組合せは、例えば同じ都市に複数回訪問することや一度に複数の都市に訪問するといったことを表すため、求めようとしている巡回経路に対応しない。
【0024】
xの値の組合せが都市を巡回する経路を一意に決めるための条件を満たすとき、式(2)のCを係数とする項は0になる。そのときHは式(2)の最初の三項(Cを係数とする項以外の項)のみになる。また、W_ijは都市iと都市jの間の距離を表すため、xの値の組合せが対応する経路において、a番目に都市iに訪問しa+1番目に都市jに訪問する場合、W_ij x_i,a x_j,a+1はW_ijとなり、そうでない場合、0となる。したがって、W_ij x_i,a x_j,a+1を全てのiとjについて和を取ると、そのxの値の組合せに対応する経路においてa番目に訪問する都市からa+1番目に訪問する都市までの距離が得られる。さらにaについても和を取れば、xの値の組合せに対応する経路の総距離が得られる。
【0025】
ただし式(2)において、N-2番目に訪問する都市からN-1番目に訪問する都市までの距離と、N-1番目に訪問する都市からN番目に訪問する都市(最初に訪問する都市と同一の都市)までの距離については注意を要する。それは、式(2)では、都市N-1にN-1番目に訪問する経路のみを扱っているためである。巡回経路は、どの都市からどの都市へ移動するかが同じでも、訪問する番号の異なる経路があり得る。たとえば、訪問する番号を1ずつ増やし、それまでN-1番目に訪問する都市だったものをN番目に訪問することにすると、どの都市からどの都市へ移動するかは同じだが、訪問する番号は異なる経路が得られる。この二つの経路は総距離が同じである。総距離の短い巡回経路をみつけるという目的において、知るべきことはどの都市からどの都市へ移動するかである。この任意性を取り除くために、都市N-1にN-1番目に訪問する経路のみを考えている。そのため、xの添え字のiやaはN-1にならない。この考え方の下で構成されている式(2)において、N-2番目に訪問する都市からN-1番目に訪問する都市(つまり都市N-1)までの距離はW_i,N-1 x_i,N-2をiについて和を取ることによって与えられる。そして、N-1番目に訪問する都市(つまり都市N-1)からN番目に訪問する都市(最初(0番目)に訪問される都市と同一の都市)までの距離はW_N-1,j x_j,0をjについて和を取ることによって与えられる。
【0026】
以上により、xの値の組合せが都市を巡回する経路を一意に決めるための条件を満たすとき、式(2)のCを係数とする項は0になり、その他の項はxの値の組合せに対応する経路の総距離になる。したがって、このとき式(2)のHはxの値の組合せに対応する経路の総距離を得る。
【0027】
逆に、xの値の組合せが都市を巡回する経路を一意に決めるための条件を満たしていないとき、式(2)のC(正の値)を係数とする項は正の値をとり、Hが大きくなる。したがって、Cを大きくしておくことにより、巡回経路に対応しないxの値の組合せに対応するHは大きい値になる。したがって、Hの値を小さくすることが、巡回経路に対応しないxの値の組合せを選ばないことにもつながる。
【0028】
以上により、具体的な都市配置の巡回セールスマン問題についてそのW_ijが与えられたとき、それと併せてパラメータCを決めれば、式(2)のHが定まる。Hは0と1を取る変数xの1次および2次の多項式であるため、QUBO問題の目的関数とみなせる。そして、そのHを最小にするxの値の組合せをみつけることが、その配置の都市を巡回する最短経路をみつけることと対応する。つまり、巡回セールスマン問題が式(2)のQUBO問題として表される。
【0029】
次にキメラグラフについて説明する。
図1は、キメラグラフの一例を示す図である。キメラグラフは複数のノード900とそれらをつなぐエッジ901からなる。キメラグラフはユニット902を並べて構成される。ユニットは、キメラグラフを構成する単位グラフである。キメラグラフにおいて、ユニット902は正方格子状、もしくはそれに変形可能な構造で並べられる。以下では縦方向と横方向からなる正方格子状を考える。キメラグラフは、ユニット902内のノード900の個数と、ユニット902の縦方向(列方向とも称す)の個数と横方向(行方向とも称す)の個数で特定される。
【0030】
以下でキメラグラフのユニットをK(r)と表すことにする。K(r)にはr個のノードが2組、合計2r個のノードがあり、一方のr個のノードが他方のr個のノードのすべてにエッジでつながっている。すなわち、キメラグラフは、ノード数が2rの完全2部グラフである。ユニット内の2組のr個のノードのうち、一方の組のr個のノードが横方向の両隣のユニットのユニット内で同じ場所にあるノードとエッジでつながり、他方の組のr個のノードが縦方向の両隣のユニットのユニット内で同じ場所にあるノードとエッジでつながる。ただしグラフの端に位置するユニットは、両隣でなく、この端と反対側にあるユニットとのみエッジでつながる。なお、
図1では、ユニットがK(4)で縦方向と横方向ともに4個ずつ(合計16個)ある場合のキメラグラフを示しているが、上述の通りユニット内のノード数及びユニット数は
図1に示した例に限られない。
【0031】
次にQUBO問題として表された巡回セールスマン問題をキメラグラフ上で表現することを説明する。QUBO問題として表された巡回セールスマン問題をキメラグラフ上で表現することは、巡回セールスマン問題をQUBO問題として表しその目的関数の変数を適切にキメラグラフのノードに割り当てることに相当する。何をもって適切とするかは後述する。割り当ては、QUBO問題の変数、すなわち目的関数の変数のそれぞれを割り当てるノードを列挙することで表現される。このとき一つの変数を割り当てるノードは複数でも良い。
【0032】
目的関数の変数をキメラグラフのノードへ割り当てることの背景には、そうすることで、キメラグラフを用いるマシン、たとえば量子アニーリングマシンによってQUBO問題を解くことができる、ということがある。必ずしも量子アニーリングマシンでなくても良いが、以下ではQUBO問題を解く際に量子アニーリングマシンを使用することを想定する。
【0033】
量子アニーリングマシンは量子ビット、および量子ビット間の結合をもつ。量子ビットには主に二つの状態があり、その二つのどちらの状態にあるかということを、2値の変数として扱うことができる。また量子ビット全体のエネルギーを定義することができる。そのエネルギーが最も低くなる量子ビットの状態の組合せをみつける方法の一つを量子アニーリングと呼ぶ。量子アニーリングマシンは量子アニーリングを実行し、エネルギーが最も低くなる量子ビットの状態の組合せをみつけることを目指す。これを、次のようにQUBO問題を解くことに利用できる。量子ビットの二つの状態をQUBO問題の変数に対応させ、量子ビット全体のエネルギーをQUBO問題の目的関数に対応させる。これにより、量子アニーリングマシンで量子ビット全体のエネルギーの低い状態を得ることが、対応するQUBO問題の目的関数の値を小さくする変数の組合せをみつけることになる。
【0034】
量子アニーリングマシンの量子ビット全体のエネルギーをQUBO問題の目的関数に対応させるためには、量子ビットの二つの状態をQUBO問題の変数に対応させるとともに、量子ビット間の結合を目的関数内の変数の積に対応させる必要がある。結合と変数の積の対応関係は、i番目の量子ビットとj番目の量子ビットの結合の強さを目的関数のQ_ijと等しくすることで成り立つ。そして目的関数の行列Qのすべての要素を同様に量子ビット間の結合の強さに対応させると、量子ビット全体のエネルギーがQUBO問題の目的関数に対応する。したがって、量子アニーリングマシンでQUBO問題を解くためには、行列Qを量子アニーリングマシンに入力し、量子ビット間の結合の強さをQ_ijと一致するように調節する必要がある。しかし、そもそも量子アニーリングマシンの量子ビット間の結合がすべての量子ビットの組み合わせについて存在するとは限らない。実際、D-Wave Systems Inc. が開発した量子アニーリングマシンにおける量子ビットの結合は、キメラグラフの構造になっている。すなわち、量子ビットはキメラグラフのノードにあり、量子ビット間の結合はキメラグラフのエッジに対応する。
【0035】
以上説明した通り、QUBO問題の変数、量子ビット、キメラグラフのノードの三つが対応関係をもつ。同時に、QUBO問題の変数の積、量子ビットの結合、キメラグラフのエッジの三つも対応関係をもつ。QUBO問題を量子アニーリングマシンで解くためには、QUBO問題の変数と量子ビットを対応させるが、それはすなわち、QUBO問題の変数とキメラグラフのノードを対応させることに相当する。そして同時に、QUBO問題の変数の積を量子ビットの結合に対応させるべく、変数の積をキメラグラフのエッジに対応させることが必要となる。以上説明した通り、量子アニーリングマシンでQUBO問題を解くとき、問題の変数をキメラグラフのノードに割り当てることになる。また、その割り当ては、QUBO問題の変数の積がキメラグラフのエッジに対応するような割り当てである必要がある。それを満たすとき、適切な割り当てになる。この適切な割り当てが得られると、QUBO問題の変数の積をキメラグラフ上のどの量子ビット間の結合に対応させればよいかがわかる。この割り当てとQUBO問題の行列Qを量子アニーリングマシンに入力することで、量子ビット間の結合の強さを行列Qと対応させることができる。その結果、量子アニーリングマシンがQUBO問題を解くことができる。
【0036】
上述の通り、一般にQUBO問題をキメラグラフ上で表現するためには、変数をノードへ適切に割り当てる必要がある。一つの変数を複数のノードに割り当ててもよい。どのような割り当てが適切かを具体的に述べるために、まずチェインを導入する。チェインは、一つの変数を割り当てたノードの集合、すなわち同一の変数が割り当てられるノードの集合のことである。したがって、チェインはエッジでつながっている一連のノード群である。ただし、チェイン内のノードは一つでも複数でもよい。チェイン内のノード数が複数の場合、チェイン内の全てのノードは同一チェイン内のノードの少なくとも一つとエッジでつながっていなくてはならない。
図2は、チェインの例を示す模式図である。
図2において、ノードに書かれた番号はチェインの番号であり、同じ番号が書かれたノードは同一のチェインに属している。
図2では、チェイン910、911、912、913の四つのチェインが示されている。
【0037】
適切な割り当ての条件は、QUBO問題の目的関数において積になる変数の全ての組に対して必要とされる条件である。適切な割り当ての条件は、QUBO問題の目的関数で積になる変数の組の二つのチェインがエッジでつながっていることである。チェインがエッジでつながるとは、一方のチェイン内のノードの少なくとも一つが、他方のチェイン内のノードの少なくとも一つとエッジでつながることである。ここで、積になる変数の組とは、一般に、式(1)においてQ_ij ≠ 0であるiとjで表されるx_iとx_jの組のことである。Q_ij = 0の場合、x_iとx_jの組は目的関数に積として現れていないと解釈する。しかし式(1)では、表現の一般性を保つために0であるQ_ijも含めて表している。同様のことを式(2)について考える際、式(2)の添え字と式(1)の添え字は別のものであること、式(2)の二つの添え字iとaによる組(i, a)が式(1)におけるiやjなどに対応することに注意する。また式(2)においては、係数が0のx_iとx_jの積(すなわち、Q_ij = 0に対応するx_iとx_jの積)は、もともと表されていない。式(2)では、x_i,aとx_i,a+1は積になっているが、x_i,aとx_i+1,a+2は積にならない。具体例として式(2)でx_1,1と積になる変数をx_j,bと表すと、j又はbは次の四つのケースのどれかに該当する。1つ目のケースは、j = 1であり、2つ目のケースはb = 1であり、3つ目のケースはb = 0であり、4つ目のケースは b = 2である。一つ目のケースに該当するのは、x_1,0、x_1,1、...、x_1,N-2である。二つ目のケースに該当するのは、x_0,1、x_1,1、...、x_N-2,1である。三つ目のケースに該当するのは、x_0,0、x_1,0、...、x_N-2,0である。四つ目のケースに該当するのは、x_0,2、x_1,2、...、x_N-1,2である。そしてx_1,1はこれ以外の変数とは積にならない。1つ目のケースと2つ目のケース(j = 1とb = 1)に対応する積は式(2)のCを係数とする和を展開すると現れる。3つ目のケースと4つ目のケース(b = 0とb = 2)に対応する積は式(2)の一つ目の和の中に現れる。
【0038】
例えば、
図2に示されているチェインは、以下の式(3)で表されるQUBO問題の目的関数のキメラグラフへの適切な割り当てを与える。式(3)はQUBO問題の変数が四つあり、任意の2変数の組が目的関数で積として現れている。なお、式(3)の変数の番号と
図2のチェインの番号が対応する。
【0039】
【0040】
割り当てについての条件の背景は以下の通りである。量子アニーリングマシンでQUBO問題を解くことを想定して説明した通り、巡回セールスマン問題を解くために、QUBO問題の目的関数の変数の積とキメラグラフのエッジを対応させる必要がある。したがって、変数のノードへの割り当ての条件は、素朴には、目的関数で積になっている二つの変数を割り当てたノードどうしがエッジでつながっていることである。しかしキメラグラフでは全てのノードの組どうしがエッジでつながっているわけではないため、これは必ずしも実現できない。そこでチェインを利用する。
【0041】
チェイン内のノードはQUBO問題の同じ変数が割り当てられている。そのため、チェイン間がエッジでつながっていれば、その二つのチェインに対応する変数の積をキメラグラフ上で表現できたことになる。よって、チェインをうまく構成することで、目的関数における変数の全ての積をキメラグラフ上のチェイン間のエッジとして表すことが可能である。実際、非特許文献1においてその方法の一例が与えられている。以上が、上で述べた条件の背景である。
【0042】
キメラグラフ上のノードへの変数の割り当てを行って量子アニーリングマシンなどで問題を解く際、注意すべき点がある。それは、量子アニーリングマシンは、キメラグラフ上の問題の情報のみを得て当該問題を解いており、割り当て前の元の問題については認識していない、という点である。言い換えると、量子アニーリングマシンはチェインの存在を認識しておらず、チェイン内のノードの量子ビットを異なる変数とした問題を解いている。しかし、元のQUBO問題を解く者からすると、チェイン内のノードの量子ビットの状態は全て同じである必要がある。これは、チェイン内のノードに、元のQUBO問題における同じ変数を割り当てているからである。そのため、チェイン内のノードをつなぐエッジに対応する量子ビット間の結合は強い相互作用を与え、チェイン内のノードの量子ビットが結果的にすべて同じ状態になるようにする。この結合の強さは、量子アニーリングマシンで問題を解く際に指定する。
【0043】
量子アニーリングマシンはキメラグラフ上の異なるノードを異なる変数として問題を解いている、という事実は次のことも意味する。すなわち、一つのQUBO問題について、異なる割り当てにより変数をキメラグラフ上へ割り当てた場合、それら異なる割り当てによって得られるキメラグラフ上での問題の表現は、量子アニーリングマシンにとっては異なる問題と認識される。そのため、異なる割り当てが存在するとき、どの割り当てを行うべきか、ということを考える必要がある。
【0044】
特定の問題に対して上述の条件を満たした割り当ては一般に一意でない。そして複数あり得る割り当ての中でも、使用するノードの少ない割り当ての方が望ましい。それは、量子アニーリングマシンなどで問題を解く際、キメラグラフ上のノードを多く使用した方が正解を得るのが難しくなる傾向があるからである。その理由は以下の通りである。
【0045】
まずQUBO問題を解く際、変数の数が多い方が、組合せの数が増えるため、一般に正解を得るのがより困難になる。これは正解を確実に得るまでの計算時間が長くなる、と言い換えることもできる。そして、量子アニーリングマシンが実際に解くのは、キメラグラフ上で表現された問題であり、量子アニーリングマシンが解く問題の変数の数は、キメラグラフ上で使用しているノードの数である。よって、割り当てによって使用するノードの数が多いと、量子アニーリングマシンが解く問題の変数の数も多くなり、正解を得るのが難しくなる。つまり、元々のQUBO問題が同じでも、異なる割り当てを行うと、量子アニーリングマシンを用いて正解を得る難しさが変化する。そのため、複数あり得る割り当ての中でも、使用するノードの少ない割り当ての方が望ましい。
【0046】
上述した非特許文献1及び非特許文献2は使用ノード数の少ない割り当てをみつけることを目指したものではない。適切な割り当てとしての条件を満たしかつ使用ノード数の少ない割り当てをみつけることは容易でない。そこで、本開示では、巡回セールスマン問題に対応するQUBO問題の変数と、このQUBO問題を解くためのグラフのノードとの対応関係として、使用するノード数を抑制した対応関係を得ることができる実施の形態について説明する。
【0047】
<実施の形態の概要>
実施の形態について具体的に説明する前に、概要を説明する。
本実施の形態は、巡回セールスマン問題をQUBO問題として表しかつキメラグラフ上に表現して解く際、QUBO問題の変数をキメラグラフ上のノードに割り当てる方法を備える。なお、以下の説明では、QUBO問題の変数、すなわち二値変数を、QUBO変数とも称す。
【0048】
本実施の形態では、QUBO問題の変数をキメラグラフ上の複数のノードに割り当てる際、ノードの数が少ないチェインを構成することで、全体の使用ノード数を少なくすることを目指す。ノードの数が少ないチェインを構成するための方針は以下の通りである。
【0049】
チェインにはQUBO問題の変数が割り当てられる。QUBO問題の目的関数において積の形で現れる変数の組について、これら変数の組と対応するチェインの組がキメラグラフ上でエッジによりつながっている必要がある。目的関数において、変数は他の変数と積の形で現れるが、一つの変数に対して積になる相手となり得る変数は複数ある。たとえば式(2)でx_1,1はx_1,2と積になり、x_2,1とも積になる。x_1,1とx_1,2の積は式(2)の一つ目の和とCを係数とする和を展開すると現れる。x_1,1とx_2,1の積は式(2)のCを係数とする和を展開すると現れる。このように一つの変数に対して積になる相手の変数が複数あるため、チェインは異なる複数のチェインとエッジでつながる必要がある。ユニットがK(4)であるキメラグラフ上の一つのノードから出るエッジは6本である(ただし、グラフの端に位置するユニット内のノードは5本のものもある)。一つのチェインがそれ以上の数のチェインとエッジでつながるためには、複数のノードによってチェインを構成する必要がある。
【0050】
一つのチェイン(ここではAと呼ぶ)が複数のチェイン(ここではBおよびCと呼ぶ二つのチェインを考える)とエッジでつながることについて
図3を参照しつつ説明する。なお、
図3において、チェインAに相当するチェインが符号920Aで表され、チェインBに相当するチェインが符号920Bで表され、チェインCに相当するチェインが符号920Cで表されている。チェインAがチェインBおよびチェインCとエッジでつながるには、チェインBとつながっているノード(ここではbと呼ぶ)およびチェインCとエッジでつながっているノード(ここではcと呼ぶ)をチェインAが含んでいなくてはならない。上述した通りチェイン内のノードはエッジでつながっている必要があるため、チェインAにノードbとノードcを含めるためにはそれらをエッジとノードを介してつなぐ必要がある。エッジとノードを介してつなぐとは、次のようなことをいう。すなわち、ノードbとエッジでつながっているノードd、それとエッジでつながっているノードe、それとエッジでつながっているノードfをチェインに含めていき、最終的にノードcとエッジでつながっているノードgまでチェインに含めることである。このような接続関係の一例が
図3に示されている。この際、場合によってはノードを複数使用し、これによりチェイン内のノード数が増加する。チェインA内のノードbとノードc以外のノード(すなわち、上述したノードd、e、f、g)が以下の二つの場合のいずれかに該当するとき、それらのノードはノードbとノードcをつなぐためだけにチェインA内に含まれていることになる。二つの場合とは、ノードが他のチェインとエッジでつながっていない場合と、ノードが、目的関数内で積にならないQUBO変数が割り当てられたチェインとのみエッジでつながっている場合である。これら二つの場合のどちらかに当てはまるノードは元のQUBO問題の変数の積に直接は寄与していない。これらのノードの数を抑えることが、本実施の形態においてノードの数が少ないチェインを構成するための手段である。なお、上述した通り、目的関数で積にならないQUBO変数とは、一般に式(1)においてQ_ij = 0であるiとjのx_iとx_jの組のことである。同様のことを式(2)について考える際、式(2)の添え字と式(1)の添え字は別のものであること、式(2)の二つの添え字iとaによる組(i, a)が式(1)におけるiやjなどに対応することに注意する。式(2)でx_i,aと積にならない変数をx_j,bと表すと、jとbは次の四つのケースのどれも満たさない。満たされない一つ目のケースはj = iである。満たされない二つ目のケースはb = aである。満たされない三つ目のケースはb = a-1である。満たされない四つ目のケースはb = a+1である。
【0051】
次に、上で述べたようなノードの数を減らすための方法の概略を述べる。上で述べたようなノードとは、他のチェインとエッジでつながっていないノードと、目的関数内で積にならないQUBO変数が割り当てられたチェインとのみエッジでつながっているノードである。方法は四つの過程からなる。
【0052】
一つめの過程では、非特許文献1と同じ方法で、どのノードを同一チェインに含めるかを決める。ここではそれぞれのチェインに割り当てるQUBO問題の変数は決めない。このとき、チェイン内の全てのノードが他の所定数(具体的には、r-1個)のチェインのノードと同じユニットを共有するよう、各チェインを構成するノードを決定する。次の二つ目の過程でチェインへの変数の割り当てを行う。このとき、各チェイン内で、以下の条件をみたすノード(ノードaと呼ぶ)がチェインの端に集まるように変数を割り当てる。その条件を説明するために、ノードaを含むチェインと、ノードaとエッジでつながっている別のチェインを考える。その条件とは、ノードaとエッジでつながっている全てのチェインについて、当該チェインに割当てられたQUBO変数と、ノードaが属するチェインに割当てられたQUBO変数とが目的関数において積の形で現れないこと、である。つまり、ノードaは、ノードaに割り当てられる変数と積を構成するような変数が割り当てられるノードと接続していないノードとも言える。このように、ノードaは、QUBO問題の目的関数において積になる二値変数が割り当てられるチェインとエッジでつながらないノードである。二つ目の過程では、ノードaの少なくとも一つがチェインの端に配置されるように、チェインに二値変数を割り当てる。なお、具体的な変数の割り当てについては後述する。目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードは、そのチェインに含める必要はない。そこで、三つ目の過程で、チェインの端から上の条件をみたすノードを除く。すなわち、ノードaをチェインの端から除去する。ノードを端から除いてもチェインが二つに分かれることはないため、上の条件をみたす不要なノードを除くことができる。上の条件をみたすノードのうちチェインの端にないものは、それを除くとチェインが切れてしまうため、除くことができない。しかし四つめの過程で、使用するノードの位置を変更することで、そのようなノードの数を少なくする。なお、具体的な変更は、以下で説明する。
【0053】
以下、実施の形態について図面を参照して詳細に説明する。
[実施の形態1]
実施の形態1では、キメラグラフのユニットに含まれるノード数が所定値(具体的には4)である場合の変数のノードへの割り当てについて示す。
[構成の説明]
図4は、実施の形態1にかかる計算システム10の一例を示す模式図である。本実施の形態は、割り当て装置100により、QUBO問題の変数とノードとの対応関係が決定される。
図4に示した計算システム10では、巡回セールスマン問題を解くために量子アニーリングマシン200を使用することを想定する。なお、量子アニーリングマシン200の代わりに、キメラグラフを用いてQUBO問題を解く他の任意の装置が用いられてもよい。また、量子アニーリングマシン200に問題を入力し、計算結果の出力を得るための補助的な装置として、計算システム10は、計算装置300と入出力装置400を含む。このように、
図4に示した例では、一例として、計算システム10は、割り当て装置100と、量子アニーリングマシン200と、計算装置300と、入出力装置400とを有する。
【0054】
割り当て装置100は、巡回セールスマン問題の都市数Nを入力として受付けて、QUBO問題の変数とキメラグラフのノードとの対応関係を示す情報を出力する装置である。本実施の形態では、QUBO問題の変数とキメラグラフのノードとの対応関係を示す情報は、入出力装置400に入力される。入出力装置400への情報の入力は、ユーザの入力操作を介して行われてもよいし、割り当て装置100から直接入力されてもよい。計算装置300は、解くべき巡回セールスマン問題における都市間の距離(式(2)におけるW_ij)を入力として、QUBO問題の変数の係数を出力する装置である。なお、本実施の形態では、計算装置300は、式(2)で示されるCの値も入力として受付けるが、計算装置300は、この値の入力を受付けず、Cの値として所定値を用いてもよい。本実施の形態では、計算装置300により計算されたQUBO問題の変数の係数は、入出力装置400に入力される。入出力装置400への係数の入力は、ユーザの入力操作を介して行われてもよいし、計算装置300から直接入力されてもよい。入出力装置400は、量子アニーリングマシン200との間の入出力処理を行う装置である。入出力装置400は、割り当て装置100及び計算装置300の出力結果に基づいて、使用する量子ビットと、量子ビット間の結合の強さとを量子アニーリングマシン200に対し出力する。また、入出力装置400は、量子アニーリングマシン200から量子ビットの最終状態を取得し、QUBO問題の解を出力する。
【0055】
なお、割り当て装置100、計算装置300、及び入出力装置400は、いわゆる古典コンピュータであり、計算装置300及び入出力装置400の機能の一部又は全てが割り当て装置100に組み込まれていてもよい。
【0056】
また、割り当て装置100、量子アニーリングマシン200、計算装置300、および入出力装置400の一部又は全てはクラウドにより実現されてもよい。例えば、量子アニーリングマシン200と入出力装置400だけがクラウドにより実現されてもよい。量子アニーリングマシン200と入出力装置400だけがクラウドにより実現される場合、割り当て装置100と計算装置300からの出力は、ネットワークを介して入出力装置400に入力されてもよい。そして、入出力装置400の出力が量子アニーリングマシン200に入力され、量子アニーリングマシン200からの出力が入出力装置400に入力される。さらに、入出力装置400からの計算結果の出力は、ネットワークを介して行われる。
【0057】
上述した通り、割り当て装置100は巡回セールスマン問題の都市数を入力として受け付ける。そして、割り当て装置100は、巡回セールス問題に対応するQUBO問題の目的関数(式(2))の表現に基づき、目的関数の変数をユニットがK(4)のキメラグラフ上のどのノードに割り当てるかを示す情報を出力する。
【0058】
また計算装置300は、解こうとしている巡回セールスマン問題の都市間の距離WとパラメータCを入力として受け取る。なお、パラメータCの値としては、Hを最小にするxの値の組み合わせが巡回セールスマン問題の解と見なすことを可能とする所定の大きな値が入力される。そして、計算装置300は、この入力に基づいて式(2)で示される目的関数のQUBO変数の係数を計算し、出力する。QUBO変数の係数とは、式(2)を式(1)で表したときのQ_ijを意味する。具体的には、計算装置300は、i, j = 0, 1, 2, …, N-2とa, b = 0, 1, 2, …, N-2について、変数x_i,aの係数および変数x_i,aとx_j,bの積の係数のリストを出力する。計算装置300が行う計算はQUBO問題の変数の2次式の展開であり、容易に計算できる。
【0059】
割り当て装置100の出力(割り当て結果)と計算装置300の出力(QUBO変数の係数)は入出力装置400に入力される。さらに、ユーザが、チェイン内のノードをつなぐエッジに対応する量子ビット間の結合の強さ(チェイン強度)を指定し、入出力装置400にその強さの値を入力する。この値としては、チェイン内のノードの量子ビットがすべて同じ状態になるような値が入力される。ここで指定するチェイン強度はすべてのチェインで同一とする。
【0060】
入出力装置400は、割り当て結果、QUBO変数の係数、チェイン強度を使って、量子アニーリングマシン200で使用する量子ビットを決め、量子ビット間の結合の強さを算出する。ここで算出された量子ビット間の結合の強さにはチェイン内のエッジに対応する結合の強さも含まれており、それはすべて、指定したチェイン強度と等しくなっている。そして、入出力装置400は、使用する量子ビットのリストと量子ビット間の結合の強さを量子アニーリングマシン200へ入力する。
【0061】
量子アニーリングマシン200は入力で指定された量子ビットにおいて、入力で指定された量子ビット間結合の強さを実現する。そして量子アニーリングマシン200は、量子アニーリングを実行し、最終的な量子ビットの状態を示すリストを入出力装置400に出力する。入出力装置400は量子ビットの状態を示すリストをQUBO変数の値を示すリストに変換し、図示しない出力装置(たとえばディスプレイや電子ファイルなど)に出力する。
【0062】
キメラグラフと量子アニーリングマシンの関係は、上述した通りである。つまり、量子アニーリングマシン200のどの量子ビットとどの量子ビットが結合しているかが、キメラグラフの構造に対応している。すなわち、量子ビットはキメラグラフのノードにあり、量子ビット間の結合はキメラグラフのエッジに対応する。量子ビットは二つの状態からなり、どちらの状態であるかを2値の変数として扱うことができる。そしてこの2値変数をQUBO問題の変数に対応させることができる。QUBO問題をキメラグラフに対応させ、キメラグラフ上のノードに割り当てられたQUBO変数の値と量子ビットの状態を対応させることで、量子アニーリングマシン200はQUBO問題を解くことができる。ただし、QUBO問題をキメラグラフに対応させる際には、上述した通り、QUBO問題の変数をキメラグラフ上のノードに適切に割り当てる必要がある。
【0063】
以下、割り当て装置100の詳細について説明する。
図5は、割り当て装置100の機能的な構成の一例を示すブロック図である。割り当て装置100は、
図5に示されるように、入力受付部101と、割り当て部102と、出力部103とを有する。入力受付部101は、巡回セールスマン問題の都市数Nの入力を受付ける。この入力は、例えば、キーボードなどの入力装置(不図示)を介して入力される。例えば、ユーザは、解きたい巡回セールスマン問題の都市数Nを入力する。割り当て部102は、QUBO問題として表された巡回セールスマン問題の都市数に応じた二値変数を、キメラグラフ上のノードに割り当てる処理を行う。このとき、割り当て部102は、QUBO問題の目的関数において積にならない二値変数の組よりも、QUBO問題の目的関数において積になる二値変数の組を、優先して、キメラグラフにおいてエッジで相互につながっているノードへと割り当てる。出力部103は、割り当て部102による二値変数のノードへの割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する。例えば、出力部103は、ディスプレイなどの出力装置(不図示)に出力する。出力部103は、例えば、二値変数とノードとの対応関係を示すリストを出力する。たとえば、出力部103は、変数x_i,aを割り当てるキメラグラフ上のノードを列挙したリストを、i = 0, 1, 2, …, N-2とa = 0, 1, 2, …, N-2について列挙したリスト、すなわち、リストのリストを出力する。たとえば、x_0,0をノード0と1に割り当て、x_0,1をノード2と3に割り当て、x_1,0をノード4と5に割り当て、x_1,1をノード6と7に割り当てる場合、出力部103は、{ x_0,0: [0, 1], x_0,1: [2, 3], x_1,0: [4, 5], x_1,1: [6, 7]}と表される情報を出力する。
【0064】
図6は、割り当て装置100のハードウェア構成の一例を示すブロック図である。
図6に示すように、割り当て装置100は、ネットワークインタフェース150、メモリ151、及びプロセッサ152を含む。ネットワークインタフェース150、メモリ151、及びプロセッサ152は、データバスなどを介して相互に接続されている。
【0065】
ネットワークインタフェース150は、他の任意の装置と通信するために使用される。ネットワークインタフェース150は、例えば、ネットワークインタフェースカード(NIC)を含んでもよい。
【0066】
メモリ151は、例えば、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ151は、プロセッサ152により実行される、1以上の命令を含むソフトウェア(コンピュータプログラム)、及び割り当て装置100の各種処理に用いるデータなどを格納するために使用される。
【0067】
プロセッサ152は、メモリ151からソフトウェア(コンピュータプログラム)を読み出して実行することで、
図5に示した各構成要素の処理を行う。
【0068】
プロセッサ152は、マイクロプロセッサ、MPU(Micro Processor Unit)、又はCPU(Central Processing Unit)などであってもよい。プロセッサ152は、複数のプロセッサを含んでもよい。
このように、割り当て装置100は、コンピュータとして機能する装置であり、情報処理装置とも称される。
【0069】
なお、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0070】
以下、割り当て部102による割り当てについて説明する。
まず、割り当て部102による割り当ての詳細を説明する前にその概略を述べる。概略は以下の通りである。上述した通り、割り当ては四つの過程に基づいている。しかし、割り当て装置100の割り当て部102の実際の割り当て処理において、この四つの過程を経るわけではない。割り当て装置100は、四つの過程に基づく割り当てを実現する割り当ての式(ルックアップテーブル)を、予め、例えばメモリ151に記憶している。この割り当ての式は、都市数に応じて複数種類が用意されている。割り当て部102は、入力受付部101が都市数の値を受付けると、受付けた都市数に応じた割り当ての式を参照し、割り当てを行う。したがって四つの過程は割り当て装置100が記憶している割り当ての式がどのような背景で決められたものかを説明するものと言える。なお、割り当て部102が、上述した四つの過程をそれぞれ行う処理部として機能してもよい。すなわち、実際の割り当て処理において、上述した四つの過程を経てもよい。
【0071】
ここではキメラグラフのユニットがK(4)の場合を考える。一つめの過程で、非特許文献1と同じ方法で、どのノードを同一チェインに含めるかが決められる。具体的には後述する式(5)にしたがってどのノードを同一チェインに含めるかが定められる。この方法では、各チェイン内の全てのノードが他の3本のチェインのノードと同じユニットを共有する。言い換えると、チェインAのノードが含まれるユニットには必ずチェインB、C、Dのノードが含まれる、ということが成り立つチェインA、B、C、Dが存在する。そしてチェイン全体の数が4の倍数であれば、チェイン全体はチェインA、B、C、Dのような4本ずつの組に分けられる。チェイン全体の数が4の倍数でないならば、4で割ったときの余りと等しい本数の組が一組生じる。これ以降はこれら4本のチェインからなる組をバンドルと呼ぶことにする。なお、余りがある場合は余りのチェインからなる組もバンドルと称す。バンドル内のチェインの数が4以下であることの由来は、ここで考えているキメラグラフがK(4)だから、すなわちr=4だからである。つまり、ユニットがK(r)のキメラグラフが用いられる場合、バンドル内のチェインの数はr以下となる。
【0072】
図7にバンドルの例を示す。これはQUBO問題の変数が8つである場合について、一つ目の過程により生じるバンドルを示している。なお、
図7は、バンドルについて理解するための図であり、巡回セールスマン問題をQUBO問題として表したときには変数がちょうど8つということはない。
図7において、ノードに書かれた番号が、そのノードが所属するチェインの番号を表す。チェイン930、931、932、および933はすべてのノードにおいてユニットを共有しており、これらのチェインはバンドル940Aを構成している。チェイン934、935、936、および937も、同様に、バンドル940Bを構成している。したがって、この場合、バンドルが二つある。バンドルが4本のチェインからなる場合、一つのユニットを使用できるバンドルの数は2以下である。例えば
図7の左下のユニットは二つのバンドルが使用し、左上と右下のユニットはいずれも一つのバンドルが使用し、右上のユニットを使用しているバンドルはない。
【0073】
二つめの過程でチェインに変数を割り当てる。このときバンドル内のチェインには変数x_i,aのうち同じaの変数を割り当てる。ただしiの取り得る値の数、つまりN-1、が4より大きい場合は、割り当て先は複数のバンドルに分かれる。このとき同じaの変数を割り当てたバンドルの数はceil(N-1/4)になる。ただしceil(・)は、天井関数である。すなわち、ceil(y)はy以上の最小の整数である。ここでの割り当ての具体的な方法は後述する。
【0074】
三つめの過程で、チェインの端から順に、目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードを除く。目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードはチェインの端以外にもあるが、そういったノードを除くとチェインが分かれてしまうため、除くことができない。そこで四つめの過程で、チェインが使用するノードを変更し、そのようなノードの数を減らし、最終的な割り当てを決定する。
【0075】
この四つめの過程におけるノード変更を
図8及び
図9を用いて説明する。
図8と
図9では、QUBO変数の割り当てで使用するキメラグラフ上のノードをブロックに分けて表している。ここで、
図8は非特許文献1に基づく割り当てを表し、
図9は本実施の形態にかかる割り当てを表す。
図8と
図9で示した例ではN=9を想定している。
図8では、ブロック800A、800B、800C、800Dが使用されている。なお、ブロック800Eは、ブロック800Cの一部から構成されるブロックである。また、
図9では、ブロック810A、810B、810Eが使用されている。ブロック810Aはブロック800Aと対応しており、ブロック810Bはブロック800Bと対応しており、ブロック810Eはブロック800Eと対応している。なお、各ブロックがどのノードを含んだブロックであるかについての詳細は後述する。
【0076】
図8に示した状態から
図9に示した状態への変更では、まずブロック800Dが除かれる。これは正確には三つめの過程で行われることである。続いて、
図8のブロック800Bとブロック800Cのノードを使用する代わりに、それぞれ
図9のブロック810Bとブロック810Eのノードを使用するよう、ノードの使用の変更が行われる。これにより、特にブロック800Cに関するノードを使用対象から外すことができる。これは、目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードのうち、
図8に示される割り当てにおいてチェインの端でなかったノードを使用対象から外すことにつながる。ただしこの四つ目の過程におけるノードの変更は、N>5の場合にのみ行う。N≦5の場合はこの過程が行えるほどチェインが長くない。N>5の場合は変数x_i,aのうち同じaの変数を割り当てるチェインからなるバンドルが複数ある。それらは
図8では、ブロック800Aに含まれるバンドルとブロック800Bに含まれるバンドルとして、二組に分かれる。同様に、それらは
図9では、ブロック810Aに含まれるバンドルとブロック810Bに含まれるバンドルとして、二組に分かれる。各組に含まれるバンドルの数によって割り当ての記述が異なるが、それらの記述には、以下で示されるに一般的な規則がある。
【0077】
次に、割り当て方法について、具体的に説明する。割り当ての方法を具体的に説明するために、まずキメラグラフ上のノードの位置に番号を与える。m行n列目のユニットのk番目のノードを(L×m + n)×8 + k番とする。これにより、例えば、L=2の場合のノードの番号は、
図10のように示される。
図10に示されるグラフにおいて、ノードに書いてある数字がノードの番号である。m、n、kを定めたときにそれに対応するノードの番号を与える関数をf(m, n, k)とし、以下の式(4)で表す。
【0078】
【0079】
ただし、m、n、およびkは0以上の整数である。本実施の形態では、ユニットがK(4)のキメラグラフへ二値変数の割り当てが行われるため、ここではk = 0, 1, 2, ..., 7である。mとnの上限はL-1である。つまり、m, n = 0, 1, 2, ..., L-1である。LはN×N/4より大きい任意の整数とする。
【0080】
上述した通り、一つめの過程で、非特許文献1の方法と同じ方法でどのノードを同一チェインに含めるかが決められる。ここでチェインを番号s(ただし、sは0以上の整数)で区別する。s番目のチェインに含めるノードは式(5)で表されるノードである。
【0081】
【0082】
tとuはsの値によって一意に定まる。tはs/4以下の最大の整数である。すなわち、t =floor(s/4)である。ここで、floor(・)は、床関数である。すなわち、floor(y)はy以下の最大の整数である。uはsを4で割ったときのあまり(u = s - 4×floor(s/4))である。s = 4×t + uという関係も成り立つ。たとえばs = 1のときt = 0、u = 1であり、s = 6のときt = 1、u = 2である。これらの関係式から、チェインを番号sで区別するとともに、(t, u)とも表すことにする。たとえばチェイン1はチェイン(0, 1)とも表すことにする。式(5)はエッジでつながっているノードが並ぶ順番で書かれている。したがって、式(5)において、各ノードは、隣に列記されているノードとはエッジで直接つながっているが、隣に列記されていないノードとは直接つながっていない。たとえばf(t,1,u+4)はf(t,0,u+4)とf(t,2,u+4)とエッジでつながっているが、式(5)に現れる他のノードとはエッジでつながっていない。この関係性から、f(t,0,u+4)やf(L-1,t,u)をチェインの端と呼ぶことにする。
【0083】
このチェインの構成では、n≦m≦N-2をみたすm行n列目のユニットのみが使用されている。m行n列目のユニットのノードを含むチェインは、チェイン(m, 0), (m, 1), (m, 2), (m, 3), (n, 0), (n, 1), (n, 2), (n, 3)の8つである。特に、最初の4つのチェインがユニット内の縦4つのノードを使用し、残り4つのチェインがユニット内の横4つのノードを使用する。
図1に示したユニットの構造から明らかなように、前者4つのそれぞれが後者4つのそれぞれとエッジとつながっている。たとえば、チェイン(m, 0)はチェイン(n, 0), (n, 1), (n, 2), (n, 3)とエッジでつながっている。前者4つのチェインと後者4つのチェインは他のユニットを共有しない。つまり、チェイン(m, h)とチェイン(n, v)はm行n列目のユニットにおいてのみエッジでつながっている。
【0084】
チェイン(m, h)はm行n列目のユニットにおいてチェイン(n, v)とエッジでつながっており、二つのチェインがエッジでつながっているノードはf(m, n, h+4)とf(m, n, v)である。ここで、f(m, n, h+4)がチェイン(m, h)に属するノードで、f(m, n, v)がチェイン(n, v)に属するノードである。なぜならば、チェイン(m, h)のノードは式(5)でt = mとしたものであり、そのうちm行n列のユニットに含まれるのはf(m, n, h+4)だからである。同様に、チェイン(n, v)のノードは式(5)でt = nとしたものであり、そのうちm行n列のユニットに含まれるのはf(m, n, v)だからである。
式(5)のノードの順番を考慮すると、チェイン(m, h)とチェイン(n, v)はmとnの差が大きいほどチェインの端のノードでつながることになる。
【0085】
上述した二つめから四つめの過程でチェインにQUBO問題の変数が割り当てられる。割り当ての方法の記述はNの値に応じて異なる。割り当てはバンドルを二組に分けて行われる。そのため、同じaのx_i,aに対するバンドルの数によって割り当てが大きく異なる。同じaのx_i,aに対するバンドルが一つの場合は二組に分かれない。同じaのx_i,aに対するバンドルが二つの場合は二組に分かれ、各組内のバンドルの数は1である。同じaのx_i,aに対するバンドルが三つもしくは四つの場合は二組に分かれ、各組内のバンドルの数は1か2である。組に分かれるかどうかと、分かれたときにバンドルが多い方の組のバンドルの数(上記のバンドルが三つの場合は2)によって、割り当ての記述が異なる。
【0086】
まずN = 4, 5の場合、つまり同じaのx_i,aに対するバンドルの数(ceil(N-1/4))が1の場合を考える。この場合、二つめの過程で変数x_i,aをs = 4×a + iの関係で決まるs番目のチェインに割り当てる。s番目のチェインのノードは一つめの過程で決められており、具体的には式(5)で与えられている。
【0087】
三つめの過程として、変数x_i,aに対応するチェインであるチェイン(a, i)からf(N-1, a, i), f(N, a, i), f(N+1, a, i), ..., f(L-1, a, i)のノードを除く。その理由は、これらのノードがエッジでつながるチェインは目的関数の変数と対応しないからである。たとえばf(N-1, a, i)はチェイン(N-1, j)とエッジでつながるノードだが、このチェイン(N-1, j)に対応する変数x_N-1,jは目的関数に存在しない。
【0088】
N = 4, 5場合、四つめの過程は行われない。その理由は、ここまでの過程で得られたチェインに、目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードがないためである。そのため、三つめの過程で決まった割り当てが最終的な割り当てになる。
【0089】
上述した過程に対応する割り当てを実現するため、N = 4, 5の場合、割り当て部102は、入力されたNに対して、式(2)のQUBO問題の変数x_i,aを以下の式(6)で表されたN個のノードに割り当てる。
【0090】
【0091】
上述の通り、同じaのx_i,aに対するバンドルの数(ceil(N-1/4))が1であるとは、aが同じだがiが異なるx_i,aが同じユニット内のノードに割り当てられることを意味する。確かに式(6)のノードは、そのノードが含まれるユニットがiに依存しない。それは、f(m,n,k)のmとnがユニットを、m行n列目のユニットとして指定し、式(6)でそのmとnに対応する部分にiが含まれないことからわかる。つまり同じaのx_i,aに対するバンドルが使用するユニットがaによって決まり、バンドル内のチェインがユニット内のどのノードを使用するかはiによって決まる。
【0092】
図11は、本実施の形態による割り当て結果の一例を示す模式図であり、具体的にはN=5の巡回セールスマン問題のQUBO問題の目的関数の変数をユニットがK(4)のキメラグラフ上のノードへ割り当てた際の割り当て結果を示す。
図11において、チェインの符号は、当該チェインに割り当てられる変数x_i,aの添え字に対応している。すなわち、チェインC”i””a”は、変数x_i,aが割り当てられるチェインを意味している。例えば、
図11において、チェインC00は変数x_0,0が割り当てられるチェインであり、チェインC01は変数x_0,1が割り当てられるチェインである。また、
図12は、
図11に示される割り当てにおいて、各バンドルが使用するユニット群を示している。
図12において、バンドル950はx_i,0(ただし、i=0,1,2,3)に対応するバンドルである。同様に、バンドル951はx_i,1(ただし、i=0,1,2,3)に対応するバンドルであり、バンドル952はx_i,2(ただし、i=0,1,2,3)に対応するバンドルであり、バンドル953はx_i,3(ただし、i=0,1,2,3)に対応するバンドルである。
【0093】
図11及び
図12からわかる通り、異なる二つのバンドルが共有しているユニットが存在し、そのユニットにおいて、お互いのバンドルの任意のチェイン間がエッジでつながっている。すなわち、一方のバンドルのチェインに割り当てられたQUBO変数がもう一方のバンドルに割り当てられた任意のQUBO変数と積の形で現れる目的関数を表現することができている。そして任意の二つのバンドルの組に対し、そのような共有されるユニットが存在している。したがって、任意の異なるバンドルに属するチェインどうしがエッジでつながっている。また、一つのバンドルのみが使用しているユニットにおいてバンドル内の異なるチェインどうしがエッジでつながっているため、それらチェインに対応するQUBO変数の目的関数における積が表現できている。この、一つのバンドルのみが使用しているユニット内のチェインの構成は
図2で示した構成と同じである。以上により、任意の二つのチェインどうしがエッジでつながっている。この割り当てを使うと、QUBO問題の目的関数においてどの二つのQUBO変数が積で現れても、適切な割り当てとなる。したがって巡回セールスマン問題の目的関数についても適切な割り当てになる。しかし巡回セールスマン問題では、目的関数において積にならないQUBO変数の組もあるため、N>5の場合はそれを考慮した割り当てを行う。
【0094】
次に6≦N≦9の場合、つまり同じaのx_i,aに対するバンドルの数(ceil(N-1/4))が2の場合を考える。割り当て装置100は、入力されたNに対して、式(2)のQUBO問題の変数x_i,aのうち、同じaのx_i,aに対する二つのバンドルに対して、異なる式で表される異なる割り当てを行う。i = 0, 1, 2, 3のx_i,aが一つのバンドルに対応し、i = 4, 5,..., N-2のx_i,aがもう一つのバンドルに対応する。
【0095】
上述した二つめの過程において変数x_i,aを、i = 0, 1, 2, 3については、s = 4×a + iの関係で決まるs番目のチェインに割り当てる。s番目のチェインのノードは一つめの過程で決められており、具体的には式(5)で与えられている。このチェインは、チェイン(a, i)とも表される。i = 4, ..., N-2についての変数x_i,aは、 s = 4×(N - 1 + a) + i-4の関係で決まるs番目のチェインに割り当てる。このチェインはチェイン((N-1)+a, i-4)とも表される。
【0096】
ここまでの割り当てにおいて、チェインから除くことのできるノード、すなわち目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノード、がチェインの端の方に集まっていることを説明する。これに関して、チェイン(m, h)とチェイン(n, v)はmとnの差が大きいほどチェインの端のノードでつながること、が重要な役割を果たす。変数x_i,aが目的関数において積になる変数をx_j,bと表すと、jとbは次の四つのケースの少なくともどれか一つに該当する。すなわち、上述の通り、一つめのケースはj = iであり、二つめのケースはb = aであり、三つめのケースはb = a-1であり、四つめのケースはb = a+1である。
【0097】
まずi = 0, 1, 2, 3の場合を考える。上述した割り当てにおいてx_i,aはチェイン(a, i)に割り当てられている。また上記のケースの一つめであるj = iをみたすx_j,b、すなわちx_i,bはチェイン(b, i)に割り当てられている。a≧bとすると、チェイン(a, i)とチェイン(b, i)がエッジでつながるのはa行b列のユニットにおいてのみである。よって、x_i,aが割り当てられたチェイン(a, i)のノードf(a, b, i+4)はx_i,bが割り当てられたチェイン(b, i)とエッジでつながっている。a<bの場合、チェイン(a, i)とチェイン(b, i)がエッジでつながるのはb行a列のユニットにおいてのみであり、x_i,aが割り当てられたチェイン(a, i)のノードf(b, a, i)はx_i,bが割り当てられたチェイン(b, i)とエッジでつながっている。よって、x_i,aのチェインは、ノードf(a, 0, i+4), f(a, 1, i+4), ..., f(a, a, i+4), f(a, a, i), f(a+1, a, i), f(a+2, a, i), ..., f(N-2, a, i)において、j = iをみたすx_j,b、つまりx_i,0, x_i,1, ..., x_i,N-2のチェインとエッジでつながる。
【0098】
次に、x_i,aが割り当てられたチェイン(a, i)と、二つ目のケースであるb = aをみたすx_j,b、すなわちx_j,aが割り当てられたチェインが、どのユニットにおいてエッジでつながるかを考える。これは、jが0, 1, 2, 3のどれかであるか、j = 4, 5, ..., N-2のどれかであるかによって異なる。まずj = 0, 1, 2, 3の場合を考える。この場合x_j,aはチェイン(a, j)に割り当てられている。そして、チェイン(a, i)とチェイン(a, j)はa行a列のユニットにおいてエッジでつながる。このときx_i,aが割り当てられたチェイン(a, i)のノードf(a, a, i)がチェイン(a, j)とエッジでつながる。次にj = 4, 5, ..., N-2の場合を考える。この場合x_j,aはチェイン(N-1+a, j-4)に割り当てられている。そして、チェイン(a, i)とチェイン(N-1+a, j-4)は(N-1+a)行a列のユニットにおいてエッジでつながる。このときx_i,aが割り当てられたチェイン(a, i)のノードf(N-1+a, a, i)がチェイン(N-1+a, j-4)とエッジでつながる。
【0099】
同様に、x_i,aが割り当てられたチェイン(a, i)と、三つ目のケースであるb = a-1をみたすx_j,b、すなわちx_j,a-1が割り当てられたチェインについて考える。これら二つのチェインは、jの値に応じて、a行(a-1)列のユニットか(N-2+a)行a列のユニットにおいてエッジでつながる。このときjの値に応じて、x_i,aが割り当てられたチェイン(a, i)のノードf(a, a-1, i+4)かノードf(N-2+a, a, i)が、x_j,a-1が割り当てられたチェインとエッジでつながる。またx_i,aが割り当てられたチェイン(a, i)のノードf(a+1, a, i)かノードf(N+a, a, i)が、四つめのケースであるb = a+1をみたすx_j,b、すなわちx_j,a+1が割り当てられたチェインとエッジでつながる。
【0100】
以上により、i = 0, 1, 2, 3の場合に、変数x_i,aが目的関数で積になる変数に対応するチェインと、どのノードにおいてエッジでつながっているかがわかる。それはf(a, 0, i+4), f(a, 1, i+4), ..., f(a, a-1, i+4), f(a, a, i+4), f(a, a, i), f(a+1, a, i), f(a+2, a, i), ..., f(N-2, a, i), f(N-2+a, a, i), f(N-1+a, a, i), f(N+a, a, i)である。これら以外のノードは、目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードである。具体的には、f(N-1, a, i), f(N, a, i), ..., f(N-3+a, a, i), f(N+a+1, a, i), f(N+a+2, a, i), ..., f(L-1, a, i)である。式(5)と比較すると、f(N+a+1, a, i), f(N+a+2, a, i), ..., f(L-1, a, i)はチェインの端に集まっているといえる。上述した三つめの過程として、これらのノードをチェインから除く。しかし、f(N-1, a, i), f(N, a, i), ..., f(N-3+a, a, i)はチェインを一つにつなぐ役割を果たすため、除くことができない。
【0101】
次にi = 4, 5, 6, ..., N-2の場合を考える。上述した割り当てにおいてx_i,aはチェイン(N-1+a, i-4)に割り当てられている。また、一つめのケースであるj = iをみたすx_j,b、すなわちx_i,bはチェイン(N-1+b, i-4)に割り当てられている。この場合、x_i,aのチェインは、ノードf(N-1+a, N-1, i), f(N-1+a, N, i), ..., f(N-1+a, N-1+a, i), f(N-1+a, N-1+a, i-4), f(N+a, N-1+a, i-4), f(N+a+1, N-1+a, i-4), ..., f(2N-3, N-1+a, i-4)において、j = iをみたすx_j,b、つまりx_i,0, x_i,1, ..., x_i,N-2のチェインとエッジでつながる。
【0102】
次に、二つ目のケースであるb = aをみたすx_j,b、すなわちx_j,aが割り当てられたチェインを考える。j = 0, 1, 2, 3の場合、x_i,aのチェイン(N-1+a, i-4)のノードf(N-1+a, a, i)がx_j,aのチェイン(a, j)と(N-1+a)行a列のユニットにおいてエッジでつながる。j = 4, 5, ..., N-2の場合、x_i,aのチェイン(N-1+a, i-4)のノードf(N-1+a, N-1+a, i)がx_j,aのチェイン(N-1+a, j-4)と(N-1+a)行(N-1+a)列のユニットにおいてエッジでつながる。
【0103】
同様に、三つ目のケースであるb = a-1をみたすx_j,b、すなわちx_j,a-1について考える。x_i,aのチェインとx_j,a-1のチェインは、jの値に応じて、(N-1+a)行(a-1)列のユニットか(N-1+a)行(N-2+a)列のユニットにおいてエッジでつながる。このときx_i,aのチェイン(N-1+a, i-4)のノードf(N-1+a, a-1, i)かノードf(N-1+a, N-2+a, i)がx_j,a-1のチェインとエッジでつながる。またx_i,aのチェイン(N-1+a, i)のノードf(N-1+a, a+1, i)かノードf(N+a, N-1+a, i-4)が、四つめのケースであるb = a+1をみたすx_j,b、すなわちx_j,a+1のチェインとエッジでつながる。
【0104】
以上により、i = 4, 5, ..., N-2の場合に、変数x_i,aが目的関数で積になる変数に対応するチェインと、どのノードにおいてエッジでつながっているかがわかる。それはf(N-1+a, a-1, i), f(N-1+a, a, i), f(N-1+a, a+1, i), f(N-1+a, N-1, i), f(N-1+a, N, i), ..., f(N-1+a, N-1+a, i), f(N-1+a, N-1+a, i-4), f(N+a, N-1+a, i-4), f(N+a+1, N-1+a, i-4), ..., f(2N-3, N-1+a, i-4)である。これら以外のノードは、目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードである。具体的には、f(N-1+a, 0, i), f(N-1+a, 1, i), ..., f(N-1+a, a-2, i), f(N-1+a, a+2, i), f(N-1+a, a+3, i), ..., f(N-1+a, N-2, i), f(2N-2, N-1+a, i-4), f(2N-1, N-1+a, i-4), ..., f(L-1, N-1+a, i-4)である。式(5)と比較すると、f(N-1+a, 0, i), f(N-1+a, 1, i), ..., f(N-1+a, a-2, i)はチェインの端に集まっているといえる。またf(2N-2, N-1+a, i-4), f(2N-1, N-1+a, i-4), ..., f(L-1, N-1+a, i-4)もチェインの端に集まっている。上述した三つめの過程として、これらのノードをチェインから除く。しかし、f(N-1+a, a+2, i), f(N-1+a, a+3, i), ..., f(N-1+a, N-2, i)はチェインを一つにつなぐ役割を果たすため、除くことができない。
【0105】
これ以降、上述した四つめの過程の説明を行う。そのために
図8に描かれているキメラグラフ上のブロックを用いる。ただし、
図8はN=9の場合のブロックを表している。一般に、ブロック800Aはi=0, 1, 2, 3のx_i,aのチェインのみが使用するノードからなり、ブロック800Bはi=4, 5, ..., N-2のx_i,aのチェインのみが使用するノードからなる。ブロック800Cはチェインが使用している残りのノードからなる。ブロック800Dは三つめの過程で除かれている部分である。
【0106】
四つめの過程では、チェインを一つにつなぐ役割のみを果たしているノードをチェインから除く。たとえばi = 0, 1, 2, 3の場合、f(N-1, a, i), f(N, a, i), ..., f(N-3+a, a, i)はチェインを一つにつなぐ役割のみを果たしており、目的関数のQUBO変数の積に直接関与はしていない。しかし、チェインを一つにつなぐために必要で、除くことはできない。このようなノードはブロック800Cに位置している。他方、ブロック800Cの中で目的関数のQUBO変数の積に直接寄与しているノードは、a = 0, 1, ..., N-2の(N-2+a)行a列、(N-1+a)行a列、(N+a)行a列のユニットにある。これらは
図8のブロック800C内の点線で囲まれた部分のブロック800Eのユニットである。ブロック800Eの二つの斜辺はブロック800Aやブロック800Bの斜辺と平行である。よって、その二つの斜辺がブロック800Aやブロック800Bの斜辺に接するようにブロック800Eを配置できれば、ブロック800Cの残りの部分(目的関数のQUBO変数の積に直接関与していないノードの部分)が不要になり、除くことができる。
【0107】
この四つめの過程についての理解を助けるために、ここで、三つめの過程が終わった段階のバンドルの配置について説明する。
図13は、三つめの過程が終わった段階のバンドルの配置を示す模式図である。N=9の場合、16個のバンドル960、961、962、963、964、965、966、967、968、969、970、971、972、973、974、975が存在する。バンドル960は、縦方向(列方向)に並ぶ0行0列から0行9列までのユニットを使用する。また、バンドル961は、横方向(行方向)に並ぶ1行0列から1行1列までのユニットと、縦方向(列方向)に並ぶ1行1列から1行10列までのユニットを使用する。同様に、バンドル962は、横方向(行方向)に並ぶ2行0列から2行2列までのユニットと、縦方向(列方向)に並ぶ2行2列から2行11列までのユニットを使用する。このように、三つ目の過程が終わった段階では、各バンドルは、ブロック800A、ブロック800B、及びブロック800Cのノードのうち、次のようなユニット群を用いる。各バンドルは、z行z列(zは0以上の整数)のユニットと行方向に連なるユニット群(ただし、列番号がz以下であるユニットに限る)と、z行z列のユニットと列方向に連なるユニット群(ただし、行番号がz以上であるユニットに限る)とを用いる。
【0108】
図13において、ブロック800Cのうち、ブロック800E以外の部分のユニットを使用しないこととすると、当該ユニットを使用しているバンドルに含まれるチェインは、切断されてしまう。すなわち、一連のチェインは、ブロック800Aに属する部分チェインと、ブロック800Eに属する部分チェインとに分割されてしまう。または、一連のチェインは、ブロック800Bに属する部分チェインと、ブロック800Eに属する部分チェインとに分割されてしまう。このため、四つめの過程では、不要なノードよってつながっている第1の部分チェインと第2の部分チェインとを、不要なノードを介さずに連結するように、使用対象とするノードを変更する。つまり、不要なノードによりつながっている第1の部分チェインと第2の部分チェインとを含むチェインのこの2つの部分チェインを、当該不要なノードを介さずにつなぐように、キメラグラフにおいてチェインを構成するノードを変更する。その上で、この不要なノードを当該チェインから除去することにより、二値変数のノードへの最終的な割り当てを決定する。ここで、第1の部分チェインは、ブロック800A又は800Bに属する部分チェインであり、第2の部分チェインは、ブロック800Eに属する部分チェインである。また、ここでいう不要なノードとは、QUBO問題の目的関数において積になる二値変数が割り当てられるチェインとエッジでつながらないノードである。そのために、ブロック800Bを移動させ、ブロック800Aとブロック800Bの間にブロック800C(ブロック800E)を配置した状態が
図9に示される状態である。
【0109】
このブロックの移動では、ブロック800Aを列方向(縦方向)であって行番号が増える方向にユニット2個分移動している。その結果、
図8のブロック800Aの代わりに
図9のブロック810Aが使用されることとなる。これはブロック810B(ブロック800B)とブロック810E(ブロック800E)を配置するスペースを空けるためである。また、ブロック800Bからブロック810Bへの変更では、並行移動だけでなく回転もしている。その結果、
図8のブロック800Bの代わりに
図9のブロック810Bが使用されることとなる。これにより変数x_i,a(ただしi = 4, 5, ..., N-2)のチェインが使用するノードも変わる。移動前に変数x_i,aがブロック800Bの中のノードf(m, n, k)を使用していたとすると、移動後は、代わりにf(n-(N-1), m-(N-3), k’)を使用することになる。ただしk<4のときk’=k+4であり、k≧4のときk’=k-4である。nとmの入れ替えとkとk’の入れ替えが回転を表し、(N-1)や(N-3)を差し引くことが並行移動を意味する。特に回転におけるkとk’の入れ替えはユニット内で使用するノードの入れ替えを表す。つまり移動前にユニット内で横(縦)に並ぶ4つのノードのうちの一つを使用する場合、移動後はユニット内で縦(横)に並ぶ4つのノードのうちの一つを使用することになる。変数x_i,aは移動前にf(N-1+a, N-1, i), f(N-1+a, N, i), ..., f(N-1+a, N-1+a, i), f(N-1+a, N-1+a, i-4), f(N+a, N-1+a, i-4), f(N+a+1, N-1+a, i-4), ..., f(2N-3, N-1+a, i-4)を使用していたが、移動によりf(0, a+2, i-4), f(1, a+2, i-4), ..., f(a, a+2, i-4), f(a, a+2, i), f(a, a+3, i), ..., f(a, N, i)を使用する。
【0110】
また、x_i,aのチェインがブロック800Eで使用しているノードも移動により変更される。その結果、
図8のブロック800Eの代わりに
図9のブロック810Eが使用されることとなる。移動前でf(m, n, k)を使用していたとすると、移動後はf(n+2, m-(N-3), k’)を使用する。ただしk<4のときk’=k+4であり、k≧4のときk’=k-4である。具体的には、変数x_i,aは移動前にf(N-2+a, a, i), f(N-1+a, a, i), f(N+a, a, i)を使用していたが、移動によりf(a+2, a+1, i+4), f(a+2, a+2, i+4), f(a+2, a+3, i+4)を使用する。ブロック800Cの残りの部分のノードはチェインから除かれる。
【0111】
以上の四つの過程により、割り当て装置100の割り当て部102が行う最終的な割り当てが得られる。
【0112】
6≦N≦9の場合、割り当て装置100の割り当て部102はx_i,aのうちi = 0, 1, 2, 3のものを式(7)で表されたN+3個のノードに割り当て、x_i,aのうちi = 4, 5,..., N-2のものを式(8)で表されたN+3個のノードに割り当てる。
【0113】
【0114】
式(7)の割り当てはN = 4, 5の場合の式(6)の割り当てにおけるf(m,n,k)のmを2だけ大きくし、さらに3つのノードf(a+2, a+1, i+4), f(a+2, a+2, i+4), f(a+2, a+3, i+4)を付け加えたものである。これは、使用するユニットを式(6)の割り当てから縦方向についてユニット2個分移動し、そして使用するノードを3つ追加していることになる。追加したノードは
図9のブロック810Eのノードに対応する。
【0115】
【0116】
式(7)の割り当てで使用するノードをf(m,n,k)とすると、式(8)で使用するノードはf(n, m, k’)である。ただしk<4のときk’=k+4であり、k≧4のときk’=k-4である。mとnの入れ替えは使用するユニットの行と列の入れ替えを表し、kとk’の入れ替えはユニット内で使用するノードの入れ替えを表す。式(7)においてユニット内で横(縦)に並ぶ4つのノードのうちの一つを使用する場合、式(8)ではユニット内で縦(横)に並ぶ4つのノードのうちの一つを使用する。これを考えるとき、式(7)はi = 0, 1, 2, 3、式(8)はi = 4, 5,..., N-2であることに注意する。
【0117】
図14は、本実施の形態によるN=6の場合の割り当て結果を示す模式図である。すなわち、
図14は、N=6の巡回セールスマン問題のQUBO問題の目的関数の変数をユニットがK(4)のキメラグラフ上のノードへ割り当てた際の割り当て結果を示す。
図14において、チェインの符号は、当該チェインに割り当てられる変数x_i,aの添え字に対応している。すなわち、チェインD”i””a”は、変数x_i,aが割り当てられるチェインを意味している。例えば、
図14において、チェインD00は変数x_0,0が割り当てられるチェインであり、チェインD01は変数x_0,1が割り当てられるチェインである。また、
図15は、
図14に示される割り当てにおいて、各バンドルが使用するユニット群を示している。
図15において、バンドル980はx_i,0(ただし、i=0,1,2,3)に対応するバンドルである。同様に、バンドル981はx_i,1(ただし、i=0,1,2,3)に対応するバンドルである。バンドル982はx_i,2(ただし、i=0,1,2,3)に対応するバンドルである。バンドル983はx_i,3(ただし、i=0,1,2,3)に対応するバンドルである。バンドル984はx_i,4(ただし、i=0,1,2,3)に対応するバンドルである。バンドル985はx_4,0に対応するバンドルである。バンドル986はx_4,1に対応するバンドルである。バンドル987はx_4,2に対応するバンドルである。バンドル988はx_4,3に対応するバンドルである。バンドル989はx_4,4に対応するバンドルである。
【0118】
次に、N > 9の場合を考える。本実施の形態における割り当てはバンドルを二組に分けて行われ、同じaのx_i,aに対するバンドルの数についての各組における最大値(これをpと表す)が、割り当てに影響を与える。Nが9より大きいと、同じaのx_i,aに対するバンドルの数ceil(N-1/4)が2より大きくなる。そのため同じaのx_i,aに対するバンドルを二組に分けたときに、一方の組ではバンドルの数が1より大きくなる。そのためN≦9の場合とは異なる割り当ての式になる。それらを一般的に表すためにpを用いて割り当ての式を表す。特定のNに対するpは、8 (p - 1) + 2≦N≦8×p + 1をみたすpである。たとえばN=9の場合、同じaのx_i,aに対するバンドルの数ceil(N-1/4)が2であり、p=1である。N=10の場合、同じaのx_i,aに対するバンドルの数ceil(N-1/4)が3であり、p=2である。N=17の場合、同じaのx_i,aに対するバンドルの数ceil(N-1/4)が4であり、p=2である。また10≦N≦17のときp=2である。そしてN=18のときp=3である。
【0119】
N>9の場合を考えるため、pを2以上の整数の範囲で考える。二つめの過程において変数x_i,aを、i = 0, 1, 2, ..., 4p-1については、s = 4×p×a+iの関係で決まるs番目のチェインに割り当てる。また、i = 4p, 4p+1, ..., N-2についての変数x_i,aは、 s = 4p×(N - 1 + a) + i-4pの関係で決まるs番目のチェインに割り当てる。なお、s番目のチェインのノードは一つめの過程で決められており、具体的には式(5)で与えられている。
【0120】
p = 1の場合と同様に、ここまでの割り当てにおいて、チェインから除くことのできるノードがチェインの端の方に集まっており、三つめの過程として、それらのノードをチェインから除く。具体的には次のようなノードが除かれる。変数x_i,aに対応するチェインの端にある除くことのできるノードは、i = 0, 1, 2, …, 4p-1の場合、f(p(N+a+1), pa+i//4, i%4), f(p(N+a+1)+1, pa+i//4, i%4), ..., f(L-1, pa+i//4, i%4)である。ここでi//yはiをyで割ったときの整数部分(たとえば3//4 = 0, 4//4 = 5//4 = 1)を表し、i%yはiをyで割ったときのあまり(たとえば3%4 = 3, 4%4 = 0, 5%4 = 1)を表している。i = 4p, 4p+1, …, N-2の場合、チェインの端にある除くことのできるノードは、f(p(N-1+a)+i//4-p, 0, i%4+4), f(p(N-1+a)+i//4-p, 1, i%4+4), ..., f(p(N-1+a)+i//4-p, p(a-1)-1, i%4+4)と、f(p(2N-2), p(N-1+a)+i//4-p, i%4), f(p(2N-2)+1, p(N-1+a)+i//4-p, i%4), …, f(L-1, p(N-1+a)+i//4-p, i%4)である。
【0121】
四つめの過程についても、p=1の場合と同様にブロックを考えて行う。ブロック800Aはi=0, 1, ..., 4p-1のx_i,aのチェインのみが使用するノードからなり、ブロック800Bはi=4p, 4p+1, ..., N-2のx_i,aのチェインのみが使用するノードからなる。ブロック800Cはチェインが使用している残りのノードからなる。
【0122】
ブロック800Cの中で目的関数のQUBO変数の積に直接寄与しているノード、すなわちブロック800Eに属するノードは、a = 0, 1, ..., N-2とq=1, 2, ..., pのq(N-2+a)行qa列、q(N-1+a)行qa列、q(N+a)行qa列のユニットにある。p=1の場合と同様にブロック800Eは二つの斜辺をもち、この二つの斜辺はブロック800Aやブロック800Bの斜辺と平行である。ブロック800Bを移動させ、ブロック800Aとブロック800Bの間にブロック800C(ブロック800E)を配置し、ブロック800Eの二つの斜辺がブロック800Aやブロック800Bの斜辺に接するように配置する。ブロック800Cの残りの部分(目的関数のQUBO変数の積に直接関与していないノードの部分)は除く。
【0123】
このブロックの移動では、ブロック800Aを列方向(縦方向)であって行番号が増える方向にユニット2p個分移動している。その結果、
図8のブロック800Aの代わりに
図9のブロック810Aが使用されることとなる。ブロック800Bからブロック810Bへの変更では、並行移動だけでなく回転もしている。その結果、
図8のブロック800Bの代わりに
図9のブロック810Bが使用されることとなる。これにより変数x_i,a(ただしi = 4p, 4p+1, ..., N-2)のチェインが使用するノードも変わる。移動前に変数x_i,aがブロック800Bの中のノードf(m, n, k)を使用していたとすると、移動後は、代わりにf(n-p(N-1), m-p(N-3), k’)を使用することになる。ただしk<4のときk’=k+4であり、k≧4のときk’=k-4である。変数x_i,aは移動前にブロック800Bのf(p(N-1+a)+i//4-p, p(N-1), i%4+4), f(p(N-1+a)+i//4-p, N, i%4+4), ..., f(p(N-1+a)+i//4-p, p(N-1+a)+i//4-p, i%4+4), f(p(N-1+a)+i//4-p, p(N-1+a)+i//4-p, i%4), f(p(N-1+a)+i//4-p+1, p(N-1+a)+i//4-p, i%4), f(p(N-1+a)+i//4-p+2, p(N-1+a)+i//4-p, i%4), ..., f(p(2N-2)-1, p(N-1+a)+i//4-p, i%4)を使用していたが、移動によりf(0, p(a+2)+i//4-p, i%4), f(1, p(a+2)+i//4-p i%4), ..., f(pa+i//4-p, p(a+2)+i//4-p, i%4), f(pa+i//4-p, p(a+2)+i//4-p, i%4+4), f(pa+i//4-p, p(a+2)+i//4-p+1, i%4+4), ..., f(pa+i//4-p, p(N+1)-1, i%4+4)を使用する。なお、「//」と「%」の意味は上述した通りである。
x_i,aのチェインがブロック800Eで使用しているノードも移動により変更される。その結果、
図8のブロック800Eの代わりに
図9のブロック810Eが使用されることとなる。移動前でf(m, n, k)を使用していたとすると、移動後はf(n+2p, m-p(N-3), k’)を使用する。ただしk<4のときk’=k+4であり、k≧4のときk’=k-4である。たとえば、変数x_i,aはi = 0, 1, …, 4p-1の場合、移動前にf(p(N-2+a)+i//4, pa+i//4, i%4), f(p(N-2+a)+i//4+1, pa+i//4, i%4), …, f(p(N+a+1)-1, pa+i//4, i%4)を使用していたが、移動によりf(p(a+2)+i//4, p(a+1)+i//4, i%4+4), f(p(a+2)+i//4, p(a+1)+i//4+1, i%4+4), f(p(a+2)+i//4, p(a+1)+i//4+2, i%4+4), …, f(p(a+2)+i//4, p(a+4)-1, i%4+4)を使用する。ブロック800Cの残りの部分のノードはチェインから除かれる。
【0124】
以上の四つの過程により、割り当て装置100の割り当て部102が行う最終的な割り当てが得られる。
【0125】
N > 9である場合、割り当て装置100の割り当て部102は、入力されたNに対して、式(2)のQUBO問題の変数x_i,aのうちi = 0, 1, 2, 3のものを式(9)で表されるp (N + 3)個のノードに割り当てる。また、割り当て部102は、x_i,aのうちi = 4p, 4p + 1, 4p + 2, 4p + 3のものを式(10)で表されるp (N + 3)個のノードに割り当てる。
【0126】
【0127】
式(9)の割り当ては6≦N≦9の場合の式(7)の拡張である。式(7)と比べて使用するノードの数がp倍になる。最初に記載しているノードの位置f(pa + 2p, pa, i)はaを1大きくするごとに使用するユニットが縦方向と横方向にpだけ移動する。この間にあるユニットには同じaのx_i,aに対する他のp-1個のバンドルがある。
【0128】
【0129】
式(9)の割り当てで使用するノードをf(m,n,k)とすると、式(10)で使用するノードはf(n, m, k’)である。ただしk<4のときk’=k+4であり、k≧4のときk’=k-4である。mとnの入れ替えは使用するユニットの行と列の入れ替えを表し、kとk’の入れ替えはユニット内で使用するノードの入れ替えを表す。式(9)においてユニット内で横(縦)に並ぶ4つのノードのうちの一つを使用する場合、式(10)ではユニット内で縦(横)に並ぶ4つのノードのうちの一つを使用する。これを考えるとき、式(9)はi = 0, 1, 2, 3、式(10)はi = 4p, 4p+1, 4p+2, 4p+3であることに注意する。
【0130】
ここではpが2以上の整数のときを考えているが、p=1のときは式(9)が式(7)に一致し、式(10)が式(8)に一致する。p=1の場合は式(7)と式(8)ですべての割り当てが完了するが、p≧2の場合は、式(9)と式(10)で割り当てたi = 0, 1, 2, 3, 4p, 4p + 1, 4p + 2, 4p + 3以外のiのx_i,aがあり、それらはまだ割り当てられていない。これはバンドルの数が3以上であることに由来する。1≦q<pをみたす整数qを用いて、割り当てられていないx_i,aのiはi = 4q、4q + 1、4q + 2、4q + 3, 4(p + q)、4(p + q) + 1、4(p + q) + 2、4(p + q) + 3と表される。
【0131】
i = 4q、4q + 1、4q + 2、4q + 3 (1≦q<p)のx_i,aをノードに割り当てるが、それはqが小さい値のものから順番に割り当てていく。まずq=1のx_i,a(i=4, 5, 6, 7)を考える。そのために、x_i-4,aを割り当てたノードを考える。ここでi-4 = 0 ,1, 2, 3であり、x_i-4,aはすでに式(9)によってノードに割り当てられている。x_i-4,aを割り当てたノードからユニットに関して行を+1、列を+1だけ並行移動する。つまりx_i-4,aを割り当てたノードの一つがf(m, n, k)であるなら、f(m+1, n+1, k)に移動することを意味する。このように並行移動した位置のノードにx_i,aを割り当てる。x_i-4,aを割り当てたノードはp(N+3)個あるため、それらに対して同様に並行移動したノードにx_i,aを割り当てる。ただしf(p(N + 1), pa + q, i - 4q)のノードにはx_i,aを割り当てない。その代わりにf(pa + 2p + q, pa + q, i - 4(q - 1))にx_i,aを割り当てる。次にq=2に対応するx_i,a (i = 8, 9, 10, 11)を考える。上と同様に、x_i-4,a (i - 4 = 4, 5, 6, 7)を割り当てたノードをユニットに関して行を+1、列を+1だけ並行移動したノードにx_i,aを割り当てる。ただしf(p(N + 1), pa + q, i - 4q)のノードにはx_i,aを割り当てない。その代わりにf(pa + 2p + q, pa + q, i - 4(q - 1))にx_i,aを割り当てる。qを1ずつ大きくしていきながら同様の割り当てをq = pまで行う。
【0132】
次にi = 4(p + q)、4(p + q) + 1、4(p + q) + 2、4(p + q) + 3 (1≦q<p)のx_i,aをノードに割り当てる。まずq=1から始める。上と同様に、x_i-4,aに割り当てたノードの位置からユニットに関して行を+1、列を+1だけ並行移動した位置のノードにx_i,aを割り当てる。ただしf(pa + q, p(N + 1), i - 4(p + q-1))のノードにはx_i,aを割り当てない。その代わりf(pa + q, pa + 2p + q , i - 4(p + q))にx_i,aを割り当てる。そして次にq=2に対応するx_i,aを割り当てる。qを1ずつ大きくしていきながら同様の割り当てをq=pまで行う。以上により、割り当て装置100の割り当て部102はすべての変数x_i,aをノードに割り当てる。
【0133】
[動作の説明]
次に、本実施の形態の動作について図を参照して説明する。
図16は、割り当て装置100の動作の流れを示すフローチャートである。また、
図17は、計算システム10による巡回セールスマン問題(QUBO問題)の計算動作の流れを示すフローチャートである。
【0134】
図16を参照しつつ、割り当て装置100の動作の流れを説明する。
まず、割り当て装置100の入力受付部101は、図示しない入力装置を介して、巡回セールスマン問題の都市数Nの入力を受付ける(ステップS101)。
【0135】
次に、割り当て装置100の割り当て部102は、入力された都市数の巡回セールスマン問題を、予め記憶されている式(2)の形のQUBO問題として表し、二値変数(QUBO変数)xをキメラグラフ上のノードへ割り当てる(ステップS102)。このとき、式(2)においてどの変数とどの変数が積の形で現れるかという情報だけが必要であり、WとCの具体的な値は不要である。割り当て部102は、Nの値に応じた割り当ての式(式(6)、式(7)、式(8)、式(9)、式(10))を用いて、上述の通り、割り当てを実行する。
【0136】
次に、割り当て装置100の出力部103は、割り当て部102の割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する(ステップS103)。この出力は、例えば、ディスプレイなどの図示しない出力装置に対して行われてもよいし、電子ファイルとしての出力であってもよい。
【0137】
次に、計算システム10による巡回セールスマン問題(QUBO問題)の計算動作の流れを説明する。問題を量子アニーリングマシン200で解く場合、動作の流れは
図17のフローチャートに示されるような流れとなる。
【0138】
まず、割り当て装置100の出力(割り当てのリスト)と計算装置300の出力(QUBO変数の係数)が入出力装置400に入力される(ステップS201)。さらに、ステップS201では、ユーザが、チェイン内のノードをつなぐエッジに対応する量子ビット間の結合の強さ(チェイン強度)を指定し、入出力装置400にその強さの値を入力する。ここで指定するチェイン強度はすべてのチェインで同一である。
【0139】
次に、入出力装置400は、割り当てのリスト、QUBO変数の係数、チェイン強度を使って、量子アニーリングマシン200で使用する量子ビットを決めるとともに、量子ビット間の結合の強さを算出する(ステップS202)。この算出は、上記の三つの入力があれば容易に行える。ここで算出された量子ビット間の結合の強さにはチェイン内のエッジに対応する結合の強さも含まれており、それはすべて指定したチェイン強度と等しくなっている。
【0140】
次に、入出力装置400は、使用対象の量子ビットのリストと量子ビット間の結合の強さを量子アニーリングマシン200へ入力する(ステップS203)。
次に、量子アニーリングマシン200は入力で指定された量子ビットにおいて、入力で指定された量子ビット間結合の強さを実現する(ステップS204)。
【0141】
次に、量子アニーリングマシン200が量子アニーリングを実行する。具体的には、量子アニーリングマシン200内の量子ビットの状態が、初期状態から、量子ビット全体のエネルギーを最低にする状態へ遷移する。各量子ビットは一般に二つの状態を取り得るが、最終的にどちらかの状態になる(ステップS205)。
そして、このときの各量子ビットの状態のリストが量子アニーリングマシン200から入出力装置400に出力される(ステップS206)。
【0142】
次に、入出力装置400は量子ビットの状態のリストをQUBO変数の値のリストに変換する(ステップS207)。変換結果は例えば、x_00 = 0、x_01 = 1、…というものである。
入出力装置400はこのリストを出力する(ステップS208)。この出力は、例えば、ディスプレイなどの図示しない出力装置に対して行われてもよいし、電子ファイルとしての出力であってもよい。
【0143】
[効果の説明]
本実施の形態では、割り当て装置100が、巡回セールスマン問題を表すQUBO問題の変数をキメラグラフ上のノードに割り当てる。上述した通り、本実施の形態による割り当てでは、QUBO問題の変数の積に寄与しないノードの使用を抑制することができる。すなわち、キメラグラフ上でのチェインの配置を工夫することにより、以下の条件をみたすノード(ノードaと呼ぶ)が少なくなる。その条件とは、ノードaとエッジでつながっている全てのチェインについて、当該チェインに割当てられたQUBO変数と、ノードaが属するチェインに割当てられたQUBO変数とが目的関数において積の形で現れないこと、である。本実施の形態では、上の条件をみたすノードの数は各チェインにおいて(p-1)(N-4)もしくは(p-1)(N-4) + pである。ただし、上の条件をみたすノードの数が(p-1)(N-4)+pになるチェインは((N-1)2-8p)本あり、上の条件をみたすノードの数が(p-1)(N-4)+pになるチェインは8p本ある。たとえばN=9の場合、上の条件を満たすノードの数は0か1である。一方、非特許文献1に基づく割り当てでは5か6である。これによりチェインに含まれるノードの数が少なくなる。たとえばN=9の場合、それぞれのチェインに含まれるノードの数は、本実施の形態では12であり、非特許文献1に基づく割り当てでは17である。その結果、巡回セールスマン問題に対応するQUBO問題をキメラグラフ上で表すために使用するノードを少なくすることができる。すなわち、割り当て装置100によれば、巡回セールスマン問題に対応するQUBO問題の変数と、このQUBO問題を解くためのグラフのノードとの対応関係として、使用するノード数を抑制した対応関係を得ることができる。これにより、キメラグラフ上に表された巡回セールスマン問題を量子アニーリングで解く際に正解率が上がる。
【0144】
ここで、本実施の形態に基づく結果と非特許文献1の方法に基づく結果について比較して説明する。なお、都市数が6未満である場合、キメラグラフ上でのチェインの構成、及びどのノードを同じチェインに含めるか、は非特許文献1の方法と同じである。都市数が6以上の場合、非特許文献1の方法と異なるチェインの構成になる。
図18は、都市数8の巡回セールスマン問題についての実験結果を表す表である。
【0145】
ここでは、K(4)のキメラグラフが採用されている量子アニーリングマシンのキメラグラフ上に、都市数8の巡回セールスマン問題に対するQUBO変数を、本実施の形態による方法で割り当て、その問題を当該量子アニーリングマシンで解く実験を行った。また、比較例の実験として、同じ問題について、非特許文献1に記載されているものを利用した方法でも割り当てを行い、量子アニーリングマシンで解く実験を行った。なお、本実施の形態についての実験と比較例についての実験において、量子アニーリングマシンに対する設定は、割り当てに関するパラメータ以外はどちらも同じ設定にしている。
【0146】
巡回セールスマン問題は都市数が同じでも都市の配置、つまり都市間の距離、が異なれば異なる問題になる。ここでは、都市数8で都市間距離が異なる問題をランダムに100問生成し、本実施の形態についての実験と、比較例についての実験とで、それぞれ解いた。ここで、問題を解く、とは、与えられた配置の都市をすべて訪問して最初に訪問した都市に戻って来るまでの距離の合計があらゆる訪問順の中で最短になる訪問順をみつけることである。実験で扱った問題のすべては事前にすべての訪問順の総距離を計算することで、正解が既にみつけてある。正解とは、総距離が最短となる訪問順である。
【0147】
図18に示した表では、100問のうち、正解が得られた問題の数と、正解からの誤差が所定の範囲(1%および10%)以内に収まった解が得られた問題の数を示している。正解からの誤差とは、量子アニーリングマシンによって得られた解における都市の訪問順の総距離の、正解の訪問順の総距離からの誤差である。つまり、誤差1%とは、得られた解が与える総距離が正解の訪問順の総距離の101%であることを意味する。
図18に示されている通り、本実施の形態による割り当てを行った方が比較例に比べて正解および近似解を得られる確率が高い。この差の要因は使用するノード数の差と考えられる。この実験において、本実施の形態では、使用したノード数が539であるのに対し、比較例では、686であった。
【0148】
[実施の形態2]
実施の形態1では、キメラグラフのユニットのノード数が予め定められていた。すなわち、実施の形態1にかかる割り当て装置100は、K(4)のキメラグラフが用いられる前提で、二値変数の割り当てを行った。すなわち、r=4を前提とした変数の割り当てが行われた。これに対し、実施の形態2では、任意の値のrで規定されるキメラグラフへの二値変数の割り当てを可能にする割り当て装置について説明する。ここで、rの値は、任意の自然数である。
【0149】
図19は、実施の形態2にかかる計算システム20の一例を示す模式図である。本実施の形態は、割り当て装置100が都市数Nのみならず、ユニットの構成を規定するパラメータrの値の入力も受付け、入力されたrで規定されるキメラグラフのノードへの二値変数の割り当てを行う点で実施の形態1と異なる。すなわち、実施の形態2では、入力受付部101は、巡回セールスマン問題の都市数Nの入力と、キメラグラフ(ユニット)の構成を規定するパラメータrの値の入力を受付ける。そして、実施の形態2では、割り当て部102は、入力受付部101が受付けたrの値で規定されるユニットK(r)により構成されるキメラグラフのノードに対し、都市数Nの巡回セールスマン問題を表すQUBO問題の二値変数を割り当てる。具体的には、割り当て部102は、以下の説明で現れるrの値として、入力受付部101が受付けた値を用いる。なお、実施の形態2では、量子アニーリングマシン200の量子ビットのグラフ構成は、K(r)のキメラグラフの構成になっているとする。このため、例えば、ユーザは、量子アニーリングマシン200に対応するrの値を割り当て装置100に入力する。
【0150】
実施の形態2は、上述した点を除き、実施の形態1と同様であるため、実施の形態1と重複する説明は適宜割愛する。なお、r=4とすることにより、実施の形態1における数式を伴う説明と実施の形態2における数式を伴う説明とは一致することとなる。
【0151】
以下、本実施の形態の割り当て方法について具体的に説明する。割り当ての方法を具体的に説明するために、まず、K(r)のユニットにより構成されるキメラグラフ上のノードの位置に番号を与える。m行n列目のユニットのk番目のノードを(L×m + n)×2r + k番とする。m、n、kを定めたときにそれに対応するノードの番号を与える関数f_r(m, n, k)を式(11)で表す。すなわち、キメラグラフを構成する単位グラフであるユニットが2r個のノードにより構成されているとしたときの、キメラグラフのm行n列目のユニットのk番目のノードの識別番号f_r(m,n,k)を式(11)で表す。
【0152】
【0153】
ただし、m、n、およびkは0以上の整数である。本実施の形態では、ユニットがK(r)のキメラグラフへ二値変数の割り当てが行われるため、ここではk = 0, 1, 2, ..., 2r-1である。mとnの上限はL-1である。つまり、m, n = 0, 1, 2, ..., L-1である。LはN×N/4より大きい任意の整数とする。
【0154】
実施の形態1と同様に、一つめの過程として、非特許文献1の方法と同じ方法でどのノードを同一チェインに含めるかが決められる。ここでチェインを番号s(ただし、sは0以上の整数)で区別する。使用するキメラグラフのユニットの構造が実施の形態1とは異なるため、s番目のチェインに含めるノードは式(12)で表されるノードである。すなわち、一つめの過程では、s番目のチェインに含めるノードを、式(12)で表されるノードとすることにより、チェインを構成するノードが決定される。
【0155】
【0156】
tとuはsの値によって一意に定まる。tはs/r以下の最大の整数(t =floor(s/r))であり、uはsをrで割ったときのあまり(u = s - r×floor(s/r))である。s = r×t + uという関係も成り立つ。これらの関係式から、チェインを番号sで区別するとともに、(t, u)とも表すことにする。たとえばチェイン1はチェイン(0, 1)とも表すことにする。式(12)はエッジでつながっているノードが並ぶ順番で書かれている。したがって、式(12)において、各ノードは、隣に列記されているノードとはエッジで直接つながっているが、隣に列記されていないノードとは直接つながっていない。
【0157】
このチェインの構成では、n≦m≦N-2をみたすm行n列目のユニットのみが使用されている。m行n列目のユニットのノードを含むチェインは、チェイン(m, 0), (m, 1), ..., (m, r-1), (n, 0), (n, 1), ..., (n, r-1)の2r個である。特に、最初のr個のチェインがユニット内の縦のr個のノードを使用し、残りのr個のチェインがユニット内の横のr個のノードを使用する。
【0158】
4≦N≦r+1の場合、二つめの過程で、変数x_i,aをs = r×a + iの関係で決まるs番目のチェインに割り当てる。なお、s番目のチェインのノードは一つめの過程で決められており、具体的には式(12)で与えられている。
【0159】
実施の形態1と同様に、三つめの過程として、変数x_i,aに対応するチェインであるチェイン(a, i)からf_r(N-1, a, i), f_r(N, a, i), f_r(N+1, a, i), ..., f_r(L-1, a, i)のノードを除く。その理由は、これらのノードがエッジでつながるチェインは目的関数の変数と対応しないからである。4≦N≦r+1の場合、四つめの過程は行わない。
【0160】
これらの過程に対応する割り当てを実現するため、4≦N≦r+1の場合、割り当て装置100の割り当て部102は、入力されたNに対して、式(2)のQUBO問題の変数x_i,aを以下の式(13)で表されたN個のノードに割り当てる。
【0161】
【0162】
式(13)は式(6)の拡張である。使用するユニットは同じで、ユニット内で使用するノードのみが変更されている。キメラグラフのユニットがK(4)からK(r)になったことを反映し、式(6)でi+4となっているところが式(13)ではi+rになっている。これ以降に示す割り当て式においても同様の変更が行われている。
【0163】
次に、r+2≦N≦2r+1の場合を考える。r+2≦N≦2r+1の場合、二つめの過程において変数x_i,aを、i = 0, 1, 2, ..., r-1については、s = r×a + iの関係で決まるs番目のチェインに割り当てる。また、i = r, r+1,..., N-2についての変数x_i,aは、 s = r×(N - 1 + a) + i-rの関係で決まるs番目のチェインに割り当てる。なお、s番目のチェインのノードは一つめの過程で決められており、具体的には式(12)で与えられている。
【0164】
目的関数において積にならないQUBO変数に対応するチェインのみとエッジでつながっているノードは、チェインの端に集まっており、三つめの過程として、それらのノードをチェインから除く。除くノードは実施の形態1の場合と同じユニットにあり、ユニット内でのノードの位置は、実施の形態1でi+4となっている場合はi+rとし、i-4となっている場合はi-rとする。すなわち、i = 0, 1, …, r-1の場合、変数x_i,aに対応するチェインからノードf_r(N+a+1, a, i), f_r(N+a+2, a, i), ..., f_r(L-1, a, i)を除く。i = r, r+1, …, N-2の場合、変数x_i,aに対応するチェインからノードf_r(N-1+a, 0, i), f_r(N-1+a, 1, i), ..., f_r(N-1+a, a-2, i)と、f_r(2N-2, N-1+a, i-r), f_r(2N-1, N-1+a, i-r), ..., f_r(L-1, N-1+a, i-r)を除く。
【0165】
四つめの過程は、第一の実施の形態と同様にブロックの移動として行う。ブロックに含まれるユニットは実施の形態1と同じである。なお、上述したブロック800Aは、ここでは、i=0, 1, 2, … , rであるx_i,aに対応するチェインのみが使用するノードから構成されるノード群に対応するブロックである。また、上述したブロック800Bは、i=r+1, r+2, …, N-2であるx_i,aに対応するチェインのみが使用するノードから構成されるノード群に対応するブロックである。また、上述したブロック800Cは、チェインが使用するノードであって、ブロック800A又はブロック800Bのいずれにも属さないノードから構成されるノード群に対応するブロックである。ブロック800Cの中で目的関数のQUBO変数の積に直接寄与しているノードは、a = 0, 1, ..., N-2の(N-2+a)行a列、(N-1+a)行a列、及び(N+a)行a列のユニットにある。すなわち、上述したブロック800Eは、これらのユニットのノード群に対応するブロックである。ブロックの移動において、変数x_i,a(ただしi = r, r+1, ..., N-2)のチェインが使用するノードも変わるが、この変更の規則は実施の形態1と、一部を除いて同じである。異なるのは、ノードのユニット内の位置の移動についてである。実施の形態2においては、ノードのユニット内の位置はkからk’に移動し、k<rのときk’=k+rであり、k≧rのときk’=k-rである。すなわち、ブロック800Aのノード群は、列方向であって行番号が増える方向にユニット2個分移動する。そして、ブロック800Bに属するf_r(m, n, k)で表されるノードの代わりにf_r(n-(N-1), m-(N-3), k’)で表されるノード(ただしk<rのときk’=k+rであり、k≧rのときk’=k-rである)が使用されるよう使用対象のノードが変更される。これにより、変数x_i,aは移動前にf(N-1+a, N-1, i), f(N-1+a, N, i), ..., f(N-1+a, N-1+a, i), f(N-1+a, N-1+a, i-r), f(N+a, N-1+a, i-r), f(N+a+1, N-1+a, i-r), ..., f(2N-3, N-1+a, i-r)を使用していたが、移動によりf(0, a+2, i-r), f(1, a+2, i-r), ..., f(a, a+2, i-r), f(a, a+2, i), f(a, a+3, i), ..., f(a, N, i)を使用する。また、ブロック800Eに属するf_r(m, n, k)で表されるノードの代わりにf_r(n+2, m-(N-3), k’)で表されるノード(ただしk<rのときk’=k+rであり、k≧rのときk’=k-rである)が使用されるよう使用対象のノードが変更される。具体的には、変数x_i,aは移動前にf(N-2+a, a, i), f(N-1+a, a, i), f(N+a, a, i)を使用していたが、移動によりf(a+2, a+1, i+r), f(a+2, a+2, i+r), f(a+2, a+3, i+r)を使用する。これにより、割り当て部102は、不要なノードによりつながっている第1の部分チェインと第2の部分チェインとを含むチェインの第1の部分チェインと第2の部分チェインとを、当該不要なノードを介さずにつなぎ、当該不要なノードを除去する。
【0166】
以上の四つの過程により、割り当て装置100が行う最終的な割り当てが得られる。これらの過程に対応する割り当てを実現するため、r+2≦N≦2r+1の場合、割り当て装置100の割り当て部102は、入力されたNに対して、式(2)のQUBO問題の変数x_i,aを次のようにノードに割り当てる。すなわち、割り当て部102は、変数x_i,aのうちi = 0, 1, …, r-1のいずれかであるものを式(14)で表されたN+3個のノードに割り当てる。また、割り当て部102は、変数x_i,aのうちi = r, r+1, …, N-2のいずれかであるものを式(15)で表されたN+3個のノードに割り当てる。
【0167】
【0168】
【0169】
次に、2r (p - 1) + 2≦N≦2rp + 1をみたすNの場合を考える。ここでpは2以上の自然数である。二つめの過程において変数x_i,aを、i = 0, 1, 2, ..., rp-1については、s = r×p×a+iの関係で決まるs番目のチェインに割り当てる。また、i = rp, rp+1, ..., N-2についての変数x_i,aは、 s = rp×(N - 1 + a) + i-rpの関係で決まるs番目のチェインに割り当てる。なお、s番目のチェインのノードは一つめの過程で決められており、具体的には式(12)で与えられている。
【0170】
p = 1の場合と同様に、ここまでの割り当てにおいて、チェインから除くことのできるノードがチェインの端の方に集まっており、三つめの過程として、それらのノードをチェインから除く。具体的には次のようなノードが除かれる。変数x_i,aに対応するチェインの端にある除くことのできるノードは、i = 0, 1, 2, …, rp-1の場合、f_r(p(N+a+1), pa+i//r, i%r), f_r(p(N+a+1)+1, pa+i//r, i%r), ..., f_r(L-1, pa+i//r, i%r)である。なお、「//」と「%」の意味は上述した通りである。i = rp, rp+1, …, N-2の場合、チェインの端にある除くことのできるノードは、f_r(p(N-1+a)+i//r-p, 0, i%r+r), f_r(p(N-1+a)+i//r-p, 1, i%r+r), ..., f_r(p(N-1+a)+i//r-p, p(a-1)-1, i%r+r)と、f_r(p(2N-2), p(N-1+a)+i//r-p, i%r), f_r(p(2N-2)+1, p(N-1+a)+i//r-p, i%r), …, f_r(L-1, p(N-1+a)+i//r-p, i%r)である。
【0171】
四つめの過程についても、p=1の場合と同様にブロックを考えて行う。なお、上述したブロック800Aは、ここでは、i=0, 1, ..., rp-1であるx_i,aに対応するチェインのみが使用するノードから構成されるノード群に対応するブロックである。また、上述したブロック800Bはi=rp, rp+1, ..., N-2であるx_i,aに対応するチェインのみが使用するノーから構成されるノード群に対応するブロックである。また、上述したブロック800Cは、チェインが使用するノードであって、ブロック800A又はブロック800Bのいずれにも属さないノードから構成されるノード群に対応するブロックである。ブロック800Cの中で目的関数のQUBO変数の積に直接寄与しているノードは、a = 0, 1, ..., N-2とq=1, 2, ..., pのq(N-2+a)行qa列、q(N-1+a)行qa列、及びq(N+a)行qa列のユニットにある。すなわち、上述したブロック800Eは、これらのユニットのノード群に対応するブロックである。四つめの過程では、次のようなブロックの移動が行われる。ブロック800Aのノード群は、列方向であって行番号が増える方向にユニット2p個分移動する。そしてブロック800Bに属するf_r(m, n, k) で表されるノードの代わりにf_r(n-p(N-1), m-p(N-3), k’)で表されるノード(ただしk<rのときk’=k+rであり、k≧rのときk’=k-rである)が使用されるよう使用対象のノードが変更される。これにより、変数x_i,aは移動前にブロック800Bのf_r(p(N-1+a)+i//r-p, p(N-1), i%r+r), f_r(p(N-1+a)+i//r-p, N, i%r+r), ..., f_r(p(N-1+a)+i//r-p, p(N-1+a)+i//r-p, i%r+r), f_r(p(N-1+a)+i//r-p, p(N-1+a)+i//r-p, i%r), f_r(p(N-1+a)+i//r-p+1, p(N-1+a)+i//r-p, i%r), f_r(p(N-1+a)+i//r-p+2, p(N-1+a)+i//r-p, i%r), ..., f_r(p(2N-2)-1, p(N-1+a)+i//r-p, i%r)を使用していたが、移動によりf_r(0, p(a+2)+i//r-p, i%r), f_r(1, p(a+2)+i//r-p i%r), ..., f_r(pa+i//r-p, p(a+2)+i//r-p, i%r), f_r(pa+i//r-p, p(a+2)+i//r-p, i%r+r), f_r(pa+i//r-p, p(a+2)+i//r-p+1, i%r+r), ..., f_r(pa+i//r-p, p(N+1)-1, i%r+r)を使用することになる。
また、ブロック800Eに属するf_r(m, n, k)で表されるノードの代わりにf_r(n+2p, m-p(N-3), k’) で表されるノード(ただしk<rのときk’=k+rであり、k≧rのときk’=k-rである)が使用されるよう使用対象のノードが変更される。これにより、たとえば変数x_i,aはi = 0, 1, …, rp-1の場合、移動前にf_r(p(N-2+a)+i//r, pa+i//r, i%r), f_r(p(N-2+a)+i//r+1, pa+i//r, i%r), …, f_r(p(N+a+1)-1, pa+i//r, i%r)を使用していたが、移動によりf_r(p(a+2)+i//r, p(a+1)+i//r, i%r+r), f_r(p(a+2)+i//r, p(a+1)+i//r+1, i%r+r), f_r(p(a+2)+i//r, p(a+1)+i//r+2, i%r+r), …, f_r(p(a+2)+i//r, p(a+r)-1, i%r+r)を使用することになる。これにより、割り当て部102は、不要なノードによりつながっている第1の部分チェインと第2の部分チェインとを含むチェインの第1の部分チェインと第2の部分チェインとを、当該不要なノードを介さずにつなぎ、当該不要なノードを除去する。
【0172】
以上の四つの過程により、割り当て装置100が行う最終的な割り当てが得られる。
pが2以上の自然数で2r (p - 1) + 2≦N≦2rp + 1をみたすNの場合、これらの過程に対応する割り当てを実現するため割り当て装置100の割り当て部102は、入力されたNに対してQUBO問題の変数x_i,aを次のようにノードに割り当てる。すなわち、割り当て部102は、変数x_i,aのうちi = 0, 1, …, r-1のいずれかであるものを式(16)で表されるp (N + 3)個のノードに割り当て、変数x_i,a のうちi = rp, rp + 1, …, r(p+1) -1のいずれかであるものを式(17)で表されるp (N + 3)個のノードに割り当てる。
【0173】
【0174】
【0175】
ここではpが2以上の整数のときを考えており、式(16)と式(17)で割り当てたi = 0, 1, …, r-1, rp, rp + 1, …, r(p+1) -1以外のiのx_i,aがあり、それらはまだ割り当てられていない。1≦q<pをみたす整数qを用いて、割り当てられていないx_i,aのiはi = rq、rq + 1、…、r(q+1) -1, r(p + q)、r(p + q) + 1、…、r(p + q + 1) -1と表される。i = rq、rq + 1、…、r(q+1) -1 (1≦q<p)のx_i,aをノードに割り当てるが、それはqが小さい値のものから順番に割り当てていく。まずq=1のx_i,a(i=r, r+1, …, 2r-1)を考える。そのために、x_i-r,aを割り当てたノードを考える。ここでi-r = 0 ,1, …, r-1であり、x_i-r,aはすでに式(16)によってノードに割り当てられている。x_i-r,aを割り当てたノードからユニットに関して行を+1、列を+1だけ並行移動する。つまりx_i-r,aを割り当てたノードの一つがf_r(m, n, k)であるなら、f_r(m+1, n+1, k)に移動することを意味する。このように並行移動した位置のノードにx_i,aを割り当てる。x_i-r,aを割り当てたノードはp(N+3)個あるため、それらに対して同様に並行移動したノードにx_i,aを割り当てる。ただし、その際の割り当て先のノードがf_r(p(N + 1), pa + q, i - rq)で表されるノードである場合には、当該ノードにはx_i,aを割り当てない。その代わりにf_r(pa + 2p + q, pa + q, i - r(q - 1))で表されるノードにx_i,aを割り当てる。qを1ずつ大きくしていきながら同様の割り当てをq = pまで行う。
【0176】
次にi = r(p + q)、r(p + q) + 1、…、r(p + q + 1) -1 (1≦q<p)のx_i,aをノードに割り当てる。まずq=1から始める。上と同様に、x_i-r,aに割り当てたノードの位置からユニットに関して行を+1、列を+1だけ並行移動した位置のノードにx_i,aを割り当てる。ただし、その際の割り当て先のノードがf_r(pa + q, p(N + 1), i - r(p + q-1))で表されるノードである場合には、当該ノードにはx_i,aを割り当てない。その代わりf_r(pa + q, pa + 2p + q , i - r(p + q))で表されるノードにx_i,aを割り当てる。qを1ずつ大きくしていきながら同様の割り当てをq=pまで行う。以上により、割り当て装置100の割り当て部102はすべての変数x_i,aをノードに割り当てる。
【0177】
[動作の説明]
次に、本実施の形態の動作について図を参照して説明する。
図20は、実施の形態2にかかる割り当て装置100の動作の流れを示すフローチャートである。
図20を参照しつつ、実施の形態2にかかる割り当て装置100の動作の流れを説明する。
【0178】
まず、割り当て装置100の入力受付部101は、図示しない入力装置を介して、巡回セールスマン問題の都市数Nの入力と、キメラグラフのユニットの構造を特徴づけるrの値の入力を受付ける(ステップS301)。
【0179】
次に、割り当て部102は、入力された都市数の巡回セールスマン問題を、予め記憶されている式(2)の形のQUBO問題として表し、二値変数(QUBO変数)xを入力されたrで規定されるキメラグラフ上のノードへ割り当てる(ステップS302)。なお、このとき、割り当ての際に使用するユニットはrに依存せず、第1の実施の形態と同じである。ここでユニットがrに依存しないとは、割り当ての際に使用するユニットを行番号mと列番号nにより指定した場合、そのmとnの値がrの値に依存しない、ということである。ユニット内で使用するノードの位置のみrに依存する。割り当て部102は、Nの値に応じた割り当ての式(式(13)、式(14)、式(15)、式(16)、式(17))を用いて、上述の通り、割り当てを実行する。
【0180】
次に、割り当て装置100の出力部103は、割り当て部102の割り当て結果に基づいて、二値変数とノードとの対応関係を示す情報を出力する(ステップS303)。この出力は、例えば、ディスプレイなどの図示しない出力装置に対して行われてもよいし、電子ファイルとしての出力であってもよい。QUBO問題を量子アニーリングマシン200で解く場合、実施の形態1において
図17を参照して説明した動作と同様の動作が行われる。
【0181】
以上、実施の形態2について説明した。本実施の形態によれば、任意のrで規定されるユニットを有するキメラグラフのノードに対して、使用するノード数を抑制しつつ、巡回セールスマン問題に対応するQUBO問題の変数を割り当てることができる。
【0182】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0183】
100 割り当て装置
101 入力受付部
102 割り当て部
103 出力部
150 ネットワークインタフェース
151 メモリ
152 プロセッサ
200 量子アニーリングマシン
300 計算装置
400 入出力装置