(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-24
(45)【発行日】2022-12-02
(54)【発明の名称】変数埋込方法及び処理システム
(51)【国際特許分類】
G06N 99/00 20190101AFI20221125BHJP
G06N 10/60 20220101ALI20221125BHJP
【FI】
G06N99/00 180
G06N10/60
(21)【出願番号】P 2019058504
(22)【出願日】2019-03-26
【審査請求日】2021-11-16
(31)【優先権主張番号】P 2018117045
(32)【優先日】2018-06-20
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】110000567
【氏名又は名称】弁理士法人サトー
(72)【発明者】
【氏名】岡田 俊太郎
(72)【発明者】
【氏名】寺部 雅能
(72)【発明者】
【氏名】大関 真之
【審査官】多賀 実
(56)【参考文献】
【文献】米国特許出願公開第2014/0324933(US,A1)
【文献】特表2011-524026(JP,A)
【文献】特開2017-151810(JP,A)
【文献】特開2017-219979(JP,A)
【文献】大関 真之,「量子アニーリングによる組合せ最適化」,オペレーションズ・リサーチ,公益社団法人日本オペレーションズ・リサーチ学会,2018年06月01日,第63巻, 第6号,pp.326-334
【文献】奥山 拓哉 外4名,「イジング計算機に向けたグラフ埋め込みアルゴリズム」,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2016年06月17日,第116巻, 第116号,pp.97-103
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
頂点(V)の間の相互作用を表すハードウェアグラフ(G2)が特定の固定アーキテクチャにより構成された最適化問題の専用ハードウェア(1)を用いて、当該最適化問題の全ての変数を埋込不可能な大規模問題を解く場合について、当該最適化問題の変数の相互作用を問題グラフ(G1)に表して解く場合に、前記問題グラフの変数を前記専用ハードウェアの前記ハードウェアグラフの頂点に埋込むことが可能な部分問題に分割し、前記部分問題の最適化処理を繰り返すことで前記大規模問題を解くときに用いられる変数埋込方法であって、
前記全ての変数のうち少なくとも一部を前記ハードウェアグラフの頂点に埋込むときに、
前記最適化問題の変数を前記ハードウェアグラフの頂点へ重複割当を必要とするか否かを判定する過程(S12)と、
前記重複割当を必要とする前記変数については前記部分問題の変数として用いることなく、前記重複割当の不要な前記変数を選択して前記ハードウェアグラフの頂点に埋込む過程(S13)と、
を備える変数埋込方法。
【請求項2】
完全グラフ(G1a)を前記ハードウェアグラフに埋込むときの埋込方法に基づいて前記ハードウェアグラフの頂点を紐付ける過程(S21)と、
前記ハードウェアグラフの上に前記変数を埋込むときに、当該変数が埋込まれる前記ハードウェアグラフの上で連結された部分グラフの中から少なくとも一つ以上の前記頂点を選択する過程(S26)と、
前記ハードウェアグラフに前記変数(X1,Xa)を埋込むときに、前記紐付けの内容に基づいて、前記選択した前記頂点から結合し且つその他の前記変数(X2~X9,Xb,Xc)との結合を増加させる前記頂点を、前記埋込む変数(X1,Xa)に対応して予約することで当該埋込む変数(X1,Xa)以外の前記その他の変数(X2~X9,X)の埋込みを禁止する過程(S27)と、をさらに備える請求項1記載の変数埋込方法。
【請求項3】
前記その他の変数(X)の埋込みを禁止する過程を実行した後、前記問題グラフの上で埋込済の前記変数(Xa)に結合した全ての前記変数(Xb)の埋込処理が完了した後に前記予約を解消する過程(S37,S38)、をさらに備える請求項2記載の変数埋込方法。
【請求項4】
前記ハードウェアグラフが、複数の頂点を備えた単位セル(C、C11…C44)を第1方向及び第2方向に沿って複数グリッド分だけ備えたキメラグラフにより構成される場合、一つの前記単位セル(C11,C33)の第1頂点(V11,V13)を基点として前記第1方向又は前記第2方向に結合する他の前記単位セル(C12,C13…,C31,C32,C34…)に対応した頂点を第2頂点(V11,V13)として予約する過程(S22)をさらに備える請求項2又は3記載の変数埋込方法。
【請求項5】
前記問題グラフの中で追加して埋込む前記変数を選択するときには、
すでに埋込みされた埋込済の前記変数に結合された未埋込の前記変数の中から選択する請求項1から4の何れか一項に記載の変数埋込方法。
【請求項6】
前記問題グラフの中で追加して埋込む前記変数を選択して前記ハードウェアグラフに埋込むときには、
すでに埋込みされた埋込済の前記変数(Xa)を一つ選択し(S34)、前記選択した埋込済の変数に結合した前記変数(Xb)を選択して埋込処理を完了した後(S35~S37)、他の埋込済の前記変数を選択し(S34)、当該選択した埋込済の変数(Xa)に結合した前記変数(Xb)の埋込処理を繰り返す請求項1から5の何れか一項に記載の変数埋込方法。
【請求項7】
前記大規模問題が、ワンホット(one-hot)制約又はワンコールド(one-cold)制約など一つだけ設けられた第一値がその他の全ての第二値と異なるように制約が設けられた二値変数(x
1
(1)~x
1
(Q):x
N
(1)~x
N
(Q))により表現される多値変数(S
1:S
N)を適用した多値問題であり、
前記部分問題の変数として前記多値変数の中の少なくとも一部の前記二値変数を含むように選択して前記ハードウェアグラフの頂点に埋込むときには、前記第一値とされている前記二値変数が含まれるように前記二値変数を選択して前記ハードウェアグラフの頂点に埋込処理する請求項1から6の何れか一項に記載の変数埋込方法。
【請求項8】
既に埋込処理が実行された前記多値変数(S
1)に前記問題グラフ上で結合する前記多値変数(S
2)の二値変数(x
2)を前記ハードウェアグラフの頂点に追加で埋込処理するときには、
前記多値変数を表現する前記二値変数の中で、前記埋込済の前記二値変数に前記問題グラフ上で結合している前記二値変数、又は、前記第一値とされている条件を満たす前記二値変数、を優先的に埋込む請求項7記載の変数埋込方法。
【請求項9】
前記第一値とされている前記二値変数を埋込不能と判定した場合(S65aでNO)、又は、前記選択した多値変数を表現する全ての前記二値変数の中で2つ以上埋込不能と判定した場合(S68でNO)には、当該二値変数により表現される前記多値変数の全体の埋込みを無効とし、先に埋込まれた前記二値変数を前記部分問題から除去する(S69)請求項7又は8記載の変数埋込方法。
【請求項10】
前記大規模問題が、ワンホット(one-hot)制約又はワンコールド(one-cold)制約など一つだけ設けられた第一値がその他の全ての第二値と異なるように制約が設けられた二値変数(x
1
(1)~x
1
(Q):x
N
(1)~x
N
(Q))により表現される多値変数(S
1:S
N)を適用した多値問題であり、
前記多値問題の多値変数(S
i)を最適化する際に、前記多値変数による多値状態を二択変数(y
i)を用いて2択により選択する2択最適化問題に変換した(S51~S54)後、
請求項1から6の何れか一項に示す変数埋込方法を用いて前記ハードウェアグラフの頂点に前記二択変数を前記変数として埋込む変数埋込方法。
【請求項11】
前記多値問題の各多値変数について現状の多値状態を維持するか、又は、各多値変数についてランダムに選択した他の多値状態に遷移するか(S51、S52)の2択による前記2択最適化問題に変換する請求項10記載の変数埋込方法。
【請求項12】
前記問題グラフ上で結合する前記多値変数(S
i、S
j)が同一の値である方が前記多値問題を評価する評価関数が最適化される場合、一の多値変数(S
i)の前記現状の多値状態か遷移先の前記他の多値状態の何れか少なくとも一以上が、前記一の多値変数(S
i)と結合する他の多値変数(S
j)の現状の多値状態又は遷移先の多値状態の何れか少なくとも一以上と同一状態となるように前記2択最適化問題を構築し、
前記問題グラフ上で結合する前記多値変数が異なる値である方が前記評価関数が最適化される場合、一の多値変数の現状の多値状態か遷移先の前記他の多値状態の何れか又は双方が、前記一の多値変数と結合する他の多値変数の現状の多値状態及び遷移先の多値状態の両方と異なる多値状態となるように前記2択最適化問題を構築する請求項11記載の変数埋込方法。
【請求項13】
頂点(V)の間の相互作用を表すハードウェアグラフ(G2)が特定の固定アーキテクチャにより構成された最適化問題の専用ハードウェア(1)を用いて、当該最適化問題の全ての変数を埋込不可能な大規模問題を解く場合について、当該最適化問題の変数の相互作用を問題グラフ(G1)に表して解く場合に、前記問題グラフの変数を前記専用ハードウェアの前記ハードウェアグラフの頂点に埋込むことが可能な部分問題に分割し、前記部分問題の最適化処理を繰り返すことで前記大規模問題を解くときに用いられる前記変数の埋込に係る処理システムであって、
前記全ての変数のうち少なくとも一部を前記ハードウェアグラフの頂点に埋込むときに、
前記最適化問題の変数を前記ハードウェアグラフの頂点へ重複割当を必要とするか否かを判定する判定部(7,S12)と、
前記重複割当を必要とする前記変数については前記部分問題の変数として用いることなく、前記重複割当の不要な前記変数を選択して前記ハードウェアグラフの頂点に埋込む埋込部(8,S13)と、を備える処理システム。
【請求項14】
完全グラフ(G1a)を前記ハードウェアグラフに埋込むときの埋込方法に基づいて前記ハードウェアグラフの頂点を紐付ける紐付け部(S21)と、
前記ハードウェアグラフの上に前記変数を埋込むときに、当該変数が埋込まれる前記ハードウェアグラフの上で連結された部分グラフの中から少なくとも一つ以上の前記頂点を選択する選択部(S26)と、
前記ハードウェアグラフに前記変数(X1,Xa)を埋込むときに、前記紐付けの内容に基づいて、前記選択した前記頂点から結合し且つその他の前記変数(X2~X9,Xb,Xc)との結合を増加させる前記頂点を、前記埋込む変数(X1,Xa)に対応して予約することで当該埋込む変数(X1,Xa)以外の前記その他の変数(X2~X9,X)の埋込みを禁止する禁止部(S27)と、
をさらに備える請求項13記載の処理システム。
【請求項15】
前記その他の変数(X)の埋込みを禁止する過程を実行した後、前記問題グラフの上で埋込済変数(Xa)に結合した全ての変数(Xb)の埋込処理が完了した後に前記予約を解消する解消部(S37,S38)、
をさらに備える請求項14記載の処理システム。
【請求項16】
前記ハードウェアグラフが、複数の頂点を備えた単位セル(C、C11…C44)を第1方向及び第2方向に沿って複数グリッド分だけ備えたキメラグラフにより構成される場合、一つの前記単位セル(C11,C33)の第1頂点(V11,V13)を基点として前記第1方向又は前記第2方向に結合する他の前記単位セル(C12,C13…、C31,C32,C34…)に対応した頂点を第2頂点(V11,V13)として予約する予約部(S22)をさらに備える請求項14又は15記載の処理システム。
【請求項17】
前記問題グラフの中で追加して埋込む前記変数を選択するときには、
すでに埋込みされた埋込済の前記変数に結合された未埋込の前記変数の中から選択する請求項13から16の何れか一項に記載の処理システム。
【請求項18】
前記問題グラフの中で追加して埋込む前記変数を選択して前記ハードウェアグラフに埋込むときには、
すでに埋込みされた埋込済の前記変数(Xa)を一つ選択し(S34)、前記選択した埋込済の変数に結合した前記変数(Xb)を選択して埋込処理を完了した後(S35~S37)、他の埋込済の前記変数を選択し(S34)、当該選択した埋込済の変数(Xa)に結合した前記変数(Xb)の埋込処理を繰り返す請求項13から17の何れか一項に記載の処理システム。
【請求項19】
前記大規模問題が、ワンホット制約又はワンコールド制約など一つだけ設けられた第一値がその他の全ての第二値と異なるように制約が設けられた二値変数(x
1
(1)~x
1
(Q):x
N
(1)~x
N
(Q))により表現される多値変数(S
1:S
N)を適用した多値問題であり、
前記埋込部は、前記部分問題の変数として前記多値変数の中の少なくとも一部の前記二値変数を含むように選択して前記ハードウェアグラフの頂点に埋込むときには、前記第一値とされている前記二値変数が含まれるように前記二値変数を選択して前記ハードウェアグラフの頂点に埋込処理する請求項13から18の何れか一項に記載の処理システム。
【請求項20】
前記埋込部は、
既に埋込処理が実行された前記多値変数(S
1)に前記問題グラフ上で結合する前記多値変数(S
2)の二値変数(x
2)を前記ハードウェアグラフの頂点に追加で埋込処理するときには、
前記多値変数を表現する前記二値変数の中で、前記埋込済の前記二値変数に前記問題グラフ上で結合している前記二値変数、又は、前記第一値とされている条件を満たす前記二値変数、を優先的に埋込む請求項19記載の処理システム。
【請求項21】
前記第一値とされている前記二値変数を埋込不能と判定した場合(S65aでNO)、又は、前記選択した多値変数を表現する全ての前記二値変数の中で2つ以上埋込不能と判定した場合(S68でNO)には、当該二値変数により表現される前記多値変数の全体の前記埋込部による埋込みを無効とし、先に埋込まれた前記二値変数を前記部分問題から除去する無効化処理部(S69)をさらに備える請求項19又は20記載の処理システム。
【請求項22】
前記大規模問題が、ワンホット(one-hot)制約又はワンコールド(one-cold)制約など一つだけ設けられた第一値がその他の全ての第二値と異なるように制約が設けられた二値変数(x
1
(1)~x
1
(Q):x
N
(1)~x
N
(Q))により表現される多値変数(S
1:S
N)を適用した多値問題であり、
前記多値問題の多値変数(S
i)を最適化する際に、前記多値変数による多値状態を二択変数(y
i)を用いて2択により選択する2択最適化問題に変換する変換部(S51~S54)を備え、
前記変換部が前記多値問題を前記2択最適化問題に変換した後、前記埋込部は請求項13から18の何れか一項に示す処理システムを用いて前記ハードウェアグラフの頂点に前記二択変数を前記変数として埋込む処理システム。
【請求項23】
前記多値問題の各多値変数について現状の多値状態を維持するか、又は、各多値変数についてランダムに選択した他の多値状態に遷移するか(S51、S52)の2択による前記2択最適化問題に変換する請求項22記載の処理システム。
【請求項24】
前記問題グラフ上で結合する前記多値変数が同一の値である方が前記多値問題を評価する評価関数が最適化される場合、前記一の多値変数(S
i)の現状の多値状態か遷移先の前記他の多値状態の何れか少なくとも一以上が、前記一の多値変数と結合する他の多値変数(S
j)の現状の多値状態又は遷移先の多値状態の何れか少なくとも一以上と同一状態となるように前記2択最適化問題を構築し、
前記問題グラフ上で結合する前記多値変数が異なる値である方が前記評価関数が最適化される場合、一の多値変数の現状の多値状態か遷移先の前記他の多値状態の何れか又は双方が、前記一の多値変数と結合する他の多値変数の現状の多値状態及び遷移先の多値状態の両方と異なる多値状態となるように前記2択最適化問題を構築する請求項23記載の処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハードウェアグラフへの変数埋込方法及び処理システムに関する。
【背景技術】
【0002】
従来より、出願人は、複数の変数を組合せて構成される評価関数の大域的な最適値を探索する最適化問題を高速に解く手法を開発している。このような組合せ最適化問題を高速に解くため、専用のハードウェアが一般に開発されている。
このハードウェアは特定の固定アーキテクチャを備えており、通常の汎用コンピュータよりも組合せ最適化問題を高速に解くことができる。この種のハードウェアは特定の固定アーキテクチャを備えているため、組合せ最適化問題を解くために幾つか制約を生じる。第1制約は、一度に処理可能な変数の絶対数に限度があることである。また第2制約は、当該変数間の相互作用数に限度があることである。専用のハードウェアを用いて最適化問題を効率的に処理するためには、このような制約条件下にて処理を実行することが求められる。
【0003】
前記の第1制約に対応するため、特許文献1記載の技術は、最適化問題の変数をハードウェアグラフに埋込むことが可能な部分問題に分割し、部分問題の最適化処理を繰り返すことで元の最適化問題の高精度解を取得しようとしている。しかしながら、ハードウェアグラフに可能な限り多くの変数を埋込むための具体的な方法は示されていない。与えられた最適化問題の変数をハードウェアグラフに埋め込むための具体的な方法は、特許文献2に挙げられている。
【0004】
特許文献2記載の技術は、解きたい問題グラフとハードウェアグラフとを参照し当該ハードウェアグラフの各頂点に対し変数を埋込んでいる。この特許文献2記載の変数の埋込処理は前半と後半に分かれている。前半では、ハードウェアグラフの頂点に複数の変数を重複して割り当てることを許容しつつ与えられた問題の全変数を埋込んでいる。またその後半においては、一つの変数だけが、ハードウェアグラフの上の各頂点に割り当てられるようにしている。その他、非特許文献1も参考文献として挙げることができる。
【先行技術文献】
【特許文献】
【0005】
【文献】米国公開2017-255629号明細書
【文献】米国特許9501747号明細書
【非特許文献】
【0006】
【文献】奥山等,「イジング計算機に向けたグラフ埋め込みアルゴリズム」,一般社団法人電子情報通信学会,vol.116,no.116,IEICE Technical Report,COMP2016-11,pp.97-103,2016年6月
【発明の概要】
【発明が解決しようとする課題】
【0007】
発明者は、背景技術欄に記載された特許文献2記載の技術を採用すると、特に後半の処理において多くの処理時間を要することを確認している。この特許文献2記載の技術は、前半において一旦重複を許容して埋込みしているため、後半にてその修正を図る必要があるためである。したがって、これらの全ての処理を完了するために多大な時間を要してしまう。特に、特許文献1記載の技術のように、大規模な問題を部分問題に分割しながらハードウェアグラフに繰り返し埋込む必要がある場合には、1回当たりの処理時間を短縮することが全体の処理時間を短縮するために重要である。
本発明の目的は、処理時間を短縮できるようにしたハードウェアグラフへの変数埋込方法及び処理システムを提供することにある。
【課題を解決するための手段】
【0008】
請求項1、13に記載した発明によれば、全ての変数のうち少なくとも一部を前記ハードウェアグラフの頂点に埋込むときに、最適化問題の変数をハードウェアグラフの頂点へ重複割当を必要とするか否かを判定し、重複割当を必要とする変数については部分問題の変数として用いることなく、重複割当の不要な変数を選択してハードウェアグラフの頂点に埋込んでいる。このため、重複割当の解消処理に時間を割く必要なく処理できるようになり、処理時間を短縮できるようになる。
例えば、重複割当を必要とするか否かの判断処理は、ハードウェアグラフの上で変数が割当てられていない頂点を始点とし、追加で埋め込みたい変数に隣接する埋込済変数に割当てられた頂点を終点とする経路を、未使用頂点のみを用いてハードウェアグラフ上で構成可能であるかを確認すれば良い。
例えば、上記の経路が存在する場合は、経路上の各頂点に対して追加で埋込みたい変数又は結合した埋込済変数を適切に埋め込むことで、問題グラフにおける変数間の相互作用を再現しながら、ハードウェアグラフに変数を埋込むことができる。この経路は可能な限り短い方が利用するハードウェアグラフ上の頂点数が少なくて済むため、ダイクストラ法等を用いて最短経路を求める方法が考えられる。
【図面の簡単な説明】
【0009】
【
図3】最適化問題の解導出処理を示すフローチャート
【
図5】ハードウェアグラフへの変数埋込処理の説明図(その1)
【
図6】ハードウェアグラフへの変数埋込処理の説明図(その2)
【
図7A】第2実施形態における完全グラフのハードウェアグラフへの埋込方法の説明図
【
図7B】ハードウェアグラフへの変数埋込処理の説明図(その3)
【
図8】ハードウェアグラフの頂点の予約処理を示すフローチャート
【
図9A】キメラグラフにおける頂点の予約処理の説明図(その1)
【
図9B】キメラグラフにおける頂点の予約処理の説明図(その2)
【
図10A】キメラグラフにおける頂点の予約処理の説明図(その3)
【
図10B】キメラグラフにおける頂点の予約処理の説明図(その4)
【
図11】第3実施形態の最適化問題の解導出処理を示すフローチャート
【
図14】第4実施形態において二値変数を用いて表現した多値問題の問題グラフ
【
図15】二値変数を選択する選択方法の説明図(その1)
【
図16】二値変数を選択する選択方法の説明図(その2)
【
図19】第5実施形態において2択最適化問題への変換処理を示すフローチャート
【発明を実施するための形態】
【0010】
以下、本発明の変数埋込方法及び処理システムの幾つかの実施形態について図面を参照して説明する。以下の実施形態中では、各実施形態間で同一機能又は類似機能を備えた部分に同一符号を付して説明を行い、同一又は類似機能を備えた構成及びその作用、連携動作説明等を必要に応じて省略する。
【0011】
(第1実施形態)
図1Aから
図6は、第1実施形態の説明図を示している。
図1Aに示す量子イジングマシン1は、機能特化型のイジング型ハードウェア2を用いて構成され、複数の変数Xの間の相互作用をハードウェアの物理的な制約として構成し、物質の量子力学的な性質を利用して最適化問題と同じ状況を疑似的に再現してシミュレーションを実行するように構成されている。
【0012】
イジング型ハードウェア2は、特定の固定アーキテクチャにより構成された専用ハードウェアとなる量子プロセッサにより構成されている。このイジング型ハードウェア2は、その仮想ハードウェア上に多数配列状に頂点V(V1~V9)を備え、仮想ハードウェアの頂点V(V1~V9)の間の相互作用に制約を有するようなハードウェアグラフG2により表すことが可能である。以下の説明において、これらの多数の頂点Vの一部を特定するときには、必要に応じて頂点Vに添え数字を付して説明を行う。また、多数の頂点Vの一部又は全部を総じて頂点Vと称することもある。
【0013】
これらの頂点Vの間の相互作用の制約は、例えば
図1Aに示すように、縦横に隣接する頂点Vの間(例えばV1-V2間、V2-V3間、V1-V4間…)だけ結合し、これ以外の頂点Vの間は、非結合となるように構成する例を挙げることができる。
【0014】
また、互いに全結合又は一部の相互作用を制約するように結合した複数の頂点Vを備えた単位セルCを構成し、これらの単位セルCを複数グリッド分だけ備えたハードウェアグラフG2を適用し、この場合、隣接するグリッド間において頂点Vの結合に制約を備えるように構成しても良い。
【0015】
単位セルCを複数グリッド分だけ備えたハードウェアグラフG2の代表例として、キメラグラフと称されるハードウェアグラフG2がある(
図5の右側、
図9、
図10等参照)。このキメラグラフは、例えば縦横方向(第1方向、第2方向相当)にn×mの頂点Vを備えた単位セルC(例えばC11、C12、C21、C22)を備え、この単位セルCが、縦横方向に複数のグリッド備えられるハードウェアグラフG2である。以下の説明において、これらの単位セルCの一部を特定するときには、必要に応じて単位セルCに添え数字を付して説明を行う。また単位セルCの一部又は全部を総じて単位セルCと称することもある。
【0016】
このキメラグラフは、
図5の右側に示すように、各単位セルCの第1列の各頂点V11~V14が第2列の各頂点V21~V24との間で互いに結合されており、各単位セルCを構成する頂点Vが、他の縦横方向に連続して隣接した単位セルCの対応した頂点Vに結合されることで構成されている。このキメラグラフは、前述した以外の他部分が非結合となる制約を備えるハードウェアグラフG2である。
図5の右側に示すキメラグラフの結合関係を詳述する。キメラグラフは、第1列の複数の頂点V11~V14がそれぞれ第2列の複数の頂点V21~V24と結合し、第1列の複数の頂点V11~V14が互いに非結合であると共に、第2列の複数の頂点V21~V24が互いに非結合である単位セルC11…C22を縦横方向に沿って複数グリッド分だけ備えている。またこのとき、単位セルC11、C12の第1列の頂点V11~V14が縦方向に沿ってそれぞれ結合すると共に、単位セルC11、C21の第2列の頂点V21~V24が横方向に沿ってそれぞれ結合している。
【0017】
図1Aに示すコンピュータ3は変数埋込装置を構成するものであり、この量子イジングマシン1のイジング型ハードウェア2に適合した形態に変数Xを埋込むための機能を備えた装置である。このコンピュータ3は、CPU4と、ROM、RAM等のメモリ5と、入出力インタフェース6とをバス接続した汎用コンピュータを用いて構成される。メモリ5は非遷移的実体的記録媒体として用いられる。このコンピュータ3は、CPU4によりメモリ5に記憶された変数埋込用のプログラムを実行し、各種手順を実行することで最適な変数Xの埋込方法を探索し、量子イジングマシン1のイジング型ハードウェア2に変数Xを埋込む。
【0018】
量子イジングマシン1により実行される最適化処理は、1以上のn次元を備えたユークリッド空間からなる探索空間を想定し、この探索空間の中で、複数の要求や制約によって生成された評価関数Hの最小値、又は、評価関数Hが最小値となる条件を満たす変数X、すなわち最適解を求める処理を示す。評価関数Hは、複数の要求や制約によって生成され、1以上のn個の変数Xに基づいて導出される数式による関数を示すものであり、例えば任意の多項式、有理関数、無理関数、指数関数、対数関数やその加減乗除等による組み合わせなどを挙げることができる。以下、n次元問題における各変数をX1、X2…Xnと示し、必要に応じて、これらの変数の一部又は各変数を総称して変数Xと称する。
図1Bに示すように、コンピュータ3は、メモリ5に記憶されたプログラムを実行することで実現する機能として、判定部7及び埋込部8などの各種機能を備える。
【0019】
図2は、評価関数Hの最適化問題の大規模問題(原問題)を部分問題に分けるイメージを示しており、
図3は、コンピュータ3及び量子イジングマシン1により実行される最適化問題の一連の解導出方法をフローチャートにより示している。
【0020】
図3に示すように、コンピュータ3は問題グラフG1を入力する(S1)。この問題グラフG1は、コンピュータ3が評価関数Hを解析した結果、評価関数Hに対する要求や制約により求められた各変数Xの相互作用の関係性を表している。この問題グラフG1の一例を
図5の左側に示している。この問題グラフG1は、変数X1が変数X2~X9に結合する例を示し、他の変数X2~X9は互いに非結合である例を示している。
【0021】
この後、コンピュータ3は問題グラフG1を構成する変数Xをイジング型ハードウェア2のハードウェアグラフG2に埋込む(S2)。同一の変数Xに対応した頂点Vは、ハードウェアグラフG2の上で連結した部分グラフを構成しなければならない。しかも、問題グラフG1にて結合する変数Xは、ハードウェアグラフG2の上では少なくとも一つ以上の結合を備えていなければならない。このルールを満たしていないと、量子イジングマシン1の上で適切に処理させることができない。このためコンピュータ3は、変数Xの埋込処理を適切に行うことが求められる。
【0022】
図4に変数Xの埋込処理のフローチャートを示している。コンピュータ3が、量子イジングマシン1のハードウェアグラフG2に変数Xを埋込むときには、変数Xを選択して仮にハードウェアグラフG2に埋め込んだときに重複割当を生じるか否かを判定し(S12)、重複割当を生じないときにはハードウェアグラフG2に変数Xを埋込み(S13)、重複割当を生じるときにはハードウェアグラフG2に変数Xを埋込まない(S14)。そして、終了条件を満たすまでS11~S14の処理を繰り返す。終了条件は、未埋込の変数Xがなくなったり、これらの処理S11~S14を予め定められた上限回数まで繰り返した結果、変数Xを追加で埋込み不能と判断することなどである。
【0023】
例えば、
図5には、コンピュータ3が問題グラフG1の変数Xを量子イジングマシン1のハードウェアグラフG2に埋込むときの例を示している。ハードウェアグラフG2は、
図5の右側に示すように前述説明したキメラグラフを用いている。
【0024】
このとき、コンピュータ3は、変数X1~X9をランダムで選択し、選択された変数Xから順にハードウェアグラフG2に変数Xを埋込む。実際には、変数X1~X9をランダムに選択して埋込むことになるが、ここでは、説明を理解しやすくするため、変数X1から変数X9を順に埋込むときの例を示す。
このとき、コンピュータ3は変数X1を埋め込んだ後、変数X2~X9を埋込む。前述したように、変数X2~X9は全て変数X1と結合する必要がある。このため、変数X7~X9より先に選択される変数X2~X6は、変数X1に結合した頂点Vに埋込まれることになる(
図5の右側参照)。ここで変数X7~X9は、変数X2~X6が埋込まれた頂点Vに重複割当しなければ変数X1と結合できなくなるため、S15において終了条件を満たしたと判定し、変数X7~X9を埋込むことなく終了する。
【0025】
そして、変数Xの埋込処理を終了すると、量子イジングマシン1が、
図3の処理に移行して最適化処理を実行する(S3)。量子イジングマシン1は、最適化処理において変数X1~X6を部分変数として評価関数Hに代入し、勾配法やその他の最適化手法を用いて評価関数Hが所定より低い条件(最適化条件)を満たすように変数X1~X6の値を求める(部分問題の解導出処理)。このとき、量子イジングマシン1は、処理を開始してから所定時間経過したり所定以上の試行回数繰り返したことを条件として変数X1~X6の最適値を決定し、変数X1~X6を更新する(S4)。この場合、他の変数X7~X9としては、固定値を用いて評価関数Hの評価値を求めると良い。これにより部分問題を解くことができる。
【0026】
その後、S2に処理を戻し、コンピュータ3は、S2において変数Xを再度ランダムに選択し当該選択された変数XをハードウェアグラフG2に埋込み、量子イジングマシン1がこれらの変数Xによる最適化処理を実行し、当該変数Xの組合せの最適値を決定し、S4においてこれらの変数Xを更新する。なお、このとき選択されなかった変数Xは、当該処理以前に最適値として求められた変数X(ここでは、変数X1~X6)の最適値を用いると良い。一度も選択されていない変数Xは、固定値に設定して処理すると良い。そして、量子イジングマシン1は、処理を開始してから所定時間経過したり又は所定以上の試行回数繰り返したことを条件として終了条件を満たしたと判定し(S5でYES)、この変数Xの結果又は評価関数Hの評価値などを出力する。これにより、全体の最適化問題を解くことができる。このように繰返し処理を行うことで、
図2にイメージを示すように、原問題を部分問題に分割して解くことができる。
【0027】
以上説明したように、本実施形態によれば、全ての変数Xのうち一部をハードウェアグラフG2の頂点Vに埋込むときに、最適化問題の変数XをハードウェアグラフG2の頂点Vへ重複割当を必要とするか否かを判定し(S12)、重複割当を必要とする変数X7~X9については部分問題の変数X7~X9として用いることなく、重複割当の不要な変数X1~X6を選択してハードウェアグラフG2の頂点Vに埋込んでいる。したがって、ハードウェアグラフG2の頂点Vに全ての変数Xを埋込不可能な大規模な最適化問題について、当該最適化問題の変数Xの相互関係を問題グラフG1に表して当該大規模な最適化問題を解く場合、問題グラフG1の変数X1~X9をハードウェアグラフG2に埋込むことが可能な部分問題に分割し、部分問題の最適化処理を繰り返すことで大規模な最適化問題を解くことができる。
なお、
図5には、説明を簡単化するため問題グラフG1の変数Xを9個とした例を示した。このため、ハードウェアグラフG2の上の頂点Vを一部しか利用できていない。しかし実際には、変数Xが多数存在する大規模な問題を解くときに、コンピュータ3が上記の埋込処理を実行するため、ハードウェアグラフG2の上の頂点Vをより多く利用でき、より大きな部分問題の変数Xを埋込み可能であることに留意する。
【0028】
<比較例>
図6は、例えば特許文献2記載の技術を適用し、重複割当を許容した場合の比較例を示している。このようなとき、変数X1を埋込済の単位セルC11の頂点V11に結合した頂点Vは5つしかないため変数X2~X6を重複割当なくハードウェアグラフG2に埋込むことができる。しかし、変数X7~X9が頂点V21~V23に重複割当して埋込まれることになる。このような処理を適用すると、この重複割当を解消しながら最適値を算出するため、多大な時間を必要としてしまう。
【0029】
<本実施形態のまとめ、効果>
本実施形態によれば、コンピュータ3は、変数Xの埋込処理を行うときに、重複割当を必要とするか否かを判定し(S12)、重複割当を必要とする変数X7~X9を部分問題の変数Xとして用いることなく、重複割当の不要な変数X1~X6を選択してハードウェアグラフG2の頂点Vに埋込んでいる。このため、従来技術に示されるような重複割当を許容することなく処理できるようになり、重複割当の解消処理を一切行う必要がなくなり、処理時間を大幅に短縮できる。
【0030】
(第2実施形態)
図7から
図10は、第2実施形態の追加説明図を示している。本実施形態では、コンピュータ3はメモリ5に記憶されたプログラムを実行することで予約部、選択部、禁止部、紐付け部、解消部として機能する。第1実施形態の方法によれば、問題グラフG1の結合数が比較的小さければ、重複割当が不要な変数Xだけを用いて、ハードウェアグラフG2の上に大きな部分問題を構成する変数Xを埋込むことが可能である。しかし、
図5に示すように、多くの変数X2~X9と結合する変数X1が、問題グラフG1の中に多数存在するような場合には、ハードウェアグラフG2の上の頂点Vを使い切る前に部分問題の成長が止まってしまう。
【0031】
コンピュータ3は、各変数XをハードウェアグラフG2の上に埋込むときに、各変数Xに割当てられたハードウェアグラフG2の上の部分グラフに含まれる頂点Vの中から少なくとも一つを選択し、選択した頂点VとハードウェアグラフG2の上で結合すると共に、ハードウェアグラフG2の上において他の変数Xとの結合数を効率的に増加させることができる方向に辿る頂点Vに対して該当変数X以外の変数Xの埋込みを禁止し、ハードウェアグラフG2の上で該当変数Xの連結した部分グラフを伸ばすことができる余地を残すことが望ましい。以降、この操作を「予約」と呼ぶ。
図8は、ハードウェアグラフG2の上の頂点Vの埋込処理のフローチャートを示している。
図8に示すように、まずコンピュータ3は、完全グラフG1aの変数XをハードウェアグラフG2への埋込方法を用いて(参考にして)予約方法(紐付方法)を設定する(S21)。
【0032】
具体的な予約方法、所謂紐付方法は、ハードウェアグラフG2の種類により異なる。問題グラフG1として想定される中で最も結合数が多い完全グラフG1a(
図7A参照)の変数XをハードウェアグラフG2に埋込む方法を用いる(すなわち参考にする)ことが望ましい。
【0033】
図7Aには、この予約方法の設定処理を理解し易くするため、完全グラフG1aをハードウェアグラフG2(キメラグラフ)に埋込む一般的な方法を示しており、太線にて結合するグラフは各変数に割当てられた連結した部分グラフを表している。完全グラフG1aの変数X1~X4は、単位セルC11の頂点V21~V24を含む部分グラフに埋込まれる。変数X5~X8は、単位セルC22の頂点V21~V24を含む部分グラフに埋込まれる。変数X9~X12は、単位セルC33の頂点V21~V24を含む部分グラフに埋め込まれる。
図7Aに示すように、ハードウェアグラフG2の上で連結した部分グラフ(
図7A中の太線にて結合するグラフ)は単位セルCの間を縦方向と横方向とに結合した構造となる。コンピュータ3は、この変数X1~X12の埋込方法を用いて(参考にして)、S21において単位セルCの間を跨ぐ方向に辿った各頂点Vに紐付ける。言い換えると、コンピュータ3は、S21においてある頂点Vに対応して縦方向又は/及び横方向の単位セルCに含まれる頂点Vに紐付ける。
【0034】
図7Aの右図中に付した単位セルC11の頂点V21(変数X1の埋込頂点V)について、ハードウェアグラフG2へ紐付ける各単位セルCの頂点V11、V21に符号を付すと共に、
図7Aの右図中に付した頂点V22(変数X6の埋込頂点V)についてハードウェアグラフG2へ紐付ける各単位セルCの頂点V12、V22に符号を付している。
【0035】
コンピュータ3が、ハードウェアグラフG2の上で単位セルC11の頂点V21に対応して、単位セルC11、C12、C13…の頂点V11に紐付けると共に、単位セルC21、C31…の頂点V21に紐付ける。またコンピュータ3は、ハードウェアグラフG2の上で単位セルC22の頂点V22に対応して、単位セルC22、C23…の頂点V12に紐付けると共に、単位セルC31、C41…の頂点V22に紐付ける。
【0036】
さらにコンピュータ3は、このような完全グラフG1aの変数XのハードウェアグラフG2への埋込方法を用いて(参考にして)、その埋込方法の一部を用いて頂点Vを紐付けるようにしても良い。この例を
図9A、
図9B、
図10A、
図10Bに示している。これらの
図9A~
図10Bは、2×4の頂点Vを結合した単位セルCを4×4の複数グリッド分だけ備えたキメラグラフをハードウェアグラフG2として示しており、ハードウェアグラフG2の上における頂点Vの間を紐付ける例を示している。また
図9A、
図9Bは、縦方向に跨ぐ方向に辿った頂点Vに紐付ける例を示しており、
図10A、
図10Bは、横方向に跨ぐ方向に辿った頂点Vに紐付ける例を示している。
【0037】
図9Aに示すように、コンピュータ3は、基点として選択した単位セルC11の頂点V11(第1頂点相当)に対応して、隣接する方向(この場合、縦方向)に連続結合した単位セルC12、C13、C14…の各頂点V11(第2頂点相当)を紐付けても良いし、
図9Bに示すように、コンピュータ3は、基点として選択した単位セルC33の頂点V13(第1頂点相当)に対応して、隣接する方向(この場合、縦方向)に連続結合した単位セルC31、C32、C34の頂点V13(第2頂点相当)に紐付けても良い。
【0038】
また
図10Aに示すように、コンピュータ3は、基点として選択した単位セルC11の頂点V21(第1頂点相当)に対応して、隣接する横方向に連続結合した単位セルC21、C31、C41の各頂点V21(第2頂点相当)に紐付けても良いし、
図10Bに示すように、コンピュータ3は、基点として選択した単位セルC23の頂点V22(第2頂点相当)に対応して、隣接する横方向に連続結合した単位セルC13、C33、C43の各頂点V22(第2頂点相当)に紐付けても良い。
【0039】
すると、コンピュータ3が変数Xを選択し(
図8のS22)、重複割当を必要とするか否かを判定し(S23)、重複割当を必要とする場合には変数Xを埋め込まない(S24)が、重複割当を必要としないときに変数Xを埋め込んだ(S25)としても、その後、変数Xを埋め込んだ頂点Vの中から一つ以上を選択し(S26)、選択した頂点Vを基点として他の頂点Vを予約することになる(S27)。そして、コンピュータ3は予約された頂点Vへの埋込禁止を解除(解消)するか否かを判定し(S28)、予約解除するのであれば予約解除(解消)し(S29)、終了条件を満たしたか否かを判定し(S30)、条件を満たしていなければS22に処理を戻して再度変数Xを選択してS23~S30の処理を実行する。
【0040】
例えば、問題グラフG1が
図7Bの左側の構成であった場合、コンピュータ3が、例えばハードウェアグラフG2の上の単位セルC11の頂点V11に変数X1を埋込むと、例えば、S21において
図9Aに示すように各単位セルC12、C13、C14の頂点V11が紐付けられていたときには、単位セルC11の頂点V11に対し縦方向に隣接して連続結合した単位セルC12、C13、…の各頂点V11(第2頂点相当)を変数X1の埋込用として予約できる(S26~S27)。
【0041】
このため、例えば
図7Bの右側に示すように、ハードウェアグラフG2の上で、単位セルC11の頂点V11が変数X1により埋込まれると、単位セルC12の頂点V11が変数X1用に予約、確保されることになる。このとき、変数X2~X9が全て埋め込まれるまで、単位セルC12の頂点V11には変数X1しか埋込みが許されない。
この後、コンピュータ3が、変数X1の埋込処理の後に例えば変数X2~X9をこの順に選択してハードウェアグラフG2の頂点Vに埋込むときには、
図7Bの右側に示すように、単位セルC11の頂点V11に結合した頂点V21~V24に変数X2~X5を順に埋込む。
【0042】
次に、コンピュータ3がハードウェアグラフG2に変数X6を埋込むときには、単位セルC12の頂点V11は変数X1用に予約されており、変数X6を単位セルC12の頂点V11に埋込むことが禁止されている。このため、コンピュータ3は、単位セルC12の頂点V11に変数X1を埋込むと共に、変数X6を単位セルC12の頂点V21に埋込む。これにより、変数X1が単位セルC12の頂点V11に埋込まれることにより、変数X1と結合可能な変数Xを増やすことができ、変数X7~X9を単位セルC12の頂点V22~V24にそれぞれ埋込むことができる。
【0043】
以上示したように、ハードウェアグラフG2の上の部分グラフを伸ばす余地を残しながら変数Xを埋込むことで、重複割当をしなくても変数X1~X9を埋込むことが可能となる。今回の例では、変数X1の予約のみに着目したが、変数X2~X9を追加で埋込むときには、S25~S27において全ての変数Xに対して頂点Vの予約を実行する。そして、コンピュータ3は予約を解除すべきときに該当変数Xの予約を解除すると良い(S28~S29)。この結果、結合数が多い問題グラフG1でも部分問題を効率的に成長させることが可能となる。
【0044】
その後、
図8には示していないが、
図3のS3と同様に量子イジングマシン1が最適化処理を実行することで、これらの全変数X1~X9の最適値を素早く的確に求めることができる。本実施形態では説明を簡単化するため、9つの変数X1~X9を用いて説明した。このため、1ルーチンの埋込処理にて全変数X1~X9をハードウェアグラフG2に埋込可能な簡単な例を示したが、実際にはより多数の変数Xを用いて最適化問題の大規模問題(原問題)を解くことになる。
【0045】
このとき、第1実施形態でも説明したように、多数の変数Xのうち一回の埋込処理において一部の変数Xを埋込んで部分問題を解くことになる。このような場合においても、本実施形態で説明した埋込方法を適用すれば、前述の第1実施形態に比較してより多くの変数Xを頂点Vに埋込むことができる。このため、ハードウェアリソースを有効活用できるようになり、最適値の計算時間を短縮できる。
【0046】
<本実施形態のまとめ、効果>
以上説明したように、本実施形態によれば、完全グラフG1aをハードウェアグラフG2に埋込むときの埋込方法に基づいてハードウェアグラフG2の頂点Vを紐付け(予約方法を設定し)ておき(S21)、ハードウェアグラフG2上の頂点Vから部分グラフにより連結された少なくとも一つ以上の頂点Vを選択し(S26)、ハードウェアグラフG2に各変数Xを埋込むときにこの紐付けの内容(予約方法)に基づいて、選択した単位セルC11の頂点V11から結合し且つその他の変数X2~X9との結合を増加させる単位セルC12の頂点V11を、S25にて埋込む変数X1に対応して予約することで当該埋込む変数X1以外のその他の変数X2~X9の埋込みを禁止する(S27)ようにしている。
【0047】
このため、ハードウェアグラフG2上において変数Xの結合を伸長する余地が生まれる。また、紐付けられる頂点Vは、問題グラフG1の中で最も結合濃度が濃い完全グラフG1aの埋込方法に基づいて予め定められるため、たとえ最適化問題の原問題が、結合濃度の高い問題であっても、部分問題を拡大、成長させることが可能となる。このため、部分問題を繰り返し解いて全体の大規模問題(原問題)を解くときに、第1実施形態の方法に比較しても一回の部分問題を解く際に変数Xをより多く頂点Vに埋込むことができ、原問題を解くための時間を削減できる。ハードウェアグラフG2としてキメラグラフを適用した例を示したが、他の構造のハードウェアグラフG2を用いても良く、紐付ける頂点Vは、各ハードウェアグラフG2に完全グラフG1aを埋込む方法に基づいて決定すれば良い。
【0048】
(第3実施形態)
図11から
図13は、第3実施形態の追加説明図を示している。本実施形態においては、コンピュータ3が、評価関数Hの変数Xの相互関係を導出した結果、
図12に示すように、問題グラフG1における変数Xが格子状に互いに結合していることを想定して説明する。
またコンピュータ3及び量子イジングマシン1は、第1実施形態の変数Xの埋込処理、及び、第2実施形態にて説明したハードウェアグラフG2上の紐付け処理、及び予約処理を実行することを前提として説明する。本実施形態では、コンピュータ3はメモリ5に記憶されたプログラムを実行することで、禁止部、解消部、選択部として機能する。
【0049】
初期状態において、コンピュータ3は、問題グラフG1を入力し(S31)、問題グラフG1の変数Xをランダムに選択し(S32)、ハードウェアグラフG2に埋込む(S33)。このとき、ハードウェアグラフG2上においては、第2実施形態にて説明したように、頂点Vに対応した他の単位セルCの頂点Vを予約、確保する。例えば、ハードウェアグラフG2が、
図9又は
図10に示したキメラグラフにより構成されているときには、単位セルC11の頂点V11に変数Xaを埋込んだときに、選択した単位セルC11の頂点V11から結合し、その他の変数X(例えばXb,Xc)との結合を増加させる単位セルC12、C13、…の頂点V11を、埋込む変数Xaに対応して予約する。これにより、単位セルC12、C13、…の頂点V11が変数Xaに対応して予約、確保されることになり、その他の変数X(例えばXb,Xc)の埋込みを禁止する。
【0050】
その後、コンピュータ3は、問題グラフG1の中で埋込済変数Xaを選択し(S34)、この埋込済変数Xaに結合された未埋込の変数Xbを選択し(S35)、変数XbをハードウェアグラフG2に埋込む(S36)。
図12には、処理途中における埋込済変数Xaと追加する変数Xbの候補を示している。この
図12に示すように、コンピュータ3は、問題グラフG1上の変数Xを選択するときに、S35において埋込済変数Xaに結合する変数Xbを選択しS36においてハードウェアグラフG2に埋込む。このときコンピュータ3は、
図4のS12~S14に示すように、重複割当するものについてハードウェアグラフG2に埋込みせず、重複割当していなければハードウェアグラフG2に埋込む。
【0051】
また、コンピュータ3は、埋込済変数Xaに結合した全ての変数Xbの埋込処理を完了したか否かを判定し(S37)、完了していなければ(S37でNO)、埋込済変数Xaに結合された変数XbがなくなるまでS35にて変数Xbを選択してS36にて変数Xbを埋込む。そしてコンピュータ3は、この変数Xbがなくなると(S37でYES)、埋込済変数Xaに紐付けて予約された頂点Vへの埋込禁止を解除する(S38)。すなわち、S33においてハードウェアグラフG2の特定の頂点Vに対して埋込済変数Xa以外のその他の変数Xの埋込みを禁止しているため、コンピュータ3がこのS38の処理を実行する直前までは、S34にて選択された埋込済変数Xaに予約された頂点Vにその他の変数Xを埋込むことが禁止されていたが、S38の処理が実行された後は、その他の変数Xを埋込むことができる。
【0052】
したがって、この時点で未埋込の変数Xb又はXcは、ハードウェアグラフG2において、S38において予約解除(解消)された頂点Vを用いて埋込むことができ、ハードウェアグラフG2を効率良く利用できる。そして、コンピュータ3は、これらのS34~S38の処理を終了条件を満たすまで繰り返し実行する。このときの終了条件は、埋込済変数Xaがなくなる、未埋込の変数Xb,Xcがなくなる、所定回数以上の試行を重ねた、などである。
【0053】
これらのS35~S39の処理内容の具体例を
図13に示している。
図13の中央に示すように、コンピュータ3は、ある一つの埋込済変数Xaを選択し、この埋込済変数Xaに結合した変数Xbを選択するが、これらの結合した変数Xbを全て埋込んだ後、選択した埋込済変数Xaに対応したハードウェアグラフG2の頂点Vの予約を解消する。そして
図13の右側に示すように、コンピュータ3は、他の埋込済変数Xaを選択し、さらにこの他の埋込済変数Xaに結合した未埋込の変数Xbをさらに選択する。これによりハードウェアグラフG2に設定された予約を解消しながら、未埋込の変数Xb、Xcを埋込むことができ、第2実施形態に比較して部分問題の解導出処理における変数Xの埋込数を増やすことができる。
【0054】
その後、量子イジングマシン1が部分問題に係る最適化処理を実行し(S40)た後、コンピュータ3は、その量子イジングマシン1の処理結果に基づいて変数Xを更新し(S41)、終了条件を満たすか否かを判定する(S42)。終了条件を満たしていなければ、S32に処理を戻し、コンピュータ3が、問題グラフG1の変数Xを新たに選択するところから再度繰り返し実行する。そしてコンピュータ3は、S42の終了条件を満たしたときに変数Xの解を出力する(S43)。S42の終了条件としては、第1実施形態のS5の終了条件と同一条件を用いれば良いため説明を省略する。
【0055】
<本実施形態のまとめ、効果>
本実施形態によれば、コンピュータ3は、埋込済変数Xaを一つ選択し、問題グラフG1の上で埋込済変数Xaに結合した全ての変数Xbの埋込処理を一通り完了した後に予約を解消している。これにより、ハードウェアグラフG2における予約を効率的に解消しながら変数Xbの埋込処理を実行でき、予約された頂点Vを減らすことでハードリソースを有効に活用できる。しかも、一回の部分問題の解導出処理においてより多くの変数Xb、XcをハードウェアグラフG2に埋込むことができる。
【0056】
またコンピュータ3が、追加して埋込む変数Xを選択するときには、すでに埋込みされた埋込済変数Xaに結合された未埋込の変数Xbの中から選択するようにしているため、埋込済変数Xaに相互作用していない独立な変数Xcを選択することがなくなる。この結果、フラストレーション等の最適化が難しい問題グラフG1の構造を残したまま、変数XをハードウェアグラフG2に埋込みできる。
【0057】
(第4実施形態)
図14から
図18は、第4実施形態の追加説明図を示している。本形態では、ワンホット(one-hot)表示を用いて多値問題を表現した場合の変数の埋込方法について説明するが、前述実施形態、特に第1実施形態と同一部分については同一符号を付して説明を省略し、前述実施形態と異なる部分を中心に説明する。コンピュータ3は、メモリ5に記憶されたプログラムを実行することで実現する機能として、無効化処理部、変換部としての各種機能を備える。
【0058】
ワンホット表示手法は、多値変数S
1~S
Nを用いた大規模問題を2値表現する代表的な方法として知られている。以下では、多値変数S
1~S
Nの一部の変数又は全変数を必要に応じて、多値変数S
iと表記する。多値変数S
1~S
Nを二値変数x
1
(q)~x
N
(q)を用いてワンホット表示する場合、各多値変数S
iがとり得る状態の数だけ二値変数x
i
(q)~x
i
(q)を設けることで実現できる。但しq=1~Qである。以下では、二値変数x
i
(q)~x
i
(q)の一部の変数又は全変数を必要に応じて二値変数x
iと表記する。簡単な例として、1次元のポッツ(Potts)模型の評価関数H
0を(1)式に示すが、評価関数H
0は、この例に限られるものではない。
【数1】
【0059】
(1)式の評価関数H
0は、多値変数S
iが1からQのQ個の状態を取ることが可能な制約の下で、評価関数H
0が最も小さくなるように1からQのQ個の中から1個の状態を多値変数S
iにより選択する最適化問題を表している。
下記の(2)式は、(1)式の評価関数H
0についてワンホット制約に基づき二値変数x
iを用いて変換した変換式を表している。
図14は、(2)式の評価関数H
0に係る最適化問題の問題グラフG1を示す。評価関数H
0に係る最適化問題をワンホット表示するときに、評価関数H
0を表現するための二値変数x
iは、
図14に示すようにN×Q個存在する。
【数2】
【0060】
(2)式の評価関数H
0の右辺第1項は、
図14に示す問題グラフG1にて結合した多値変数S
i、S
jの同じ状態qを示す二値変数x
i
(q)、x
j
(q)がホット状態値「1」となる条件を満たす場合に積算される項であり、(1)式で表される多値最適化問題のコスト部分を示している。ここで、j=i+1又はi-1である。この(2)式の右辺第1項では、隣接する二値変数x
i、x
jの相互作用係数J
iが正のときに評価関数H
0を低下させることでより最適化できるようになっている。また(2)式の右辺第1項の相互作用係数J
iが負のときに、評価関数H
0を低下させるように(2)式中の符号を変更しても良い。また評価関数H
0が高い方がより最適化されるように数式を変更しても良い。
【0061】
ワンホット制約は、各多値変数Siを表す二値変数xiの中でホット状態値「1」がそれぞれ1つだけ現れる制約を示しており、評価関数H0の右辺第2項が、この制約を表している。評価関数H0の右辺第2項は、各多値変数Siの中でそれぞれ二値変数xiを1つだけホット状態値「1」とした場合、評価関数H0が最低となるように追加した制約項を示す。(2)式の右辺第2項のλは、当該(2)式の右辺第1項と右辺第2項との影響の割合を表すパラメータであり、パラメータλを大きく設定すれば右辺第2項の影響を大きくでき、二値変数xiを1つだけホット状態値「1」とする制約条件を強めることができ、逆にパラメータλを小さく設定することで、(2)式の右辺第1項の影響を大きくできる。
【0062】
ワンホット制約を含む最適化問題の部分問題をハードウェアグラフG2に埋込む場合、部分問題が、ワンホット制約を満たす解を可能な限り多く含むように選択しないと最適解の探索を効率的に実行できなくなる。例えば
図15に示すように、コンピュータ3が、ある一つの多値変数S
iの中で全てコールド状態値「0」とされている二値変数x
iを部分的に選択した場合、
図15に示すようにワンホット制約を満たす解が1個しか存在しない。
図15に示す二値変数x
iの部分選択変数Saを参照。このため、たとえ量子イジングマシン1が最適化処理を実行しても、全てコールド状態値「0」とされている二値変数x
iに対応した解に部分問題の最適解が固定されてしまう。つまりこの場合、全体の二値変数x
iのより良い解を探索できなくなる。
【0063】
そこで、二値変数x
iの最適化処理が繰り返される一連の処理の中で、
図16に示すように、コンピュータ3が多値変数S
iの二値変数x
iを参照した時点において、ホット状態値「1」とされている二値変数x
iを必ず含むように部分問題を選択することが望ましい。コンピュータ3は、ホット状態値「1」とされた二値変数x
iを含むように二値変数x
iを部分問題の変数として選択することで、部分問題がワンホット制約を満たす状態を多数含むように構成できる。
図16に示す二値変数x
iの部分選択変数Sb1、Sb2、Sb3を参照。この結果、部分問題の最適化によりワンホット制約を満たすより高精度な解を効率的に探索できる。
【0064】
以下、多値変数S
iの埋込方法について
図3及び
図17を参照しながら説明する。
最初に、コンピュータ3は、
図3のS1において問題グラフG1を入力し、S2において2値変数x
iの埋込処理を実行する。
図17に2値変数x
iの埋込処理のフローチャートを前述実施形態の
図4に対応して示している。コンピュータ3が、量子イジングマシン1のハードウェアグラフG2に2値変数x
iを埋込むときには、多値変数S
1~S
Nの中からランダムに一つの多値変数S
iを選択し、選択した多値変数S
iに割当てられた2値変数x
iを埋込む(S61)。ここでは、i番目の多値変数S
iを選択する例を示す。なおコンピュータ3は、S61において多値変数S
iを選択し、後述するS70の終了条件でNOと判定してS61に処理を戻した後に選択する多値変数S
jは、問題グラフG1上で埋込済の多値変数S
iに隣接、結合する未埋込の多値変数S
j(但しjはi-1かi+1)を対象とする。
【0065】
i番目の多値変数Siの中の二値変数xiは、1からQのQ個存在するため、コンピュータ3は、S62においてハードウェアグラフG2に対する二値変数xiの埋込順序を決定する。コンピュータ3が二値変数xiをハードウェアグラフG2に埋込みする優先順位は、次の制約に基づいて決定することが望ましい。
コンピュータ3が、ある多値変数Siの中で最初に埋込むべき二値変数xiは、既に埋込済の二値変数xj(但しjはi-1かi+1)に隣接、結合している二値変数xiとすることが望ましい。コンピュータ3は、この結合条件を満たす二値変数xiの中でもホット状態値「1」とされている二値変数xiを最優先とし、コールド状態値「0」とされている二値変数xiを次の優先順位として選択すると良い。
【0066】
また、コンピュータ3が、ある多値変数Siの中で2番目以降に埋込むべき二値変数xiは、ホット状態値「1」とされている二値変数xiを最優先とし、コールド状態値「0」とされている二値変数xiを次の優先順位とすることが望ましい。コンピュータ3は、コールド状態値「0」の条件を満たす二値変数xiの中でも埋込済の二値変数xjに隣接、結合している二値変数xiを優先的に埋込対象とすることが望ましく、埋込済の二値変数xjに隣接、結合していない二値変数xiを次の優先順位として選択すると良い。なお、優先順位の具体例は後述する。
【0067】
コンピュータ3は、S63において前述した優先順位にて二値変数xiを選択した後、S64において二値変数xiをハードウェアグラフG2に埋込む際に重複割当を生じるか否かを判定する。コンピュータ3は、対象となる二値変数xiをハードウェアグラフG2に埋込む際に、重複割当を必要とすればS65においてハードウェアグラフG2に埋込みしない。逆に、コンピュータ3は、重複割当を必要としなければS66においてハードウェアグラフG2に埋込む。コンピュータ3は重複割当を必要としなければ、前述実施形態にて説明したように、二値変数xiを埋め込んだ頂点Vを基点としてハードウェアグラフG2の他の頂点Vを予約することになる。
【0068】
ここでコンピュータ3は、対象となる二値変数xiをハードウェアグラフG2に埋込む際に重複割当を必要とすればS65において埋込みしないと判定するが、この埋込みしない二値変数xiがホット状態値「1」であった場合には、S69において選択した多値変数Siの埋込を無効、すなわちキャンセルとし、次の多値変数Sjの埋込処理に移ることが望ましい。すなわち、ホット状態値「1」の二値変数xiがハードウェアグラフG2に埋込不能であれば、コールド状態値「0」を満たす二値変数xiしか埋込不能となるためである。これにより、ワンホット制約を満たす状態を部分問題に一つしか含まない多値変数Siを部分問題から排除できる。
【0069】
そしてコンピュータ3は、S67において、S61にて選択した多値変数Siに割当てられた全ての二値変数xiの埋込処理を終了したか否かを判定し、全ての二値変数xiの埋込処理を終了するまでS63~S66の処理を繰り返す。
【0070】
コンピュータ3は、選択した多値変数Siに割当てられた全ての二値変数xiの埋込処理を終了した結果、全ての二値変数xiの中で2つ以上埋込みできた場合には、そのままS70に移行し処理を継続する。しかしコンピュータ3は、選択した多値変数Siの中で二値変数xiを1つ以下、すなわちホット状態値「1」又はコールド状態値「0」を示す二値変数xiしか埋込みできないときには、S69において選択した多値変数Siの全ての埋込を無効、すなわちキャンセルする。このとき、コンピュータ3は、既に埋込まれた二値変数xiをハードウェアグラフG2の頂点Vから除去すると共に、他の頂点Vの予約を解除することで、量子イジングマシン1のハードウェアリソースの予約を取り消す。これにより、ワンホット制約を満たさない多値変数Siを部分問題を表す変数から排除できる。
【0071】
コンピュータ3は、S70において終了条件を満たすか否かを判定し、終了条件を満たすまで多値変数Siに隣接、結合した他の多値変数Sj(但しjはi-1又はi+1)を選択するところから処理を繰り返す。コンピュータ3が、多値変数Sjを表現する二値変数xjが、その前に埋込まれた多値変数Siの二値変数xiにハードウェアグラフG2上で結合できなくなると、S70において終了条件を満たしたと判定し、他の多値変数Sjの埋込みを終了する。
【0072】
そしてコンピュータ3が、全ての多値変数S
iの埋込処理を終了すると、量子イジングマシン1は、
図3のS3において最適化処理を実行する。量子イジングマシン1は、最適化処理において埋め込まれた部分問題を勾配法やその他の最適化手法を用いて最適化し、評価関数H
0が所定より低い最適化条件を満たすように二値変数x
iの値を求める。このとき量子イジングマシン1は、処理を開始してから所定時間経過したり所定以上の試行回数繰り返したことを条件として二値変数x
iの最適値を決定し更新する(S4)。この場合、他の埋込不能な二値変数x
iとしては、これまでに得られた最適解又は初期値など固定値を用いて評価関数H
0の評価値を求めると良い。これにより、部分問題を解くことができる。
【0073】
その後、コンピュータ3はS2に処理を戻し、S2において多値変数Siを再度選択し当該選択された多値変数Siの中の二値変数xiをハードウェアグラフG2に埋込むと、量子イジングマシン1がこれらの二値変数xiによる最適化処理を実行し、当該二値変数xiの組合せの最適値を決定し、S4においてこれらの二値変数xiを更新する。なお、このとき選択されなかった二値変数xiは、当該処理以前に最適値として求められた二値変数xiの最適値を用いると良い。一度も選択されていない多値変数Siの中の二値変数xiは、固定値に設定して処理すると良い。
【0074】
そして量子イジングマシン1は、処理を開始してから所定時間経過したり又は所定以上の試行回数繰り返したことを条件として終了条件を満たしたと判定し(S5でYES)、これらの多値変数Siの結果又は評価関数H0の評価値などを出力する。これにより、全体の最適化問題を解くことができる。このように繰返し処理を行うことで、原問題を部分問題に分割して解くことができる。
【0075】
<ステップS62の埋込方法の具体例>
二値変数x
iをハードウェアグラフG2へ埋込むときのステップS62の具体例について
図18を参照しながら説明する。ここではQ=4の簡単な例を示している。コンピュータ3が、量子イジングマシン1のハードウェアグラフG2に多値変数S
1のうち二値変数x
1
(1)、x
1
(2)を埋込んだものの、他の二値変数x
1
(3)、x
1
(4)をハードウェアグラフG2に埋込む際に重複割当が生じ、埋込不可能とされた場合を想定する。
図18の中には、ハードウェアグラフG2の頂点Vに埋込済の二値変数x
1
(1)、x
1
(2)を「Z1」と符号を付している。
【0076】
このとき、埋込まれた二値変数x
1
(2)がホット状態値「1」とされていることを想定している。
図18の中には、コンピュータ3が、多値変数S
1に隣接して結合した多値変数S
2の中の二値変数x
2
(1)、x
2
(2)、x
2
(3)、x
2
(4)を埋込む際の優先順位「1st」~「4th」を示している。
【0077】
前述のS62の説明でも示したように、最初に埋込むべき二値変数x
2は、埋込済の二値変数x
1に結合している二値変数x
2とすることが望ましい。二値変数x
2の中でもホット状態値「1」とされている二値変数x
2を最優先とすることが望ましい。
図18に示す例の場合、埋込済の二値変数x
1に結合している二値変数x
2
(1)、x
2
(2)は両者共にコールド状態値「0」であるため、二値変数x
2
(1)、x
2
(2)の何れの変数を選択しても良いが、ここでは二値変数x
2
(1)をランダムで選択している例を示している。
【0078】
また2番目以降に埋込むべき二値変数x
iは、ホット状態値「1」とされている二値変数x
iを最優先とし、コールド状態値「0」とされている二値変数x
iを次の優先順位とすることが望ましい。
図18に示す例の場合、二値変数x
2
(4)がホット状態値「1」とされているため、ホット状態値「1」の二値変数x
2
(4)を2番目の埋込対象とする。またコンピュータ3は、コールド状態値「0」の条件を満たす二値変数x
iの中でも埋込済の二値変数x
jに結合している二値変数x
iを優先的に埋込対象とする。このため
図18に示す例では、二値変数x
2
(2)を3番目の埋込対象とする。またコンピュータ3は、埋込済の二値変数x
jに結合していない二値変数x
iを次の優先順位として選択する。
図18に示す例の場合、二値変数x
2
(3)を最後の埋込対象としている。このような順序にて二値変数x
iを埋込むことが望ましい。
【0079】
<本実施形態のまとめ、効果>
本実施形態によれば、多値変数Siにより定義された評価関数H0をワンホット制約により2値変数xiを用いて表現した大規模な最適化問題を解く場合に、部分問題の変数として多値変数Siの中の少なくとも一部の二値変数xiを含むように選択するときには、ホット状態値「1」(第一値相当)とされている二値変数xiが含まれるように選択してハードウェアグラフG2に埋込処理している。これにより、各多値変数Siは複数個のワンホット制約を満たす状態を部分問題に含むようになり、より高精度な解を効率的に探索することが可能となる。
【0080】
またコンピュータ3は、既に埋込まれた多値変数S1に問題グラフ上で結合する多値変数S2の二値変数x2を追加で埋込処理するときには、多値変数S2を表現する二値変数x2の中で、埋込済の二値変数x1
(1)に問題グラフG1の上で結合している二値変数x2
(1)を優先的に埋込むようにしている。すると、問題グラフG1の上で結合する多値変数Si、Sjの間の相互作用を可能な限り多く含むように部分問題を構築できる。
【0081】
またコンピュータ3は、既に埋込まれた多値変数S1に問題グラフ上で結合する多値変数S2の二値変数x2を追加で埋込処理するときには、多値変数S2を表現する二値変数x2の中で、ホット状態値「1」とされている条件を満たす二値変数x2
(4)、を優先的に埋込むようにしている。すると、ホット状態値「1」とされている二値変数x2
(4)を優先的にハードウェアグラフG2に対し優先的に埋込むことができる。
【0082】
またコンピュータ3は、ホット状態値「1」とされている二値変数xiを埋込不能と判定した場合には、当該二値変数xiにより表現される多値変数Siの全体の埋込みを無効とし、先に埋込まれた二値変数xiをハードウェアグラフG2の頂点Vから除去している。これにより、ワンホット制約を満たす状態を部分問題の中に1個しかもたない多値変数Siを部分問題から除外できる。しかも量子イジングマシン1のハードウェアリソースの予約を取り消すことができる。
【0083】
またコンピュータ3は、選択した多値変数Siの全ての二値変数xiの中で2つ以上埋込不能と判定した場合には、当該二値変数xiにより表現される多値変数Siの全体の埋込みを無効とし、先に埋込まれた二値変数xiをハードウェアグラフG2の頂点Vから除去している。ホット状態値「1」及びコールド状態値「0」の双方を埋込不能な多値変数Siを部分問題から排除でき、ワンホット制約を満たす状態を部分問題の中に1個しかもたない多値変数Siを部分問題から排除できる。
【0084】
(第5実施形態)
図19及び
図20は、第5実施形態の追加説明図を示している。評価関数H
0は、パラメータλを用いて(2)式のように構成すれば良いものの、(2)式の右辺第2項の影響の割合をパラメータλにより変数定義することは、量子イジングマシン1がワンホット制約を満たさない解も全体の最適化問題の解として導出する可能性を高くする。またパラメータλを最適値に調整するため、計算処理量がより増加してしまう可能性がある。
【0085】
このようなことが想定されるときには、コンピュータ3が、量子イジングマシン1に部分問題を実装する前に、多値変数Siの多値状態「1」~「Q」を2択により選択する2択最適化問題に変換すると良い。コンピュータ3が、2択最適化問題への変換処理を事前に実行することで、ワンホット制約を満たさない多値変数Siの解を排除した部分問題を量子イジングマシン1に実装できる。この場合、前述した(2)式の右辺第2項に相当する制約を排除でき、(2)式の右辺第2項のパラメータλを変数定義する必要がなくなる。コンピュータ3及び量子イジングマシン1は、(2)式の右辺第1項に相当するコスト部分の最適化処理を実行することで、二値変数xiの最適解を求めることができ、計算処理量を大幅に削減できるようになる。
【0086】
例えばコンピュータ3は、
図19に示す手順を用いて、全多値変数S
iについて、現状の多値状態「1」~「Q」を維持するか、現状の多値状態「1」~「Q」を遷移させるか、を選択する2択最適化問題に変換した後に、当該2択最適化問題に係る部分問題を量子イジングマシン1に実装して最適化処理を実行させることが望ましい。
【0087】
図19に示すように、コンピュータ3は、S51において多値変数S
1~S
Nを順番に選択し、S52にて選択した多値変数S
iの中でホット状態値「1」の遷移先候補をランダムに選択する。コンピュータ3は、全ての多値変数S
1~S
NについてステップS51~S53の処理を繰り返すことで、最終的にS54に示すように、多値変数S
iの現状の多値状態「1」~「Q」を維持するか、現状の多値状態「1」~「Q」を遷移させるか、を2択により選択する2択最適化問題に変換できる。
【0088】
図20に具体例を示す。コンピュータ3は、
図19に示す処理を実行する時点で多値変数S
iが多値状態「1」にされていると仮定した場合、遷移先の候補として多値状態「2」~「Q」のうち一つをランダムに選択する。仮にコンピュータ3が、遷移先として多値状態「3」を選択した場合、多値変数S
iを現状の多値状態「1」か遷移先の多値状態「3」とするかの2択の判断を量子イジングマシン1に委ねることになる。この結果、多値変数S
iが現状の多値状態「1」を維持、又は、多値状態「3」に遷移、の2択による2択最適化問題に変換できる。この2択最適化問題は、二択変数y
iにより定義され、例えば二択変数y
i=0は維持、二択変数y
i=1は遷移を表す。
【0089】
またコンピュータ3は、問題グラフG1上で結合する多値変数Si、Sjが同一の多値状態とされたときに評価関数H0がより最適化されることを認識している場合、一の多値変数Siの現状の多値状態「1」か遷移先の多値状態「3」の何れか少なくとも一以上が、一の多値変数Siと結合する他の多値変数Sjの現状の多値状態又は遷移先の多値状態の何れか少なくとも一以上と同一状態となるように2択最適化問題を構築することが望ましい。すると、量子イジングマシン1が2択最適化問題を最適化したときに、評価関数H0を最適化する二値変数xiを効率的に求めることができる。
【0090】
多値変数Siの表現に代えて、二値変数xiの2値状態値を用いて言い換えると、二値変数xiの2値状態値が問題グラフG1上で結合した二値変数xjと同一の2値状態値となる状態を2択最適化問題が含むように、二値変数xiが現状の2値状態値(ホット状態値「1」又はコールド状態値「0」)かこれとは異なる遷移先の2値状態値かが、隣接して結合した二値変数xjの現状の2値状態値かこれとは異なる遷移先の2値状態値の何れか少なくとも一以上と同一となるように選択すると良い。
【0091】
逆に、コンピュータ3は、問題グラフG1上で隣接して結合する多値変数Si、Sjが異なる多値状態とされたときに評価関数H0が小さくなることを認識している場合、一の多値変数Siの現状の多値状態「1」か遷移先の多値状態「3」の何れか又は双方が、隣接する他の多値変数Sjの現状の多値状態及び遷移先の多値状態の両方と異なる多値状態となるように2択最適化問題を構築することが望ましい。すると、量子イジングマシン1が2択最適化問題を最適化したときに、評価関数H0を最適化した条件を満たした二値変数xiを高精度に求めることができる。
【0092】
多値変数Siの表現に代えて、二値変数xiの状態値を用いて言い換えると、二値変数xiの2値状態値が問題グラフG1上で結合した二値変数xjと異なる2値状態値を2択最適化問題が含むように、二値変数xiが現状の2値状態値(ホット状態値「1」又はコールド状態値「0」)か、これとは異なる遷移先の2値状態値かが、隣接して結合した二値変数xjの現状の2値状態値及び遷移先の2値状態値の両方と異なるように選択すると良い。
【0093】
コンピュータ3は、二択変数yiにより定義される2択最適化問題の部分問題をハードウェアグラフG2に埋込むことで部分問題を実装する。そして、量子イジングマシン1が、埋込まれた2択最適化問題の部分問題を最適化し二択変数yiを決定する。コンピュータ3は、部分問題を最小化する量子イジングマシン1による二択変数yiの出力と、各変数の現状の2値状態と遷移先の2値状態を参照して二値変数xiを更新する。コンピュータ3とイジングマシン1により2択最適化問題を生成し、二値変数xiの更新処理を繰り返すことで、全体の二値変数xiの最適解を得ることができる。
【0094】
多値問題の多値変数Siを最適化する際に、コンピュータ3は多値変数Siによる多値状態「1」~「Q」を2択により選択する2択最適化問題に変換した後、2択最適化問題の二択変数yiを部分的にハードウェアグラフG2の頂点Vに埋込んでいる。コンピュータ3が、2択最適化問題への変換処理を事前に実行することで、ワンホット制約を満たさない多値変数Siの解を排除した部分問題を構築でき、この結果、計算処理量を大幅に削減できる。さらに、部分問題は、ワンホット制約を満たした状態しか含まないため、ワンホット制約の強さを決定するパラメータλを調整する必要がなくなる。特に、現状の多値状態「1」~「Q」を維持する(二択変数yi=0)か、現状の多値状態「1」を遷移させる(二択変数yi=1)か、を選択する2択最適化問題に変換することが望ましい。
【0095】
また、問題グラフG1上で隣接して結合する多値変数Si、Sjが同一の多値状態とされたときに評価関数H0がより最適化される場合、一の多値変数Siの現状の多値状態か遷移先の多値状態の何れか少なくとも一以上が、隣接する他の多値変数Sjの現状の多値状態又は遷移先の多値状態と同一状態となるように2択最適化問題を構築することが望ましい。これにより、量子イジングマシン1が2択最適化問題を最適化したときに評価関数H0をより最適化できる。
【0096】
また、問題グラフG1上で隣接して結合する多値変数Si、Sjが異なる多値状態とされたときに評価関数H0がより最適化される場合、一の多値変数Siの現状の多値状態か遷移先の多値状態の何れか又は双方が、隣接する他の多値変数Sjの現状の多値状態及び遷移先の多値状態の両方と異なる多値状態となるように2択最適化問題を構築することが望ましい。これにより、量子イジングマシン1が2択最適化問題を最適化したときに評価関数H0をより最適化できる。
【0097】
(他の実施形態)
本開示は、前述実施形態に限定されるものではなく、例えば、以下に示す変形又は拡張が可能である。ハードウェアグラフG2は、キメラグラフを用いて説明したが、これに限定されるものではない。
【0098】
第4実施形態では、ホット状態値「1」(第一値相当)が一つだけ設けられたワンホット制約を例に挙げて説明したが、逆に、コールド状態値「0」(第一値相当)が一つだけ設けられたワンコールド制約に適用しても良い。第4実施形態では、評価関数H
0の評価式として(2)式を例示したが、ワンコールド表示を適用した場合には、下記の(3)式のように第2項内の数式を変換すると良い。
【数3】
【0099】
第一値がその他全ての第二値と異なるように二値変数xiを表示できれば、どのような二値変数xiを用いても良い。なお、多値変数Siがワンホット表示される場合にはホット状態値「1」が第一値に相当すると共にコールド状態値「0」が第二値に相当する。多値変数Siがワンコールド表示される場合にはコールド状態値「0」が第一値に相当すると共にホット状態値「1」が第二値に相当する。
【0100】
前述実施形態の構成、処理内容を組み合わせて構成することもできる。また、特許請求の範囲に記載した括弧内の符号は、本発明の一つの態様として前述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。前述実施形態の一部を、課題を解決できる限りにおいて省略した態様も実施形態と見做すことが可能である。また、特許請求の範囲に記載した文言によって特定される発明の本質を逸脱しない限度において、考え得るあらゆる態様も実施形態と見做すことが可能である。
【0101】
また本発明は、前述した実施形態に準拠して記述したが、本発明は当該実施形態や構造に限定されるものではないと理解される。本発明は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範畴や思想範囲に入るものである。
【符号の説明】
【0102】
図面中、1は量子イジングマシン(専用ハードウェア)、3はコンピュータ(予約部、禁止部、解消部、選択部、無効化処理部、変換部)、7は判定部、8は埋込部、V、V11~14、V21~V24は頂点、を示す。