(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-22
(45)【発行日】2022-12-01
(54)【発明の名称】情報処理システム、情報処理方法およびプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20221124BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2021501244
(86)(22)【出願日】2019-02-22
(86)【国際出願番号】 JP2019006708
(87)【国際公開番号】W WO2020170410
(87)【国際公開日】2020-08-27
【審査請求日】2021-10-22
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】301063496
【氏名又は名称】東芝デジタルソリューションズ株式会社
(74)【代理人】
【識別番号】100091487
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118876
【氏名又は名称】鈴木 順生
(74)【代理人】
【識別番号】100202429
【氏名又は名称】石原 信人
(72)【発明者】
【氏名】遠藤 浩太郎
【審査官】福西 章人
(56)【参考文献】
【文献】国際公開第2017/017807(WO,A1)
【文献】LUCAS, Andrew,Ising formulations of many NP problems,2014年01月24日,p.1-27,[検索日2019.4.18],インターネット<URL:https://arxiv.org/pdf/1302.5843.pdf>,<DOI:10.3389/fphy.2014.00005>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成し、前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成し、さらに前記二値変数をスピンとする、イジングモデルを生成する、第1コンピュータと、
前記イジングモデルの解を計算する、第2コンピュータとを備え、
前記第1コンピュータは、前記第2コンピュータが計算した前記イジングモデルの解に基づき、前記ハミルトン路問題の解を求める、
情報処理システム。
【請求項2】
前記第1コンピュータは、前記第2コンピュータによって計算された前記イジングモデルの解に基づき前記ハミルトン路問題の解が求められない場合、再び前記第2コンピュータに前記イジングモデルの解の計算を実行させる、
請求項1に記載の情報処理システム。
【請求項3】
前記グラフは、無向グラフであり、
前記第2コンピュータによって計算される前記イジングモデルの前記解は、すべての前記エッジグループについて、前記エッジグループに属する2本の前記エッジが経路として選択されている場合に相当する、
請求項2に記載の情報処理システム。
【請求項4】
前記グラフは、有向グラフであり、
前記第1コンピュータは、前記ノードに向かう前記エッジの前記グループと、前記ノードから他のノードに向かう前記エッジの前記グループとを、別々の前記エッジグループとして生成し、
前記第2コンピュータによって計算される前記イジングモデルの前記解は、すべての前記エッジグループについて、前記エッジグループに属する1本の前記エッジが経路として選択されている場合に相当する、
請求項2に記載の情報処理システム。
【請求項5】
前記第1コンピュータは、前記エッジグループの集合G、前記エッジグループg、前記二値変数s
i、前記エッジグループgの条件に依存する係数T
gを使って、下記の式の前記イジングモデルを生成する、
【数1】
請求項1または2に記載の情報処理システム。
【請求項6】
前記ハミルトン路問題において、前記経路の始点の前記ノードと、前記経路の終点の前記ノードとが同一の前記ノードであり、前記グラフが無向グラフである場合、前記係数T
gの値は前記エッジグループgに関わらず2となる、
請求項5に記載の情報処理システム。
【請求項7】
前記ハミルトン路問題は、前記経路の始点の前記ノードと、前記経路の終点の前記ノードとが同一の前記ノードであり、前記グラフが有向グラフである場合、前記係数T
gの値は前記エッジグループgに関わらず1となる、
請求項5に記載の情報処理システム。
【請求項8】
前記第1コンピュータは、前記第2コンピュータによって計算された前記イジングモデルの解が、前記グラフ上で複数の閉路を形成する場合、再び前記第2コンピュータに前記イジングモデルの解の計算を実行させる、
請求項6または7に記載の情報処理システム。
【請求項9】
前記グラフが無向グラフである場合、前記エッジグループgが始点の前記ノードまたは、終点の前記ノードに連結された前記エッジの前記グループであるならば、前記係数T
gの値は1となり、前記エッジグループgが前記始点および前記終点以外の前記ノードに連結された前記エッジの前記グループである場合、前記係数T
gの値は2となる、
請求項5に記載の情報処理システム。
【請求項10】
前記グラフが有向グラフである場合、前記エッジグループgが始点の前記ノードに向かう前記エッジを含むときまたは、終点の前記ノードから他のノードに向かう前記エッジを含むならば、前記係数T
gの値は0となり、前記エッジグループgが前記始点の前記ノードに向かう前記エッジおよび前記終点の前記ノードから前記他のノードに向かう前記エッジを含まない場合、前記係数T
gの値は1となる、
請求項5に記載の情報処理システム。
【請求項11】
前記第2コンピュータは、量子アニーリングマシン、ゲート方式の量子コンピュータ、Simulated Annealing法を実行可能なノイマン型コンピュータの少なくともいずれかである、
請求項1ないし10のいずれか一項に記載の情報処理システム。
【請求項12】
複数の前記第2コンピュータを備えた、
請求項1ないし11のいずれか一項に記載の情報処理システム。
【請求項13】
前記第1コンピュータは、DNA鎖の配列を決定するために、前記ノードを前記DNA鎖が切断されたDNA断片に、前記エッジを前記DNA断片の連結関係に対応付けることによって、前記グラフを生成し、生成された前記グラフに基づいて前記エッジグループを生成する、
請求項1ないし12のいずれか一項に記載の情報処理システム。
【請求項14】
前記第1コンピュータは、前記DNA断片が他の前記DNA断片と連結されないと判定される場合、前記エッジグループから前記DNA断片に対応するエッジを除外する、
請求項13に記載の情報処理システム。
【請求項15】
前記第1コンピュータは、前記グラフの少なくともひとつのエッジを除外して前記エッジグループを生成する、
請求項1ないし12のいずれか一項に記載の情報処理システム。
【請求項16】
ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成し、前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成し、前記二値変数をパラメータとする目的関数の解を計算し、前記目的関数の解に基づく、前記ハミルトン路問題の解を求める、ハードウェア回路と、
前記ハードウェア回路が生成した前記エッジグループと、前記ハードウェア回路が生成した前記二値変数とを保存する、記憶部とを備えた
情報処理システム。
【請求項17】
前記ハードウェア回路は、前記グラフが有向グラフである場合、前記ノードに向かう前記エッジの前記グループと、前記ノードから他のノードに向かう前記エッジの前記グループとを、別々の前記エッジグループとして生成し、前記目的関数の解の計算では、前記エッジグループに属する1本の前記エッジが経路として選択されていない場合、前記二値変数の値の反転によって前記目的関数の値を更新する、
請求項16に記載の情報処理システム。
【請求項18】
前記ハードウェア回路は、前記グラフが無向グラフである場合、前記目的関数の解の計算では、前記エッジグループに属する2本の前記エッジが経路として選択されていない場合、前記二値変数の値の反転によって前記目的関数の値を更新する、
請求項16に記載の情報処理システム。
【請求項19】
ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成するステップと、
前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成するステップと、
前記二値変数をスピンとする、イジングモデルを生成するステップと、
前記イジングモデルの解を計算するステップと、
前記イジングモデルの解に基づき、前記ハミルトン路問題の解を求めるステップとをコンピュータが実行する、情報処理方法。
【請求項20】
ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成するステップと、
前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成するステップと、
前記二値変数をパラメータとする目的関数の解を計算するステップと、
前記目的関数の解に基づく、前記ハミルトン路問題の解を求めるステップとをコンピュータが実行する、情報処理方法。
【請求項21】
ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成するステップと、
前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成するステップと、
前記二値変数をスピンとする、イジングモデルを生成するステップと、
前記イジングモデルの解を計算するステップと、
前記イジングモデルの解に基づき、前記ハミルトン路問題の解を求めるステップとをコンピュータに実行させる、プログラム。
【請求項22】
前記イジングモデルの解は、量子アニーリングマシン、ゲート方式の量子コンピュータ、Simulated Annealing法を実行可能なノイマン型コンピュータの少なくともいずれかによって計算される、
請求項21に記載のプログラム。
【請求項23】
ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成するステップと、
前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成するステップと、
前記二値変数をパラメータとする目的関数の解を計算するステップと、
前記目的関数の解に基づく、前記ハミルトン路問題の解を求めるステップとをコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理システム、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
近年、量子アニーリング現象を使ったコンピュータや、量子アニーリング現象をエミュレートするコンピュータの開発が進められている。例えば、特許文献1は二次の最適化問題を解く方法を開示している。これらのコンピュータによって組み合わせ最適化問題を高速に解くことが期待されている。上述のコンピュータの利用時には、事前に問題をイジングモデルに変換しなくてはならないことがある。
【0003】
しかし、ハミルトン路問題のグラフをイジングモデルに変換すると、計算に必要なスピン数が大きくなりすぎてしまう。非特許文献1の方法を使うと、イジングモデルへの変換後に、グラフのノード数の二乗のスピン数が必要となってしまう。必要な計算資源を抑えつつ、高速にハミルトン路問題を解く技術の開発が求められている。
【先行技術文献】
【特許文献】
【0004】
【非特許文献】
【0005】
【文献】Andrew Lucas,“Ising formulations of many NP problems”,[online] 12 February 2014, frontiers in physics,Web,URL:https://www.frontiersin.org/articles/10.3389/fphy.2014.00005/full
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の実施形態は、必要な計算資源を抑えつつ、高速にハミルトン路問題を解く情報処理システム、情報処理方法およびプログラムを提供する。
【課題を解決するための手段】
【0007】
本発明の実施形態としての情報処理システムは、ハミルトン路問題のグラフにおいて、ノードごとに、前記ノードに連結されたエッジのグループである、エッジグループを生成し、前記エッジグループごとに、前記エッジグループに含まれる前記エッジが経路として選択されたか否かを示す二値変数を生成し、さらに前記二値変数をスピンとする、イジングモデルを生成する、第1コンピュータと、前記イジングモデルの解を計算する、第2コンピュータとを備える。前記第1コンピュータは、前記第2コンピュータが計算した前記イジングモデルの解に基づき、前記ハミルトン路問題の解を求める。
【図面の簡単な説明】
【0008】
【
図1】第1の実施形態に係る情報処理システムの構成例を示したブロック図。
【
図3】イジングモデルへの変換処理の例を示したフローチャート。
【
図6】イジングマシンの解を検証する処理の例を示したフローチャート。
【
図7】イジングマシンの解を検証する処理の例を示したフローチャート。
【
図8】経路として選択されたエッジの例を示したテーブル。
【
図9】情報処理システムが実行する全体の処理の例を示したフローチャート。
【
図10】有向のハミルトン閉路問題の例を示した図。
【
図11】イジングモデルへの変換処理の例を示したフローチャート。
【
図13】イジングマシンの解を検証する処理の例を示したフローチャート。
【
図14】イジングマシンの解を検証する処理の例を示したフローチャート。
【
図15】経路として選択されたエッジの例を示したテーブル。
【
図16】第3の実施形態に係る情報処理システムの構成例を示したブロック図。
【
図17】第4の実施形態に係る情報処理システムの構成例を示したブロック図。
【
図18】コンピュータの構成例を示したブロック図。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
【0010】
(第1の実施形態)
はじめに、第1の実施形態に係る情報処理システムの概要について説明する。第1の実施形態に係る情報処理システムは、ハミルトン路問題をイジングモデルに変換し、ハミルトン路問題の解を求める。ハミルトン路問題とは、任意のグラフについて、すべてのノードを一度だけ通る経路を求める問題のことをいう。ハミルトン路問題において、経路の始点のノードと経路の終点のノードが異なるノードであってもよい。したがって、ハミルトン路問題の経路は、閉路であるとは限らない。
【0011】
一方、任意のグラフについて、すべてのノードを一度だけ通る閉路を求める問題を、ハミルトン閉路問題という。ハミルトン閉路問題は、ハミルトン路問題に始点のノードと終点のノードが同一ノードであるという条件を付加したものであるといえる。ハミルトン路問題およびハミルトン閉路問題が適用されるグラフは、複数のノードと、2つのノード間(ノードのペア)を連結するエッジとを含む。なお、すべてのノードのペアについてエッジが存在していなくてもよい。ハミルトン路問題およびハミルトン閉路問題では、ノード間のエッジ数を減らすことによって、問題を緩和し、求解を容易にすることが可能である。
【0012】
第1の実施形態では、情報処理システムを使ってハミルトン閉路問題を解く場合を例に説明する。ただし、情報処理システムを使って経路の始点のノードと経路の終点のノードとが異なるハミルトン路問題を解くことを妨げるものではない。経路の始点のノードと経路の終点のノードとが異なるハミルトン路問題を解く場合については、後述する。
【0013】
イジングモデルでは、エネルギーの関数が+1または-1のいずれかの2値をとる複数の変数si(i=1、2、・・・)の二次多項式によって表現される。ここで、エネルギーの関数はハミルトニアンとよばれる。ハミルトニアンは組み合わせ最適化問題における目的関数に相当する。また、変数siは二値変数またはスピンともよばれる。イジングモデルの最適解は、エネルギーが最小となる変数の値の組み合わせ(ベクトル)となる。イジングモデルのパラメータは二値変数であるため、組み合わせ最適化問題で使われる離散変数との変換が容易である。例えば、2進数の0および1をそれぞれ+1または-1のいずれかに対応付けることができる。イジングモデルの詳細については後述する。
【0014】
各変数siにグラフのノードvと、経路上の順序wの組み合わせを対応付け、ハミルトン閉路問題を解いた場合、N2個の変数siが必要となる。ハミルトン閉路問題の規模が大きくなると、ノード数vmaxが増える。したがって、このような定式化を行った場合、問題を解くのに必要な変数siの数が大幅に増大してしまう。
【0015】
ハミルトン閉路問題を解くのに必要なスピンの数が増えてしまうと、現実の問題を取り扱うことが可能なスピン数のイジングマシンが用意できなくなったり、イジングマシンのコストが非常に高くなったりするおそれがある。ここで、イジングマシンとはイジングモデルを解くコンピュータのことをいう。例えば、超伝導量子ビットを使った量子アニーリングマシンや、ゲート方式の量子コンピュータでは、ハードウェア上の制約によって、取扱い可能なスピン数に上限が存在する場合がある。また、ノイマン型コンピュータを使った場合、必要なコンピュータの台数が増えてしまう。また、一般に、問題を解くのに必要なスピン数が多くなるほど、計算にかかる時間も長くなってしまう。
【0016】
したがって、現実のハミルトン閉路問題を高速に解くためには、コンピュータで使う必要のあるスピンの数を抑えるのが好ましい。そこで、本実施形態に係る情報処理システムでは、必要なスピン数をグラフのエッジ数と等しくなるように、ハミルトン閉路問題のグラフをイジングモデルに変換する。そして、イジングモデルをイジングマシンによって解く。解は所定の条件を満たす必要がある。イジングマシンは当該条件を満たす解が得られるまで、求解処理を繰り返す。ここで、所定の条件とは、解が最適解であることであってもよいし、その他の条件であってもよい。また、所定の条件は、前者と後者の組み合わせであってもよい。
【0017】
ノード数をNとすると、グラフのエッジ数の上限はN(N-1)/2となる。したがって、各変数siにグラフのノードvと、経路上の順序wの組み合わせを対応付けた場合と比べ、必要なスピン数を半分未満にすることができる。エッジ数が多いグラフにおけるハミルトン閉路を探索するのは比較的容易であることが知られている。現実には、N(N-1)/2より少ないエッジ数のグラフにおけるハミルトン閉路の探索が行われることが多い。このため、現実に扱われる問題では、必要なスピン数がN(N-1)/2より少なくなる。
【0018】
必要なスピン数が抑えられるため、イジングマシンを使ってより規模の大きい問題を解くことが可能となる。また、スピン数の抑制により、計算時間の短縮をはかることもできる。すなわち、本実施形態に係る情報処理システムでは、必要な計算資源を抑えつつ、高速にハミルトン路問題を解くことができる。
【0019】
以下では、第1の実施形態に係る情報処理システムの構成例について説明する。
【0020】
図1は、第1の実施形態に係る情報処理システムの構成例を示した図である。
図1のシステムは情報処理装置1と、イジングマシン10とを備えている。情報処理装置1は、プロセッサと記憶装置を備えたコンピュータ(第1コンピュータ)である。情報処理装置1の各構成要素の詳細については、後述する。イジングマシン10は、イジングモデルを解くコンピュータ(第2コンピュータ)である。情報処理装置1と、イジングマシン10はネットワーク20を介して接続されている。これにより、情報処理装置1とイジングマシン10との間におけるデータ通信が可能となる。ネットワーク20の例としては、TCP/IPによる通信ネットワークが挙げられるが、使われるインタフェースと通信規格の種類については特に問わない。
【0021】
イジングマシン10の種類については特に問わない。例えば、イジングマシン10は、量子アニーリングマシンであってもよい。また、イジングマシン10は、量子ゲート方式の量子コンピュータであってもよい。イジングマシン10は、ノイマン型コンピュータ上でイジングモデルを解くプログラムを実行するものであってもよい。例えば、Simulated Annealing法を実行するプログラムを使うことができる。
【0022】
さらに、イジングマシン10は、ノイマン型コンピュータにイジングモデルの求解処理の少なくとも一部を実行するハードウェア回路を組み合わせたものであってもよい。ハードウェア回路の例としては、FPGAやASICなどが挙げられるが、回路の種類については限定しない。複数のノイマン型コンピュータを使ってイジングマシン10を実現してもよい。また、イジングマシン10は、上述のコンピュータの組み合わせであってもよいし、その他の構成のコンピュータであってもよい。
【0023】
イジングモデルは、主に強磁性体や相転移現象のモデルとして使われてきた。しかし、近年は組み合わせ最適化問題を解くためのモデルとしての利用が増えている。以下では、イジングモデルの概略について説明する。下記の式(1)は、イジングモデルのハミルトニアンHを示している。ハミルトニアンHはイジングモデルのエネルギーである。また、ハミルトニアンHは最適化問題における目的関数に相当する。
【数1】
ここで、J
ijは、スピン間の相互作用係数の行列である。s
i、s
jは二値変数(スピン)であり、+1または-1のいずれかの値をとる。h
iは各スピンにおける局所磁場のベクトルである。
【0024】
イジングマシン10の演算部12は、イジングモデルの解を求める。演算部12は、ハミルトニアンHの値が可能な限り小さくなるパラメータのベクトル(s1、s2、・・・、sN)を求める。演算部12によって求められたイジングモデルの解は、上述のパラメータのベクトル(s1、s2、・・・、sN)となる。演算部12によって求められる解は、ハミルトニアンHの値が最小値となる解(最適解)であることが期待される。ただし、演算部12によって求められる解は必ず最適解でなくてもよい。例えば、複数回の求解処理を実行して最適解を求めてもよい。また、複数の演算部12を使って並列的に求解処理を実行し、最適解を求めてもよい。
【0025】
イジングマシン10の制御部11は、イジングマシン10の各構成要素の制御を行う。例えば、イジングマシン10の制御部11は、情報処理装置1の制御部4から送信された制御信号を、ネットワーク20を経由して受信する。イジングマシン10の制御部11は、当該制御信号に基づき、演算部12を制御する。また、イジングマシン10の制御部11は演算部12によって求められたイジングモデルの解を情報処理装置1に転送する。
【0026】
イジングマシンの記憶部13は、イジングマシンの動作に必要なデータを含む各種のデータを保存可能な記憶領域を提供する。例えば、イジングマシン10の制御部11は、記憶部13をイジングモデルのデータや、イジングモデルの解が一時的に保存されるバッファとして使ってもよい。また、記憶部13には、プログラムや、制御用のデータが保存されていてもよい。
【0027】
記憶部13は、例えばSRAM、DRAMなどの揮発性メモリであってもよいし、NAND、MRAM、FRAMなどの不揮発性メモリでもよい。またハードディスク、SSDなどのストレージ装置や、外部の記憶装置であってもよい。すなわち、記憶部13の種類については特に問わない。また、記憶部13は複数の種類のメモリやストレージの組み合わせであってもよい。なお、イジングマシン10は必ず記憶部13を備えていなくてもよい。
【0028】
次に、情報処理装置1の各構成要素について説明する。情報処理装置1は、入力部2と、変換部3と、制御部4と、記憶部5と、検証部6と、出力部7とを備えている。
【0029】
入力部2を介して、ハミルトン閉路問題が情報処理装置1に入力される。ハミルトン閉路問題が情報処理装置1に入力される方法については特に問わない。例えば、入力部2は、キーボード、マウス、タッチパネルなどの入力装置であってもよい。この場合、ユーザが入力装置を使ってハミルトン閉路問題を入力することができる。また、入力部2は、他の情報処理装置とデータ通信が可能な通信回路であってもよい。この場合、通信回路は他の情報処理装置からはハミルトン閉路問題のデータをダウンロードすることができる。入力部2より入力されたハミルトン閉路問題のデータは、記憶部5に保存される。ハミルトン閉路問題のデータの例については、以下の
図2で説明する。
【0030】
図2は、無向のハミルトン閉路問題の例を示している。
図2のグラフ21は、無向グラフである。グラフ21は、ノードN1~N6と、エッジE1~E9とを含む。
図2の例では、ノード数がN=6、エッジ数がM=9となっている。
図2におけるNとMの値は例であり、グラフのノード数とエッジ数はこれとは異なっていてもよい。
図2のテーブル22はグラフ21の各エッジが連結しているノードのペアを格納している。テーブル22には、エッジ数Mに等しい数のエントリが存在している。例えば、エッジE1はノードN1とノードN2のペアを連結している。テーブル22には、その他のエッジが連結しているノードのペアの情報も格納されている。
【0031】
変換部3は、ハミルトン閉路問題のグラフをイジングモデルに変換する。
図3は、イジングモデルへの変換処理の例を示したフローチャートである。ここでは、
図3を参照しながら、変換部3が実行する処理の例を説明する。
【0032】
まず、変換部3はグラフのノードごとに、当該ノードと連結されているエッジのグループを生成する(ステップS101)。そして、変換部3は、生成したエッジのグループをエッジグループとして、記憶部5に保存する(ステップS102)。
図4のテーブル23は、
図2のグラフについて、エッジグループを生成した例である。テーブル23には、ノード数Nに等しい数のエントリが存在している。例えば、グループG1は、ノードN1と連結されているエッジE1、E3、E7を含んでいる。グループG2は、ノードN2と連結されているエッジE1、E2、E4、E7を含んでいる。すなわち、エッジグループは、グラフの各ノードと連結されているエッジのリストであるといえる。
【0033】
次に、変換部3は、イジングモデルのハミルトニアン(エネルギー)の式を下記の式(2)に設定する(ステップS103)。
【数2】
ここで、gは各エッジグループ、Gはエッジグループのテーブルに含まれるエッジグループの集合、s
iはスピン(二値変数)である。
【0034】
上述のように、本実施形態に係る情報処理システムでは、グラフの各エッジがスピンに対応付けられる。エッジが経路に選択されている場合、当該エッジに対応するスピンはsi=+1となる。一方、エッジが経路に選択されていない場合、当該エッジに対応するスピンはsi=-1となる。各ノード間の経路がハミルトン閉路を形成する場合、ハミルトン閉路を構成するエッジはsi=+1のスピンに対応し、ハミルトン閉路を構成していないエッジはsi=-1のスピンに対応しているともいえる。
【0035】
式(2)を参照すると、ひとつのエッジグループにおいて、経路として選択されているエッジが2本(+1のスピンが2つ)存在すると、当該エッジグループに対応する項の値が最小値(2-2/2-2/2=0)となることがわかる。これは、グラフにおいて、あるノードに連結されているエッジのうち、2本のエッジが経路として選択されている状態に対応する。なお、エッジグループに対応する項の値は、当該エッジグループにおける、経路として選択されていないエッジの本数(-1のスピンの数)には依存しない。
【0036】
グラフの各ノードに連結されているエッジのうち、2本のエッジが経路として選択されているという条件は、式(2)において、各エッジグループに含まれるエッジに対応するスピンのうち、2つのスピンが+1である場合に対応する。このとき、式(2)のエネルギーはH=0となり、最小値をとる。すなわち、上述の対応関係より、イジングマシンから出力された解において、エネルギーがH=0であれば、エッジ上の経路が各ノードを連結するハミルトン閉路を形成している可能性があるといえる。なお、エネルギーがH=0であることは、イジングマシンの解がハミルトン閉路を形成するための必要条件であるが、十分条件ではない。この理由については後述する。
【0037】
変換部3は、変換処理により生成したイジングモデルのデータを、記憶部5に保存してもよい。また、変換部3は、変換処理により生成したイジングモデルのデータを、制御部4に転送してもよい。
【0038】
制御部4は、イジングモデルの解を求めるために、イジングマシン10を制御する。例えば、制御部4は、イジングマシン10にイジングモデルのデータをイジングマシン10に転送する。そして、制御部4は、イジングマシン10に当該イジングモデルの解の計算を求める指令を送信する。すなわち、制御部4は、ネットワーク20を介してイジングマシン10に各種の制御信号を送信することができる。また、制御部4は、イジングマシン10より、計算されたイジングモデルの解を受信する。制御部4は、受信したイジングモデルの解を記憶部5に保存してもよい。また、制御部4は、受信したイジングモデルの解を検証部6に転送してもよい。
【0039】
記憶部5は、ハミルトン閉路問題のグラフに係るデータ、グラフのイジングモデルへの変換に必要なデータ、イジングモデルの解の検証に必要なデータ、情報処理装置1で動作するプログラムのデータなど、各種のデータを保存可能な記憶領域を提供する。記憶部5は、例えばSRAM、DRAMなどの揮発性メモリであってもよいし、NAND、MRAM、FRAMなどの不揮発性メモリでもよい。またハードディスク、SSDなどのストレージ装置や、外部の記憶装置であってもよい。すなわち、記憶部5の種類については特に限定しない。また、記憶部5は複数の種類のメモリやストレージの組み合わせであってもよい。
【0040】
検証部6は、イジングマシン10で計算された解が、ハミルトン閉路問題の解となっているか否かを検証する。例えば、イジングマシン10の仕様や種類によっては、必ず計算された解のエネルギーがH=0とはならないことがある。Hが0でない場合、計算された解に対応する経路がグラフ上でハミルトン閉路を形成しない。したがって、検証部6はイジングマシン10で計算された解がハミルトン閉路問題の解になっていないと判定する。
【0041】
ただし、解のエネルギーがH=0となるイジング問題の最適解が得られたとしてもその解に対応する経路がグラフ上でハミルトン閉路を形成しているとは限らない。例えば、計算された解に対応する経路が
図2のグラフ21において、エッジE1、E4、E7を含む閉路と、エッジE5、E9、E6を含む閉路を形成しているものとする。この場合、グラフ21の全ノードについて、ノードに連結されているエッジのうち、2本のエッジが経路として選択されているため、式(2)のエネルギーはH=0となる。しかし、このような経路はハミルトン閉路の条件を満たしていない。そこで、検証部6はイジングマシン10で計算された解に対応する経路が、グラフ上で複数の閉路を形成している場合、解がハミルトン閉路問題の解となっていないと判定する。グラフ上で複数の閉路を形成する解を擬似解とよぶ。
図5は、擬似解の一例を示している。
【0042】
図6と
図7は、イジングマシンの解を検証する処理の例を示したフローチャートである。以下では、
図6と
図7を参照しながら、処理を説明する。
【0043】
はじめに、検証部6は、イジングマシン10で計算された解のエネルギーがH=0であるか否かを判定する(ステップS201)。解のエネルギーHが0ではない場合(ステップS201のNO)、検証部6はイジングマシンの解はグラフ上でハミルトン閉路を形成しないと判定する(ステップS214)。
【0044】
解のエネルギーがH=0である場合(ステップS201のYES)、検証部6はイジングマシンの解(s
1、s
2、・・・、s
M)を参照する(ステップS202)。そして、検証部6はイジングマシンの解より、s
i=+1となる番号iのエッジのリストを抽出する(ステップS203)。ステップS203は、経路として選択されているエッジを抽出する処理に相当する。
図8のテーブル24は、ステップS203で抽出されたエッジのリストの例を示している。テーブル24の第1列は、経路として選択されたエッジを示している。一方、第2列は当該エッジが連結しているノードのペアを示している。以降では、ステップS203で生成されるテーブルを経路テーブルとよぶことにする。テーブル24は経路テーブルの一例である。
【0045】
次に、検証部6は経路テーブルにおけるいずれかのノードを初期ノードINに設定する(ステップS204)。そして、検証部6は経路上で初期ノードINと隣接しているいずれかのエッジをエッジEDに設定する(ステップS205)。例えば、テーブル24において、ノードN5が初期ノードINとして選択された場合、エッジE4またはE7がエッジEDに設定される。
【0046】
次に、検証部6はINを変数NDに代入し、0を変数CNTに代入する(ステップS206)。そして、検証部6は経路上でノードNDと隣接しているエッジのうち、エッジEDでない方のエッジをEOとする(ステップS207)。次に、検証部6は経路上でエッジEOと隣接しているノードのうち、ノードNDでない方のノードをNTとする(ステップS208)。
【0047】
そして、検証部6は変数NDにNTを代入する。また、検証部6はエッジEOをエッジEDに設定する。さらに検証部6は変数CNTの値に1をインクリメントする。(以上、ステップS209)次に、検証部6は変数CNTの値がグラフのノード数に等しいか否かを判定する(ステップS210)。ステップS210の判定において、検証部6は、グラフのすべてのノードをトレースされたか否かの確認を行っている。
【0048】
変数CNTの値がグラフのノード数とは異なる場合(ステップS210のNO)、検証部6は変数NDが初期ノードINと同一のノードになっているか否かを確認する(ステップS213)。変数NDが初期ノードINと同一のノードではない場合(ステップS213のNO)、検証部6はステップS207~S209の処理を繰り返した後、再びステップS210の判定を行う。変数NDが初期ノードINと同一のノードである場合(ステップS213のYES)、検証部6はイジングマシンの解がハミルトン閉路を形成しないと判定する(ステップS214)。
【0049】
変数CNTの値がグラフのノード数に等しい場合(ステップS210のYES)、検証部6は変数NDが初期ノードINと同一のノードになっているか否かを確認する(ステップS211)。変数NDが初期ノードINと同一のノードである場合(ステップS211のYES)、検証部6はイジングマシンの解がハミルトン閉路を形成していると判定する(ステップS212)。変数NDが初期ノードINと同一のノードでない場合(ステップS211のNO)、検証部6はイジングマシンの解がハミルトン閉路を形成していないと判定する(ステップS214)。
【0050】
イジングマシンの解がハミルトン閉路を形成しているか否かの判定が行われたら(ステップS212またはステップS214)、
図6と
図7の処理は終了する。検証部6は、イジングマシンの解がハミルトン閉路を形成しているか否かを示す情報を記憶部5に保存してもよい。また、検証部6は検証処理の結果をユーザに通知してもよい。なお、
図6と
図7に示した処理は、イジングマシンの解の検証処理の一例にしかすぎない。したがって、これとは異なる処理によってイジングマシンの解がハミルトン閉路を形成しているか否かを判定してもよい。
【0051】
出力部7は、求められたハミルトン閉路問題の解を出力する。出力部7によるデータの出力形式は特に問わない。例えば、出力部7はディスプレイにハミルトン閉路問題の解を表示してもよい。また、出力部7はプリンタを使ってハミルトン閉路問題の解を紙に印刷してもよい。出力部7は、外部の記憶装置にハミルトン閉路問題の解のデータを保存してもよい。出力部7は、通信回路を使って外部の情報処理装置にハミルトン閉路問題の解のデータを送信してもよい。
【0052】
情報処理装置1の入力部2、変換部3、制御部4、検証部6、出力部7、ならびにイジングマシン10の制御部11を、例えばCPUなどのプロセッサ、ASIC、FPGA、CPLDなどのハードウェア回路で実装してもよい。また、上述の各構成要素をOS(Operating System)やアプリケーションなどのプログラムまたはハードウェアとプログラムの組み合わせによって実装してもよい。なお、イジングマシン10の演算部12の構成については特に問わない。例えば、演算部12は各種のハードウェア回路によって実装されていてもよいし、各種のプログラムによって実装されていてもよい。上述のように、イジングマシン10の演算部12の構成は、イジングマシンの種類によって異なる。
【0053】
図9は、情報処理システムが実行する全体の処理の例を示したフローチャートである。以下では、
図9を参照しながら処理を説明する。
【0054】
はじめに、ハミルトン閉路問題が情報処理装置1の入力部2を介してシステムに入力される(ステップS111)。入力部2の説明で述べたように、ハミルトン閉路問題がシステムに入力される方法については特に問わない。そして、情報処理装置1の変換部3は、ハミルトン閉路問題をイジングモデルに変換する(ステップS112)。ステップS112で実行される変換処理の詳細は、変換部と
図3、
図4の説明で述べた通りである。情報処理装置1の制御部4はイジングモデルのデータをイジングマシン10に転送し、イジングマシン10に求解処理の開始指令を送信する。そして、イジングマシン10を使ってイジングモデルの解を計算する(ステップS113)。
【0055】
イジングマシン10によってイジングモデルの解が求められたら、イジングモデルの解は情報処理装置1に転送される。情報処理装置1の検証部6は、イジングモデルの解がハミルトン閉路を形成しているか否かを検証する(ステップS114)。ステップS114で実行される検証処理の詳細は、検証部6と
図5~
図8の説明で述べた通りである。
【0056】
情報処理装置1の検証部6によってイジングモデルの解がハミルトン閉路を形成しないと判定された場合(ステップS114のNO)、情報処理装置1の制御部4はイジングマシン10に再び求解処理の開始指令を送信する。そして、イジングマシン10は再びイジングモデルの解を計算する(ステップS113)。
【0057】
同じイジングモデルを使っていても、試行によってイジングマシン10から異なる解が出力されることが期待される。試行によって異なる解が出力される要因はイジングマシン10の種類によって異なる。例えば、量子アニーリングマシンやゲート方式の量子コンピュータでは、量子ビットにおける重ね合わせ状態のうち、いずれかの状態が量子論的な確率で観測されるため、試行によって異なる解が出力される。また、ノイマン型コンピュータや、ハードウェア回路を使ったコンピュータの場合には、求解処理中で使われる擬似乱数の効果のため、試行によって異なる解が出力される可能性がある。
【0058】
このため、複数回の試行(イジングマシン10による求解処理)によって、ハミルトン閉路を形成する解が求められる確率が大きくなる。処理の高速なイジングマシンを使い、時間当たりに実行される試行の回数を増やしてもよい。なお、
図9のフローチャートでは、特に試行回数に上限を設けていないが、試行回数に上限を設けてもよい。例えば、所定の時間内に試行を繰り返しても、ハミルトン閉路を形成する解が得られない場合、処理を停止してもよい。また、試行回数をカウントし、カウントされた値がしきい値を超えたら、処理を停止してもよい。
【0059】
情報処理装置1の検証部6によってイジングモデルの解がハミルトン閉路を形成すると判定された場合(ステップS114のYES)、システムは求められた解を結果として出力する(ステップS115)。ステップS115で実行される処理の詳細は出力部7の説明で述べた通りである。
【0060】
第1の実施形態に係る情報処理システムでは、計算に必要なスピン数が抑えられている。このため、必要な計算資源を抑えつつ、高速にハミルトン路問題を解くことが可能である。
【0061】
(第2の実施形態)
第1の実施形態では、無向グラフのハミルトン閉路問題の解を求める場合を例に説明した。ただし、本実施形態に係る情報処理システムを使って有向グラフのハミルトン閉路問題の解を求めてもよい。第2の実施形態の求解処理では、有向グラフのハミルトン閉路問題の解を求める。実行される処理の違いを除けば、第2の実施形態に係る情報処理システムの構成は、第1の実施形態(
図1の構成)と同様である。以下では、第1の実施形態との相違点を中心に、第2の実施形態の情報処理システムを説明する。
【0062】
有向のハミルトン閉路問題は入力部2を介して、情報処理装置1に入力される。
図10は、有向のハミルトン閉路問題の例を示している。
図10のグラフ25は、有向グラフである。グラフ25は、ノードn1~n6と、エッジe1~e9とを含む。
図10の例では、ノード数がN=6、エッジ数がM=9となっている。
図10におけるNとMの値は例である。グラフのノード数とエッジ数はこれとは異なっていてもよい。
図10のテーブル26には、エッジ数Mに等しい数のエントリが存在している。例えば、エッジe1はノードn1からノードn2に向かっている。
【0063】
変換部3は、ハミルトン閉路問題の有向グラフをイジングモデルに変換する。
図11は、イジングモデルへの変換処理の例を示したフローチャートである。ここでは、
図11を参照しながら、変換部3が実行する処理の例を説明する。
【0064】
まず、変換部3は有向グラフのノードごとに、当該ノードへ向かっているエッジのグループGinを生成する(ステップS121)。また、変換部3は有向グラフのノードごとに、当該ノードから他のノードに向かっているエッジのグループGoutを生成する(ステップS122)。そして、変換部3は、生成したエッジのグループをエッジグループとして、記憶部5に保存する(ステップS123)。
【0065】
図12のテーブル27は、
図10のグラフについて、エッジグループを生成した例である。テーブル27には、ノード数の2倍の数、2Nに等しい数のエントリが存在している。例えば、グループGin1は、ノードn1に向かっているエッジe7を含んでいる。グループGout1は、ノードn1から他のノードに向かっているエッジe1、e3を含んでいる。このように、エッジグループは、グラフの各ノードと連結されているエッジのリストである。ただし、あるノードに向かうエッジのグループと、あるノードから他のノードに向かうエッジのグループは、別々のエッジグループとなる。
【0066】
次に、変換部3は、イジングモデルのハミルトニアン(エネルギー)の式を下記の式(3)に設定する(ステップS124)。
【数3】
ここで、gは各エッジグループ、Gはエッジグループのテーブルに含まれるエッジグループの集合、s
iはスピン(二値変数)である。
【0067】
第2の実施形態においても、グラフの各エッジがスピンに対応付けられる。エッジが経路に選択されている場合、当該エッジに対応するスピンはsi=+1となる。一方、エッジが経路に選択されていない場合、当該エッジに対応するスピンはsi=-1となる。
【0068】
式(3)を参照すると、それぞれのエッジグループについて、経路として選択されているエッジが1本(+1のスピンが1つ)存在すると、当該エッジグループに係る項の値が1-2/2=0(最小値)となることがわかる。これは、グラフにおいて、あるノードに連結されているエッジのうち、1本の当該ノードに向かうエッジと、1本の当該ノードからその他のノードに向かうエッジとが経路として選択されている状態に対応する。なお、エッジグループに係る項の値は、当該エッジグループにおける、経路として選択されていないエッジの本数(-1のスピンの数)には依存しない。
【0069】
したがって、式(2)において各エッジグループに含まれるエッジに対応するスピンのうち、1つのスピンが+1であるとき、グラフの全ノードについて、ノードに連結されているエッジのうち、1本の当該ノードに向かうエッジと、1本の当該ノードからその他のノードに向かうエッジとが経路として選択されているといえる。
【0070】
各エッジグループに含まれるエッジに対応するスピンのうち、1つのスピンが+1であるとき、式(3)のエネルギーはH=0となり、最小値をとる。すなわち、上述の対応関係より、イジングマシンから出力された解において、エネルギーがH=0であれば、エッジ上の経路が各ノードを連結するハミルトン閉路を形成している可能性があるといえる。第1の実施形態と同様、エネルギーがH=0であることは、イジングマシンの解がハミルトン閉路を形成するための必要条件であるが、十分条件ではない。
【0071】
検証部6は、イジングマシン10で計算された解が、ハミルトン閉路問題の解となっているか否かを検証する。以下では、有効グラフのハミルトン閉路問題における検証処理について説明する。
【0072】
図13と
図14は、イジングマシンの解を検証する処理の例を示したフローチャートである。以下では、
図13と
図14を参照しながら、処理を説明する。
【0073】
はじめに、検証部6は、イジングマシン10で計算された解のエネルギーがH=0であるか否かを判定する(ステップS301)。解のエネルギーHが0ではない場合(ステップS301のNO)、検証部6はイジングマシンの解はグラフ上でハミルトン閉路を形成しないと判定する(ステップS312)。
【0074】
解のエネルギーがH=0である場合(ステップS301のYES)、検証部6はイジングマシンの解(s1、s2、・・・、sM)を参照する(ステップS302)。そして、検証部6はイジングマシンの解より、si=+1となる番号iのエッジのリストを抽出する(ステップS303)。ステップS303は、経路として選択されているエッジを抽出する処理に相当する。
【0075】
図15のテーブル28は、ステップS303で抽出されたエッジのリストの例を示している。テーブル28の第1列は、経路として選択されたエッジを示している。一方、第2列は出発ノードを、第3列は到着ノードをそれぞれ示している。テーブル28の各行のエッジは、出発ノードから到着ノードに向かっている。以降では、ステップS303で生成されるテーブルを経路テーブルとよぶことにする。テーブル28は経路テーブルの一例である。
【0076】
次に、検証部6は経路テーブルにおけるいずれかのノードを初期ノードINに設定する(ステップS304)。そして、検証部6はINを変数NDに代入し、0を変数CNTに代入する(ステップS305)。次に、検証部6は、出発ノードがNDであるエッジの到着ノードをNAとする(ステップS306)。
【0077】
そして、検証部6は変数NDにNAを代入する。また、検証部6は変数CNTの値に1をインクリメントする。(以上、ステップS307)次に、検証部6は変数CNTの値がグラフのノード数に等しいか否かを判定する(ステップS308)。ステップS308の判定において検証部6は、グラフのすべてのノードをトレースされたか否かの確認を行っている。
【0078】
変数CNTの値がグラフのノード数とは異なる場合(ステップS308のNO)、検証部6は変数NDが初期ノードINと同一のノードになっているか否かを確認する(ステップS311)。変数NDが初期ノードINと同一のノードではない場合(ステップS311のNO)、検証部6はステップS306、S307の処理を繰り返した後、再びステップS308の判定を行う。変数NDが初期ノードINと同一のノードである場合(ステップS311のYES)、検証部6はイジングマシンの解がハミルトン閉路を形成しないと判定する(ステップS312)。
【0079】
変数CNTの値がグラフのノード数に等しい場合(ステップS308のYES)、検証部6は変数NDが初期ノードINと同一のノードになっているか否かを確認する(ステップS309)。変数NDが初期ノードINと同一のノードである場合(ステップS309のYES)、検証部6はイジングマシンの解がハミルトン閉路を形成していると判定する(ステップS310)。変数NDが初期ノードINと同一のノードでない場合(ステップS309のNO)、検証部6はイジングマシンの解がハミルトン閉路を形成していないと判定する(ステップS312)。
【0080】
イジングマシンの解がハミルトン閉路を形成しているか否かの判定が行われたら(ステップS310またはステップS312)、
図13と
図14の処理は終了する。検証部6は、イジングマシンの解がハミルトン閉路を形成しているか否かを示す情報を記憶部5に保存してもよい。また、検証部6は検証処理の結果をユーザに通知してもよい。なお、
図13と
図14に示した処理は、イジングマシンの解の検証処理の一例にしかすぎない。したがって、これとは異なる処理によってイジングマシンの解がハミルトン閉路を形成しているか否かを判定してもよい。
【0081】
第2の実施形態に係る情報処理システムの全体の処理は、第1の実施形態に係る情報処理システム(
図9の処理)と同様である。第2の実施形態に係る情報処理システムでも、計算に必要なスピン数が抑えられている。したがって、必要な計算資源を抑えつつ、高速にハミルトン路問題を解くことが可能である。
【0082】
(第3の実施形態)
第1の実施形態に係る情報処理システムは1台のイジングマシンを備えていた。ただし、情報処理システムは複数台のイジングマシンを備えていてもよい。第3の実施形態に係る情報処理システムは複数台のイジングマシンを備えている。複数台のイジングマシンは求解処理を並列的に実行することができる。以下では、第1、第2の実施形態との差異点を中心に、第3の実施形態に係る情報処理システムを説明する。
【0083】
図16は、第3の実施形態に係る情報処理システムの構成例を示したブロック図である。
図16の情報処理システムは、情報処理装置1と、イジングマシン10aと、イジングマシン10bと、イジングマシン10cと、イジングマシン10dとを備えている。
図16では、4台のイジングマシンが示されているが、これは一例にしかすぎない。したがって、イジングマシンの台数はこれとは異なっていてもよい。例えば、1000台のイジングマシンを使ってもよい。
【0084】
情報処理装置1とイジングマシン10a~10dはネットワーク20を介して接続されている。これにより、情報処理装置1とイジングマシン10a~10dとの間におけるデータ通信が可能となる。ネットワーク20の例としては、TCP/IPによる通信ネットワークが挙げられるが、使われるインタフェースと通信規格の種類については特に問わない。
【0085】
図16では、イジングマシン10a~10dの内部の構成要素が省略されている。ただし、イジングマシン10a~10dの構成は、
図1のイジングマシン10と同様であるものとする。また、イジングマシン10a~10dの種類については特に問わない。例えば、イジングマシン10a~10dは同一の種類のイジングマシンであってもよい。また、イジングマシン10a~10dは、複数の種類のイジングマシンを含んでいてもよい。各種類のイジングマシンは異なる特性を有するため、イジングモデルによって、最適解が求められる確率や計算時間が異なることがある。したがって、複数の種類のイジングマシンを使うことによって、最適解が求められる確率を高め、計算時間を短縮することができる。
【0086】
例えば、制御部4は、イジングマシン10a~10dに対して同一のイジングモデルの解の計算を求める指令を送信する。そして、イジングマシン10a~10dは同一のイジングモデルの解を並列的に計算する。イジングマシンの種類によっては、並列的な計算による性能の向上が見込める場合がある。そして、情報処理装置1の制御部4はイジングマシン10a~10dから、計算されたイジングモデルの解を受信する。情報処理装置1の検証部6は、各イジングマシンで計算された解がハミルトン閉路の解を形成しているか否かを判定する。検証部6は、複数の解の検証処理を並列的に実行してもよい。また、検証部6は、それぞれの解の検証処理を逐次実行してもよい。検証部6によって、いずれかの解がハミルトン閉路の解を形成していると判定されたら、出力部7はハミルトン閉路の解を各種の形式で出力する。
【0087】
入力部2に入力されるハミルトン閉路問題のグラフは、有向グラフであってもよいし、無向グラフであってもよい。したがって、変換部3は、有向グラフをイジングモデルに変換してもよいし、無向グラフをイジングモデルに変換してもよい。変換部3によって実行される変換処理の詳細は、第1の実施形態および第2の実施形態で述べた通りである。
【0088】
(第4の実施形態)
第1~第3の実施形態に係る情報処理システムでは、ハミルトン閉路問題をイジングモデルに変換(変換処理)してから、イジングモデルの解を計算(求解処理)していた。ただし、ハミルトン閉路問題の解が求められるのであれば、必ずイジングモデルへの変換処理を実行しなくてもよい。第4の実施形態に係る情報処理システムでは、ハミルトン閉路問題をメタヒューリスティクスアルゴリズムで解く。メタヒューリスティクスアルゴリズムの実行中における解の変換では、エッジグループに属する2本または1本のエッジが経路として選択されていない場合、二値変数の値の反転によって目的関数の値が小さくなるようにする。
【0089】
図17は、第4の実施形態に係る情報処理システムの構成例を示したブロック図である。
図17の情報処理装置1aは、入力部2と、制御部4と、記憶部5と、検証部6と、出力部7、ソルバー8とを備えている。入力部2、記憶部5、検証部6、出力部7の機能は第1~第3の実施形態に係る情報処理装置と同様である。制御部4は、情報処理装置1aの各構成要素を制御する。
【0090】
ソルバー8は、ハミルトン閉路問題をメタヒューリスティクスアルゴリズムによって解く。ソルバー8には、ハミルトン閉路問題のグラフの情報(ノードと、ノード間を連結するエッジの情報)が入力される。メタヒューリスティクスアルゴリズムの例としては、Simulated Annealing法、タブーサーチなどの局所探索法、粒子群最適化(PSO)、遺伝的アルゴリズムなどが挙げられる。ただし、ソルバー8は、どのような種類のアルゴリズムを使ってもよい。例えば、Simulated Annealing法では、初期解から解の変換を繰り返しながら、最適解または最適解に近い局所最適解の探索を行う。
【0091】
ソルバー8の例としては、プロセッサ上でメタヒューリスティクスアルゴリズムを実行するプログラムが挙げられる。ただし、ソルバー8は、FPGA、ASICなどのハードウェア回路によって実装されていてもよく、実装方法については特に問わない。第4の実施形態では、ソルバー8が上述の各実施形態に係るイジングマシンに相当する処理を実行する。
【0092】
以下では、ソルバー8がSimulated Annealing法を使っている場合を例に説明する。ここでは、目的関数として、変数si(i=1、2、・・・、M)をパラメータとする、エネルギーEの関数が使われるものとする。そして、求められる最適解はエネルギーEの極小値であるものとする。変数siは+1または-1のいずれかの値をとる。
【0093】
無向グラフのハミルトン閉路問題の場合、解の変換時において、変数s
jの値を反転させたときのエネルギーEの変化量として、下記の式(4)を使うことができる。
【数4】
ここで、G
jはs
jを含むエッジグループの集合であり、集合gはG
jに含まれる各エッジグループである。
【0094】
一方、有向グラフのハミルトン閉路問題の場合、解の変換時において、変数s
jの値を反転させたときのエネルギーEの変化量として、下記の式(5)を使うことができる。
【数5】
ここで、G
jはs
jを含むエッジグループの集合であり、集合gはG
jに含まれる各エッジグループである。
【0095】
式(4)、(5)の変換式において、エッジが経路に選択されている場合、当該エッジに対応する変数はsi=+1となる。一方、エッジが経路に選択されていない場合、当該エッジに対応する変数はsi=-1となる。
【0096】
式(4)では、エッジグループに属する2本のエッジが経路として選択されている場合、∂E/∂sj=0となり、解の変換によってエネルギーEの値が変わらない。しかし、エッジグループに属するいずれのエッジも経路として選択されていない場合と、エッジグループに属する1本のエッジのみが経路として選択されている場合には、∂E/∂sj<0となり、二値変数sjの値の反転によってエネルギーEの値が減少する。エネルギーEの変化は、目的関数の値の更新に相当する。目的関数の値が更新されるため、解の変換時に二値変数sjの値が反転される確率が高くなる。
【0097】
式(5)では、エッジグループに属する1本のエッジが経路として選択されている場合、∂E/∂sj=0となり、二値変数sjの値の反転によってエネルギーEの値が変わらない。しかし、エッジグループに属するいずれのエッジも経路として選択されていない場合には、∂E/∂sj<0となり、二値変数sjの値の反転によってエネルギーEの値が減少する。エネルギーEの変化は、目的関数の値の更新に相当する。目的関数の値が更新されるため、解の変換時に二値変数sjの値が反転される確率が高くなる。
【0098】
第4の実施形態では、ソルバー8による解の変換が行われるたびに、エネルギーEの変化量の計算処理が必要となる。ただし、第1~第3の実施形態における、グラフのイジングモデルへの変換処理が不要となる。このため、第4の実施形態に係る情報処理システムを使った方が、第1~第3の実施形態に比べ、計算時間が短縮されることがある。
【0099】
(第5の実施形態)
上述の各実施形態では、情報処理システムを使って、経路の始点のノードと、経路の終点のノードが同一である、ハミルトン閉路問題を解く場合を例に説明を行った。ただし、必ず経路の始点のノードと、経路の終点のノードは同一でなくてもよい。第5の実施形態では、経路の始点のノードと、経路の終点のノードが異なるハミルトン路問題の解が求められる場合を説明する。以下では、第1~第3の各実施形態との差異点を中心に、第5の実施形態に係る情報処理システムを説明する。
【0100】
グラフ上の経路における、始点のノードと、終点のノードが異なっている場合、ハミルトニアンHとして、下記の式(6)を使うことができる。
【数6】
ここで、gは各エッジグループ、Gはエッジグループのテーブルに含まれるエッジグループの集合、s
iはスピン(変数)である。式(6)のT
gは、以下に述べるように条件によって異なる値をとる。
【0101】
無向グラフのハミルトン路問題において、エッジグループgが始点のノードまたは、終点のノードに連結されたエッジのグループである場合、Tg=1となる。また、エッジグループgが始点および終点以外のノードに連結されたエッジのグループである場合、Tg=2となる。有向グラフのハミルトン路問題において、エッジグループgが始点のノードに向かうエッジを含むときまたは、終点のノードから他のノードに向かうエッジを含むとき、Tg=0となる。また、エッジグループgが始点のノードに向かうエッジおよび終点のノードから他のノードに向かうエッジを含まない場合、Tg=1となる。
【0102】
なお、無向グラフのハミルトン路問題において、経路の始点のノードと、経路の終点のノードが等しい場合、式(6)では、エッジグループgに関わらずTg=2となる。この条件は、上述の式(2)に対応する。同様に、有向グラフのハミルトン路問題において、経路の始点のノードと、経路の終点のノードが等しい場合、式(6)では、エッジグループgに関わらずTg=1となる。この条件は、上述の式(3)に対応する。したがって、上述の式(6)は一般化されたハミルトニアンの表記であるともいえる。
【0103】
処理で使われるハミルトニアンが異なる点を除けば、第5の実施形態に係る情報処理システムの機能と構成は、第1~第3の各実施形態に係る情報処理システムと同様である。
【0104】
(第6の実施形態)
第4の実施形態では、ハミルトン閉路問題をメタヒューリスティクスアルゴリズムで解く場合について説明をした。経路の始点のノードと、経路の終点のノードが異なるハミルトン路問題をメタヒューリスティクスアルゴリズムで解いてもよい。以下では、第4の実施形態との差異点を中心に、第6の実施形態に係る情報処理システムを説明する。
【0105】
第6の実施形態に係る情報処理システムの構成は、上述の
図17と同様である。ソルバー8が解の変換時に使う式は下記のようになる。
【0106】
無向グラフのハミルトン路問題の場合、解の変換時において、変数s
jの値を反転させたときのエネルギーEの変化量として、下記の式(7)を使うことができる。
【数7】
ここで、G
jはs
jを含むエッジグループの集合であり、集合gはG
jに含まれる各エッジグループである。変数s
iは+1または-1のいずれかの値をとる。
【0107】
一方、有向グラフのハミルトン閉路問題の場合、解の変換時において、変数s
jの値を反転させたときのエネルギーEの変化量として、下記の式(8)を使うことができる。
【数8】
ここで、G
jはs
jを含むエッジグループの集合であり、集合gはG
jに含まれる各エッジグループである。変数s
iは+1または-1のいずれかの値をとる。
【0108】
式(7)、(8)のTgは、以下に述べるように、エッジグループの条件に依存する係数である。
【0109】
無向グラフのハミルトン路問題において、エッジグループgが始点のノードまたは、終点のノードに連結されたエッジのグループである場合、Tg=1となる。また、エッジグループgが始点および終点以外のノードに連結されたエッジのグループである場合、Tg=2となる。有向グラフのハミルトン路問題において、エッジグループgが始点のノードに向かうエッジを含むときまたは、終点のノードから他のノードに向かうエッジを含むとき、Tg=0となる。また、エッジグループgが始点のノードに向かうエッジおよび終点のノードから他のノードに向かうエッジを含まない場合、Tg=1となる。
【0110】
解の変換時に実行される、エネルギーEの変化量の計算処理が異なる点を除けば、第6の実施形態に係る情報処理システムの機能と構成は、第4の実施形態と同様である。
【0111】
上述の各実施形態では、経路として選択されたエッジに対応する変数をsi=+1としていた。ただし、経路として選択されたエッジに対応する変数をsi=-1としてもよい。この場合、ハミルトニアンHまたは、エネルギーEの変化量の計算時において変数の符号を反転させればよい。また、上述の各実施形態の求解処理では、目的関数の極小値が最適解となっていた。ただし、目的関数の極大値が最適解となるように問題の定式化を行ってもよい。
【0112】
また、ハミルトン路問題において、特定のエッジが経路として選択されるという制約条件がある場合、式(6)~式(8)の計算時において、当該エッジを含むエッジグループについて、Tgの値から1を減算する。そして、エッジグループから当該エッジを削除することによって制約条件なしの問題に変換することができる。また、ハミルトン路問題において、特定のエッジが経路として選択されない場合には、グラフから当該エッジを削除すればよい。
【0113】
上述の各実施形態に係る情報処理システムを、各種の用途に使うことができる。例えば、上述の各実施形態に係る情報処理システムを使って、DNAの配列アセンブリを行ってもよい。また、上述の各実施形態に係る情報処理システムを使って、配車計画、配送計画、作業の割り当て計画、ソフトウェアのテスト計画、機械のテスト計画の生成を行ってもよい。また、経路検索、金融ポートフォリオの最適化のために上述の各実施形態に係る情報処理システムを使ってもよい。ここで述べた用途は例であり、これらとは異なる用途のために上述の各実施形態に係る情報処理システムを使うことを妨げるものではない。
【0114】
(第7の実施形態)
第7の実施形態では、DNAの配列アセンブリへの適用例について説明する。第7の実施形態に係る情報処理システムの構成は上述の各実施形態と同様であるものとする。
【0115】
DNAの配列アセンブリでは、DNA鎖をDNA断片に切断する。DNA鎖の切断は、例えば制限酵素を使うことによって行うことができる。そして、DNA断片の検出と、塩基配列の特定を行う。最後に、塩基配列が特定されたDNA断片を連結し、元のDNA鎖の配列を構築する。
【0116】
ハミルトン路問題を解く情報処理システムを使って、DNA断片間の連結関係を特定することができる。このとき、各DNA断片をグラフのノードに、DNA断片間の連結関係をグラフのエッジにそれぞれ対応付けることができる。上述の各実施形態で述べた方法に基づき、グラフに係るハミルトン路の解を求めることにより、DNA断片間の連結関係を特定することができる。
【0117】
すなわち、情報処理装置は、DNA鎖の配列を決定するために、ノードをDNA鎖が切断されたDNA断片に、エッジをDNA断片の連結関係にそれぞれ対応付けることによって、ハミルトン路問題のグラフを生成する。そして、生成されたグラフに基づいてエッジグループを生成してもよい。また、当該エッジグループに基づき、イジングモデルを生成してもよい。
【0118】
なお、各DNA断片における塩基配列の重複に基づいて、各DNA断片が連結されるか否かを判定することができる。したがって、情報処理装置がDNA断片の塩基配列を解析した結果、他のDNA断片と連結されないと判定される場合、エッジグループから当該DNA断片に対応するエッジを除外してもよい。これにより、計算に必要なスピン数を減らすことができるため、計算資源の使用量や計算時間を抑制できる。
【0119】
例えば、
図2のグラフ21で、ノードN2とノードN3がエッジE2によって連結されないことが判明した場合を想定する。この場合、
図4のテーブル23(エッジグループ)のグループG2とグループG3からエッジE2が削除される。情報処理システムがDNAの配列アセンブリ以外の用途に適用される場合においても、不要なエッジを除外してエッジグループを生成してもよい。
【0120】
(第8の実施形態)
第8の実施形態では、コンピュータのハードウェア構成について説明する。コンピュータの例としては、サーバ、クライアント端末、組み込み機器のマイコン、タブレット、スマートフォン、フィーチャーフォン、パソコンなどが挙げられる。ただし、コンピュータの機能は、仮想コンピュータ(VM:Virtual Machine)やコンテナなどによって実現されていてもよい。
【0121】
図18は、コンピュータ100の一例を示す図である。
図18のコンピュータ100は、プロセッサ101と、入力装置102と、表示装置103と、通信装置104と、記憶装置105とを備える。プロセッサ101、入力装置102、表示装置103、通信装置104、記憶装置105は、バス106により相互に接続されている。
【0122】
プロセッサ101は、コンピュータ100の制御装置と演算装置を含む電子回路である。プロセッサ101として、例えば、汎用目的プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理回路(PLD)またはこれらの組合せを用いることができる。
【0123】
プロセッサ101は、バス106を介して接続された各装置(例えば、入力装置102、通信装置104、記憶装置105)から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス106を介して接続された各装置(例えば、表示装置103、通信装置104、記憶装置105)に出力する。具体的には、プロセッサ101は、コンピュータ100のOS(オペレーティングシステム)や、プログラムなどを実行し、コンピュータ100に含まれるそれぞれの装置を制御する。
【0124】
プログラムを使うことによって、コンピュータ100に、上述の各実施形態に係る情報処理装置またはイジングマシンの機能を実装することができる。プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ101がプログラムを実行することによって、コンピュータ100は上述の各実施形態に係る情報処理装置またはイジングマシンの機能を提供することができる。
【0125】
入力装置102は、コンピュータ100に情報を入力するための装置である。入力装置102は、例えば、キーボード、マウス、タッチパネルなどであるが、これに限られない。ユーザは、入力装置102を用いることによって、情報処理システムにハミルトン路問題を入力することができる。
【0126】
表示装置103は、画像や映像を表示するための装置である。表示装置103は、例えば、LCD(液晶ディスプレイ)、CRT(ブラウン管)、有機EL(有機エレクトロルミネッセンス)ディスプレイ、プロジェクタ、LEDディスプレイなどであるが、これに限られない。表示装置103には、ハミルトン路問題の入力画面、イジングマシンによる計算の実行結果、イジングマシンの解の検証結果、ハミルトン路問題の解の表示画面などが表示される。
【0127】
通信装置104は、コンピュータ100が外部装置と無線または有線で通信するために使用する装置である。通信装置104は、例えば、NIC(Network Interface Card)、通信モジュール、モデム、ハブ、ルータなどであるが、これに限られない。コンピュータ100は、通信装置104を介して、リモートのデータセンター、情報端末からハミルトン路問題のデータを取得してもよい。また、コンピュータ100(情報処理装置1)がデータセンターやマシン室に設置されたサーバなどである場合、コンピュータ100は通信装置104を介して、リモートの情報通信端末から送信された指令を受け付けたり、画面表示の内容をリモートの情報通信端末に表示させたりしてもよい。
【0128】
記憶装置105は、コンピュータ100のOSや、プログラム、プログラムの実行に必要なデータ、プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置105には、主記憶装置と外部記憶装置が含まれる。主記憶装置は、例えば、RAM、DRAM、SRAMであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどであるが、これに限られない。ハミルトン路問題のデータ、エッジグループ、経路テーブル、イジングマシンの計算結果は、記憶装置105に保存されてもよいし、外部のサーバやストレージ上に保存されてもよい。
【0129】
なお、コンピュータ100は、プロセッサ101、入力装置102、表示装置103、通信装置104、記憶装置105を、それぞれ1つずつまたは複数備えてもよい。また、コンピュータ100にプリンタやスキャナなどの周辺機器が接続されていてもよい。
【0130】
上述の各実施形態に係る情報処理装置およびイジングマシンは、単一のコンピュータ100により構成されてもよいし、複数のコンピュータ100が相互に接続された情報システムによって構成されていてもよい。
【0131】
さらに、プログラムは、コンピュータ100の記憶装置105に予め記憶されていてもよいし、コンピュータ100の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合にも、プログラムをコンピュータ100にインストールして実行することにより、上述の各実施形態に係る情報処理装置またはイジングマシンの機能を実現することができる。
【0132】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0133】
1、1a 情報処理装置
2 入力部
3 変換部
4、11 制御部
5、13 記憶部
6 検証部
7 出力部
8 ソルバー
10、10a、10b、10c、10d イジングマシン
12 演算部
20 ネットワーク
21、25 グラフ
22、23、24、26、27、28 テーブル
100 コンピュータ
101 プロセッサ
102 入力装置
103 表示装置
104 通信装置
105 記憶装置
106 バス