(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-31
(45)【発行日】2024-11-11
(54)【発明の名称】システム、情報処理方法及びプログラム
(51)【国際特許分類】
G06N 10/60 20220101AFI20241101BHJP
【FI】
G06N10/60
(21)【出願番号】P 2020102891
(22)【出願日】2020-06-15
【審査請求日】2023-05-17
(73)【特許権者】
【識別番号】514053169
【氏名又は名称】株式会社メルカリ
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】永山 翔太
【審査官】多賀 実
(56)【参考文献】
【文献】特開2015-191340(JP,A)
【文献】田中 宗 ,「量子アニーリングの基礎と応用事例」,知能と情報,日本知能情報ファジィ学会,2018年02月15日,第30巻, 第1号,pp.42-47
【文献】藤井 啓祐,「量子コンピューターの基礎」,経営の科学 オペレーションズ・リサーチ,公益社団法人日本オペレーションズ・リサーチ学会,2018年06月01日,第63巻, 第6号,pp.311-318
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06Q 10/04-10/047
(57)【特許請求の範囲】
【請求項1】
システムであって、
1つ又は複数のプロセッサを含み、
前記1つ又は複数のプロセッサが、
所定の問題に対応する複数のスピンの間の相互作用をアニーリングマシンに設定し、
前記複数のスピンの低エネルギー状態を算出するように前記アニーリングマシンを制御して得られる複数の算出結果を前記アニーリングマシンから取得し、
前記複数のスピンそれぞれについて、
前記所定の問題に対する前記複数の算出結果から1つの代表値を算出し、
前記複数のスピンそれぞれの前記代表値に基づいて、前記所定の問題の解を推定する、
処理を実行する、システム。
【請求項2】
前記複数の算出結果における前記複数のスピンの値に関するハミング距離に基づいて、前記複数の算出結果をクラスタリングし、
前記代表値を算出することは、
前記クラスタリングにより求められた1又は複数のクラスタ毎に1つの代表値を算出することを含み、
前記推定することは、
前記1又は複数のクラスタ毎の1つの代表値に基づいて、前記所定の解を推定することを含む、
請求項1に記載のシステム。
【請求項3】
前記推定することは、
前記1又は複数のクラスタ毎に前記代表値に基づいて前記複数のスピンのエネルギーを算出し、前記エネルギーが最低となる前記複数のスピンの値を前記所定の問題の解と推定することを含む、
請求項2に記載のシステム。
【請求項4】
前記代表値を算出することは、
前記複数のスピンそれぞれについて、前記複数の算出結果に関して所定の割合以上を占める値を前記代表値として算出することを含む、
請求項1から3のいずれか一項に記載のシステム。
【請求項5】
前記推定することは、
前記複数のスピンのうち1つ以上のスピンについて、前記複数の算出結果に関して所定の割合以上を占める値が現れない場合、前記1つ以上のスピンの値に関するハミング距離に基づいて、前記1つ以上のスピンの値をクラスタリングし、前記クラスタリングにより求められた1又は複数のクラスタ毎に前記1つ以上のスピンの代表値を算出し、前記1つ以上のスピンの前記代表値及び前記1つ以上のスピンを除いた前記複数のスピンの前記代表値に基づいて、前記所定の問題の解を推定することを含む、
請求項4に記載のシステム。
【請求項6】
前記複数のスピンのうち1つ以上のスピンについて、前記複数の算出結果に関して所定の割合以上を占める値が現れない場合、前記1つ以上のスピンの値に関するハミング距離に基づいて、前記1つ以上のスピンの値を再帰的にクラスタリングし、前記クラスタリングにより求められた1又は複数のクラスタ毎に前記1つ以上のスピンの代表値を算出し、前記1つ以上のスピンの前記代表値及び前記1つ以上のスピンを除いた前記複数のスピンの前記代表値に基づいて、前記所定の問題の解を推定することを含む、
請求項5に記載のシステム。
【請求項7】
1つ又は複数のプロセッサを含むシステムが実行する情報処理方法であって、
前期1つ又は複数のプロセッサが、
所定の問題に対応する複数のスピンの間の相互作用
をアニーリングマシンに設定し、
前記複数のスピンの低エネルギー状態を算出するように前記アニーリングマシンを制御して得られる複数の算出結果を前記アニーリングマシンから取得し、
前記複数のスピンそれぞれについて、
前記所定の問題に対する前記複数の算出結果から1つの代表値を算出し、
前記複数のスピンそれぞれの前記代表値に基づいて、前記所定の問題の解を推定する、
処理を実行する、情報処理方法。
【請求項8】
システムに含まれる、1つ又は複数のプロセッサに、
所定の問題に対応する複数のスピンの間の相互作用
をアニーリングマシンに設定し、
前記複数のスピンの低エネルギー状態を算出するように前記アニーリングマシンを制御して得られる複数の算出結果を前記アニーリングマシンから取得し、
前記複数のスピンそれぞれについて、
前記所定の問題に対する前記複数の算出結果から1つの代表値を算出し、
前記複数のスピンそれぞれの前記代表値に基づいて、前記所定の問題の解を推定する、
処理を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
近年、複数のスピンの間に所望の相互作用を設定し、複数のスピンの基底状態を求めることで、所定の問題の解を推定するアニーリングマシンが用いられている。
【0003】
例えば、下記特許文献1には、量子アニーリングにおけるデコヒーレンスの影響を軽減するための誤差補正に関する研究結果が記載されている。
【先行技術文献】
【非特許文献】
【0004】
【文献】Kristen L. Pudenz, Tameem Albash and Daniel A. Lidar, "Error-corrected quantum annealing with hundreds of qubits", Nature Communications volume 5, Article number: 3243, 2014
【発明の概要】
【発明が解決しようとする課題】
【0005】
非特許文献1に記載の技術によって、量子アニーリングにおけるデコヒーレンスの影響を軽減することができるが、量子状態の意図しない変化は、量子状態を測定する際にも生じ得る。そのような測定誤差を低減することに関して、現在のところ研究が比較的少ない。
【0006】
そこで、本発明は、量子状態の測定誤差を低減して問題の解を推定するシステム、情報処理方法及びプログラムを提供する。
【課題を解決するための手段】
【0007】
本開示の一態様に係るシステムは、1つ又は複数のプロセッサを含み、1つ又は複数のプロセッサが、所定の問題に対応する複数のスピンの間の相互作用をアニーリングマシンに設定し、複数のスピンの低エネルギー状態を算出するようにアニーリングマシンを制御して得られる複数の算出結果をアニーリングマシンから取得し、複数のスピンそれぞれについて、複数の算出結果から1つの代表値を算出し、複数のスピンそれぞれの代表値に基づいて、所定の問題の解を推定する、処理を実行する。
【0008】
この態様によれば、複数のスピンそれぞれについて、測定誤差を低減した代表値を算出することができ、所定の問題の解をより精度良く推定することができる。
【発明の効果】
【0009】
本発明によれば、量子状態の測定誤差を低減して問題の解を推定するシステム、情報処理方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0010】
【
図1】本開示の実施形態に係るシステムの概要を示す図である。
【
図2】本実施形態に係るシステムにより取得されるアニーリングマシンのスピンの値の一例を示す図である。
【
図3】本実施形態に係るシステムにより算出されるスピンの代表値の第1例を示す図である。
【
図4】本実施形態に係るシステムにより算出されるスピンの代表値の第2例を示す図である。
【
図5】本実施形態に係るシステムにより算出されるスピンの代表値の第3例を示す図である。
【
図6】本実施形態に係るクライアントコンピュータの構成を示す図である。
【
図7】本実施形態に係るサーバコンピュータの構成を示す図である。
【
図8】本実施形態に係るシステムにより実行される処理のフローチャートである。
【
図9】本実施形態に係るシステムにより実行される処理のフローチャートである。
【発明を実施するための形態】
【0011】
以下、本開示の実施形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。
【0012】
本実施形態では、所定の問題の解に対応する複数のスピンの低エネルギー状態をアニーリングマシン20によって複数回算出し、複数のスピンそれぞれの代表値に基づいて、所定の問題の解を推定するシステム10について説明する。
【0013】
<システムの適用例>
図1は、本開示の実施形態に係るシステム10の概要を示す図である。システム10は、クライアントコンピュータ500、サーバコンピュータ600及びアニーリングマシン20を含む。クライアントコンピュータ500及びサーバコンピュータ600は、後に詳細に説明するように、汎用の古典コンピュータで構成される。アニーリングマシン20は、古典コンピュータ又は量子コンピュータで構成され、例えば、複数の量子ビットを備え、量子ビットの間の相互作用を調整することで所望のハミルトニアンを設定し、量子アニーリングを用いて量子ビットの基底状態を求める量子コンピュータであってよい。もっとも、アニーリングマシン20は、量子アニーリングを再現する古典コンピュータであってもよい。
【0014】
クライアントコンピュータ500は、インターネット等の通信ネットワークを介してサーバコンピュータ600と接続される。サーバコンピュータ600は、LAN(Local Area Network)等の通信ネットワークを介してアニーリングマシン20と接続される。クライアントコンピュータ500のユーザは、クライアントコンピュータ500を操作することで、間接的にアニーリングマシン20に指令を送り、アニーリングマシン20を用いて、所定の問題の解を推定する。なお、システム10の構成は本適用例に示すものに限られず、例えば、アニーリングマシン20は、サーバコンピュータ600を介さずに、LAN等の通信ネットワークを介してクライアントコンピュータ500と接続されてもよい。
【0015】
図2は、本実施形態に係るシステム10により取得されるアニーリングマシン20のスピンの値の一例を示す図である。システム10は、所定の問題に対応する複数のスピンの間の相互作用をアニーリングマシン20に設定し、複数のスピンの低エネルギー状態を算出するようにアニーリングマシン20を制御して得られる複数の算出結果をアニーリングマシン20から取得する。本例では、説明を簡明にするため、6つのスピンについて低エネルギー状態を6回算出した結果を示しているが、スピンの数及び低エネルギー状態の算出回数は任意である。
【0016】
本例では、第1回の算出において、第1スピンの値が1であり、第2~6スピンの値が0である。また、第2回の算出において、第1~6スピンの値が0である。さらに、第4回の算出において、第1~4スピンの値が0であり、第5スピンの値が1であり、第6スピンの値が0である。ここで、第1回の算出におけるスピン列と、第2回の算出におけるスピン列とのハミング距離は1であり、第1回の算出におけるスピン列と、第4回の算出におけるスピン列とのハミング距離は1である。
【0017】
また、本例では、第3回の算出において、第1~6スピンの値が1であり、第5回の算出において、第1~3スピンの値が1であり、第4スピンの値が0であり、第5~6スピンの値が1である。さらに、第6回の算出において、第1スピンの値が0であり、第2~6スピンの値が1である。ここで、第3回の算出におけるスピン列と、第5回の算出におけるスピン列とのハミング距離は1であり、第3回の算出におけるスピン列と、第6回の算出におけるスピン列とのハミング距離は1である。
【0018】
また、第1回、第2回及び第4回のいずれかの算出におけるスピン列と、第3回、第5回及び第6回のいずれかの算出におけるスピン列とのハミング距離は、4以上である。
【0019】
システム10は、複数の算出結果における複数のスピンの値に関するハミング距離に基づいて、複数の算出結果をクラスタリングする。本例の場合、第1回、第2回及び第4回の算出結果が第1クラスタC1に分類され、第3回、第5回及び第6回の算出結果が第2クラスタC2に分類される。
【0020】
図3は、本実施形態に係るシステム10により算出されるスピンの代表値の第1例を示す図である。同図では、
図2において定められた第1クラスタC1及び第2クラスタC2について、複数のスピンの代表値を算出する例を示している。
【0021】
システム10は、複数のスピンそれぞれについて、クラスタリングにより求められた1又は複数のクラスタ毎に1つの代表値を算出する。例えば、第1クラスタC1に含まれる第1回、第2回及び第4回の算出結果について、各スピンの代表値を多数決によって算出する。すなわち、システム10は、各スピンについて、観測された回数が最も多い値を代表値として算出する。
【0022】
代表値の算出方法は上記の方法に限定されず、システム10は、複数のスピンそれぞれについて、複数の算出結果に関して所定の割合以上を占める値を代表値として算出してもよい。ここで、所定の割合は、例えば60%である。言い換えると、システム10は、各スピンについて複数の算出結果に関する平均値を算出し、平均値が上側閾値(例えば0.6)以上であれば代表値を1とし、平均値が下側閾値(例えば0.4)以下であれば代表値を0としてもよい。
【0023】
システム10による代表値の算出によって、第1クラスタC1に関するスピン列の代表値は、000000になり、第2クラスタC2に関するスピン列の代表値は、111111になる。このように、算出されるスピン列の代表値は、必ずしも元のクラスタに含まれるスピン列でなくてもよい。システム10は、1又は複数のクラスタ毎に、代表値に基づいて複数のスピンのエネルギーを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。本例の場合は、システム10は、第1~6スピンの値が000000である場合のエネルギーと、第1~6スピンの値が111111である場合のエネルギーとを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。なお、複数のスピンのエネルギーは、複数のスピンのハミルトニアンに代表値を代入することで算出される。
【0024】
このように、本実施形態に係るシステム10は、複数のスピンそれぞれについて、代表値の算出を行うことで、測定誤差を低減したスピンの値を得ることができ、所定の問題の解をより精度良く推定することができる。また、複数の算出結果に基底状態のみならず励起状態が含まれる場合であっても、システム10は、複数の算出結果をクラスタリングすることで異なるエネルギー準位に対応する算出結果を分別し、測定誤差を低減しつつ、より基底状態に近いスピンの値を得ることができる。
【0025】
図4は、本実施形態に係るシステム10により算出されるスピンの代表値の第2例を示す図である。本例では、第1回の算出におけるスピン列と、第2回の算出におけるスピン列とのハミング距離は1であり、第1回の算出におけるスピン列と、第3回の算出におけるスピン列とのハミング距離は1であり、第2回の算出におけるスピン列と、第4回の算出におけるスピン列とのハミング距離は1である。そのため、ハミング距離に基づいて複数の算出結果をクラスタリングする場合、第1~4回の算出結果は、1つのクラスタに分類される。
【0026】
図2及び3に示す例では、各クラスタに含まれる第1~6スピンについて、多数決による代表値の算出が可能であったが、本例では、第1スピンについて、4回の算出結果に関する多数決によって代表値を算出することができない。すなわち、第1スピンの値は、0と1がそれぞれ50%の割合で現れており、いずれの値を採用すべきか定かでない。このように、複数のスピンのうち1つのスピンについて、複数の算出結果に関して所定の割合以上を占める値が現れない場合、システム10は、1つのスピンの2通りの値及び当該1つのスピンを除いた複数のスピンの代表値に基づいて、所定の問題の解を推定する。
【0027】
システム10は、第1スピンの値を1とし、第2~6スピンの値をそれぞれ多数決による代表値とした第1代表値(101110)と、第1スピンの値を0とし、第2~6スピンの値をそれぞれ多数決による代表値とした第2代表値(001110)とについて、それぞれエネルギーを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。
【0028】
このように、本実施形態に係るシステム10は、複数のスピンのうちいずれか1つについて多数決による代表値の算出ができない場合であっても、より基底状態に近いスピンの値を得ることができる。
【0029】
図5は、本実施形態に係るシステム10により算出されるスピンの代表値の第3例を示す図である。本例では、第1回の算出におけるスピン列と、第3回の算出におけるスピン列とのハミング距離は2であり、第1回の算出におけるスピン列と、第4回の算出におけるスピン列とのハミング距離は2であり、第2回の算出におけるスピン列と、第4回の算出におけるスピン列とのハミング距離は2である。そのため、ハミング距離に基づいて複数の算出結果をクラスタリングする場合、第1~4回の算出結果は、1つのクラスタに分類される。
【0030】
図2及び3に示す例では、各クラスタに含まれる第1~6スピンについて、多数決による代表値の算出が可能であったが、本例では、第1スピン及び第2スピンについて、4回の算出結果に関する多数決によって代表値を算出することができない。すなわち、第1スピン及び第2スピンの値は、0と1がそれぞれ50%の割合で現れており、いずれの値を採用すべきか定かでない。このように、複数のスピンのうち1つ以上のスピンについて、複数の算出結果に関して所定の割合以上を占める値が現れない場合、システム10は、当該1つ以上のスピンの値に関するハミング距離に基づいて、1つ以上のスピンの値をクラスタリングし、クラスタリングにより求められた1又は複数のクラスタ毎に1つ以上のスピンの代表値を算出する。そして、1つ以上のスピンの代表値及び当該1つ以上のスピンを除いた複数のスピンの代表値に基づいて、所定の問題の解を推定する。このように、多数決による代表値の算出ができない1つ以上のスピンについては、再帰的にクラスタリングを行い、クラスタの代表値を算出する。
【0031】
システム10は、多数決による代表値の算出ができない第1スピン及び第2スピンについてクラスタリングを行う。本例の場合、「10」というパターンが50%の割合で現れ、「01」というパターンが50%のパターンで現れているため、システム10は、「10」及び「01」という2種類のパターンを、第1スピン及び第2スピンの値のクラスタの代表値として算出する。
【0032】
システム10は、第1スピン及び第2スピンのクラスタの代表値を「10」とし、第3~6スピンの値をそれぞれ多数決による代表値とした第1代表値(101110)と、第1スピン及び第2スピンのクラスタの代表値を「01」とし、第3~6スピンの値をそれぞれ多数決による代表値とした第2代表値(011110)とについて、それぞれエネルギーを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。
【0033】
このように、本実施形態に係るシステム10は、複数のスピンのうち1つ以上のスピンについて多数決による代表値の算出ができない場合であっても、より基底状態に近いスピンの値を得ることができる。
【0034】
<構成の一例>
図6は、ある実施形態に係るクライアントコンピュータ500を示すブロック図である。クライアントコンピュータ500は典型的には、1つ又は複数の処理装置(CPU)502、1つ又は複数のネットワーク又は他の通信インタフェース508、メモリ504、及びこれらの構成要素を相互接続するための1つ又は複数の通信バス514を含む。
【0035】
クライアントコンピュータ500はまた、ディスプレイ装置510及びキーボード及び/又はマウス(又は他の何らかのポインティングデバイス)512を備えるユーザインタフェース506も含み得る。
【0036】
メモリ504は、例えば、DRAM、SRAM、DDR RAM又は他のランダムアクセス固体記憶装置などの高速ランダムアクセスメモリであり、また、1つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリデバイス、又は他の不揮発性固体記憶装置などの不揮発性メモリでもよい。
【0037】
また、メモリ504の他の例として、CPU502から遠隔に設置される1つ又は複数の記憶装置でもよい。ある実施形態において、メモリ504は次のプログラム、モジュール及びデータ構造、又はそれらのサブセットを格納する。
【0038】
オペレーティングシステム516は、例えば、様々な基本的なシステムサービスを処理するとともにハードウェアを用いてタスクを実行するためのプロシージャを含む。
【0039】
ネットワーク通信モジュール518は、例えば、クライアントコンピュータ500を他のコンピュータに、1つ又は複数の通信ネットワークインタフェース508及び、インターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの1つ又は複数の通信ネットワークを介して接続するために使用される。
【0040】
アニーリングマシン制御モジュール520は、例えば、アニーリングマシン20の複数のスピン及び当該スピンのハミルトニアンを設定するための情報の入力をキーボード及び/又はマウス512により受け付けて、サーバコンピュータ600に送信する。アニーリングマシン制御モジュール520は、複数のスピンの低エネルギー状態を算出するようにアニーリングマシン20を制御して得られる複数の算出結果を、サーバコンピュータ600を介してアニーリングマシン20から取得したり、サーバコンピュータ600を介さずにアニーリングマシン20から直接取得したりする。
【0041】
算出モジュール522は、複数のスピンそれぞれについて、アニーリングマシン20による複数の算出結果から1つの代表値を算出する。算出モジュール522は、例えば、複数の算出結果における複数のスピンの値に関するハミング距離に基づいて、複数の算出結果をクラスタリングし、複数のスピンそれぞれについて、クラスタリングにより求められた1又は複数のクラスタ毎に1つの代表値を算出する。
【0042】
推定モジュール524は、複数のスピンそれぞれの代表値に基づいて、所定の問題の解を推定する。推定モジュール524は、例えば、算出モジュール522により求めた1又は複数のクラスタ毎に代表値に基づいて複数のスピンのエネルギーを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。
【0043】
クライアントアプリケーション530は、例えば、ウェブブラウザなどを含む。
【0044】
1つ又は複数の処理装置(CPU)502は、メモリ504から、必要に応じて各モジュールを読み出して実行する。例えば、1つ又は複数の処理装置(CPU)502は、メモリ504に格納されているネットワーク通信モジュール518を実行することで、通信部を構成してもよい。また、1つ又は複数の処理装置(CPU)502は、メモリ504に格納されているアニーリングマシン制御モジュール520を実行することで、アニーリングマシン制御部を構成してもよいし、算出モジュール522を実行することで、算出部を構成してもよいし、推定モジュール524を実行することで、推定部を構成してもよい。ここで、アニーリングマシン制御部、算出部及び推定部は、CPU502の内部に構成してよい。
【0045】
他の実施形態において、アニーリングマシン制御モジュール520、算出モジュール522及び推定モジュール524は、クライアントコンピュータ500のメモリ504に格納されるスタンドアロンアプリケーションであってもよい。スタンドアロンアプリケーションとしては、限定はされないが、アニーリングマシン制御アプリケーション、算出アプリケーション及び推定アプリケーションが挙げられる。さらに他の実施形態において、アニーリングマシン制御モジュール520、算出モジュール522及び推定モジュール524は別のアプリケーションへのアドオン又はプラグインであってもよい。例えば、アニーリングマシン制御モジュール520は、ウェブブラウザアプリケーション又は電子メールアプリケーションへのプラグインであってもよい。
【0046】
ある実施形態において、受信されたデータ項目はメモリ504に局所的にキャッシュされ得る。同様に、アニーリングマシン20により求められたスピンの低エネルギー状態に関する情報は、メモリ504に局所的にキャッシュされ得る。
【0047】
上記に示した要素の各々は、先述の記憶装置の1つ又は複数に格納され得る。上記に示したモジュールの各々は、上述される機能を実行するための命令のセットに対応する。上記に示したモジュール又はプログラム(すなわち、命令のセット)は別個のソフトウェアプログラム、プロシージャ又はモジュールとして実装される必要はないとともに、従ってこれらのモジュールの様々なサブセットは様々な実施形態で組み合わされるか、或いは再構成されてもよい。ある実施形態において、メモリ504は上記に示されるモジュール及びデータ構造のサブセットを格納し得る。さらには、メモリ504は上述されない追加的なモジュール及びデータ構造を格納し得る。
【0048】
図7は、ある実施形態に係るサーバコンピュータ600を示すブロック図である。サーバコンピュータ600は典型的には、1つ又は複数の処理装置(CPU)602、1つ又は複数のネットワーク又は他の通信インタフェース608、メモリ604、及びこれらの構成要素を相互接続するための1つ又は複数の通信バス610を含む。
【0049】
サーバシステム600は場合によりユーザインタフェース606を含んでもよく、これとしては、ディスプレイ装置(図示せず)、及びキーボード及び/又はマウス(図示せず)を挙げることができる。
【0050】
メモリ604は、例えば、DRAM、SRAM、DDR RAM又は他のランダムアクセス固体記憶装置などの高速ランダムアクセスメモリであり、また、1つ又は複数の磁気ディスク記憶装置、光ディスク記憶装置、フラッシュメモリデバイス、又は他の不揮発性固体記憶装置などの不揮発性メモリでもよい。
【0051】
また、メモリ604の他の例は、CPU602から遠隔に設置される1つ又は複数の記憶装置を挙げることができる。ある実施形態において、メモリ604は次のプログラム、モジュール及びデータ構造、又はそれらのサブセットを格納する。
【0052】
オペレーティングシステム612は、例えば、様々な基本的なシステムサービスを処理するとともにハードウェアを用いてタスクを実行するためのプロシージャを含む。
【0053】
ネットワーク通信モジュール614は、例えば、サーバシステム600を他のコンピュータに、1つ又は複数の通信ネットワークインタフェース606及びインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの1つ又は複数の通信ネットワークを介して接続するために使用される。
【0054】
アニーリングマシン制御モジュール616は、例えば、アニーリングマシン20の複数のスピン及び当該スピンのハミルトニアンを設定するための情報をクライアントコンピュータ500から受信し、アニーリングマシン20を制御する。アニーリングマシン制御モジュール616は、複数のスピンの低エネルギー状態を算出するようにアニーリングマシン20を制御して得られる複数の算出結果を、アニーリングマシン20から取得する。
【0055】
算出モジュール618は、複数のスピンそれぞれについて、アニーリングマシン20による複数の算出結果から1つの代表値を算出する。算出モジュール618は、例えば、複数の算出結果における複数のスピンの値に関するハミング距離に基づいて、複数の算出結果をクラスタリングし、複数のスピンそれぞれについて、クラスタリングにより求められた1又は複数のクラスタ毎に1つの代表値を算出する。
【0056】
推定モジュール620は、複数のスピンそれぞれの代表値に基づいて、所定の問題の解を推定する。推定モジュール620は、例えば、算出モジュール618により求めた1又は複数のクラスタ毎に代表値に基づいて複数のスピンのエネルギーを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。
【0057】
上記に示した要素の各々は先述される記憶装置の1つ又は複数に格納され得る。上記に示したモジュールの各々は、上述される機能を実行するための命令のセットに対応する。上記に示したモジュール又はプログラム(すなわち、命令のセット)は別個のソフトウェアプログラム、プロシージャ又はモジュールとして実装される必要はないとともに、従ってこれらのモジュールの様々なサブセットが様々な実施形態で組み合わされるか、或いは再構成され得る。ある実施形態において、メモリ604は上記に示されるモジュール及びデータ構造のサブセットを格納し得る。さらには、メモリ604は上述されない追加的なモジュール及びデータ構造を格納し得る。
【0058】
図7は「サーバコンピュータ」を示すが、
図7は、本明細書に記載される実施形態の構造的な概略としてよりも、サーバのセットに存在し得る様々な特徴についての説明が意図されている。実際には、及び当業者により認識されるとおり、別個に示される項目が組み合わされ得るであろうとともに、ある項目が別個にされ得るであろう。例えば、
図7において別個に示される項目は単一サーバ上に実装され得るであろうとともに、単一の項目が1台又は複数のサーバにより実装され得るであろう。
【0059】
<動作説明>
次に、本実施形態に係るシステム10の動作について説明する。
図8及び9は、本実施形態に係るシステム10の処理の一例を示すフローチャートである。
図8に示す例では、ステップS15で、システム10は、アニーリングマシン20によって求められた低エネルギー状態に基づいて、所定の問題の解を推定する。
【0060】
(ステップS10)
システム10は、はじめに、所定の問題に対応する複数のスピンの間の相互作用をアニーリングマシン20に設定する。
【0061】
(ステップS11)
システム10は、複数のスピンの低エネルギー状態を算出するようにアニーリングマシン20を制御して得られる複数の算出結果をアニーリングマシン20から取得する。
【0062】
(ステップS12)
システム10は、複数の算出結果における複数のスピンの値に関するハミング距離に基づいて、複数の算出結果をクラスタリングする。
【0063】
(ステップS13)
その後、システム10は、複数のスピンのうち1つ以上のスピンについて、複数の算出結果に関して所定の割合以上を占める値が現れない場合、
図9に示す処理を実行する。一方、複数のスピン全てについて、複数の算出結果に関して所定の割合以上を占める値が現れる場合、システム10は、ステップS14及びS15の処理を実行する。
【0064】
(ステップS14)
その後、システム10は、複数のスピンそれぞれについて、クラスタリングにより求められた1又は複数のクラスタ毎に1つの代表値を算出する。
【0065】
(ステップS15)
最後に、システム10は、1又は複数のクラスタ毎に代表値に基づいて複数のスピンのエネルギーを算出し、エネルギーが最低となる複数のスピンの値を所定の問題の解と推定する。
【0066】
これにより、本実施形態に係るシステム10は、複数のスピンそれぞれについて、代表値を算出することで測定誤差を低減することができ、所定の問題の解をより精度良く推定することができる。
【0067】
(ステップS20)
複数の算出結果に関して所定の割合以上を占める値が現れない場合、ステップS12において2以上のクラスタに分解されるべき一群のスピンが1つのクラスタに分類されている状態と考えられる。そこで、システム10は、複数の算出結果に関して所定の割合以上を占める値が現れない1つ以上のスピンについて、再帰的にクラスタリングを実行する。
【0068】
(ステップS21)
また、システム10は、複数の算出結果に関して所定の割合以上を占める値が現れない1つ以上のスピンについて算出された1又は複数のクラスタ毎に代表値を算出する。
【0069】
(ステップS22)
その後、システム10は、1つ以上のスピンの代表値及び当該1つ以上のスピンを除いた複数のスピンの代表値に基づいて、所定の問題の解を推定する。
【0070】
これにより、本実施形態に係るシステム10は、1つ以上のスピンについて、複数の算出結果に関して所定の割合以上を占める値が現れない場合であっても、複数のスピンそれぞれについて測定誤差を低減するように代表値を算出することができ、所定の問題の解をより精度良く推定することができる。
【0071】
なお、開示技術は、上述した各実施形態に限定されるものではなく、開示技術の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記各実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述した各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更し、または並列に実行することができる。
【0072】
本開示の実施形態のプログラムは、コンピュータに読み取り可能な記憶媒体に記憶された状態で提供されてもよい。 記憶媒体は、「一時的でない有形の媒体」に、プログラムを記憶可能である。プログラムは、限定でなく例として、ソフトウェアプログラムやコンピュータプログラムを含む。
【符号の説明】
【0073】
10…システム、20…アニーリングマシン、21a…第1スピン、21b…第2スピン、21c…第3スピン、22a…第1補助スピン、22b…第2補助スピン、22c…第3補助スピン、500…クライアントコンピュータ、502…CPU、504…メモリ、506…ユーザインタフェース、508…ネットワーク通信インタフェース、510…ディスプレイ、512…キーボード/マウス、514…通信バス、516…オペレーティングシステム、518…ネットワーク通信モジュール、520…アニーリングマシン制御モジュール、522…算出モジュール、524…推定モジュール、530…クライアントアプリケーション、600…サーバコンピュータ、602…CPU、604…メモリ、606…ユーザインタフェース、608…ネットワーク通信インタフェース、610…通信バス、612…オペレーティングシステム、614…ネットワーク通信モジュール、616…アニーリングマシン制御モジュール、618…算出モジュール、620…推定モジュール