(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】情報処理プログラム、情報処理方法および情報処理装置
(51)【国際特許分類】
G06N 99/00 20190101AFI20241001BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2021027815
(22)【出願日】2021-02-24
【審査請求日】2023-11-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山口 純平
(72)【発明者】
【氏名】古川 和快
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2020-149523(JP,A)
【文献】特開2020-71877(JP,A)
【文献】特開2019-79225(JP,A)
【文献】特表2020-521235(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
シングルスピンフリップを行うアニーリング計算機を用いて最短ベクトル問題の求解を実行する情報処理装置に、
多次元の整数ベクトルである基底ベクトルが与えられた最短ベクトル問題を所定個の各範囲に分割し、
前記各範囲それぞれについて、前記基底ベクトルに含まれる各変数のうち特定変数の線形和を遷移させる特定項を生成し、前記シングルスピンフリップのハミルトニアンに前特定項を追加した疑似マルチスピンフリップのハミルトニアンを生成する、
処理を実行させることを特徴とする情報処理プログラム。
【請求項2】
前記生成する処理は、
前記各範囲に対応する各ハミルトニアンに各特定項を追加する際に、前記各範囲の最後の基底ベクトルの係数を1以上とする制約を順守して前記特定項を追加して、前記各範囲に対応する各疑似マルチスピンフリップのハミルトニアンを生成する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記各範囲に対応する各疑似マルチスピンフリップのハミルトニアンを、前記シングルスピンフリップを行うアニーリング計算機に出力し、
前記アニーリング計算機から、前記各範囲に対応する最小解を取得し、
取得した各最小解のうち最小の値を、前記最短ベクトル問題の求解結果に選択する、
処理を前記情報処理装置に実行させることを特徴とする請求項1または2に記載の情報処理プログラム。
【請求項4】
シングルスピンフリップを行うアニーリング計算機を用いて最短ベクトル問題の求解を実行する情報処理装置が、
多次元の整数ベクトルである基底ベクトルが与えられた最短ベクトル問題を所定個の各範囲に分割し、
前記各範囲それぞれについて、前記基底ベクトルに含まれる各変数のうち特定変数の線形和を遷移させる特定項を生成し、前記シングルスピンフリップのハミルトニアンに前特定項を追加した疑似マルチスピンフリップのハミルトニアンを生成する、
処理を実行することを特徴とする情報処理方法。
【請求項5】
シングルスピンフリップを行うアニーリング計算機を用いて最短ベクトル問題の求解を実行する情報処理装置において、
多次元の整数ベクトルである基底ベクトルが与えられた最短ベクトル問題を所定個の各範囲に分割する分割部と、
前記各範囲それぞれについて、前記基底ベクトルに含まれる各変数のうち特定変数の線形和を遷移させる特定項を生成し、前記シングルスピンフリップのハミルトニアンに前特定項を追加した疑似マルチスピンフリップのハミルトニアンを生成する生成部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【0002】
バイナリの多変数2次多項式で表されるハミルトニアンの最小値の計算手法として、シングルスピンフリップとマルチスピンフリップとが知られている。シングルスピンフリップは、ある変数xiを「0から1」または「1から0」に反転させて最適解を探索するアニーリング計算を実行する手法であり、マルチスピンフリップは、ある複数の変数(xi1,・・・,xik)を同時に反転させてアニーリング計算を実行する手法である。
【0003】
近年では、格子暗号の安全性の根拠となる問題の1つである最短ベクトル問題(SVP:Shortest Vector Problem)について、アニーリング計算を行うアニーリング計算機でどの規模の問題まで解けるのかを評価することが行われている。例えば、SVPをアニーリング計算機で解く技術として、SVPをn個の範囲に分割してn個のハミルトニアンを生成し、それぞれの最小値をアニーリング計算機で求解を行う。そして、n個の解のうち最も小さい解をSVPの解とする技術が知られている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2009-223848号公報
【文献】特表2018-529142号公報
【文献】米国特許出願公開第2009/0299947号明細書
【文献】米国特許出願公開第2018/0218279号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、マルチスピンフリップを行うアニーリング計算機は、大規模化や高速化のチューニングが実現されておらず、シングルスピンフリップを行うアニーリング計算機を使用することが一般的である。一方で、シングルスピンフリップを行うアニーリング計算機では、遷移先の候補が基底ベクトル1本の整数倍の加算だけであり、候補が少ないことから、局所解から抜け出せず、最小解の計算に膨大な時間を要したり、最小解を計算できないことがある。
【0006】
一つの側面では、シングルスピンフリップを行うアニーリング計算機を用いた最短ベクトル問題を効率的に求解することができる情報処理プログラム、情報処理方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
第1の案では、情報処理プログラムは、シングルスピンフリップを行うアニーリング計算機を用いて最短ベクトル問題の求解を実行する情報処理装置に、多次元の整数ベクトルである基底ベクトルが与えられた最短ベクトル問題を所定個の各範囲に分割し、前記各範囲それぞれについて、前記基底ベクトルに含まれる各変数のうち特定変数の線形和を遷移させる特定項を生成し、前記シングルスピンフリップのハミルトニアンに前特定項を追加した疑似マルチスピンフリップのハミルトニアンを生成する、処理を実行させることを特徴とする。
【発明の効果】
【0008】
一実施形態によれば、シングルスピンフリップを行うアニーリング計算機を用いた最短ベクトル問題を効率的に求解することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施例1にかかる情報処理装置を説明する図である。
【
図2】
図2は、シングルスピンフリップのハミルトニアンを説明する図である。
【
図3】
図3は、シングルスピンフリップのハミルトニアンの問題点を説明する図である。
【
図4】
図4は、マルチスピンフリップを説明する図である。
【
図5】
図5は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。
【
図6】
図6は、係数行列の生成を説明する図である。
【
図7】
図7は、疑似マルチスピンフリップ項の生成を説明する図である。
【
図8】
図8は、疑似マルチスピンフリップ項の制約を説明する図である。
【
図9】
図9は、疑似マルチスピンフリップを実現するMを説明する図である。
【
図10】
図10は、疑似マルチスピンフリップを実現するMを説明する図である。
【
図11】
図11は、疑似マルチスピンフリップを実現するMの選択例を説明する図である。
【
図12】
図12は、ハミルトニアンの生成を説明する図である。
【
図13】
図13は、最短ベクトル問題の求解処理の流れを示すシーケンス図である。
【
図15】
図15は、具体的な問題の求解例を説明する図である。
【
図16】
図16は、具体的な問題の求解例を説明する図である。
【
図17】
図17は、疑似マルチスピンフリップ項の別例を説明する図である。
【発明を実施するための形態】
【0010】
以下に、本願の開示する情報処理プログラム、情報処理方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例1】
【0011】
[情報処理装置の説明]
図1は、実施例1にかかる情報処理装置10を説明する図である。
図1に示すように、情報処理装置10は、格子暗号の安全性の根拠となる問題の1つである最短ベクトル問題を求解するコンピュータ装置の一例であり、シングルスピンフリップを行うアニーリング計算機50と接続される。
【0012】
情報処理装置10は、SVPをn個の範囲(範囲1から範囲n)に分割してn個のハミルトニアンを生成し、各ハミルトニアンをアニーリング計算機50に入力し、アニーリング計算機50からn個の解を取得し、最も小さい解をSVPの解とする。ここで、情報処理装置10は、n次元の整数ベクトル「b1,・・・,bn」が与えられたとき、SVPの関数を式(1)にように定義するが、分割する理由は(x1,・・・,xn)≠(0,・・・,0)を達成するためである。
【0013】
【0014】
ここで、アニーリング計算で用いられるシングルスピンフリップとマルチスピンフリップとについて説明する。
図2は、シングルスピンフリップのハミルトニアンを説明する図である。
図2では、整数変数をバイナリ変数に変換した基本的なハミルトニアンの生成手法を用いて説明する。
図2に示すように、ベクトルb
1とベクトルb
2で
図1に示した範囲2のハミルトニアンを生成する。つまり、式(a)に示すバイナリに変換した「x
1」と「x
2」に対して、式(b)に示すハミルトニアンを生成することができる。
【0015】
次に、このハミルトニアンを用いたシングルスピンフリップのアニーリング計算について説明する。
図3は、シングルスピンフリップのアニーリング計算の問題点を説明する図である。
図3に示すように、
図2と同様、ベクトルb
1とベクトルb
2を用いてハミルトニアンHを生成したとする。なお、Hにおける変数(x
1,1,x
1,2,x
1,3,x
1,4,x
2,1,x
2,2)のそれぞれは0と仮定した場合、v=b
2の点を表す。
【0016】
このような状態で、各変数を1ビットフリップさせた先が
図3の表(a)内に示されており、その遷移先が
図3の(b)に示される。具体的には、「x
1,1」を1ビットフリップさせたときの遷移先の候補が「v+b
1」、「x
1,2」を1ビットフリップさせたときの遷移先の候補が「v+2b
1」、「x
1,3」を1ビットフリップさせたときの遷移先の候補が「v-b
1」となる。同様に、「x
1,4」を1ビットフリップさせたときの遷移先の候補が「v-2b
1」、「x
2,1」を1ビットフリップさせたときの遷移先の候補が「v+b
2」、「x
2,3」を1ビットフリップさせたときの遷移先の候補が「v+2b
2」となる。しかし、
図3の(b)に示す通り、これらの遷移先は、すべて「v=b
2」より長い(原点から距離が長い)。すなわち、シングルスピンフリップでは、ハミルトニアンが小さくなる方向に遷移できず、局所解に留まり、最小解が計算できない恐れがある。
【0017】
次に、マルチスピンフリップについて説明する。
図4は、マルチスピンフリップを説明する図である。ここでは、同じハミルトニアンHを用いた2スピンフリップを例にして説明する。各変数を2スピンフリップさせた先が
図4の表(c)内に示されており、その遷移先が
図4の(d)に示される。シングルスピンフリップで遷移できる点に加えて、遷移先が増えており、特に、シングルスピンフリップでは遷移できない「b
1」と「b
2」の線形和も遷移できる。これによりハミルトニアンが小さくなる方向、特に最短ベクトルである「v-b
1+b
2」に遷移が可能であり、シングルスピンフリップより優位である。しかし、マルチスピンフリップを行うアニーリング計算機は、大規模化や高速化のチューニングが実現されておらず、用途が限定される。
【0018】
そこで、実施例1では、シングルスピンフリップのアニーリング計算機を用いた最短ベクトル問題の求解手法を実現する。具体的には、情報処理装置10は、多次元の整数ベクトルである基底ベクトルが与えられた最短ベクトル問題を所定個の各範囲に分割する。そして、情報処理装置10は、各範囲それぞれについて、基底ベクトルに含まれる各変数のうち特定変数の線形和を遷移させる特定項を生成し、シングルスピンフリップのハミルトニアンに前特定項を追加した疑似マルチスピンフリップのハミルトニアンを生成する。すなわち、情報処理装置10は、基底ベクトルの複数本数の線形和を遷移させる特定項を生成する。
【0019】
その後、情報処理装置10は、各疑似マルチスピンフリップのハミルトニアンを、シングルスピンフリップを行うアニーリング計算機50に出力し、アニーリング計算機50から各範囲に対応する最小解を取得し、取得した各最小解のうち最小の値を、最短ベクトル問題の求解結果に選択する。なお、情報処理装置10は、各範囲に対応する各ハミルトニアンに各特定項を追加する際に、各範囲の最後の基底ベクトルの係数を1以上とする制約を順守した特定項を追加することで、局所解に陥って最小解が計算できない可能性を低減できる。
【0020】
[情報処理装置10の機能構成]
図5は、実施例1にかかる情報処理装置10の機能構成を示す機能ブロック図である。
図5に示すように、情報処理装置10は、通信部11、記憶部12、制御部13を有する。
【0021】
通信部11は、他の装置との間の通信を制御する処理部であり、例えば通信インタフェースなどにより実現される。例えば、通信部11は、アニーリング計算機50との間で、各種データの送受信を実行する。
【0022】
記憶部12は、プログラムや各種データを記憶する処理部であり、例えばメモリやハードディスクなどにより実現される。例えば、記憶部12は、SVPの求解過程で算出される各種計算結果を記憶する。
【0023】
制御部13は、情報処理装置10全体を司る処理部であり、例えばプロセッサなどにより実現される。この制御部13は、係数行列生成部14、付与部15、ハミルトニアン生成部16を有する。なお、係数行列生成部14、付与部15、ハミルトニアン生成部16は、プロセッサが有する電子回路やプロセッサが実行するプロセスなどにより実現される。
【0024】
(係数行列の生成)
係数行列生成部14は、多次元の整数ベクトルである基底ベクトルが与えられた最短ベクトル問題を所定個の各範囲に分割し、各範囲について、ハミルトニアンを生成するための係数行列を生成する処理部である。
図6は、係数行列の生成を説明する図である。
図6に示すように、一例として、係数行列生成部14は、手順1、手順2、手順3、手順4を実行することで、各範囲の各係数行列を生成する。
【0025】
具体的には、n次元格子の基底ベクトルBを「B=(b1,・・・,bn)(n×n行列)」、位置を表す整数i(i≦i≦n)、探索範囲を表す行列A(i×N行列)として説明する。この場合、係数行列生成部14は、手順1として、「ベクトルVに(i×(N-1)i)の零行列をセット」する。続いて、係数行列生成部14は、手順2に示すiおよびjに対する各for文を繰り返すことで、「V[j][(N-1)×(j-1)+k]=A[j][k]」を生成する。さらに、係数行列生成部14は、手順3で、「yに長さiのゼロベクトルをセット」する。その後、係数行列生成部14は、手順4のiに対するfor文を繰り返すことで、「y[j]=A[j][N]」を生成する。
【0026】
(疑似マルチスピンフリップ)
付与部15は、係数行列に疑似マルチスピンフリップの項を追加する処理部である。具体的には、付与部15は、各範囲それぞれについて、基底ベクトルの複数本数の線形和を遷移させる特定項(疑似マルチスピンフリップの項)を生成し、シングルスピンフリップのハミルトニアンに特定項を追加する。このとき、付与部15は、後述する制約を順守した特定項を生成して付与する。
【0027】
図7は、疑似マルチスピンフリップ項の生成を説明する図である。
図7に示すように、一例として、付与部15は、手順1、手順2を実行することで、マルチスピンフリップの項を生成する。ここでは、上記例に加えて、マルチスピンフリップを表す行列を行列M(i×M行列)として説明する。上記例で説明すると、付与部15は、手順1において、「ベクトルVを、i×{(N-1)i+M}行列に拡張」する。続いて、付与部15は、手順2において、jおよびkに対するfor文を繰り返すことで、「V[j][(i-1)N+k]=M[j][k]」を生成する。
【0028】
ここで、疑似マルチスピンフリップ項の制約について説明する。
図8は、範囲jの疑似マルチスピンフリップ項の制約を説明する図である。具体的には、制約として、(1)基底ベクトルb
1,・・・,b
j-1の係数は整数全体から自由に選択可能である一方で、(2)基底ベクトルb
jの係数は1以上の整数とする。すなわち、正の方向には制約はないが、負の方向には「1以上という」制約を設ける。この制約を満たさないと、ハミルトニアンの最小値が計算したいものと異なるようになる。
【0029】
例えば、
図8に示すように、
図1の範囲2のハミルトニアンに「±b
1±b
2」(順不同)の4つを追加することで、式(c)に示すハミルトニアンHを生成したとする。
図4に示す(d)の通り、計算したい計算上の最小値は、最短ベクトルを表す「-b
1+2b
2」である。一方、このハミルトニアンHは「x
1,1=1,y
4=1」かつ残りが全て0のとき最小値0を取るので、アニーリング計算ではこちらが計算される。つまり、最短ベクトルを正しく計算できない。これは、疑似マルチスピンフリップを適当に追加したことで、「b
2の係数が1以上」という制約を違反するからである。
【0030】
したがって、範囲jのハミルトニアンの場合、bjの係数を負の方向に延ばさない範囲で疑似マルチスピンフリップの項を追加するために、制約として、「ハミルトニアンに疑似マルチスピンフリップの項(v1b1+・・・+vjbj)を追加するとき、「vj」は0以上の整数」を設ける。
【0031】
(疑似マルチスピンフリップを表す行列Mの選択)
次に、上述した疑似マルチスピンフリップを表す行列Mの選択方法について説明する。
図9と
図10は、疑似マルチスピンフリップを実現するMを説明する図である。ここでは、疑似2スピンフリップを実現するMを例にして説明する。
図9に示すように、2本の基底ベクトルの線形和「xb
j+yb
k」(x、yは整数)に対応するフリップを加えるには、列ベクトル(0,・・・,0,x,0,・・・,0,y,0,・・・,0)の転置行列をMに追加すればよい。すなわち、1つ追加すると、ハミルトニアン変数が1つ増えることとなる。なお、xは、第j成分、yは、第k成分となる。
【0032】
このときにおける係数xとyの設定手法としては、xとyの絶対値が小さくなるように設定すると、フリップ時に小さく遷移する動きとなり、xとyの絶対値が大きくなるように設定すると、フリップ時に大きく遷移する動きとなり、どちらを用いるかは、アニーリング計算の状況により任意に設定することができる。例えば、点Aでは、(x,y)=(1,1)でフリップさせた場合より、(x,y)=(-2,-2)でフリップさせた場合の方が、遷移先が原点に近くなる。逆に、点Bでは、(x,y)=(-2,-2)でフリップさせた場合より、(x,y)=(1,1)でフリップさせた場合の方が、遷移先が原点に近くなる。
【0033】
さらに、同じ列ベクトルを複数個追加することもできる。すなわち、加えた数だけ、「xbj+ybk」の遷移が可能となる。
【0034】
上述した内容を一般化すると、
図10となる。
図10に示すように、疑似マルチスピンフリップを実現するために、任意の本数の基底ベクトルの線形和「a
1b
1+・・・+a
jb
j」(a
1,・・・,a
jは整数)に、対応する列ベクトル(a
1,・・・,a
j,0,・・・,0)の転置行列をMに追加すればよい。このときの係数の設定は、
図9で説明した通り、アニーリング計算の状況により任意に設定する。
【0035】
ここで、上述した疑似マルチスピンフリップを表す行列Mの具体例を説明する。
図11は、疑似マルチスピンフリップを実現するMの選択例を説明する図である。例えば、付与部15は、範囲iのハミルトニアンに任意の「1≦j<k≦i」で「xb
j+yb
k」の項を1つずつ追加した場合、
図11の(a)に示す行列Mを生成することができる。ただし、x,y=1,-1でk=iのときはx=1,-1、y=1とし、
図11の(a)は、n=3,i=3のときの例である。なお、
図11の(a)で、x,y=-2,-1,1,2(ただし、k=iのときy=1,2)としてもよい。
【0036】
また、追加する変数を1つずつではなく2つ以上とすることもできる。例えば、n=3,i=3のときを例にすると、
図11の(b)のように行列Mを生成することができる。この結果、例えば2回連続で「b
1+b
2」の遷移が可能となる。
【0037】
(ハミルトニアンの生成)
図5に戻り、ハミルトニアン生成部16は、各範囲それぞれについて、シングルスピンフリップのハミルトニアンに、付与部15により生成された特定項(疑似マルチスピンフリップの項)を追加した疑似マルチスピンフリップのハミルトニアンを生成する処理部である。具体的には、ハミルトニアン生成部16は、係数行列からハミルトニアンを生成する。
【0038】
図12は、ハミルトニアンの生成を説明する図である。
図12に示すように、ハミルトニアン生成部16は、手順1から手順5を実行することで、SVPのハミルトニアンに、疑似的にマルチスピンフリップを実行する項を追加したハミルトニアンを生成する。例えば、ハミルトニアン生成部16は、手順1において、ベクトル「B
i=(b
1,・・・,b
i)」を生成し、手順2において、付与部15で生成された「V」と「B
i」とを乗算した「C=B
iV」を生成する。
【0039】
続いて、ハミルトニアン生成部16は、手順3で手順2の「C」と「Cの転置行列」とを乗算した「W」を生成し、手順4でベクトルbを定義し、手順5で変数cを定義する。この結果、ハミルトニアン生成部16は、範囲iのハミルトニアンHとして、
図12の式(d)に示すハミルトニアンHを定義することができる。なお、式(d)におけるxは、長さ「i(N-1)+m」のバイナリ変数ベクトルとする。ただし、mは行列Mの列の数とする。
【0040】
その後、ハミルトニアン生成部16は、各範囲のハミルトニアンHをアニーリング計算機50に送信してSVPの求解を指示する。そして、ハミルトニアン生成部16は、アニーリング計算機50から各範囲の最小解を取得し、そのうち最小の値である最小解を最終的な解として、記憶部12に格納したり、ディスプレイ等に表示したり、管理者端末に送信したりする。
【0041】
[処理の流れ]
図13は、最短ベクトル問題の求解処理の流れを示すシーケンス図である。
図13に示すように、情報処理装置10は、n次元のSVPを所定範囲に分割し(S101)、分割した各範囲についてS102からS104を実行する。
【0042】
すなわち、情報処理装置10は、探索範囲を表す係数行列Aを生成し(S102)、係数行列Aを用いて、疑似マルチスピンフリップを表す行列M(追加対象の項)を生成し(S103)、疑似マルチスピンフリップの項Mを追加したハミルトニアンHを生成する(S104)。
【0043】
その後、情報処理装置10は、各範囲に対応するn個のハミルトニアンを含む求解要求をアニーリング計算機50に送信する(S105とS106)。そして、アニーリング計算機50は、各ハミルトニアンの求解処理を実行し(S107)、n個の最小解である求解結果を情報処理装置10に応答する(S108とS109)。
【0044】
そして、情報処理装置10は、取得したn個の最小解のうち最小の解を、最短ベクトル問題の最小解に選択する(S110)。
【0045】
ここで、
図14から
図16を用いて、上記処理の具体例を説明する。
図14は、具体的な問題設定を説明する図である。
図15と
図16は、具体的な問題の求解例を説明する図である。
図14に示すように、基底ベクトルBは3行3列の行列、i=3、探索範囲を表す行列Aは5行3列の行列とし、疑似マルチスピンフリップを実現するMには上述した
図11の(a)に示すMを用いる。
【0046】
この状態で、
図15に示すように、情報処理装置10は、
図14に示したi=3および探索範囲を表す行列Aを用いて、
図6に示した手順1から手順4により、ベクトルVとyとを生成する。さらに、情報処理装置10は、
図7に示した手順1および手順2により、生成されたベクトルVに、
図14に示した疑似マルチスピンフリップを実現するMを追加したハミルトニアンを生成する。
【0047】
その後、情報処理装置10は、
図12に示した手順1から手順5により、基底ベクトルBやベクトルVを用いて、行列Wとベクトルbと変数cを算出する。そして、情報処理装置10は、これらのW、b、cを用いてハミルトニアンを生成する。
【0048】
[効果]
上述したように、情報処理装置10は、最短ベクトル問題の制約条件には最大値または最小値がないことを利用して、「基底ベクトルb1,・・・bn」内のある線形和だけ遷移させる項」を最短ベクトル問題の制約条件の範囲内で追加したハミルトニアンを生成する。これにより、情報処理装置10は、シングルスピンフリップのアニーリング計算機50で実質、複数個の変数分の遷移を実現することができる。
【0049】
したがって、情報処理装置10は、シングルスピンフリップのアニーリング計算機50を使って、より大きな最短ベクトル問題をより高速に解けるようなハミルトニアンを生成することができ、最短ベクトル問題を効率的に求解することができる。
【0050】
ここで、40次元格子の最短ベクトル問題を用いた実験例を説明する。例えば、SVP Challengeの40次元seed=0の格子を生成しLLL-0.99を実施する。また、「i=31,・・・,40」に対して、一般的なシングルスピンフリップと実施例1による手法とのそれぞれについて、それぞれで10個ずつのハミルトニアンを生成し、シングルスピンフリップ用のアニーリング計算機で求解した。ただし、Mの条件として、「任意の1≦j<k≦iに対して第j成分が1または-1、第k成分が1または-1でそれ以外が0である計4本の列ベクトルを生成(ただしk=iのときは第k成分は1の2本)し、Mの最後の列に付け足す」こととし、結果として、Mは「i×2(i-1)2」行列となる。
【0051】
このような状態において、10個のハミルトニアンの最小解の計算にかかった時間の合計を比較した。一般的なシングルスピンフリップのハミルトニアンを用いた場合は求解に687秒かかるところを、実施例1の手法を用いることで、13.8秒に短縮することができ、約50倍の高速化を実現することができた。
【実施例2】
【0052】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【0053】
[数値等]
上記実施例で用いた数値例、行列、各種変数等は、あくまで一例であり、任意に変更することができる。また、シーケンス図で説明した処理の流れも矛盾のない範囲内で適宜変更することができる。
【0054】
[近似処理の導入]
上記実施例1の変形例として、複数の定数をひとまとめにできるenum型を用いた近似処理(近似enum)を導入することができる。
図17は、疑似マルチスピンフリップ項の別例を説明する図である。
図17に示すように、情報処理装置10の係数行列生成部14は、実施例1と同様の手法で各範囲の係数行列を生成する。
【0055】
次に、実施例1とは異なり、付与部15は、近似処理を実行する。具体的には、付与部15は、手順1において、基底ベクトルBのGSO係数μj,k(1≦k≦j≦n)を計算する。続いて、付与部15は、手順2においてj、i、lのfor文を繰り返し、手順3においてjとkのfor文を繰り返すことで、「y[j]=y[j]-[μj,k×y[k]]」を生成する。
【0056】
その後、付与部15は、行列Vに行列Mを連結する。具体的には、付与部15は、手順1において、「ベクトルVを、i×{(N-1)i+M}行列に拡張」する。続いて、付与部15は、手順2において、jおよびkに対するfor文を繰り返すことで、「V[j][(i-1)N+k]=M[j][k]」を生成する。
【0057】
そして、ハミルトニアン生成部16は、実施例1と同じ手法により、SVPのハミルトニアンに、疑似的にマルチスピンフリップを実行する項を追加したハミルトニアンHとして式(z)を生成する。なお、式(z)におけるxは、長さ「i(N-1)+m」のバイナリ変数とする。
【0058】
このようにすることで、情報処理装置10は、近似処理を導入したハミルトニアンを生成することができ、汎用性の向上、処理の高速化が図れる。
【0059】
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0060】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0061】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0062】
[ハードウェア]
図18は、ハードウェア構成例を説明する図である。
図18に示すように、情報処理装置10は、通信装置10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、
図18に示した各部は、バス等で相互に接続される。
【0063】
通信装置10aは、ネットワークインタフェースカードなどであり、他の装置との通信を行う。HDD10bは、
図5に示した機能を動作させるプログラムやDBを記憶する。
【0064】
プロセッサ10dは、
図5に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、
図5等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置10が有する各処理部と同様の機能を実行する。具体的には、プロセッサ10dは、係数行列生成部14、付与部15、ハミルトニアン生成部16等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、プロセッサ10dは、係数行列生成部14、付与部15、ハミルトニアン生成部16等と同様の処理を実行するプロセスを実行する。
【0065】
このように、情報処理装置10は、プログラムを読み出して実行することで解析方法を実行する情報処理装置として動作する。また、情報処理装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【0066】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【0067】
10 情報処理装置
11 通信部
12 記憶部
13 制御部
14 係数行列生成部
15 付与部
16 ハミルトニアン生成部