(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】乱数生成器、乱数生成方法、及びプログラム
(51)【国際特許分類】
G06F 7/58 20060101AFI20240409BHJP
G06N 10/00 20220101ALI20240409BHJP
G06F 17/18 20060101ALI20240409BHJP
【FI】
G06F7/58 680
G06N10/00
G06F17/18 Z
G06F7/58 620
(21)【出願番号】P 2022577000
(86)(22)【出願日】2021-11-22
(86)【国際出願番号】 JP2021042759
(87)【国際公開番号】W WO2022158104
(87)【国際公開日】2022-07-28
【審査請求日】2023-06-29
(31)【優先権主張番号】P 2021008663
(32)【優先日】2021-01-22
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】中村 暢達
(72)【発明者】
【氏名】橋本 慎司
(72)【発明者】
【氏名】高原 玲央
(72)【発明者】
【氏名】柴田 将
(72)【発明者】
【氏名】森 英憲
【審査官】豊田 真弓
(56)【参考文献】
【文献】国際公開第2020/170410(WO,A1)
【文献】特開2003-323292(JP,A)
【文献】国際公開第2019/245041(WO,A1)
【文献】米国特許出願公開第2010/0033228(US,A1)
【文献】中国特許出願公開第112650472(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/58
G06N 10/00
G06F 17/18
(57)【特許請求の範囲】
【請求項1】
乱数の確率分布を指定する入力を受付ける入力受付手段と、
乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、前記確率分布に基づいて生成するモデル生成手段と、
前記イジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得するアニーリング結果取得手段と、
前記実行結果として得られた値が所定の値である前記二値変数に割り当てられている前記部分区間に含まれる値を乱数として出力する乱数出力手段と
を有する乱数生成器。
【請求項2】
前記イジングモデルは、前記二値変数についての第一の関数と前記二値変数についての第二の関数とを用いて表されるモデルであり、
前記第一の関数は、前記二値変数が割り当てられた前記部分区間における前記確率分布の値が大きいほど値が小さくなる関数の値と当該二値変数の値との積の総和で表される関数であり、
前記第二の関数は、n個の前記二値変数のいずれか一つが前記所定の値である場合に最小値となる関数である
請求項1に記載の乱数生成器。
【請求項3】
前記モデル生成手段は、さらに、前記実行結果として得られた値が前記所定の値である前記二値変数に割り当てられている前記部分区間をさらに分割したn個の新たな部分区間のそれぞれに割り当てられるn個の二値変数を用いた新たなイジングモデルを、前記確率分布に基づいて生成し、
前記アニーリング結果取得手段は、さらに前記新たなイジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得し、
前記乱数出力手段は、前記新たなイジングモデルについての量子アニーリングの前記実行結果として得られた値が前記所定の値である前記二値変数に割り当てられている前記新たな部分区間に含まれる値を乱数として出力する
請求項1又は2に記載の乱数生成器。
【請求項4】
同一の前記イジングモデルについての複数回の量子アニーリングの実行結果を取得することにより、複数の乱数を出力する
請求項1乃至3のいずれか一項に記載の乱数生成器。
【請求項5】
前記モデル生成手段は、s個(sは2以上の整数)の前記イジングモデルを生成し、
前記アニーリング結果取得手段は、s個の前記イジングモデルにおける前記二値変数の集合であるt個(tは4以上の整数)の前記二値変数を同一の量子アニーリングマシンのt個の量子ビットに対応させることにより、s個の前記イジングモデルについての量子アニーリングの実行結果であるt個の前記二値変数の値を取得する
請求項1乃至4のいずれか一項に記載の乱数生成器。
【請求項6】
前記実行結果として得られた値が前記所定の値である前記二値変数に割り当てられている前記部分区間に収まる疑似乱数を生成する疑似乱数生成手段をさらに有し、
前記乱数出力手段は、前記実行結果にしたがって選択された前記部分区間における前記疑似乱数を出力する
請求項1乃至5のいずれか一項に記載の乱数生成器。
【請求項7】
前記部分区間を指定する入力を受付ける
請求項1乃至6のいずれか一項に記載の乱数生成器。
【請求項8】
乱数生成器が、
乱数の確率分布を指定する入力を受付け、
乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、前記確率分布に基づいて生成し、
前記イジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得し、
前記実行結果として得られた値が所定の値である前記二値変数に割り当てられている前記部分区間に含まれる値を乱数として出力する
乱数生成方法。
【請求項9】
乱数の確率分布を指定する入力を受付ける入力受付ステップと、
乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、前記確率分布に基づいて生成するモデル生成ステップと、
前記イジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得するアニーリング結果取得ステップと、
前記実行結果として得られた値が所定の値である前記二値変数に割り当てられている前記部分区間に含まれる値を乱数として出力する乱数出力ステップと
をコンピュータに実行させるプログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は乱数生成器、乱数生成方法、及びプログラムに関する。
【背景技術】
【0002】
セキュアなデータ通信などにおいて、高品質な乱数を得ることは重要である。しかし、通常の計算機において関数呼び出しで得られる乱数は周期性がある。また、物理的なノイズを利用した乱数生成器により生成された乱数は、物理現象を観察及び再現することで、予測が可能である。したがって、これらの乱数では高いセキュリティを担保できない。
【0003】
近年、量子コンピュータの利用が広まりつつあり、インターネットを介して、一般の利用者でも、量子コンピュータにアクセスし、利用可能となっている。量子コンピュータ技術は発展途上であるが、量子アニーリング方式と呼ばれる量子コンピュータ(以下、量子アニーリングマシンと称す)は利用可能となっている。量子アニーリングマシンは、イジングモデルと呼ばれる定式化された問題を求解することに特化した計算機であり、組合せ最適化問題の求解などに使われている(特許文献1参照)。
【0004】
イジングモデルで表現された系における、安定した状態の量子ビット(0,1)の組合せを量子アニーリングマシンにより得ることができる。ただし、量子ゆらぎと呼ばれる特性のため、常に同じ組み合わせが得られるわけではなく、安定した状態近辺の量子ビットの様々な組合せが得られる。量子ビットの様々な組合せの発生確率は、原理的にはボルツマン分布に従う。そのため、量子アニーリングマシンを用いた場合、最適化問題の最適解近辺の解を得ることはできるが、ボルツマン分布以外の利用者が指定する任意の分布に従う解(数値)を得ることはできない。このため、利用者が指定する任意の分布に従う乱数の生成には量子アニーリングマシンを利用することができなかった。
【0005】
一方、利用者が指定する分布に従う乱数を得るための技術に関して、特許文献2に開示された技術がある。この文献に記載された技術では、疑似乱数生成器により生成された数値に所定の処理を行うことにより所定の分布に従う乱数を得ている。疑似乱数には周期性があるため、この技術により得られる乱数は、高品質の乱数とならない。
【先行技術文献】
【特許文献】
【0006】
【文献】特表2008-525873号公報
【文献】特開2019-79523号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述した通り、所望の分布に従う高品質な乱数を生成する技術の提供が求められている。
そこで、本明細書に開示される実施形態が達成しようとする目的の1つは、所望の分布に従う高品質な乱数を生成することができる乱数生成器、乱数生成方法、及びプログラムを提供することである。
【課題を解決するための手段】
【0008】
本開示の第1の態様にかかる乱数生成器は、
乱数の確率分布を指定する入力を受付ける入力受付部と、
乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、前記確率分布に基づいて生成するモデル生成部と、
前記イジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得するアニーリング結果取得部と、
前記実行結果として得られた値が所定の値である前記二値変数に割り当てられている前記部分区間に含まれる値を乱数として出力する乱数出力部と
を有する。
【0009】
本開示の第2の態様にかかる乱数生成方法では、
乱数生成器が、
乱数の確率分布を指定する入力を受付け、
乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、前記確率分布に基づいて生成し、
前記イジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得し、
前記実行結果として得られた値が所定の値である前記二値変数に割り当てられている前記部分区間に含まれる値を乱数として出力する。
【0010】
本開示の第3の態様にかかるプログラムは、
乱数の確率分布を指定する入力を受付ける入力受付ステップと、
乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、前記確率分布に基づいて生成するモデル生成ステップと、
前記イジングモデルについての量子アニーリングの実行結果であるn個の前記二値変数の値を取得するアニーリング結果取得ステップと、
前記実行結果として得られた値が所定の値である前記二値変数に割り当てられている前記部分区間に含まれる値を乱数として出力する乱数出力ステップと
をコンピュータに実行させる。
【発明の効果】
【0011】
上述の態様によれば、所望の分布に従う高品質な乱数を生成することができる乱数生成器、乱数生成方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【0012】
【
図1】実施形態の概要にかかる乱数生成器の構成の一例を示すブロック図である。
【
図2】実施の形態1にかかる乱数生成システムの構成の一例を示すブロック図である。
【
図3】実施の形態1にかかる乱数生成器のハードウェア構成の一例を示すブロック図である。
【
図4】実施の形態1にかかる乱数生成器の動作の一例を示すフローチャートである。
【
図5】実施の形態2にかかる乱数生成システムの構成の一例を示すブロック図である。
【
図6】実施の形態2にかかる乱数生成器の動作の一例を示すフローチャートである。
【
図7】実施の形態3にかかる乱数生成システムの構成の一例を示すブロック図である。
【
図8】実施の形態3にかかる乱数生成器の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
<実施の形態の概要>
実施形態の詳細を説明する前に、まず、実施形態の概要について説明する。
図1は、実施形態の概要にかかる乱数生成器1の構成の一例を示すブロック図である。乱数生成器1は、量子アニーリングの結果を用いて乱数を生成する装置であり、
図1に示すように入力受付部2、モデル生成部3、アニーリング結果取得部4、及び乱数出力部5を有する。
【0014】
入力受付部2は、乱数の確率分布を指定する入力を受付ける。ユーザ等は、所望の確率分布に従う乱数を乱数生成器1に出力させるために、この所望の確率分布を指定する入力を乱数生成器1に与える。
【0015】
モデル生成部3は、乱数の数値範囲を分割したn(nは2以上の整数)個の部分区間のそれぞれに割り当てられるn個の二値変数を用いたイジングモデルを、入力受付部2が受付けた確率分布に基づいて生成する。ここで、乱数の数値範囲とは、生成されうる乱数の最小値と最大値により定まる範囲をいう。すなわち、乱数生成器1は、この数値範囲に属する乱数を生成する。また、上述した二値変数の値は、この数値範囲に属する部分区間を選択するか否かを表す。換言すると、この二値変数は、当該二値変数が割り当てられた部分区間に含まれる値を乱数として採用するか否かを表す。
【0016】
アニーリング結果取得部4は、モデル生成部3が生成したイジングモデルについての量子アニーリングの実行結果であるn個の二値変数の値を取得する。すなわち、アニーリング結果取得部4は、量子アニーリングマシンに、モデル生成部3が生成したイジングモデルについての量子アニーリングを実行させ、その実行結果を量子アニーリングマシンから取得する。
【0017】
乱数出力部5は、実行結果として得られた値が所定の値(例えば、1)である二値変数に割り当てられている部分区間に含まれる値を乱数として出力する。
【0018】
このように、乱数生成器1は、指定された確率分布に基づいてイジングモデルを生成し、このイジングモデルについての量子アニーリングの結果にしたがって、乱数を出力する。量子アニーリングの実行結果は、予測が困難であるため、乱数生成器1が出力する乱数の予測も困難である。このため、乱数生成器1によれば、所望の分布に従う高品質な乱数を生成することができる。
【0019】
<実施の形態1>
次に、実施の形態1について説明する。
図2は、実施の形態1にかかる乱数生成システム10の構成の一例を示すブロック図である。
図2に示すように、乱数生成システム10は、乱数生成器100と量子アニーリングマシン200とを備える。乱数生成器100と量子アニーリングマシン200とは、例えば、有線又は無線のネットワークを介して、相互に通信可能に接続されている。なお、
図2に示した構成では、量子アニーリングマシン200は、乱数生成器100とは別の装置として図示されているが、乱数生成器100に含まれてもよい。
【0020】
乱数生成器100は、
図1に示した乱数生成器1に対応している。量子アニーリングマシン200は、量子ビットと量子ビット間の結合とを実現する量子チップを備え、イジングモデルについての量子アニーリングを行ない各量子ビットの値を決定する。なお、量子チップは、量子力学における量子状態を用いて動作するチップである。なお、乱数生成システム10の量子アニーリングマシン200としては、公知のマシンを用いることができるため、その具体的な構成及び処理についての詳細な説明は割愛する。
【0021】
以下、乱数生成器100の具体的な構成及び処理について説明する。
乱数生成器100は、
図2に示すように、処理制御部101、入力受付部102、モデル生成部103、アニーリング結果取得部104、疑似乱数生成部105、及び乱数出力部106を有する。
【0022】
処理制御部101は、乱数生成器100の上述した構成要素の処理を制御する。本実施の形態では、特に、処理制御部101は、生成すべき乱数の個数に応じて、アニーリング結果取得部104及び疑似乱数生成部105の処理の実行回数を制御する。
【0023】
入力受付部102は、
図1の入力受付部2に対応しており、乱数の確率分布を指定する入力を受付ける。入力受付部102は、例えば、乱数生成器100が備える入力インタフェースを介してユーザが入力した確率分布を受付けてもよいし、乱数生成器100が備えるメモリなどの記憶装置から確率分布を読み出すことにより、これを受付けてもよい。また、入力受付部102は、他の装置から送信された確率分布を受信することにより、これを受付けてもよい。
【0024】
本実施の形態では、入力受付部102は、乱数の確率分布を指定する入力として、部分区間ごとの確率の設定値を受付ける。この部分区間は、確率変数の定義域を区分したものであるが、乱数の数値範囲を分割したものとも言うことができる。例えば、乱数生成器100により生成したい乱数の最小値をRMIN、最大値をRMAXとする。すなわち、乱数生成器100により、RMIN以上、RMAX以下の乱数を生成する場合を例に説明する。この場合、乱数生成器100は、RMINを下限としRMAXを上限とする数値範囲をn(nは2以上の整数)等分して得られるn個の部分区間ごとの確率の設定値を受付ける。つまり、入力受付部102は、部分区間ごとの確率piの指定を受付ける。ここで、添え字iは、部分区間の識別番号であり、1以上n以下の整数である。例えば、ある部分区間に属する数値が最も乱数として出力されやすいようにしたい場合、当該部分区間の確率piの値は、他の部分区間の確率piの値よりも大きい値が設定されることとなる。なお、p1からpnの総和は1となる。
【0025】
上述したn、RMIN、及びRMAXのそれぞれの値は、予め定められていてもよいし、入力受付部102が受付けてもよい。このように、n、RMIN、及びRMAXの指定も可能とすることにより、乱数生成器100の運用における利便性を向上することができる。
【0026】
なお、本実施の形態では、入力受付部102は、部分区間ごとの確率の設定値を受付けるが、確率分布を指定する入力はこれに限られない。例えば、入力受付部102は、乱数の確率分布を指定する入力として、確率分布の種類(例えば、正規分布など)を指定する情報と、分布のパラメータ(平均及び分散など)とを受付けてもよいし、確率分布を表す数式を受付けてもよい。
なお、入力受付部102は、さらに、生成すべき乱数の個数の指定を受付けてもよい。
【0027】
モデル生成部103は、
図1のモデル生成部3に対応しており、n個の部分区間のそれぞれに割り当てられるn個の二値変数(量子ビット変数)を用いたイジングモデルを、入力受付部102が受付けた確率分布に基づいて生成する。ここでは、n個の二値変数(量子ビット変数)をx
1、x
2、・・・、x
nとする。すなわち、i番目の部分区間には、二値変数x
iが割り当てられる。したがって、i番目の部分区間には、確率p
iと二値変数x
iが関連づけられる。
【0028】
モデル生成部103は、具体的には、例えば以下の式(1)で表されるモデルH(x)を生成する。
【0029】
【0030】
ここで、上述の通り、iは、n個の部分区間を識別する番号である。xiは、i番目の部分区間に割り当てられた二値変数であり、0または1の値をとる。piは、xiが割り当てられた部分区間における確率分布の値である。
【0031】
式(1)において、右辺の第一項で表される関数(第一の関数とも称す)は、目的関数である。量子アニーリングマシン200によって、関数HOnehot(第二の関数とも称す)で表される制約を満たしつつこの目的関数の値が最小となるような近似解(すなわち、二値変数x1、x2、・・・、xnの値の組み合わせ)が探索される。また、右辺の第二項で表される関数HOnehotは、n個の二値変数x1、x2、・・・、xnのいずれか一つが所定の値(具体的には、1)となり、それ以外の二値変数が当該所定の値以外の値(具体的には、0)となるようにするための制約項である。関数HOnehotは、具体的には、以下の式(2)で表される。なお、wは、重みを表す係数であり、モデル生成部103は、wの値として正の所定値を設定する。
【0032】
【0033】
モデル生成部103は、上記数式で表されるモデルのpiの値を入力受付部102が受付けた乱数の確率分布の指定にしたがって決定することにより、当該確率分布にしたがった乱数を生成するためのイジングモデルを生成する。なお、入力受付部102が、部分区間ごとの確率piの設定値ではなく、確率分布を表す数式を受付けた場合及び確率分布の種類及びパラメータを受付けた場合には、モデル生成部103は、次のように上記のイジングモデルを生成する。この場合、モデル生成部103は、n、RMIN、及びRMAXを用いて、各部分区間の確率piを特定することにより、上記のイジングモデルを生成する。このとき、部分区間において確率分布の値が一定でない場合には、モデル生成部103は、例えば、当該部分区間における確率分布の値の平均値、最小値、又は最大値などを用いて、確率piを決定してもよい。
【0034】
上記数式からわかるように、モデル生成部103は、次のようなイジングモデルを生成すると説明することもできる。モデル生成部103は、二値変数xiについての第一の関数と二値変数xiについての第二の関数とを用いて表されるイジングモデルを生成する。ここで、第一の関数は、二値変数xiが割り当てられた部分区間における確率分布の値piが大きいほど値が小さくなる関数の値と当該二値変数xiの値との積の総和で表される関数である。また、第二の関数は、n個の二値変数x1、x2、・・・、xnのいずれか一つが所定の値である場合に最小値となる関数であり、この条件が満たされない場合、重みwに依存した正の値をとる。
【0035】
アニーリング結果取得部104は、
図1のアニーリング結果取得部4に対応しており、モデル生成部103が生成したイジングモデルについての量子アニーリングの実行結果であるn個の二値変数x
1、x
2、・・・、x
nのそれぞれの値を取得する。アニーリング結果取得部104は、量子アニーリングマシン200に処理を実行させるために、モデル生成部103が生成したイジングモデルに基づいて、量子アニーリングマシン200による量子アニーリングの実行条件を設定する。具体的には、アニーリング結果取得部104は、モデル生成部103が生成したイジングモデルに基づいて、二値変数に対応する量子ビットと、量子ビット間の相互作用の強さを設定する。そして、アニーリング結果取得部104は、量子アニーリングマシン200に当該イジングモデルについての量子アニーリングの実行を指示する。
【0036】
これに対し、量子アニーリングマシン200は、量子アニーリングの実行結果、すなわちn個の二値変数x1、x2、・・・、xnのそれぞれの値を乱数生成器100に対して出力し、アニーリング結果取得部104がこれを取得する。量子アニーリングマシン200は、式(1)で示したH(x)を最小にする近似解を量子アニーリングの実行結果として出力する。具体的には、アニーリング結果取得部104は、式(1)で表されるイジングモデルに対する量子アニーリングの実行結果として、次のような実行結果を取得する。すなわち、アニーリング結果取得部104は、n個の二値変数x1、x2、・・・、xnのうちの一つの二値変数の値が所定の値(具体的には1)であり、他の二値変数の値が他の値(具体的には0)である実行結果を取得する。
【0037】
ここで、二値変数xiの値が1となる確率は、piである。したがって、乱数生成器100は、値が所定の値(具体的には1)である二値変数xiに対応する部分区間に属する値を乱数として出力することで、指定された確率分布にしたがった乱数を生成することができる。乱数生成器100は、値が所定の値である二値変数xiに対応する部分区間内の所定値を乱数として出力してもよいが、本実施の形態では、より様々な値を乱数として出力できるように、乱数生成器100は疑似乱数生成部105を備えている。なお、部分区間内の所定値とは、例えば、当該部分区間の中央の値、最大値、又は最小値などである。
【0038】
疑似乱数生成部105は、量子アニーリングの実行結果として得られた値が所定の値(具体的には1)である二値変数xiに割り当てられている部分区間に収まる疑似乱数(一様乱数)を生成する。すなわち、当該部分区間の最小値を疑似乱数の最小値とし、当該部分区間の最大値を疑似乱数の最大値とする疑似乱数を生成する。疑似乱数生成部105は、疑似乱数を生成する公知の関数を用いて疑似乱数を生成する。例えば、疑似乱数生成部105は、乱数値を返す組み込み関数の呼び出しにより、疑似乱数を得てもよい。
【0039】
乱数出力部106は、
図1の乱数出力部5に対応しており、量子アニーリングの実行結果にしたがって選択された部分区間に含まれる値を乱数として出力する。本実施の形態では、選択された部分区間に含まれる値として、疑似乱数生成部105により生成された疑似乱数を出力する。なお、このように、本実施の形態では、乱数出力部106は、量子アニーリングの実行結果にしたがって選択された部分区間における疑似乱数を出力するが、上述の通り、当該部分区間内の所定値を出力してもよい。この場合、乱数生成器100は、疑似乱数生成部105を有さなくてもよい。乱数出力部106は、任意の出力先に乱数を出力する。乱数出力部106は、例えば、乱数をディスプレイに出力してもよいし、暗号化処理などの所定の処理を行う装置又は処理部などに乱数を送信してもよい。
【0040】
乱数生成器100は、複数の乱数を生成してもよく、この場合、乱数出力部106は、生成された複数の乱数を出力する。処理制御部101は、生成する乱数の数に応じて、アニーリング結果取得部104及び疑似乱数生成部105の処理の実行回数を制御する。上述の通り、式(1)で表されるイジングモデルについて量子アニーリングを実行するたびに、1つの乱数を生成することができる。したがって、例えば、処理制御部101は、m(mは正整数)個の乱数を生成する場合、アニーリング結果取得部104及び疑似乱数生成部105の処理をm回繰り返すよう処理を制御する。なお、mの値は、予め定められていてもよいし、入力受付部102が受付けてもよい。このように、乱数生成器100は、同一のイジングモデルについての複数回の量子アニーリングの実行結果を取得することにより、複数の乱数を出力する。これにより、任意の個数の乱数を得ることができる。
【0041】
図3は、乱数生成器100のハードウェア構成の一例を示すブロック図である。
図3に示すように、乱数生成器100は、ネットワークインタフェース150、メモリ151、及びプロセッサ152を含む。ネットワークインタフェース150、メモリ151、及びプロセッサ152は、データバスなどを介して相互に接続されている。
【0042】
ネットワークインタフェース150は、量子アニーリングマシン200を含む他の任意の装置と通信するために使用される。ネットワークインタフェース150は、例えば、ネットワークインタフェースカード(NIC)を含んでもよい。
【0043】
メモリ151は、例えば、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ151は、プロセッサ152により実行される、1以上の命令を含むソフトウェア(コンピュータプログラム)、及び乱数生成器100の各種処理に用いるデータなどを格納するために使用される。
【0044】
プロセッサ152は、メモリ151からソフトウェア(コンピュータプログラム)を読み出して実行することで、
図2に示した各構成要素の処理を行う。
【0045】
プロセッサ152は、マイクロプロセッサ、MPU(Micro Processor Unit)、又はCPU(Central Processing Unit)などであってもよい。プロセッサ152は、複数のプロセッサを含んでもよい。
このように、乱数生成器100は、コンピュータとして機能する装置であり、情報処理装置とも称される。
【0046】
なお、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0047】
次に、乱数生成器100の動作の流れについて説明する。
図4は、乱数生成器100の動作の一例を示すフローチャートである。以下、
図4を参照しつつ、乱数生成器100による乱数の生成動作について説明する。
【0048】
ステップS100において、入力受付部102は、乱数の出力についての設定情報の入力を受付ける。具体的には、入力受付部102は、乱数の確率分布を指定する入力を受付ける。また、上述の通り、入力受付部102は、さらに、分割数n、乱数の最小値RMIN、乱数の最大値RMAX、及び生成すべき乱数の個数mのいずれかまたは全てについて指定する入力を受付けてもよい。
【0049】
次に、ステップS101において、モデル生成部103は、ステップS100で指定された確率分布に基づいて、イジングモデルを生成する。
【0050】
次に、ステップS102において、アニーリング結果取得部104は、ステップS101で生成したイジングモデルについての量子アニーリングの実行結果を量子アニーリングマシン200から取得する。すなわち、アニーリング結果取得部104は、n個の二値変数x1、x2、・・・、xnのそれぞれの値を取得する。
【0051】
次に、ステップS103において、疑似乱数生成部105は、ステップS102で取得した実行結果に基づいて選択される部分区間内で、疑似乱数を生成する。すなわち、疑似乱数生成部105は、値が1であるxiに対応する部分区間に収まる疑似乱数を生成する。
【0052】
次に、ステップS104において、処理制御部101は、指定された個数の乱数が得られたか否かを判定する。指定された個数の乱数が得られていない場合には、処理制御部101は、ステップS102及びステップS103の処理を再度行うよう制御する。これに対し、指定された個数の乱数が得られた場合には、処理はステップS105へ移行する。
【0053】
ステップS105において、乱数出力部106は、ステップS102及びステップS103の処理により得られた乱数を出力する。
【0054】
以上、実施の形態1について説明した。本実施の形態では、量子アニーリングの結果に基づいて部分区間が選択される。このため、選択される部分区間の予測は困難である。また、各部分区間が選択される確率は、指定された確率分布にしたがう。このため、本実施の形態によれば、所望の分布に従う高品質な乱数を生成することができる。
【0055】
<実施の形態2>
次に、実施の形態2について説明する。
量子アニーリングマシン200が備える量子ビットの数をk(kは2以上の整数)とする。この場合、実施の形態1で示した乱数生成器100では、量子の特性を利用した部分区間の選択、すなわち予測が困難な部分区間の選択は、最大でもk個の部分区間の中から行われることとなる。すなわち、設定可能な部分区間の数が量子ビットの数に依存してしまう。本実施の形態では、部分区間の選択を階層的に繰り返すことにより、より多くの部分区間の中から部分区間を選択する。これにより、量子アニーリングマシン200の量子ビット数が限られていても、より多くの部分区間の中から選択した乱数を出力することができる。
【0056】
図5は、実施の形態2にかかる乱数生成システム10aの構成の一例を示すブロック図である。
図5に示すように、実施の形態2にかかる乱数生成システム10aは、乱数生成器100が乱数生成器100aに置き換わった点で、実施の形態1にかかる乱数生成システム10と異なっている。
以下、実施の形態1と異なる構成及び処理について説明し、実施の形態1と同様な構成及び処理については適宜説明を省略する。
【0057】
図5に示されるように、実施の形態2にかかる乱数生成器100aは、主に、処理制御部101が処理制御部101aに置き換わった点で、実施の形態1にかかる乱数生成器100と異なっている。また、
図5に示した構成例では疑似乱数生成部105が省略されている。ただし、本実施の形態でも、乱数生成器100aは、疑似乱数生成部105を備えていてもよい。すなわち、本実施の形態において最終的に選択された部分区間に含まれる数値を乱数として出力する際に、この部分区間に含まれる所定値ではなく、疑似乱数生成部105により生成した乱数を出力してもよい。
【0058】
なお、
図5に示した構成においても、量子アニーリングマシン200は、乱数生成器100aとは別の装置として図示されているが、乱数生成器100aに含まれてもよい。
【0059】
処理制御部101aは、処理制御部101と同様、
図5に示した乱数生成器100aの各構成要素の処理を制御する。特に、処理制御部101aは、所定の回数だけ、部分区間の階層的な選択を行うよう、モデル生成部103及びアニーリング結果取得部104の処理を制御する。ここで、部分区間の階層的な選択とは、n個の部分区間の中から量子アニーリング結果にしたがって部分区間を選択し、その後、選択された部分区間に設定されたn個のより細かい部分区間の中から量子アニーリング結果にしたがって部分区間をさらに選択することをいう。処理制御部101aは、量子アニーリングによる部分区間の階層的な選択をq回(qは整数)繰り返すよう制御する。なお、q=0の場合、実施の形態1と同様、部分区間の階層的な選択、すなわち部分区間の再選択を行わずに乱数を出力することとなる。なお、このqの値は、予め定められていてもよいし、入力受付部102が受付けてもよい。
【0060】
部分区間の階層的な選択を行うために、本実施の形態のモデル生成部103は、処理制御部101aの制御にしたがい、次のような処理を行う。モデル生成部103は、モデル生成後にさらに、量子アニーリングの実行により選択された部分区間をさらに分割したn個の新たな部分区間のそれぞれに割り当てられるn個の二値変数を用いた新たなイジングモデルを、指定された確率分布に基づいて生成する。具体的には、モデル生成部103は、部分区間の階層的な選択を行うために、式(1)で示したイジングモデルを新たに生成する。ただし、新たなイジングモデルにおいて、n個の二値変数xiは、選択された部分区間をさらに分割したn個の新たな部分区間のそれぞれに割り当てられた変数である。また、確率piは、新たな部分区間における確率分布の値である。
【0061】
例えば、入力受付部102が、確率分布を表す数式を受付けた場合及び確率分布の種類及びパラメータを受付けた場合には、モデル生成部103は、分割数n、及び、選択された部分区間の範囲を用いて、新たな部分区間の確率piを特定する。このとき、新たな部分区間において確率分布の値が一定でない場合には、モデル生成部103は、例えば、当該部分区間における確率分布の値の平均値、最小値、又は最大値などを用いて、新たな部分区間の確率piを決定してもよい。また、入力受付部102は、新たな部分区間の確率piの設定値をそれぞれ指定する入力を受付けてもよい。なお、モデル生成部103は、新たな部分区間の確率piの総和が1でない場合には、総和が1となるように確率piの値を正規化した上で、新たなイジングモデルを生成する。
【0062】
部分区間の階層的な選択を行うために、本実施の形態のアニーリング結果取得部104は、処理制御部101aの制御にしたがい、次のような処理を行う。アニーリング結果取得部104は、モデル生成部103が、上述した新たなイジングモデルを生成した場合、この新たなイジングモデルについての量子アニーリングの実行結果であるn個の二値変数の値を取得する。取得されるn個の二値変数の値は、細分化された部分区間のうちどの部分区間を選択するべきかを示す。
【0063】
本実施の形態の乱数出力部106は、部分区間の階層的な選択が終了すると、最終的に選択された部分区間に含まれる値を乱数として出力する。すなわち、乱数出力部106は、新たなイジングモデルについての量子アニーリングの実行結果として得られた値が所定の値(具体的には1)である二値変数xiに割り当てられている新たな部分区間に含まれる値を乱数として出力する。なお、本実施の形態では乱数出力部106は、選択された部分区間内の所定値(例えば、当該部分区間の中央の値、最大値、又は最小値など)を乱数として出力するが、疑似乱数生成部105が生成した値を出力してもよい。
【0064】
次に、乱数生成器100aの動作の流れについて説明する。
図6は、乱数生成器100aの動作の一例を示すフローチャートである。以下、
図6を参照しつつ、乱数生成器100aによる乱数の生成動作について説明する。
【0065】
ステップS200において、
図4のステップS100と同様、入力受付部102は、乱数の出力についての設定情報の入力を受付ける。
【0066】
次に、ステップS201において、
図4のステップS101と同様、モデル生成部103は、ステップS200で指定された確率分布に基づいて、イジングモデルを生成する。
【0067】
次に、ステップS202において、
図4のステップS102と同様、アニーリング結果取得部104は、ステップS201で生成したイジングモデルについての量子アニーリングの実行結果を量子アニーリングマシン200から取得する。
【0068】
次に、ステップS203において、処理制御部101aは、部分区間の細分化を所定の回数行ったか否かを判定する。すなわち、処理制御部101aは、部分区間の階層的な選択をq回行ったか否かを判定する。部分区間の細分化が所定の回数行われていない場合には、処理制御部101aは、イジングモデルの生成及び量子アニーリングの実行を再度行うよう制御する。すなわち、この場合、処理はステップS204へ移行する。これに対し、部分区間の細分化が所定の回数行われた場合には、処理はステップS205へ移行する。
【0069】
ステップS204において、部分区間の階層的な選択を行うために、モデル生成部103は、新たな部分区間についてのイジングモデルを生成する。すなわち、モデル生成部103は、ステップS202において量子アニーリングの実行結果として得られた値が所定の値である二値変数xiに割り当てられている部分区間をさらに分割したn個の新たな部分区間についてのイジングモデルを生成する。ステップS204の処理の後、処理は、ステップS202に戻り、アニーリング結果取得部104は、ステップS204で生成されたイジングモデルについての量子アニーリングの実行結果を量子アニーリングマシン200から取得する。その後、再びステップS203の判定処理が行われる。
【0070】
部分区間の細分化が所定の回数行われると、一つの乱数が得られる。ステップS205では、処理制御部101aは、指定された個数の乱数が得られたか否かを判定する。指定された個数の乱数が得られていない場合には、処理制御部101aは、ステップS202からステップS204の処理を再度行うよう制御する。このとき、ステップS202では、アニーリング結果取得部104は、細分化されていない初期状態の部分区間に割り当てられた二値変数xiを用いたイジングモデルについての量子アニーリングの実行結果を取得する。すなわち、以降の処理において、部分区間の階層的な選択が新規に繰り返されることとなる。これに対し、指定された個数の乱数が得られた場合には、処理はステップS206へ移行する。
【0071】
ステップS206において、乱数出力部106は、ステップS202からステップS204の処理により得られた乱数を出力する。
【0072】
以上、実施の形態2について説明した。本実施の形態では、部分区間の選択を階層的に繰り返すことにより、より多くの部分区間の中から部分区間が選択される。これにより、量子アニーリングマシン200の量子ビット数が限られていても、より多くの部分区間の中から選択した乱数を出力することができる。
【0073】
<実施の形態3>
次に、実施の形態3について説明する。
本実施の形態は、量子アニーリングマシン200が、乱数を生成するための複数のイジングモデルについて同時に量子アニーリングを行う点で、上述した実施の形態と異なっている。量子アニーリングマシン200が備える量子ビット数に余裕があれば、量子アニーリングマシン200は、複数のイジングモデルについての解を得ることが可能である。そこで、本実施の形態では、複数のイジングモデルに対する1回の量子アニーリングの実行により、効率的に複数の乱数を得ることができる乱数生成器100bについて説明する。
【0074】
図7は、実施の形態3にかかる乱数生成システム10bの構成の一例を示すブロック図である。
図7に示すように、実施の形態3にかかる乱数生成システム10bは、乱数生成器100が乱数生成器100bに置き換わった点で、実施の形態1にかかる乱数生成システム10と異なっている。なお、
図7に示した構成では、乱数生成器100bは、疑似乱数生成部105を備えるが、乱数生成器100bが部分区間内の所定値を乱数として出力する場合には、疑似乱数生成部105が省略されてもよい。
以下、実施の形態1と異なる構成及び処理について説明し、実施の形態1と同様な構成及び処理については適宜説明を省略する。
【0075】
図7に示されるように、実施の形態3にかかる乱数生成器100bは、主に、モデル生成部103がモデル生成部103bに置き換わり、アニーリング結果取得部104がアニーリング結果取得部104bに置き換わった点で、実施の形態1にかかる乱数生成器100と異なっている。なお、
図7に示した構成においても、量子アニーリングマシン200は、乱数生成器100bとは別の装置として図示されているが、乱数生成器100bに含まれてもよい。
【0076】
モデル生成部103bは、モデル生成部103と同様、入力受付部102が受付けた確率分布に基づいてイジングモデルを生成する。本実施の形態においても、モデル生成部103bは、式(1)で表されるモデルH(x)を生成する。ただし、モデル生成部103bは、同時に量子アニーリングが実行される複数のイジングモデルを生成する。ここでは、同時に量子アニーリングが実行されるイジングモデルの数をs(sは2以上の整数)とする。つまり、モデル生成部103bは、s個のイジングモデルを生成する。ここで、s個のイジングモデルは同一であってもよいし、異なってもよい。このため、各イジングモデルは、二値変数xiの数(つまり、nの値)が異なってもよいし、確率値piの値(つまり、確率分布)が異なってもよいし、二値変数xiに割り当てられる部分区間が異なってもよい。説明のため、s個のイジングモデルにおける二値変数xiの総数をtとする。なお、それぞれのイジングモデルにおける二値変数の数xiをn1、n2、・・・、nsとすると、t=n1+n2+・・・+nsとなる。ここで、n1、n2、・・・、nsがいずれも2以上の整数であるとすると、sが2以上の整数であることを考慮すると、tは4以上の整数である。
【0077】
モデル生成部103bが生成したs個のイジングモデルの合計t個の二値変数xiのそれぞれは、異なる量子ビットに対応付けられることとなる。このため、量子アニーリングマシン200が備える量子ビットの数をkとすると、tの値はk以下である。
【0078】
アニーリング結果取得部104bは、s個のイジングモデルにおける二値変数xiの集合であるt個の二値変数xiを同一の量子アニーリングマシン200のt個の量子ビットに対応させる。量子アニーリングマシン200は、s個のイジングモデルについての量子アニーリングを同時に実行し、s個のイジングモデルの解を得る。これにより、アニーリング結果取得部104bは、s個のイジングモデルについての量子アニーリングの実行結果であるt個の二値変数xiの値を取得する。
【0079】
次に、乱数生成器100bの動作の流れについて説明する。
図8は、乱数生成器100bの動作の一例を示すフローチャートである。以下、
図8を参照しつつ、乱数生成器100bによる乱数の生成動作について説明する。
【0080】
ステップS300において、
図4のステップS100と同様、入力受付部102は、乱数の出力についての設定情報の入力を受付ける。本ステップにおいて、入力受付部102は、複数のイジングモデルそれぞれを生成するために必要な情報を受付ける。
【0081】
次に、ステップS301において、モデル生成部103bは、ステップS300で指定された確率分布に基づいて、複数のイジングモデルを生成する。
【0082】
次に、ステップS302において、アニーリング結果取得部104bは、ステップS301で生成した複数のイジングモデルについての同時に実行された量子アニーリングの結果を量子アニーリングマシン200から取得する。すなわち、アニーリング結果取得部104bは、各イジングモデルの二値変数xiの値を取得する。これにより、各イジングモデルにおいて、部分区間の選択が可能となる。
【0083】
次に、ステップS303において、疑似乱数生成部105は、ステップS302で取得した実行結果に基づいて選択される部分区間内で、疑似乱数を生成する。疑似乱数生成部105は、生成したイジングモデル毎に疑似乱数を生成する。
【0084】
次に、ステップS304において、処理制御部101は、指定された個数の乱数が得られたか否かを判定する。本実施の形態では、複数のイジングモデルについての量子アニーリングを同時に行っているため、ステップS302及びステップS303の処理を1回行うだけで、複数の乱数を得ることができる。しかしながら、それでも得られた乱数の数が指定された個数に達していない場合には、再度、量子アニーリングを行う。このため、指定された個数の乱数が得られていない場合には、処理制御部101は、ステップS302及びステップS303の処理を再度行うよう制御する。これに対し、指定された個数の乱数が得られた場合には、処理はステップS305へ移行する。
【0085】
ステップS305において、乱数出力部106は、ステップS302及びステップS303の処理により得られた乱数を出力する。
【0086】
以上、実施の形態3について説明した。本実施の形態では、複数のイジングモデルについて同時に実行された量子アニーリングの結果を用いて乱数が生成される。このため、量子アニーリングマシン200を用いた効率的な乱数の生成が可能となる。
【0087】
なお、本実施の形態は、実施の形態2と組み合わせることができる。すなわち、本実施の形態において、実施の形態2と同様に、部分区間の選択を階層的に繰り返してもよい。この場合、モデル生成部103bは、部分区間を細分化した新たな部分区間に割り当てられる二値変数を用いた新たなイジングモデルを、s個の既存のイジングモデル毎に1つずつ生成する。そして、アニーリング結果取得部104bは、さらにs個の新たなイジングモデルについての量子アニーリングの実行結果であるt個の二値変数の値を取得する。
【0088】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した乱数生成器を含む情報処理装置は、生成した乱数を用いた所定の処理を行う処理部を有してもよい。例えば、処理部は、乱数を用いる公知の所定の暗号化処理を行ってもよいし、モンテカルロシミュレーションなどの乱数を用いるシミュレーション処理を行ってもよい。なお、この処理部も、例えば、プロセッサがメモリに格納されたプログラムを実行することにより実現されてもよい。
【0089】
なお、上述した実施の形態では、イジングモデルに対する量子アニーリングの実行結果を用いて乱数の生成を行ったが、量子アニーリングの代わりにシミュレーティッドアニーリングの実行結果が用いられてもよい。
【0090】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0091】
この出願は、2021年1月22日に出願された日本出願特願2021-008663を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【0092】
1 乱数生成器
2 入力受付部
3 モデル生成部
4 アニーリング結果取得部
5 乱数出力部
10 乱数生成システム
10a 乱数生成システム
10b 乱数生成システム
100 乱数生成器
100a 乱数生成器
100b 乱数生成器
101 処理制御部
101a 処理制御部
102 入力受付部
103 モデル生成部
103b モデル生成部
104 アニーリング結果取得部
104b アニーリング結果取得部
105 疑似乱数生成部
106 乱数出力部
150 ネットワークインタフェース
151 メモリ
152 プロセッサ
200 量子アニーリングマシン