(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-11
(45)【発行日】2024-10-22
(54)【発明の名称】情報処理装置、シミュレート方法およびプログラム
(51)【国際特許分類】
G06N 10/00 20220101AFI20241015BHJP
【FI】
G06N10/00
(21)【出願番号】P 2021118023
(22)【出願日】2021-07-16
【審査請求日】2023-10-04
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成28年度 国立研究開発法人科学技術振興機構 戦略的創造研究推進事業 ERATO中村巨視的量子機械プロジェクト、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】鈴木 泰成
(72)【発明者】
【氏名】中村 泰信
【審査官】福西 章人
(56)【参考文献】
【文献】米国特許出願公開第2021/0049492(US,A1)
【文献】米国特許出願公開第2019/0347575(US,A1)
【文献】特表2020-534603(JP,A)
【文献】特表2020-521235(JP,A)
【文献】特表2020-515999(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
クリフォード回路をシミュレートするための情報処理装置であって、
入力された量子回路に含まれる命令のうち、「測定」と「操作」の命令の連続性を向上させるように、前記量子回路を更新する量子回路更新部と、
更新された前記量子回路に基づいて、スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートするシミュレート部と、を備える、
情報処理装置。
【請求項2】
前記シミュレート部は、更新された前記量子回路に含まれる命令が「測定」の際にはRow-major、「操作」の際にはColumn-majorになるように、前記スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートする、
請求項1に記載の情報処理装置。
【請求項3】
前記量子回路更新部は、貪欲法による最適化手法を用いて、「測定」と「操作」がそれぞれできるだけ連続的に配置されるように、前記量子回路を更新する、
請求項1または2に記載の情報処理装置。
【請求項4】
クリフォード回路をシミュレートするための情報処理装置が実行するシミュレート方法であって、
入力された量子回路に含まれる命令のうち、「測定」と「操作」の命令の連続性を向上させるように、前記量子回路を更新するステップと、
更新された前記量子回路に基づいて、スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートするステップと、を備える、
シミュレート方法。
【請求項5】
コンピュータを、請求項1から3のいずれか1項に記載の情報処理装置における各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、シミュレート方法およびプログラムに関する。
【背景技術】
【0002】
量子計算機は量子ビットと呼ばれる基本要素からなる計算機である。量子計算機は様々な計算タスクを従来の計算機に比べ大幅に高速に計算できるため、現在大きな注目を集めるとともに、盛んに開発が進んでいる。量子計算の計算タスクは、「量子回路」と呼ばれる、論理回路を模した形式で表現される(非特許文献1)。量子計算でどのような計算タスクが高速に行えるかを調査するには、量子計算の振る舞いを通常の計算機で模倣する、量子回路のシミュレータが重要な道具となる。しかし、量子計算機がいくつかのタスクで通常の計算機に比べ大幅に高速であるという事実は、「量子計算機のシミュレート」というタスクは通常の計算機にとって非常に時間のかかるタスクであることをも意味しており、100量子ビットを超える一般の量子回路を現実的な時間でシミュレートすることは不可能であるとされている(非特許文献2)。
【0003】
量子計算機で実行する命令は、「操作」と「測定」の二種類に分けられる。操作は量子ビットの状態を変更する命令であり、測定は量子ビットを測定し測定結果として通常のビットを得る命令である。従って、シミュレータは、シミュレーションの結果として、「測定」の命令数と同じ数の通常のビット列を出力することができる。
【0004】
操作は「ユニタリ群」と呼ばれる数学的な集合の要素と対応付けることができる。また、測定は「パウリ群」という集合の要素に対応付けることができる。これらすべての命令を高速にシミュレートすることは前述の通り難しいが、操作の集合が「ユニタリ群」からその部分集合である「クリフォード群」に限定されると、通常の計算機でも高速に量子計算機の振る舞いがシミュレートできることが知られている(非特許文献3、非特許文献4)。このように、操作がクリフォード群に限定された量子回路は「クリフォード回路」と呼ばれる。従って、量子計算機でシミュレートを行いたい計算タスクの量子回路がクリフォード回路であるケースは、上記のアルゴリズムを用いて高速にシミュレートができる。また、クリフォード回路をシミュレートする方法は手法で使われる要素の名前から「スタビライザーシミュレータ」と呼ばれる。
【0005】
現在応用が期待されている「変分法」や、量子計算の持つ誤りを大幅に削減する「誤り訂正符号」といったモジュールでは、「クリフォード群」の操作が支配的である状況を自然に考えることができる。従って、こうしたアルゴリズムや手法の研究では、スタビライザーシミュレータがしばしば使われる。
【0006】
以下に、既存のスタビライザーシミュレータの仕組みを示す。量子計算の単位要素である「量子ビット」がn個で構成されるタスクをシミュレートするケースを考える。既存のスタビライザーシミュレータはシミュレーション中、「スタビライザーテーブル」と呼ばれる、「高さ2n、幅n」の、合計2n2の要素からなるテーブルを保持する。ここで、各要素は[I,X,Y,Z]の四種類の文字のうちどれか一つであり、2bitで表現できる。通常のスタビライザーシミュレータでは、「操作」ではこのテーブルの特定の列を更新し、「測定」では主として行の更新を行うことで量子計算のタスクのシミュレートを行うことができる。
【0007】
通常の計算機のメモリでは、データは一次元的に並べられ、連続的な読み出しや書き込みは、不連続なものに比べて大幅に高速であることが知られている。従って、上記のシミュレートを高速に行うには、操作によって更新される値はメモリ上にできる限り連続的に並んでいることが望ましい。スタビライザーテーブルのうち、行を連続的に並べる配置をRow-major、列を連続的に並べる配置をColumn-majorと呼ぶ。Row-majorの配置では「測定」を高速に行うことができ、Column-majorの方式では「操作」を高速に行うことができる。既存のスタビライザーシミュレータのライブラリでは、数学的な記述がRow-majorで行うことが自然であるから、しばしばRow-majorで実装されている(非特許文献5、非特許文献6、非特許文献7、非特許文献8)。
【先行技術文献】
【非特許文献】
【0008】
【文献】Learn Quantum Computation using Qiskit,[online],インターネット<URL:https://qiskit.org/textbook/ch-states/introduction.html>
【文献】Arute, Frank, et al. "Quantum supremacy using a programmable superconducting processor." Nature 574.7779 (2019): 505-510.
【文献】Gottesman, Daniel. "The Heisenberg representation of quantum computers." arXiv preprint quant-ph/9807006 (1998).
【文献】Aaronson, Scott, and Daniel Gottesman. "Improved simulation of stabilizer circuits." Physical Review A 70.5 (2004): 052328.
【文献】CNOT-Hadamard-Phase,[online],インターネット<URL:https://www.scottaaronson.com/chp/>
【文献】Python CHP Stabilizer Simulator,[online],インターネット<URL:https://github.com/Strilanc/python-chp-stabilizer-simulator>
【文献】chp-sim,[online],インターネット<URL:https://github.com/qsharp-community/chp-sim>
【文献】Qiskit,[online],インターネット<URL:https://qiskit.org/>
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、量子計算機の開発が進むにつれ、シミュレートしようとするアルゴリズムやモジュールの規模が大きくなり、スタビライザーシミュレータであっても十分な速度でのシミュレートが困難な状況になっている。このため、より高速に量子回路をシミュレートする方法が求められている。
【0010】
開示の技術は、量子回路のシミュレーションを高速化させることを目的とする。
【課題を解決するための手段】
【0011】
開示の技術は、クリフォード回路をシミュレートするための情報処理装置であって、入力された量子回路に含まれる命令のうち、「測定」と「操作」の命令の連続性を向上させるように、前記量子回路を更新する量子回路更新部と、更新された前記量子回路に基づいて、スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートするシミュレート部と、を備える情報処理装置である。
【発明の効果】
【0012】
開示の技術によれば、量子回路のシミュレーションを高速化させることができる。
【図面の簡単な説明】
【0013】
【
図2】スタビライザーテーブルの一例を示す図である。
【
図4】量子回路更新処理の流れの一例を示す図である。
【
図5】pop_next_operation関数の処理の流れの一例を示す図である。
【
図6】シミュレート処理の流れの一例を示す図である。
【
図7】コンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0015】
(情報処理装置の概要)
本実施の形態に係る情報処理装置は、クリフォード回路をシミュレートするための装置である。クリフォード回路は、操作がクリフォード群に限定された量子回路である。クリフォード回路は、操作と測定の命令が並んだ一次元的な列で表現される。
【0016】
具体的には、情報処理装置は、入力された量子回路に含まれる命令のうち、「測定」と「操作」がそれぞれできるだけ連続的に配置されるように、すなわち「測定」と「操作」の命令の連続性を向上させるように、量子回路を更新する。そして、情報処理装置は、更新された量子回路について、「測定」の際にはRow-major、「操作」の際にはColumn-majorになるようにスタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートする。
【0017】
(情報処理装置の機能構成例)
図1は、情報処理装置の機能構成例を示す図である。情報処理装置10は、量子回路更新部11と、シミュレート部12と、スタビライザーテーブル記憶部13と、を備える。
【0018】
量子回路更新部11は、入力された量子回路Oに含まれる命令[o1,o2,・・・,on]のうち、「測定」と「操作」がそれぞれできるだけ連続的に配置されるように、量子回路Oを更新する。
【0019】
シミュレート部12は、スタビライザーテーブルを使用して、更新された量子回路Tをシミュレートして、測定値mを示すデータを出力する。このとき、シミュレート部12は、「測定」の際にはRow-major、「操作」の際にはColumn-majorになるようにスタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートする。
【0020】
スタビライザーテーブル記憶部13は、シミュレートに使用するスタビライザーテーブルを記憶する。
【0021】
(スタビライザーテーブルの例)
図2は、スタビライザーテーブルの一例を示す図である。スタビライザーテーブルは、従来のスタビライザーシミュレータと同様に、n行、2n列の合計2n
2の要素からなるテーブルである。ここで、各要素は、例えば[I,X,Y,Z]の四種類の文字のうちどれか一つであり、2bitで表現される。また、シミュレート部12は、従来のスタビライザーシミュレータと同様に、「操作」ではスタビライザーテーブルの特定の列を更新し、「測定」では主として行の更新を行うことで量子計算のタスクのシミュレートを行う。
【0022】
初期状態では、スタビライザーテーブルは、メモリ上にColumn-majorの配置となっている。Column-majorは、メモリ上に列の要素が連続する配置であって、
図2に示される要素が、d
1,1,d
2,1,d
3,1,・・・,d
2n,1,d
1,2,d
2,2,d
3,2,・・・,d
2n,2,d
1,3,d
2,3,d
3,3,・・・,d
2n,3,・・・,d
1,n,d
2,n,d
3,n,・・・,d
2n,nのように連続する配置である。
【0023】
シミュレート部12は、「測定」の処理をシミュレートする際には、スタビライザーテーブルがRow-majorの配置となるように、メモリ上の配置を変更する。Row-majorは、メモリ上に行の要素が連続する配置であって、
図2に示される要素が、d
1,1,d
1,2,d
1,3,・・・,d
1,n,d
2,1,d
2,2,d
2,3,・・・,d
2,n,d
3,1,d
3,2,d
3,3,・・・,d
3,n,・・・,d
2n,1,d
2n,2,d
2n,3,・・・,d
2n,nのように連続する配置である。
【0024】
(情報処理装置の動作)
次に、情報処理装置10の動作について、図面を参照して説明する。
【0025】
図3は、全体処理の流れの一例を示す図である。情報処理装置10は、ユーザの操作等によって量子回路Oの入力を受けると、全体処理を実行する。全体処理を開始すると、量子回路更新部11は、量子回路更新処理を実行する(ステップS1)。次に、シミュレート部12は、更新された量子回路に基づくシミュレート処理を実行する(ステップS2)。
【0026】
図4は、量子回路更新処理の流れの一例を示す図である。
図3のステップS1に示される量子回路更新処理を開始すると、量子回路更新部11は、変数sを0,変数iを1,更新後の量子回路Tを[]にそれぞれ初期化する(ステップS11)。
【0027】
次に、量子回路更新部11は、i=nであるか否かを判定する(ステップS12)。量子回路更新部11は、i=nでないと判定すると(ステップS12:NO)、O,oにpop_next_operation(s,O)の実行結果を代入する(ステップS13)。pop_next_operation関数は、sが0の場合には「操作」の命令を抽出し、sが1の場合には「測定」の命令を抽出する関数である。pop_next_operation関数の詳細については後述する。
【0028】
次に、量子回路更新部11は、o=Noneであるか否かを判定する(ステップS14)。量子回路更新部11は、o=Noneでないと判定すると(ステップS14:NO)、TにT+[o]を代入する(ステップS15)。このステップS15において、ステップS13で削除された命令oが、要素列の一番後ろに追加されるため、これによって命令の順番が入れ替わる。
【0029】
次に、量子回路更新部11は、iにi+1を代入し(ステップS16)、ステップS13の処理に戻る。
【0030】
ステップS14において、量子回路更新部11は、o=Noneであると判定すると(ステップS14:YES)、sに1-sを代入し(ステップS17)、ステップS13の処理に戻る。このステップS17によって、量子回路更新部11は、「操作」の命令をまとめるための処理と「測定」の命令をまとめるための処理と、を切り替える。
【0031】
ステップS12において、量子回路更新部11は、i=nであると判定すると(ステップS12:YES)、更新された量子回路Tを出力する(ステップS18)。
【0032】
図5は、pop_next_operation関数の処理の流れの一例を示す図である。入力される量子回路O=[o
1,o
2,・・・,o
m]とする。なお、量子回路Oは、後述する処理によって抽出された命令が削除されている場合があるため、mは1以上n以下の数となっている。また、pop_next_operation関数の開始時には、i=1とする。
【0033】
量子回路更新部11は、i=mであるか否かを判定する(ステップS1301)。量子回路更新部11は、i=mであると判定すると(ステップS1301:YES)、O,Noneを返却して(ステップS1302)、pop_next_operation関数の処理を終了する。
【0034】
また、量子回路更新部11は、i=mでないと判定すると(ステップS1301:NO)、s=0であるか否かを判定する(ステップS1303)。量子回路更新部11は、s=0であると判定すると(ステップS1303:YES)、命令oiが操作であるか否かを判定する(ステップS1304)。
【0035】
量子回路更新部11は、命令oiが操作であると判定すると(ステップS1304:YES)、変数jに1を代入し(ステップS1306)、命令oiと命令ojが置換可能であるか否かを判定する(ステップS1307)。
【0036】
なお、量子回路がクリフォード回路の場合は、命令の種類が限られていることから、命令が置換可能であるか否かを容易に判定できることが知られている。
【0037】
また、ステップS1304の処理において、量子回路更新部11は、命令oiが操作でないと判定すると(ステップS1304:NO)、iにi+1を代入して(ステップS1308)、ステップS1301の処理に戻る。
【0038】
また、ステップS1303の処理において、量子回路更新部11は、s=0でないと判定すると(ステップS1303:NO)、命令oiが測定であるか否かを判定する(ステップS1305)。量子回路更新部11は、命令oiが測定であると判定すると(ステップS1305:YES)、ステップS1306の処理に進む。
【0039】
量子回路更新部11は、命令oiが測定でないと判定すると(ステップS1305:NO)、ステップS1308の処理に進む。
【0040】
量子回路更新部11は、命令oiと命令ojが置換可能でないと判定すると(ステップS1307:NO)、ステップS1308の処理に進む。
【0041】
量子回路更新部11は、命令oiと命令ojが置換可能であると判定すると(ステップS1307:YES)、j=iであるか否かを判定する(ステップS1309)。量子回路更新部11は、j=iでないと判定すると(ステップS1309:NO)、jにj+1を代入して(ステップS1310)、ステップS1307の処理に戻る。
【0042】
量子回路更新部11は、j=iであると判定すると(ステップS1309:YES)、量子回路Oから命令oiを削除する(ステップS1311)。そして、量子回路更新部11は、量子回路Oと命令oiを返却して(ステップS1312)、pop_next_operation関数の処理を終了する。
【0043】
図6は、シミュレート処理の流れの一例を示す図である。
図3のステップS2に示されるシミュレート処理を開始すると、シミュレート部12は、変数sを0,変数iを1,出力する測定値mを[]にそれぞれ初期化する(ステップS201)。
【0044】
シミュレート部12は、s=0であるか否かを判定する(ステップS202)。シミュレート部12は、s=0であると判定すると(ステップS202:YES)、命令oiが操作であるか否かを判定する(ステップS203)。そして、シミュレート部12は、命令oiが操作であると判定すると(ステップS203:YES)、命令oiをシミュレートする(ステップS205)。続いて、シミュレート部12は、変数iにi+1を代入して(ステップS206)、ステップS212の処理に進む。
【0045】
ステップS203の処理において、シミュレート部12は、命令oiが操作でないと判定すると(ステップS203:NO)、メモリ上の配置について、スタビライザーテーブルの列と行を入れ替える(ステップS210)。すなわち、シミュレート部12は、メモリ上の配置がRow-majorの配置であった場合にはColumn-majorの配置に変更し、メモリ上の配置がColumn-majorの配置であった場合には、Row-majorの配置に変更する。
【0046】
そして、シミュレート部12は、変数sに1-sを代入して(ステップS211)、ステップS202の処理に戻る。
【0047】
また、シミュレート部12は、ステップS202の処理において、s=0でないと判定すると(ステップS202:NO)、命令oiが測定であるか否かを判定する(ステップS204)。そして、シミュレート部12は、命令oiが測定であると判定すると(ステップS204:YES)、命令oiを測定して、個別の測定値vを得て(ステップS207)、全体の測定値mにm+[v]を代入する(ステップS208)。続いて、シミュレート部12は、変数iにi+1を代入して(ステップS209)、ステップS212の処理に進む。
【0048】
シミュレート部12は、ステップS204の処理において、命令oiが測定でないと判定すると(ステップS204:NO)、ステップS210の処理に進む。
【0049】
ステップS212の処理において、シミュレート部12は、i=nであるか否かを判定する(ステップS212)。シミュレート部12は、i=nでないと判定すると(ステップS212:NO)、ステップS202の処理に戻る。
【0050】
シミュレート部12は、i=nであると判定すると(ステップS212:YES)、測定値mを出力する(ステップS213)。
【0051】
(本実施の形態に係るハードウェア構成例)
情報処理装置10は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。なお、この「コンピュータ」は、物理マシンであってもよいし、クラウド上の仮想マシンであってもよい。仮想マシンを使用する場合、ここで説明する「ハードウェア」は仮想的なハードウェアである。
【0052】
上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【0053】
図7は、上記コンピュータのハードウェア構成例を示す図である。
図7のコンピュータは、それぞれバスBで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、入力装置1007、出力装置1008等を有する。
【0054】
当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0055】
メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置1005は、ネットワークに接続するためのインタフェースとして用いられる。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。出力装置1008は演算結果を出力する。なお、上記コンピュータは、CPU1004の代わりにGPU(Graphics Processing Unit)またはTPU(Tensor processing unit)を備えていても良く、CPU1004に加えて、GPUまたはTPUを備えていても良い。その場合、特殊な演算が必要な処理をGPUまたはTPUが実行し、その他の処理をCPU1004が実行する、というように処理を分担して実行しても良い。
【0056】
上述した実施の形態において、
図4および
図5に例示した量子回路の更新方法は、いわゆる貪欲法と呼ばれる最適化手法を適用した方法である。量子回路の更新方法は、これに限られず、「測定」と「操作」のそれぞれの命令の連続性を向上させる方法であれば、他の方法でも良い。
【0057】
上述した実施の形態において、複数の量子回路をシミュレートする場合に、同一の形状の量子回路を複数回シミュレートする場合には、情報処理装置10は、1回目のシミュレートにおいて量子回路更新部11が更新した量子回路Tを記憶しておき、2回目以降のシミュレートにおいて、更新された量子回路Tを使用して、シミュレート部12によるシミュレートを実行しても良い。これによって、同一の量子回路のシミュレーションを多数回にわたって実行する場合には、量子回路更新部11による更新処理のコストを実質的に無視することができる。
【0058】
(本実施の形態の効果)
本実施の形態に係る情報処理装置10によれば、入力された量子回路に含まれる命令のうち、「測定」と「操作」がそれぞれできるだけ連続的に配置されるように、量子回路を更新する。そして、情報処理装置10は、更新された量子回路について、「測定」の際にはRow-major、「操作」の際にはColumn-majorになるようにスタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートする。
【0059】
仮に、量子回路の更新を行わずに、メモリ上の配置を切り替えだけを行った場合、量子回路Oにおいて「測定」と「操作」が交互に配置されている場合、シミュレート処理ごとにRow-majorとColumn-majorを切り替える処理が発生してしまい、シミュレートに要する時間はむしろ増大する可能性がある。
【0060】
それに対して、本実施の形態に係る情報処理装置10によれば、「測定」と「操作」の命令の連続性が向上されているため、メモリ上の配置を切り替える処理の実行回数を最小限に抑えることができる。したがって、量子回路のシミュレーションを高速化させることができる。
【0061】
具体的には、量子回路更新部11は、貪欲法による最適化手法を用いて、「測定」と「操作」がそれぞれできるだけ連続的に配置されるように、量子回路Oを更新する。これによって、「測定」と「操作」の命令の連続性の向上を簡易に実現させることができる。
【0062】
(実施の形態のまとめ)
本明細書には、少なくとも下記の各項に記載した情報処理装置、シミュレート方法およびプログラムが記載されている。
(第1項)
クリフォード回路をシミュレートするための情報処理装置であって、
入力された量子回路に含まれる命令のうち、「測定」と「操作」の命令の連続性を向上させるように、前記量子回路を更新する量子回路更新部と、
更新された前記量子回路に基づいて、スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートするシミュレート部と、を備える、
情報処理装置。
(第2項)
前記シミュレート部は、更新された前記量子回路に含まれる命令が「測定」の際にはRow-major、「操作」の際にはColumn-majorになるように、前記スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートする、
第1項に記載の情報処理装置。
(第3項)
前記量子回路更新部は、貪欲法による最適化手法を用いて、「測定」と「操作」がそれぞれできるだけ連続的に配置されるように、前記量子回路を更新する、
第1項または第2項に記載の情報処理装置。
(第4項)
クリフォード回路をシミュレートするための情報処理装置が実行するシミュレート方法であって、
入力された量子回路に含まれる命令のうち、「測定」と「操作」の命令の連続性を向上させるように、前記量子回路を更新するステップと、
更新された前記量子回路に基づいて、スタビライザーテーブルの各要素のメモリ上の配置を切り替えながらシミュレートするステップと、を備える、
シミュレート方法。
(第5項)
コンピュータを、第1項から第3項のいずれか1項に記載の情報処理装置における各部として機能させるためのプログラム。
【0063】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0064】
10 情報処理装置
11 量子回路更新部
12 シミュレート部
13 スタビライザーテーブル記憶部
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インタフェース装置
1006 表示装置
1007 入力装置
1008 出力装置