(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-16
(45)【発行日】2024-10-24
(54)【発明の名称】情報処理装置、量子回路生成方法および量子回路生成プログラム
(51)【国際特許分類】
G06N 10/00 20220101AFI20241017BHJP
G06N 10/60 20220101ALI20241017BHJP
G06N 10/20 20220101ALI20241017BHJP
【FI】
G06N10/00
G06N10/60
G06N10/20
(21)【出願番号】P 2023542136
(86)(22)【出願日】2021-08-19
(86)【国際出願番号】 JP2021030458
(87)【国際公開番号】W WO2023021666
(87)【国際公開日】2023-02-23
【審査請求日】2024-01-18
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】森田 幹雄
【審査官】真木 健彦
(56)【参考文献】
【文献】特開2020-144400(JP,A)
【文献】特開2020-201566(JP,A)
【文献】特開2006-195587(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
(57)【特許請求の範囲】
【請求項1】
複数のパウリ演算子の結合によってそれぞれ示される複数の射影演算子を示す演算子情報と、量子デバイスに含まれる複数の量子ビットの接続関係を示す配置情報とを記憶する記憶部と、
前記演算子情報が示す前記複数の射影演算子に基づいて、前記複数の量子ビットに対応する複数の行と前記複数の射影演算子に対応する複数の列とを含む行列を生成し、行操作によって前記行列を対角行列に変換する対角化であって、前記行操作は、前記配置情報が示す前記接続関係に基づいて、前記複数の行の中から2つの行を選択し、前記2つの行のうちの一方の行を用いて他方の行を更新することを含む対角化を実行し、前記対角化で行われた前記行操作に基づいて、前記量子デバイスに対するゲート操作を示す量子回路を生成する処理部と、
を有する情報処理装置。
【請求項2】
前記行操作で選択される前記2つの行は、前記複数の量子ビットのうち前記量子デバイスにおいて相互に接続されている2つ量子ビットに対応する、
請求項1記載の情報処理装置。
【請求項3】
前記複数の量子ビットは、第1の量子ビットと、前記第1の量子ビットに接続された第2の量子ビットと、前記第2の量子ビットに接続され前記第1の量子ビットに接続されていない第3の量子ビットとを含み、
前記対角化は、前記複数の行のうち前記第1の量子ビットに対応する第1の行と前記第3の量子ビットに対応する第3の行とが、同じ列に非ゼロ要素を含む場合、前記第1の行と前記第2の量子ビットに対応する第2の行との間の第1の行操作と、前記第2の行と前記第3の行との間の第2の行操作とによって、前記第3の行の非ゼロ要素を削除する、
請求項1記載の情報処理装置。
【請求項4】
前記複数の量子ビットは、第1の量子ビットと、前記第1の量子ビットからのホップ数が異なる2以上の第2の量子ビットとを含み、
前記対角化は、前記複数の行のうち前記第1の量子ビットに対応する第1の行と前記2以上の第2の量子ビットに対応する2以上の第2の行とが、同じ列に非ゼロ要素を含む場合、前記2以上の第2の行のうち前記ホップ数が最大の第2の量子ビットに対応する第2の行から優先的に、前記非ゼロ要素を消去するための行操作を行う、
請求項1記載の情報処理装置。
【請求項5】
複数のパウリ演算子の結合によってそれぞれ示される複数の射影演算子に基づいて、量子デバイスに含まれる複数の量子ビットに対応する複数の行と前記複数の射影演算子に対応する複数の列とを含む行列を生成し、
行操作によって前記行列を対角行列に変換する対角化であって、前記行操作は、前記量子デバイスにおける前記複数の量子ビットの接続関係に基づいて、前記複数の行の中から2つの行を選択し、前記2つの行のうちの一方の行を用いて他方の行を更新することを含む対角化を実行し、
前記対角化で行われた前記行操作に基づいて、前記量子デバイスに対するゲート操作を示す量子回路を生成する、
処理をコンピュータが実行する量子回路生成方法。
【請求項6】
複数のパウリ演算子の結合によってそれぞれ示される複数の射影演算子に基づいて、量子デバイスに含まれる複数の量子ビットに対応する複数の行と前記複数の射影演算子に対応する複数の列とを含む行列を生成し、
行操作によって前記行列を対角行列に変換する対角化であって、前記行操作は、前記量子デバイスにおける前記複数の量子ビットの接続関係に基づいて、前記複数の行の中から2つの行を選択し、前記2つの行のうちの一方の行を用いて他方の行を更新することを含む対角化を実行し、
前記対角化で行われた前記行操作に基づいて、前記量子デバイスに対するゲート操作を示す量子回路を生成する、
処理をコンピュータに実行させる量子回路生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、量子回路生成方法および量子回路生成プログラムに関する。
【背景技術】
【0002】
量子コンピュータの用途の1つに、変分量子固有値ソルバ(VQE:Variational Quantum Eigensolver)という量子化学計算がある。量子化学計算は、シュレーディンガー方程式に基づいて分子状態を推定する分子シミュレーションである。VQEは、変分原理と量子力学とに基づいて、分子状態に関する最適な固有値を算出する。
【0003】
VQEは、量子デバイスに含まれる複数の量子ビットを用いて特定の量子状態を再現する。VQEは、複数の量子ビットに対して特定の射影演算子に相当するゲート操作を行うことで、その量子状態のもとでエネルギーなどの測定値を求める。VQEは、1回の量子状態から、複数の射影演算子に対応する複数の測定値を並列に求めることがある。
【0004】
量子デバイスに実行させる一連のゲート操作は、量子回路によって規定される。量子回路は、量子演算の手順を示すプログラムに相当する。量子回路は、制御ノット(CNOT:Controlled NOT)ゲートや制御Z(CZ:Controlled Z)ゲートなどの量子ゲートを含む。VQEに用いられる量子回路は、量子状態を生成する生成回路と、生成された量子状態から複数の測定値を算出する測定回路とを含むことがある。
【0005】
測定回路の構造は、複数の射影演算子の仕様に基づいて決定される。各射影演算子は、2以上のパウリ演算子に分解され得る。パウリ演算子は、量子ビットに適用される単位演算子であり、パウリX演算子、パウリY演算子およびパウリZ演算子を含む。そこで、複数の射影演算子の仕様から測定回路の量子ゲートを生成する技術が提案されている。
【0006】
なお、量子ハミルトニアンに含まれる複数のパウリ文字列からパウリグラフを生成し、同時観測可能性に基づいて一部のノードを統合した統合パウリグラフを生成し、統合パウリグラフに基づいて量子回路を設計するコンピュータが提案されている。また、量子回路を表すパラメータの初期値を出力する古典コンピュータと、初期値に応じてVQEを用いた量子計算を実行し、エネルギー計算のための量子回路を表すパラメータを生成する量子コンピュータとを含むハイブリッドシステムが提案されている。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2020-144400号公報
【文献】特開2020-187451号公報
【非特許文献】
【0008】
【文献】Wakaki Hattori and Shigeru Yamashita, "Quantum Circuit Optimization by Changing the Gate Order for 2D Nearest Neighbor Architectures", Proc. of the 10th International Conference on Reversible Computation (RC 2018), pp. 228-243, September 2018
【文献】Pranav Gokhale, Olivia Angiuli, Yongshan Dign, Kaiwen Gui, Teague Tomesh, Martin Suchara, Margaret Martonosi and Frederic T. Chong, "Minimizing State Preparations in Variational Quantum Eigensolver by Partitioning into Commuting Families", arXiv:1907.13623, July 2019
【発明の概要】
【発明が解決しようとする課題】
【0009】
量子デバイスでは、物理的制約により、各量子ビットが全ての他の量子ビットと接続されているとは限らない。そのため、CNOTゲートやCZゲートなど2入力の量子ゲートは、接続されていない2つの量子ビットに直接適用できないことがある。この点、射影演算子の仕様から量子回路を生成する従来技術は、量子ビットの接続関係の制約のもとで、効率性の高い量子回路を生成することが難しいことがある。
【0010】
例えば、1つの方法として、まず量子ビットの接続関係を考慮せずに量子回路を生成し、接続関係の制約を満たすように、2つの量子ビットの値を入れ替えるスワップゲートを量子回路に挿入する方法も考えられる。しかし、後からスワップゲートを挿入する方法では、量子ゲートが多い非効率な量子回路が生成されることがある。そこで、1つの側面では、本発明は、効率性の高い量子回路を生成することを目的とする。
【課題を解決するための手段】
【0011】
1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。記憶部は、複数のパウリ演算子の結合によってそれぞれ示される複数の射影演算子を示す演算子情報と、量子デバイスに含まれる複数の量子ビットの接続関係を示す配置情報とを記憶する。処理部は、演算子情報が示す複数の射影演算子に基づいて、複数の量子ビットに対応する複数の行と複数の射影演算子に対応する複数の列とを含む行列を生成する。処理部は、行操作によって行列を対角行列に変換する対角化であって、行操作は、配置情報が示す接続関係に基づいて、複数の行の中から2つの行を選択し、2つの行のうちの一方の行を用いて他方の行を更新することを含む対角化を実行する。処理部は、対角化で行われた行操作に基づいて、量子デバイスに対するゲート操作を示す量子回路を生成する。
【0012】
また、1つの態様では、コンピュータが実行する量子回路生成方法が提供される。また、1つの態様では、コンピュータに実行させる量子回路生成プログラムが提供される。
【発明の効果】
【0013】
1つの側面では、効率性の高い量子回路が生成される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【0014】
【
図1】第1の実施の形態の情報処理装置を説明するための図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】情報処理装置のソフトウェア構造例を示す図である。
【
図4】測定回路を含む量子回路の例を示す図である。
【
図5】スタビライザー行列を用いた測定回路の第1の設計例を示す図である。
【
図8】スタビライザー行列を用いた測定回路の第2の設計例を示す図である。
【
図10】量子回路生成の手順例を示すフローチャートである。
【
図11】行列対角化の手順例を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0016】
図1は、第1の実施の形態の情報処理装置を説明するための図である。
第1の実施の形態の情報処理装置10は、量子コンピュータに実行させる一連のゲート操作を規定した量子回路を生成する。量子コンピュータは、例えば、エラー訂正のない中規模量子コンピュータであるNISQ(Noisy Intermediate-Scale Quantum Computer)である。情報処理装置10は、いわゆる古典コンピュータであってもよい。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータ、量子回路生成装置または設計装置と呼ばれてもよい。
【0017】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0018】
記憶部11は、演算子情報13および配置情報14を記憶する。演算子情報13は、同一の量子状態から異なる測定値を算出する複数の射影演算子を示す。情報処理装置10が生成する量子回路は、VQEに用いられてもよい。VQEは、ある量子状態に対して複数の射影演算子を並列に作用させて複数の測定値を算出し、それら複数の測定値を係数で重み付けした和を、その量子状態におけるエネルギーとして算出する。VQEは、量子状態を変えながらエネルギーを算出して、エネルギーが最小になる量子状態を探索する。
【0019】
複数の射影演算子はそれぞれ、複数のパウリ演算子の結合によって表現される。パウリ演算子は、量子ビットに対する単位演算子であり、パウリX演算子とパウリY演算子とパウリZ演算子を含む。パウリX演算子は、ビット反転に相当する。パウリY演算子は、ビット反転と位相反転の組み合わせに相当する。パウリZ演算子は、位相反転に相当する。
【0020】
複数の射影演算子はそれぞれ、パウリ演算子の列を示すパウリ文字列によって表現されてもよい。パウリ文字列の各文字は、X、YまたはZである。パウリ文字列の長さは、量子ビットの個数と同じであってもよい。長さの調整のため、パウリ文字列は、恒等写像を示す単位行列Iを含んでもよい。例えば、射影演算子O1がXXXX、射影演算子O2がXXYY、射影演算子O3がXYXY、射影演算子O4がYXXYである。
【0021】
配置情報14は、量子デバイスに含まれる複数の量子ビットの接続関係を示す。量子デバイスに含まれる各量子ビットは、物理的制約により、他の全ての量子ビットと接続されているとは限らず、一部の量子ビットとのみ接続されていることがある。2入力の量子ゲートは、接続されている2つの量子ビットに対しては実行可能である一方、接続されていない2つの量子ビットに対しては実行不能であることがある。
【0022】
複数の量子ビットは、量子デバイスの中で格子状に配置されていることがある。例えば、量子デバイスは、格子状に配置された量子ビットq0,q1,q2,q3を含む。量子ビットq0,q1が相互に接続され、量子ビットq1,q2が相互に接続され、量子ビットq2,q3が相互に接続され、量子ビットq0,q3が相互に接続されている。量子ビットq0,q2は接続されておらず、量子ビットq1,q3は接続されていない。
【0023】
配置情報14は、量子ビットに対応するノードと接続に対応するエッジとを含む無向グラフによって表現されてもよい。また、配置情報14は、量子ビットに対応する行および列を含み、接続されていない量子ビットのペアが0であり、接続されている量子ビットのペアが1である隣接行列によって表現されてもよい。
【0024】
処理部12は、演算子情報13が示す複数の演算子に基づいて行列15を生成する。行列15は、いわゆるスタビライザー行列に含まれるX行列であってもよい。行列15は、複数の量子ビットに対応する複数の行と、複数の射影演算子に対応する複数の列とを含む。例えば、行列15は、量子ビットq0,q1,q2,q3に対応する4つの行と、射影演算子O1,O2,O3,O4に対応する4つの列とを含む。行列15に含まれる各要素は、例えば、パウリ文字列から導出される0または1のフラグである。
【0025】
処理部12は、1以上の行操作を通じて行列15を対角行列16に変換する対角化を実行する。対角行列16は、対角要素が非ゼロであり非対角要素が0である行列である。例えば、対角行列16は、対角要素が1であり非対角要素が0である単位行列である。対角化で行われる行操作は、配置情報14が示す接続関係に基づいて2つの行を選択し、選択された2つの行のうちの一方の行を用いて他方の行を更新することを含む。
【0026】
行操作は、例えば、一方の行を他方の行に加算する。各要素が0または1のフラグである場合、2つの要素の加算は排他的論理和に相当する。対角化は、いわゆるガウスの消去法または掃き出し法と呼ばれるアルゴリズムに従って実行されてもよい。ただし、行操作が行われる2つの行は、複数の量子ビットの間の接続関係の制約のもとで選択される。例えば、処理部12は、相互に接続されている2つの量子ビットに対応する2つの行を選択し、接続されていない2つの量子ビットに対応する2つの行は選択しない。
【0027】
例えば、処理部12は、量子ビットq0に対応する行#0の(1,1,1,1)を用いて、量子ビットq3に対応する行#3の(0,1,1,1)を(1,0,0,0)に更新する。続けて、処理部12は、行#3の(1,0,0,0)を用いて、行#0の(1,1,1,1)を(0,1,1,1)に更新する。特定のアルゴリズムに従って、このような行操作を繰り返すことで、行列15が対角行列16に変換される。
【0028】
ここで、量子ビットq0に対応する行#0と量子ビットq2に対応する行#2とが、同じ列に非ゼロ要素を含むことがある。この場合であっても、量子ビットq0,q2が接続されていないため、行#0,#2の間で直接的に行演算を行うことが制限されることがある。その場合、処理部12は、量子ビットq0,q1に対応する行#0,#1の行演算と、量子ビットq1,q2に対応する行#1,#2の行演算とを組み合わせて、行#0,#2の行演算と同等の演算結果を実現してもよい。
【0029】
また、基準の量子ビットに対応する行と、2以上の他の量子ビットに対応する2以上の他の行とが、同じ列に非ゼロ要素を含むことがある。この場合、処理部12は、2以上の量子ビットそれぞれについて基準の量子ビットからのホップ数を算出し、ホップ数が最大の量子ビットに対応する行を優先的に選択してもよい。ホップ数が最大の量子ビットは、基準の量子ビットから最も遠いものである。処理部12は、ホップ数が最大である量子ビットに対応する行から優先的に、非ゼロ要素を消去するように行演算を実行してもよい。
【0030】
処理部12は、対角化で行われた1以上の行操作に基づいて、量子デバイスに対する1以上のゲート操作を示す量子回路17を生成する。量子回路17は、複数の量子ビットに対応する複数のラインを含み、ライン上に配置された1以上の量子ゲートを含む。量子ゲートが示すゲート操作が、左から右に向かう順序で実行される。
【0031】
量子ゲートには、CNOTゲートが含まれる。例えば、処理部12は、行#0を用いて行#3を更新する行操作から、量子ビットq0が制御ビットであり量子ビットq3が標的ビット(ターゲットビット)であるCNOTゲートを生成する。同様に、処理部12は、行#3を用いて行#0を更新する行操作から、量子ビットq3が制御ビットであり量子ビットq0が標的ビットであるCNOTゲートを生成する。CNOTゲートは、制御ビットが0の場合は標的ビットを変更せず、制御ビットが1の場合に標的ビットのビット反転を行う。ビット反転は、標的ビットにXゲートを適用することに相当する。
【0032】
処理部12は、生成された量子回路17を出力する。処理部12は、量子回路17を不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、他の情報処理装置に送信してもよい。また、処理部12は、量子回路17に基づいて、情報処理装置10に接続された量子デバイスに対してゲート操作を行ってもよい。
【0033】
以上説明したように、第1の実施の形態の情報処理装置10は、複数の射影演算子に基づいて、量子状態から複数の測定値を算出するための量子回路17を生成する。これにより、情報処理装置10によって量子回路17の設計が支援され、量子回路17の設計の負担が軽減される。また、情報処理装置10は、複数の射影演算子から行列15を生成し、行列15を対角行列16に変換する対角化を通じて、量子回路17を決定する。これにより、情報処理装置10は、様々な射影演算子に対して画一的方法で量子回路17を生成することができ、量子回路17を高速に生成することができる。
【0034】
また、情報処理装置10は、行列15の対角化処理の最適化を通じて、量子回路17を最適化することができる。これにより、量子ゲートの少ない高効率な量子回路17が生成される。また、情報処理装置10は、行列15の対角化の中で、複数の量子ビットの接続関係の制約に従って、行操作を行う2つの行を選択する。これにより、射影演算子の仕様を満たすための量子ゲートの決定と接続関係の制約を満たすための量子ゲートの決定を別個に行う場合と比べて、量子回路17の生成が高速化される。
【0035】
また、量子ゲートの少ない高効率な量子回路17が生成される。特に、射影演算子の仕様を満たす量子回路を生成した後、接続関係の制約を満たすようにスワップゲートを後から挿入する場合と比べて、量子回路17の量子ゲート数が減少する。その結果、量子回路17を実行する際の実行時間が短縮する。また、射影演算子のサイズが大きい場合であっても、量子ビットの持続時間(コヒーレンス時間)内に量子計算が完了する。また、量子ゲート数が少ないことで、エラー発生確率が低下する。
【0036】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0037】
第2の実施の形態の情報処理装置100は、VQEに用いられる量子回路を生成する。情報処理装置100には、量子デバイス30が接続されている。量子デバイス30は、量子コンピュータに相当する。情報処理装置100は、いわゆる古典コンピュータに相当する。情報処理装置100は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置100は、コンピュータ、量子回路生成装置または設計装置と呼ばれてもよい。情報処理装置100は、第1の実施の形態の情報処理装置10に対応する。
【0038】
情報処理装置100は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106、通信インタフェース107およびデバイスインタフェース108を有する。CPU101は、前述の処理部12に対応する。RAM102またはHDD103は、前述の記憶部11に対応する。
【0039】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータの少なくとも一部をRAM102にロードし、プログラムを実行する。情報処理装置100は、複数のプロセッサを有してもよい。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0040】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。情報処理装置100は、RAM以外の種類の揮発性メモリを有してもよい。
【0041】
HDD103は、OS(Operating System)、ミドルウェア、アプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0042】
GPU104は、CPU101と連携して画像を生成し、情報処理装置100に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。なお、情報処理装置100に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
【0043】
入力インタフェース105は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。情報処理装置100に複数の入力デバイスが接続されてもよい。
【0044】
媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0045】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0046】
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0047】
デバイスインタフェース108は、量子デバイス30に接続されている。デバイスインタフェース108は、量子デバイス30にゲート操作を指示する。量子デバイス30は、複数の量子ビットを含む。複数の量子ビットの中には、その物理配置に基づいて、接続されている量子ビットのペアと接続されていない量子ビットのペアとがある。2入力の量子ゲート(2量子ゲート)は、接続されている量子ビットのペアに対して実行可能であり、接続されていない量子ビットのペアに対して実行不能である。
【0048】
量子デバイス30は、量子ビット31,32,33,34(q0,q1,q2,q3)を含む。量子ビット31,32,33,34は、格子状に配置されている。量子ビット31,32が接続され、量子ビット32,33が接続され、量子ビット33,34が接続され、量子ビット31,34が接続されている。量子ビット31,33は接続されておらず、量子ビット32,34は接続されていない。
【0049】
ここで、量子化学計算であるVQEについて説明する。量子化学計算は、シュレーディンガー方程式に基づいて分子状態を推定する分子シミュレーションである。VQEは、変分原理と量子力学とに基づいて、分子状態に関する最適な固有値を算出する。VQEは、様々な量子状態のエネルギーを測定し、エネルギーを最小化する量子状態を求める。
【0050】
エネルギーは、数式(1)に示すハミルトニアンHを、射影演算子として量子状態に適用することで算出される。数式(1)において、Oiは分割された射影演算子としての一般化パウリ行列である。一般化パウリ行列Oiは、単位演算子であるパウリ演算子を並べたパウリ文字列として表現される。パウリ文字列の長さ(文字数)は、量子ビット数と同じである。長さの調整のためにパウリ文字列が単位行列Iを含んでもよい。hiはOiの重みを示す係数である。Nは一般化パウリ行列の個数であり、量子ビット数と同じである。よって、ハミルトニアンHは、一般化パウリ行列Oiの重み付き和である。VQEでは、一般化パウリ行列Oiと係数hiがユーザから指定される。
【0051】
【0052】
VQEは、N個の量子ビットを用いて量子状態ψ(θ)を作り出し、エネルギーEを測定する。パラメータθを変えることで異なる量子状態ψ(θ)が生成される。エネルギーEは、数式(2)に示すように、量子状態ψ(θ)にハミルトニアンHを適用した期待値である。数式(1)から、エネルギーEは、量子状態ψ(θ)に一般化パウリ行列Oiを適用した期待値を、係数hiで重み付けした和である。VQEは、量子状態ψ(θ)を繰り返し生成し、N個の一般化パウリ行列Oiそれぞれについて、測定値<ψ(θ)|Oi|ψ(θ)>を繰り返し算出してその平均を期待値として算出する。VQEは、N個の一般化パウリ行列Oiに対応するN個の期待値の重み付き和をエネルギーEと定義する。
【0053】
【0054】
量子状態ψ(θ)から一般化パウリ行列Oiの測定値を算出するため、情報処理装置100は、量子デバイス30に対してゲート操作を指示する。ここで、量子回路に使用することができる各種の量子ゲートについて説明する。
【0055】
量子ゲートには、数式(3)に示すパウリXゲート、パウリYゲートおよびパウリZゲートが含まれる。パウリXゲート、パウリYゲートおよびパウリZゲートは、1個の量子ビットに作用する1量子ゲートである。パウリXゲートは、X軸を中心とした180度の回転であり、ビット反転に相当する。パウリYゲートは、Y軸を中心とした180度の回転であり、ビット反転と位相反転の組み合わせに相当する。パウリZゲートは、Z軸を中心とした180度の回転であり、位相反転に相当する。パウリYゲートは、パウリXゲートとパウリZゲートの両方の性質を併せもっている。
【0056】
【0057】
また、量子ゲートには、数式(4)に示すアダマールゲートHおよび位相シフトゲートSが含まれる。アダマールゲートHおよび位相シフトゲートSは、1個の量子ビットに作用する1量子ゲートである。アダマールゲートHは、X軸とZ軸の間の45度の軸を中心とした180度の回転である。位相シフトゲートSは、90度の位相回転である。
【0058】
【0059】
また、量子ゲートには、数式(5)に示すCNOTゲートおよびCZゲートが含まれる。CNOTゲートおよびCZゲートは、2個の量子ビットに作用する2量子ゲートである。CNOTゲートは、制御ビットと呼ばれる一方の量子ビットが1である場合、標的ビットと呼ばれる他方の量子ビットにパウリXゲートを適用する。CNOTゲートは、2つの量子ビットの排他的論理和に相当し、2つの量子ビットの加算に相当する。CZゲートは、制御ビットが1である場合、標的ビットにパウリZゲートを適用する。
【0060】
【0061】
次に、情報処理装置100のソフトウェア構造について説明する。
図3は、情報処理装置のソフトウェア構造例を示す図である。
情報処理装置100は、物理配置記憶部121、射影演算子記憶部122および量子回路記憶部123を有する。これらの記憶部は、例えば、RAM102またはHDD103を用いて実現される。また、情報処理装置100は、量子回路生成部124、ゲート操作部125および量子化学計算部126を有する。これらの処理部は、例えば、CPU101およびプログラムを用いて実現される。
【0062】
物理配置記憶部121は、量子デバイス30の物理配置情報を記憶する。物理配置情報は、量子デバイス30の量子ビットの接続関係を示す。物理配置情報は、量子ビットに対応するノードと接続に対応するエッジとを含む無向グラフであってもよい。また、物理配置情報は、量子ビットに対応する行および列を含み、接続されていない量子ビットのペアは0であり、接続されている量子ビットのペアは1である隣接行列であってもよい。
【0063】
射影演算子記憶部122は、射影演算子情報を記憶する。射影演算子情報は、ユーザから指定されたN個の一般化パウリ行列OiおよびN個の係数hiを含む。一般化パウリ行列Oiはそれぞれ、長さNのパウリ文字列によって表される。パウリ文字列の各文字は、X,YまたはZである。ただし、長さ調整のためパウリ文字列がIを含むこともある。
【0064】
量子回路記憶部123は、情報処理装置100が生成した量子回路を記憶する。量子回路は、量子デバイス30が実行するゲート操作の手順を規定したプログラムに相当する。情報処理装置100が生成する量子回路は、VQEのための複数の量子ゲートを含む。後述するように、この量子回路は、量子状態を生成するアンザッツ回路と、N個の一般化パウリ行列に基づく観測を並列に行う測定回路とを含む。
【0065】
量子回路生成部124は、物理配置記憶部121に記憶された物理配置情報と、射影演算子記憶部122に記憶された射影演算子情報とに基づいて、量子回路を生成する。量子回路生成部124は、生成された量子回路を量子回路記憶部123に保存する。後述するように、量子回路生成部124は、N個の一般化パウリ行列を示すN個のパウリ文字列からスタビライザー行列を生成し、スタビライザー行列を用いて測定回路の量子ゲートを決定する。このとき、量子回路生成部124は、スタビライザー行列を対角化するための効率的な手順を判定し、判定した手順に対応する量子ゲートを生成する。
【0066】
ゲート操作部125は、量子回路記憶部123に記憶された量子回路が示すゲート操作を量子デバイス30に対して指示する。ゲート操作部125は、量子デバイス30から測定値を読み出して量子化学計算部126に報告する。
【0067】
量子化学計算部126は、VQEを実行する。量子化学計算部126は、量子状態ψ(θ)のパラメータθを指定して、ゲート操作部125に量子回路の実行を要求し、N個の一般化パウリ行列に対応するN個の測定値を取得する。1つの一般化パウリ行列の1回の測定値は、0または1の二値である。量子化学計算部126は、量子回路の実行を繰り返して測定値を平均化し、N個の一般化パウリ行列に対応するN個の期待値を算出する。
【0068】
量子化学計算部126は、N個の期待値の重み付き和によって、量子状態ψ(θ)に対応するエネルギーEを算出する。量子化学計算部126は、パラメータθを変えながらエネルギーEを算出し、エネルギーEが最小になる量子状態ψ(θ)を探索する。量子化学計算部126は、VQEの実行結果を出力する。量子化学計算部126は、実行結果をHDD103などの不揮発性ストレージに保存してもよいし、表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。
【0069】
次に、情報処理装置100が生成する量子回路について説明する。
図4は、測定回路を含む量子回路の例を示す図である。
第2の実施の形態では、説明を簡単にするためN=4の例を挙げる。量子回路は、アンザッツ回路131、測定回路132および測定ゲート133,134,135,136を含む。アンザッツ回路131は、パラメータθに応じた量子状態ψ(θ)を表すように、量子ビット31,32,33,34(q
0,q
1,q
2,q
3)を初期化する。
【0070】
測定回路132は、一般化パウリ行列O1,O2,O3,O4に基づく量子状態ψ(θ)の観測を並列に実行する。測定回路132は、量子ビット31,32,33,34に対して、一般化パウリ行列O1,O2,O3,O4の仕様に応じたゲート操作を実行する。これにより、量子ビット31,32,33,34は、一般化パウリ行列O1,O2,O3,O4の測定値を保持する。例えば、量子ビット31が一般化パウリ行列O1の測定値を保持し、量子ビット32が一般化パウリ行列O2の測定値を保持し、量子ビット33が一般化パウリ行列O3の測定値を保持し、量子ビット34が一般化パウリ行列O4の測定値を保持する。ただし、測定回路132の設計によって、量子ビット31,32,33,34と一般化パウリ行列O1,O2,O3,O4との対応関係が変わることがある。
【0071】
測定ゲート133,134,135,136はそれぞれ、量子ビットから0または1の二値を読み出す。測定ゲート133は量子ビット31の値を読み出し、測定ゲート134は量子ビット32の値を読み出し、測定ゲート135は量子ビット33の値を読み出し、測定ゲート136は量子ビット34の値を読み出す。
【0072】
ここで、測定回路132は、一般化パウリ行列の仕様から自動的に生成される。ただし、同じ一般化パウリ行列からでも、生成アルゴリズムによって測定回路132の量子ゲート数が異なる。通常、測定回路の量子ゲートが多いほど、直列に並んだ量子ゲートの個数(量子回路の深さまたは長さと言うこともできる)が大きくなる。
【0073】
量子ゲート1つ当たりの実行時間は数ナノ秒から数百ナノ秒であり、量子回路の深さが大きいほど計算時間が増大する。また、1回の量子計算は量子ビットの持続時間内に完了させることを要するため、量子回路の深さが過大であると量子計算が完了しない可能性がある。また、量子ゲート1つ毎に一定確率でエラーが発生するため、量子回路の深さが大きいほど、量子回路の出力のエラー確率が増大する。
【0074】
このため、量子回路生成部124は、量子ゲートが少ない効率的な測定回路132を生成することが好ましい。以下では、スタビライザー行列を用いて測定回路132を生成する生成アルゴリズムの例を説明し、その後に、測定回路132の量子ゲートが更に少なくなる別の生成アルゴリズムを説明する。スタビライザー行列を用いる生成アルゴリズムについては、例えば、前述の非特許文献2にも記載されている。
【0075】
図5は、スタビライザー行列を用いた測定回路の第1の設計例を示す図である。
ここでは、量子回路生成部124は、射影演算子情報40に対応する測定回路を生成する。射影演算子情報40は、一般化パウリ行列O
1,O
2,O
3,O
4のパウリ文字列を含む。O
1=XXXX,O
2=XXYY,O
3=XYXY,O
4=YXXYである。
【0076】
量子回路生成部124は、2N×Nのスタビライザー行列41を生成する。スタビライザー行列41の上半分のN行はZ行列を形成し、スタビライザー行列41の下半分のN行はX行列を形成する。スタビライザー行列41のN列は、N個のパウリ文字列に対応する。Z行列のN行およびX行列のN行は、N個の量子ビットに対応する。
【0077】
よって、ここで生成されるスタビライザー行列41は、一般化パウリ行列O1,O2,O3,O4に対応する列#0,#1,#2,#3をもつ。また、スタビライザー行列41に含まれるZ行列およびX行列は、量子ビット31,32,33,34(q0,q1,q2,q3)に対応する行#0,#1,#2,#3をもつ。
【0078】
スタビライザー行列41の各要素は、0または1のフラグである。量子回路生成部124は、一般化パウリ行列Ojに含まれるi番目の文字に基づいて、Z行列の(i,j)の値とX行列の(i,j)の値を決定する。一般化パウリ行列Ojのi番目がXである場合、Z(i,j)=0,X(i,j)=1である。一般化パウリ行列Ojのi番目がYである場合、Z(i,j)=1,X(i,j)=1である。一般化パウリ行列Ojのi番目がZである場合、Z(i,j)=1,X(i,j)=0である。なお、一般化パウリ行列Ojのi番目がIである場合、Z(i,j)=0,X(i,j)=0であってもよい。
【0079】
次に、量子回路生成部124は、Z行列およびX行列の階数(ランク)を算出し、Z行列またはX行列の階数が最大になるように、Z行列の行#iとX行列の行#iとを入れ替える。ここでは、量子回路生成部124は、Z行列の行#1,#2,#3とX行列の行#1,#2,#3とを入れ替える。これにより、スタビライザー行列42が生成される。行#iの入れ替えは、量子ビットqiへのアダマールゲートの実行に相当する。
【0080】
次に、量子回路生成部124は、ガウスの消去法によってX行列を対角行列に変換する。ガウスの消去法は、掃き出し法と呼ばれることもある。各要素が0または1の二値であるため、対角化されたX行列は単位行列である。すなわち、対角化されたX行列は、対角要素が1であり非対角要素が0の行列である。
【0081】
X行列に対するガウスの消去法は、基本変形として、ある行を別の行に加算する行操作を繰り返す。各要素が0または1の二値であるため、2つの行の和は2つの行の排他的論理和に相当する。このとき、量子回路生成部124は、X行列とは逆方向の加算をZ行列対して実行する。量子回路生成部124は、X行列の行#iを行#jに加算した場合、Z行列の行#jを行#iに加算する。X行列の行#iを行#jに加算する行操作は、量子ビットqiに基づいて量子ビットqjを更新するCNOTゲートに相当する。
【0082】
ガウスの消去法の間、量子回路生成部124は、スタビライザー行列の列を入れ替えてもよい。列の入れ替えは、測定回路の構造に影響を与えない。ただし、列の入れ替えは、測定回路の出力時点の量子ビットq0,q1,q2,q3と一般化パウリ行列O1,O2,O3,O4との対応関係を変化させる。
【0083】
列#iと列#jを入れ替えると、量子ビットqiが一般化パウリ行列Ojに対応し、量子ビットqjが一般化パウリ行列Oiに対応する。そのため、量子回路生成部124は、スタビライザー行列の列を入れ替えた場合、一般化パウリ行列O1,O2,O3,O4の順序を記録しておく。量子化学計算部126は、量子デバイス30から4つの測定値を読み出すと、上記の情報に基づいて一般化パウリ行列O1,O2,O3,O4と4つの測定値との対応関係を解釈し、それら4つの測定値を並び替える。
【0084】
ここでは、量子回路生成部124は、X行列の行#1を行#2に加算し、X行列の行#2を行#1に加算し、X行列の行#1を行#2に加算する。この間、量子回路生成部124は、Z行列の行#2を行#1に加算し、Z行列の行#1を行#2に加算し、Z行列の行#2を行#1に加算する。これにより、スタビライザー行列43が生成される。
【0085】
更に、量子回路生成部124は、X行列の行#1を行#3に加算する。この間、量子回路生成部124は、Z行列の行#3を行#1に加算する。これにより、スタビライザー行列44が生成される。更に、量子回路生成部124は、X行列の行#2を行#3に加算する。この間、量子回路生成部124は、Z行列の行#3を行#2に加算する。これにより、スタビライザー行列45が生成される。
【0086】
更に、量子回路生成部124は、X行列の行#3を行#1に加算し、X行列の行#2を行#1に加算し、X行列の行#1を行#0に加算する。この間、量子回路生成部124は、Z行列の行#0を行#3に加算し、Z行列の行#0を行#2に加算し、Z行列の行#0を行#1に加算する。これにより、スタビライザー行列46が生成される。スタビライザー行列46に含まれるX行列は、対角行列である。
【0087】
次に、量子回路生成部124は、Z行列をゼロ行列に変換する。ゼロ行列への変換には、対角要素Z(i,i)を0にする操作と、非対角要素Z(i,j)とZ(j,i)を0にする操作とが用いられる。Z(i,i)=0は、量子ビットqiへの位相シフトゲートの実行に相当する。Z(i,j)=0かつZ(j,i)=0は、量子ビットqi,qjへのCZゲートの実行に相当する。なお、位相シフトゲートおよびCZゲートのZ行列に対する効果は、X行列が対角化されていることが前提である。
【0088】
ここでは、量子回路生成部124は、Z(0,3)=0,Z(3,0)=0の操作と、Z(1,3)=0,Z(3,1)=0の操作と、Z(2,3)=0,Z(3,2)=0の操作とを実行する。これにより、スタビライザー行列47が生成される。スタビライザー行列47に含まれるZ行列は、ゼロ行列である。
【0089】
次に、量子回路生成部124は、Z行列とX行列の全ての行を入れ替える。前述の通り、行#iの入れ替えは、量子ビットqiへのアダマールゲートの実行に相当する。これにより、スタビライザー行列48が生成される。スタビライザー行列48に含まれるZ行列は対角行列であり、スタビライザー行列48に含まれるX行列はゼロ行列である。
【0090】
図6は、測定回路の第1の例を示す図である。
量子回路生成部124は、スタビライザー行列41を対角化する上記の操作に対応する量子ゲートを生成することで、測定回路を生成する。
図5のアルゴリズムによって生成された測定回路は、量子ゲート50~67を含む。
【0091】
量子ゲート50,51,52は、量子ビットq1,q2,q3へのアダマールゲートである。量子ゲート53は、量子ビットq1からq2へのCNOTゲートである。量子ゲート54は、量子ビットq2からq1へのCNOTゲートである。量子ゲート55は、量子ビットq1からq2へのCNOTゲートである。量子ゲート56は、量子ビットq1からq3へのCNOTゲートである。量子ゲート57は、量子ビットq2からq3へのCNOTゲートである。量子ゲート58は、量子ビットq3からq0へのCNOTゲートである。量子ゲート59は、量子ビットq2からq0へのCNOTゲートである。量子ゲート60は、量子ビットq1からq0へのCNOTゲートである。量子ゲート61は、量子ビットq0,q3へのCZゲートである。量子ゲート62は、量子ビットq1,q3へのCZゲートである。量子ゲート63は、量子ビットq2,q3へのCZゲートである。量子ゲート64,65,66,67は、量子ビットq0,q1,q2,q3へのアダマールゲートである。
【0092】
しかし、この測定回路は、量子デバイス30における量子ビット間の接続関係の制約を満たしておらず、量子デバイス30では実行可能でない。例えば、量子ゲート56,62は、量子ビットq1,q3が接続されていないため実行可能でない。量子ゲート59は、量子ビットq0,q2が接続されていないため実行可能でない。
【0093】
そこで、量子回路生成部124は、スタビライザー行列に基づいて生成された測定回路を、物理配置情報を参照して修正する。ここでは、量子回路生成部124は、2つの量子ビットの値を入れ替えるスワップゲートを、測定回路に挿入する。スワップゲートは、3つのCNOTゲートを用いて実装されることがある。量子ビットqi,qjのスワップゲートは、量子ビットqiからqjへのCNOTゲートと、量子ビットqjからqiへのCNOTゲートと、量子ビットqiからqjへのCNOTゲートと等価である。
【0094】
ここでは、量子回路生成部124は、量子ゲート55と量子ゲート56の間に量子ゲート68を挿入する。また、量子回路生成部124は、量子ゲート57と量子ゲート58の間に量子ゲート69を挿入する。また、量子回路生成部124は、量子ゲート58と量子ゲート59の間に量子ゲート70を挿入する。また、量子回路生成部124は、量子ゲート59と量子ゲート60の間に量子ゲート71を挿入する。また、量子回路生成部124は、量子ゲート61と量子ゲート62の間に量子ゲート72を挿入する。
【0095】
量子ゲート68,69,70,71,72は、スワップゲートである。なお、スワップゲートの挿入によって量子ビットの実質的位置が変化するため、量子回路図では、他の量子ゲートが配置されるラインも変化している。
【0096】
これによって、射影演算子情報40に対応する測定回路が生成される。ただし、スタビライザー行列に基づいて生成された測定回路に、事後的にスワップゲートが挿入されている。このため、スタビライザー行列の対角化を最適化しても、最終的に生成される測定回路が量子ゲートの少ない効率的な量子回路にならないことがある。
図6の例では、X行列の対角化部分のCNOTゲート数は20である。
【0097】
図7は、測定回路の第2の例を示す図である。
ここでは、前述の非特許文献1の生成アルゴリズムを用いて生成される測定回路の例を挙げる。この測定回路も、量子デバイス30の接続関係の制約を満たすために、スワップゲート73,74,75が挿入されている。
図6に示したX行列の対角化部分に相当する区間のCNOTゲート数は14である。
【0098】
そこで、第2の実施の形態の情報処理装置100は、測定回路の量子ゲートが更に減少するように生成アルゴリズムを修正する。情報処理装置100は、
図5で説明したガウスの消去法の中で、量子デバイス30の接続関係の制約を満たすように、加算操作を行うX行列の行を適切に選択する。これによって、スタビライザー行列の対角化を通じて生成される測定回路が接続関係の制約を既に満たしており、情報処理装置100は事後的に測定回路を修正しなくてよい。そのため、スタビライザー行列の対角化を最適化することで、量子ゲートの少ない高効率な測定回路を生成することが可能となる。
【0099】
図8は、スタビライザー行列を用いた測定回路の第2の設計例を示す図である。
量子回路生成部124は、射影演算子情報140に基づいてスタビライザー行列142を生成する。射影演算子情報140は、
図5の射影演算子情報40と同じである。スタビライザー行列142は、
図5のスタビライザー行列41と同じである。量子回路生成部124は、スタビライザー行列142のZ行列またはX行列の階数が最大になるように、Z行列の行#iとX行列の行#iを入れ替える。これにより、
図5のスタビライザー行列42と同じスタビライザー行列143が生成される。
【0100】
次に、量子回路生成部124は、物理配置情報141を参照して、スタビライザー行列143のX行列に対してガウスの消去法を実行し、X行列を対角化する。物理配置情報141は、量子ビットq0,q1,q2,q3の接続関係を示している。量子回路生成部124は、接続されている量子ビットのペアに対応する行のペアに限定して加算操作を行うことで、接続関係の制約を満たすような手順でX行列を対角化する。
【0101】
量子回路生成部124は、一般化パウリ行列O1,O2,O3,O4に対応する4つの列を順に選択していく。量子回路生成部124は、選択した列の中から、1を残す要素(対角要素にするもの)を選択する。このとき、量子回路生成部124は、X行列を効率的に対角化できるように、スタビライザー行列の列を入れ替えてもよい。量子回路生成部124は、選択した要素に対応する量子ビットを、中心ビットとして選択する。
【0102】
量子回路生成部124は、物理配置情報141に基づいて、中心ビットと他の量子ビットそれぞれとの間の距離dを算出する。距離dは、一方の量子ビットから他方の量子ビットに到達するまでに経由する接続の個数であり、ホップ数に相当する。
【0103】
量子回路生成部124は、選択した列の中に、中心ビットに相当する要素以外に1の要素が存在する場合、中心ビットに相当する要素が1になり他の要素が0になるように、加算操作を行う。このとき、量子回路生成部124は、距離dが大きい量子ビットに対応する要素から優先的に0になるよう、加算操作を行う。すなわち、量子回路生成部124は、遠い量子ビットから中心ビットに向かって順に、遠い量子ビットの状態を「0」にしつつ状態「1」を中心ビットに近付けていく。
【0104】
ここでは、量子回路生成部124は、スタビライザー行列143から、一般化パウリ行列O1に対応する列#0を選択する。X行列の列#0は、行#0の要素が1で行#1,#2,#3の要素が0であるため対角化済みである。よって、選択された列の処理はスキップされる。次に、量子回路生成部124は、スタビライザー行列143の列#1,#2を入れ替える。これにより、スタビライザー行列144が生成される。列#1,#2を入れ替えたのは、行#1の対角要素を効率的に1にするためである。
【0105】
次に、量子回路生成部124は、スタビライザー行列144から、一般化パウリ行列O3に対応する列#1を選択する。量子回路生成部124は、行#1に対応する量子ビットq1を中心ビットとして選択し、量子ビットq1から最も遠い量子ビットq3に対応する行#3を優先的に処理する。具体的には、量子回路生成部124は、X行列の行#0を行#3に加算し、X行列の行#3を行#0に加算し、X行列の行#1を行#0に加算する。この間、量子回路生成部124は、Z行列の行#3を行#0に加算し、Z行列の行#0を行#3に加算し、Z行列の行#0を行#1に加算する。
【0106】
これにより、スタビライザー行列145が生成される。スタビライザー行列145では、X行列の列#1は、行#1の要素が1で行#0,#2,#3の要素が0であるため対角化済みである。よって、選択された列の処理は終了する。
【0107】
次に、量子回路生成部124は、スタビライザー行列145から、一般化パウリ行列O2に対応する列#2を選択する。量子回路生成部124は、行#2に対応する量子ビットq2を中心ビットとして選択し、量子ビットq2から最も遠い量子ビットq0に対応する行#0を優先的に処理する。具体的には、量子回路生成部124は、X行列の行#2を行#1に加算し、X行列の行#1を行#0に加算し、X行列の行#0を行#1に加算する。この間、量子回路生成部124は、Z行列の行#1を行#2に加算し、Z行列の行#0を行#1に加算し、Z行列の行#1を行#0に加算する。
【0108】
上記の加算操作の後、X(1,2)=1であり、列#2には、中心ビットに対応する要素以外に1の要素が残っている。そこで、量子回路生成部124は、量子ビットq1に対応する行#1を処理する。具体的には、量子回路生成部124は、X行列の行#2を行#1に加算する。この間、量子回路生成部124は、Z行列の行#1を行#2に加算する。これにより、スタビライザー行列146が生成される。スタビライザー行列146では、X行列の列#2は、行#2の要素が1で行#0,#1,#3の要素が0であるため対角化済みである。よって、選択された列の処理は終了する。
【0109】
次に、量子回路生成部124は、スタビライザー行列143の列#0,#1を入れ替え、列#1,#3を入れ替える。これにより、スタビライザー行列147が生成される。スタビライザー行列147に含まれるX行列の対角要素は全て1になっている。
【0110】
次に、量子回路生成部124は、スタビライザー行列147から、最後の列として、一般化パウリ行列O4に対応する列#1を選択する。列#1の対角要素は行#1にあるため、量子回路生成部124は、行#1に対応する量子ビットq1を中心ビットとして選択し、量子ビットq0に対応する行#0を処理する。具体的には、量子回路生成部124は、X行列の行#1を行#0に加算する。この間、量子回路生成部124は、Z行列の行#0を行#1に加算する。これにより、スタビライザー行列148が生成される。
【0111】
スタビライザー行列148に含まれるX行列は対角行列である。よって、ガウスの消去法が終了する。次に、量子回路生成部124は、スタビライザー行列148に含まれるZ行列をゼロ行列に変換する。ここでは、量子回路生成部124は、Z(1,1)=0の操作と、Z(0,1)=0,Z(1,0)=0の操作と、Z(1,2)=0,Z(2,1)=0の操作と、Z(1,3)=0,Z(3,1)=0の操作とを実行する。
【0112】
これにより、スタビライザー行列149が生成される。スタビライザー行列149に含まれるZ行列はゼロ行列であり、スタビライザー行列149に含まれるX行列は対角行列である。量子回路生成部124は、Z行列とX行列を入れ替える。これにより、
図5のスタビライザー行列48と同じスタビライザー行列が生成される。
【0113】
図9は、測定回路の第3の例を示す図である。
量子回路生成部124は、スタビライザー行列142を対角化する上記の操作に対応する量子ゲートを生成することで、測定回路を生成する。
図8のアルゴリズムによって生成された測定回路は、量子ゲート150~169を含む。
【0114】
量子ゲート150,151,152は、量子ビットq1,q2,q3へのアダマールゲートである。量子ゲート153は、量子ビットq0からq3へのCNOTゲートである。量子ゲート154は、量子ビットq3からq0へのCNOTゲートである。量子ゲート155は、量子ビットq1からq0へのCNOTゲートである。量子ゲート156は、量子ビットq2からq1へのCNOTゲートである。量子ゲート157は、量子ビットq1からq0へのCNOTゲートである。量子ゲート158は、量子ビットq0からq1へのCNOTゲートである。量子ゲート159は、量子ビットq2からq1へのCNOTゲートである。量子ゲート160は、量子ビットq1からq0へのCNOTゲートである。
【0115】
量子ゲート161は、量子ビットq1への位相シフトゲートである。量子ゲート162は、量子ビットq0,q1へのCZゲートである。量子ゲート163は、量子ビットq1,q2へのCZゲートである。量子ゲート164は、量子ビットq2,q3へのスワップゲートである。量子ゲート165は、量子ビットq1,q2へのCZゲートである。量子ゲート166,167,168,169は、量子ビットq0,q1,q2,q3へのアダマールゲートである。なお、スタビライザー行列の列を入れ替えているため、出力時点の量子ビットq0,q1,q2,q3は、一般化パウリ行列O3,O4,O1,O2に対応する。
【0116】
X行列の対角化部分のCNOTゲート数は8である。このように、
図6,7と比べてCNOTゲートが少ない高効率の測定回路が生成される。
次に、情報処理装置100の処理手順について説明する。
【0117】
図10は、量子回路生成の手順例を示すフローチャートである。
(S10)量子回路生成部124は、量子デバイス30の量子ビットの接続関係を示す物理配置情報と、N個のパウリ文字列を示す射影演算子情報を読み出す。
【0118】
(S11)量子回路生成部124は、N個のパウリ文字列から、N×NのZ行列とN×NのX行列とを含む2N×Nのスタビライザー行列を生成する。
(S12)量子回路生成部124は、Z行列とX行列との間で行を入れ替えることで、Z行列およびX行列の一方の階数を最大化する。
【0119】
(S13)量子回路生成部124は、ガウスの消去法によってX行列を対角化する。このとき、量子回路生成部124は、物理配置情報が示す接続関係の制約を満たすように、操作対象の行ペアを選択する。行列対角化の詳細は後述する。
【0120】
(S14)量子回路生成部124は、Z行列をゼロ行列に変換する。
(S15)量子回路生成部124は、Z行列とX行列との間で全ての行を入れ替える。
(S16)量子回路生成部124は、ステップS12~S15で行われた行列操作に対応する量子ゲートを含む量子回路を生成し、量子回路を保存する。また、量子回路生成部124は、スタビライザー行列で行われた列の入れ替えに基づいて、N個の量子ビットの測定値とN個のパウリ文字列との対応関係を示す情報を保存する。
【0121】
図11は、行列対角化の手順例を示すフローチャートである。
(S20)量子回路生成部124は、列番号Cを1に初期化し、距離dを量子デバイス30の中の最大距離に初期化し、量子ビット数Nを特定する。列番号Cは、N個の列のうち何個目の列を処理中であるかを示している。
【0122】
(S21)量子回路生成部124は、スタビライザー行列に含まれるN個の列のうち未処理の列を1つ選択する。このとき、量子回路生成部124は、今回の処理で1を残したい行が既に1である列を選択することが好ましい。量子回路生成部124は、スタビライザー行列に含まれる列を入れ替えてもよい。その場合、量子回路生成部124は、列の入れ替えに応じて、N個のパウリ文字列の順序を記録しておく。
【0123】
(S22)量子回路生成部124は、N個の量子ビットのうち、選択された列の中で状態「1」を残す行(対角要素にする行)に対応する量子ビットを中心ビットとして選択する。量子回路生成部124は、量子デバイス30の接続関係から、中心ビットと他のN-1個の量子ビットそれぞれとの間の距離を算出する。
【0124】
(S23)量子回路生成部124は、中心ビットから距離dに、状態「1」の行に対応する量子ビットがあるか判断する。該当する量子ビットがある場合はステップS24に処理が進み、該当する量子ビットがない場合はステップS26に処理が進む。
【0125】
(S24)量子回路生成部124は、数式(6),(7),(8)に規定される行列M1に従って、X行列の行をX行列の別の行に加算する行操作を行う。この行操作は、数式(6),(7),(8)のCNOTゲートによって規定される。数式(6)は、距離dにある量子ビットから中心ビットに向かう連鎖的なCNOTゲートを表す。数式(6),(7),(8)において、CNOTi>jは、中心ビットから距離iにある量子ビットを制御ビットとし、距離jにある量子ビットを標的ビットとするCNOTゲートを表す。
【0126】
c1は、行(i-1)が対角化済みである場合に、中心ビットから遠い量子ビットを制御ビットとし中心ビットから近い量子ビットを標的ビットとするCNOTゲートになる。c2は、量子ビットq(i-1)が0である場合に、中心ビットから遠い量子ビットを制御ビットとし中心ビットから近い量子ビットを標的ビットとするCNOTゲートになる。
【0127】
(S25)量子回路生成部124は、ステップS24におけるX行列の行操作とは逆方向の行操作を、Z行列に対して実行する。X行列の行#iを行#jに加算する行操作は、Z行列の行#jを行#iに加算する行操作に対応する。
【0128】
(S26)量子回路生成部124は、距離dをd-1に更新する。
(S27)量子回路生成部124は、距離dが1以上か判断する。距離dが1以上の場合はステップS23に処理が戻り、それ以外の場合はステップS28に処理が進む。
【0129】
(S28)量子回路生成部124は、列番号CをC+1に更新する。また、距離dを量子デバイス30の中の最大距離に初期化する。
(S29)量子回路生成部124は、列番号Cが量子ビット数N以下であるか判断する。列番号Cが量子ビット数N以下の場合はステップS21に処理が戻り、それ以外の場合はステップS13の行列対角化が終了する。
【0130】
【0131】
【0132】
【0133】
ここで、
図8におけるX行列の対角化の手順について説明を補足する。量子回路生成部124は、C=1のとき量子ビットq
0を中心ビットとして選択する。このとき、量子ビットq
0の状態が1であり、量子ビットq
1,q
2,q
3の状態が0である。よって、中心ビットから距離d=2に状態1の量子ビットは無く、距離d=1にも状態1の量子ビットは無い。このため、行操作は行われない。
【0134】
次に、量子回路生成部124は、C=2のとき量子ビットq1を中心ビットとして選択する。このとき、量子ビットq0,q1,q3の状態が1であり、量子ビットq2の状態が0である。よって、中心ビットから距離d=2にある量子ビットq3が処理対象になる。このとき、量子ビットq(1)=1であり行(1)は対角化済みであるため、CNOT1>2とCNOT2>1とCNOT1>0が実行される。よって、量子ビットq0からq3へのCNOTゲートと、量子ビットq3からq0へのCNOTゲートと、量子ビットq1からq0へのCNOTゲートとが実行される。
【0135】
上記のCNOTゲートの後は、量子ビットq1の状態が1であり、量子ビットq0,q2,q3の状態が0である。このため、中心ビットから距離d=1に状態1の量子ビットは無く、更なる行操作は行われない。
【0136】
次に、量子回路生成部124は、C=3のとき量子ビットq2を中心ビットとして選択する。このとき、量子ビットq0,q2の状態が1であり、量子ビットq1,q3の状態が0である。よって、中心ビットから距離d=2にある量子ビットq0が処理対象になる。ここでは、CNOT0>1とCNOT1>2とCNOT2>1が実行される。よって、量子ビットq2からq1へのCNOTゲートと、量子ビットq1からq0へのCNOTゲートと、量子ビットq0からq1へのCNOTゲートとが実行される。
【0137】
上記のCNOTゲートの後は、量子ビットq1,q2の状態が1であり、量子ビットq0,q3の状態が0である。よって、中心ビットから距離d=1にある量子ビットq1が処理対象になる。ここでは、CNOT0>1が実行される。よって、量子ビットq2からq1へのCNOTゲートが実行される。
【0138】
次に、量子回路生成部124は、C=4のとき量子ビットq1を中心ビットとして選択する。このとき、量子ビットq0,q1の状態が1であり、量子ビットq2,q3の状態が0である。中心ビットから距離d=2に状態1の量子ビットは無いが、中心ビットから距離d=1に状態1の量子ビットq0がある。よって、量子ビットq0が処理対象になる。ここでは、CNOT0>1が実行される。よって、量子ビットq1からq0へのCNOTゲートが実行される。以上により、X行列の対角化が完了する。
【0139】
以上説明したように、第2の実施の形態の情報処理装置100は、複数のパウリ文字列に基づいて、量子状態から複数の測定値を並列に観測するための量子回路を生成する。これにより、情報処理装置100によって量子回路の設計が支援され、量子回路の設計の負担が軽減される。また、情報処理装置100は、複数のパウリ文字列からスタビライザー行列を生成し、スタビライザー行列の対角化を通じて量子回路の量子ゲートを決定する。これにより、情報処理装置100は、様々なパウリ文字列に対して画一的方法で量子回路を生成することができ、量子回路を高速に生成することができる。
【0140】
また、情報処理装置100は、スタビライザー行列の対角化処理の最適化を通じて、量子回路を最適化することができる。これにより、量子ゲートの少ない高効率な量子回路が生成される。また、情報処理装置100は、スタビライザー行列の対角化の中で、量子ビットの接続関係の制約に従って、行操作を行う2つの行を選択する。これにより、パウリ文字列に適合する量子ゲートの決定と接続関係の制約を満たすための量子回路の修正を別個に行う場合と比べて、量子回路の生成が高速化される。また、量子ゲートの少ない高効率な量子回路が生成される。その結果、量子回路に従ったゲート操作の実行時間が短縮する。また、量子ビットが多い場合であっても、量子ビットの持続時間内に量子計算が完了する。また、量子ゲート数が少ないことで、エラー発生確率が低下する。
【0141】
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【0142】
10 情報処理装置
11 記憶部
12 処理部
13 演算子情報
14 配置情報
15 行列
16 対角行列
17 量子回路