(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-26
(45)【発行日】2025-04-03
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
G06N 10/20 20220101AFI20250327BHJP
【FI】
G06N10/20
(21)【出願番号】P 2024507237
(86)(22)【出願日】2022-03-15
(86)【国際出願番号】 JP2022011510
(87)【国際公開番号】W WO2023175703
(87)【国際公開日】2023-09-21
【審査請求日】2024-06-26
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】森田 幹雄
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2020-187451(JP,A)
【文献】森田 幹雄 ほか,低回路深さ同時測定型VQEの計算コスト検証,情報処理学会 研究報告 量子ソフトウェア(QS),日本,情報処理学会,2021年,Vol.2021-QS-2, No.11,pp.1-7,ISSN 2435-6492
【文献】XIA Rongxin et al.,Qubit coupled cluster singles and doubles variational quantum eigensolver ansatz for electronic stru,arXiv.org [online],2020年,pp.1-13,[検索日 2022.05.24], インターネット: <URL : https://arxiv.org/abs/2005.08451v3>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/20
(57)【特許請求の範囲】
【請求項1】
分子の基底エネルギーを変分量子固有値法で計算するための複数の電子励起それぞれに対応する変数の初期値を算出し、
前記複数の電子励起それぞれについて、対応する前記変数の初期値が所定の閾値より大きいか否かにより、対応する回路を実装するか否かを判定し、
前記複数の電子励起のうち、前記対応する回路を実装すると判定された電子励起それぞれについて、前記変数の値に応じたエネルギーを算出するための前記電子励起のゲート操作を行う部分回路を、前記分子の前記基底エネルギーを算出するための量子回路内に配置する、
処理をコンピュータに実行させる情報処理プログラム。
【請求項2】
前記対応する回路を実装すると判定された前記電子励起が1電子励起の場合、前記電子励起に対応するギブンス回転の操作を行う前記部分回路を前記量子回路内に配置する、
処理をコンピュータに実行させる請求項1記載の情報処理プログラム。
【請求項3】
前記対応する回路を実装すると判定された前記電子励起が2電子励起の場合、前記電子励起に対応するQNPPX(Quantum-Number-Preserving-Pair-Exchange)の操作を行う前記部分回路を前記量子回路内に配置する、
処理をコンピュータに実行させる請求項1または2に記載の情報処理プログラム。
【請求項4】
前記変数の初期値を計算する処理では、前記複数の電子励起それぞれのCI(Configuration Interaction)係数を古典的量子化学計算手法で算出し、算出した前記CI係数を、前記複数の電子励起それぞれの前記変数の初期値とする、
処理をコンピュータに実行させる請求項1から3までのいずれかに記載の情報処理プログラム。
【請求項5】
前記部分回路を前記量子回路内に配置する処理では、前記量子回路における同時実行可能な回路を配置する列に既に配置されている第1の部分回路における励起元および励起先の量子ビットのいずれとも、次に配置する第2の部分回路における励起元および励起先の量子ビットが重複しない場合、前記第2の部分回路を前記量子回路内の前記第1の部分回路と同じ前記列に配置する、
請求項1から4までのいずれかに記載の情報処理プログラム。
【請求項6】
前記部分回路を前記量子回路内に配置する処理では、前記量子回路における同時実行可能な回路を配置する列に2電子励起に対応する第3の部分回路を配置し、前記第3の部分回路における励起元および励起先の量子ビットのいずれとも、励起元および励起先の量子ビットが重複しない1電子励起に対応する複数の第4の部分回路を、前記複数の第4の部分回路において励起元または励起先として同一の量子ビットを使用する使用回数が所定数を超えない範囲で、前記第3の部分回路と同じ前記列に配置する、
請求項1から4までのいずれかに記載の情報処理プログラム。
【請求項7】
分子の基底エネルギーを変分量子固有値法で計算するための複数の電子励起それぞれに対応する変数の初期値を算出し、
前記複数の電子励起それぞれについて、対応する前記変数の初期値が所定の閾値より大きいか否かにより、対応する回路を実装するか否かを判定し、
前記複数の電子励起のうち、前記対応する回路を実装すると判定された電子励起それぞれについて、前記変数の値に応じたエネルギーを算出するための前記電子励起のゲート操作を行う部分回路を、前記分子の前記基底エネルギーを算出するための量子回路内に配置する、
処理をコンピュータが実行する情報処理方法。
【請求項8】
分子の基底エネルギーを変分量子固有値法で計算するための複数の電子励起それぞれに対応する変数の初期値を算出し、前記複数の電子励起それぞれについて、対応する前記変数の初期値が所定の閾値より大きいか否かにより、対応する回路を実装するか否かを判定し、前記複数の電子励起のうち、前記対応する回路を実装すると判定された電子励起それぞれについて、前記変数の値に応じたエネルギーを算出するための前記電子励起のゲート操作を行う部分回路を、前記分子の前記基底エネルギーを算出するための量子回路内に配置する処理部、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
量子コンピュータの分野において、NISQ(Noisy Intermediate-Scale Quantum computer)の実用化が期待されている。NISQは、エラー訂正機能のない中規模の量子コンピュータである。NISQの用途の一つとして変分量子固有値法(VQE:Variational Quantum Eigensolver)による計算がある。VQEは、量子多体系の基底状態を求める変分アルゴリズムである。VQEは、例えばNISQにおいて量子化学計算を行うのに利用できる。量子化学計算は、シュレディンガー方程式を解くことにより、分子状態や物性情報を得るための計算である。現在、VQEを用いた計算の実用化に向け様々な研究が進められている。
【0003】
VQEなどの量子計算に関する技術としては、例えばVQEを用いて系のエネルギーを量子計算する際に、エネルギーの導関数を得ることができる、エネルギーの微分を求めるための量子情報処理方法が提案されている。また古典データを量子データとして入力することにより、古典データを量子演算に使用する方法も提案されている。さらに量子コンピューティング・マシンのための高ハードウェア効率変分量子固有値ソルバを実現するためのシステムも提案されている。また量子ゲートの複雑さを低減したVQEAnsatzも提案されている。
【先行技術文献】
【特許文献】
【0004】
【文献】国際公開第2020/230794号
【文献】米国特許出願公開第2019/0354316号明細書
【文献】特表2020-534607号公報
【非特許文献】
【0005】
【文献】Rongxin Xia, Sabre Kais, "Qubit coupled cluster singles and doubles variational quantum eigensolver ansatz for electronic structure calculations" arXiv:2005.08451v3, 10 Oct 2020
【発明の概要】
【発明が解決しようとする課題】
【0006】
VQEによる量子化学計算の実用化に向けた問題点の一つとして、ゲート操作数が多いことがある。ゲート操作数が多すぎると計算時間が増大し、量子ビットの持続時間(コヒーレンス時間)以内に計算が完了せず、計算結果が得られない可能性がある。またゲート操作数が多いと量子計算過程でエラーが積み上がり、計算結果に与えるエラーの影響が大きくなる。
【0007】
1つの側面では、本件は、ゲート操作数を削減することを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、以下の処理をコンピュータに実行させる情報処理プログラムが提供される。
コンピュータは、分子の基底エネルギーを変分量子固有値法で計算するための複数の電子励起それぞれに対応する変数の初期値を算出する。コンピュータは、複数の電子励起それぞれについて、対応する変数の初期値が所定の閾値より大きいか否かにより、対応する回路を実装するか否かを判定する。そしてコンピュータは、複数の電子励起のうち、対応する回路を実装すると判定された電子励起それぞれについて、変数の値に応じたエネルギーを算出するための電子励起のゲート操作を行う部分回路を、分子の基底エネルギーを算出するための量子回路内に配置する。
【発明の効果】
【0009】
1態様によれば、ゲート操作数を削減することができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態に係る情報処理方法の一例を示す図である。
【
図2】第2の実施の形態のシステム構成の一例を示す図である。
【
図3】古典コンピュータのハードウェアの一例を示す図である。
【
図4】VQEによる量子化学計算のための古典コンピュータの機能の一例を示すブロック図である。
【
図6】回転ゲートエレメントを使用することによるゲート数削減の一例を示す図である。
【
図9】QNPPXの数式表現の一例を示す図である。
【
図10】VQEによる量子化学計算の手順の一例を示すフローチャートである。
【
図11】量子回路生成処理の手順の一例を示すフローチャートの前半である。
【
図12】量子回路生成処理の手順の一例を示すフローチャートの後半である。
【
図13】回転ゲートエレメントによるAnsatz回路の一例を示す図である。
【
図14】VQEによる量子化学計算の一例を示す図である。
【
図15】基底エネルギー計算手順の一例を示すフローチャートである。
【
図17】Ansatz回路に適用する技術とゲート数との関係を示す図である。
【
図18】Ansatz回路への回転ゲートエレメント配置処理手順の一例を示すフローチャートの前半である。
【
図19】Ansatz回路への回転ゲートエレメント配置処理手順の一例を示すフローチャートの後半である。
【
図20】同一列に1電子励起と2電子励起との回路を混在させたAnsatz回路の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、VQEによる量子化学計算を行うための量子回路のゲート操作数を削減する情報処理方法である。
【0012】
図1は、第1の実施の形態に係る情報処理方法の一例を示す図である。
図1には、第1の実施の形態に係る情報処理方法を実施するための情報処理装置10が示されている。情報処理装置10は、例えば所定の処理手順が記述された情報処理プログラムを実行することにより、第1の実施の形態に係る情報処理方法を実施することができる。
【0013】
情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサまたは演算回路である。
【0014】
記憶部11は、計算対象となる分子の情報、分子の基底エネルギーを算出するための量子回路1などを記憶する。
処理部12は、量子コンピュータを利用してVQEによる量子化学計算を実施するための量子回路1を生成する。例えば処理部12は、分子の基底エネルギーをVQEで計算するための複数の電子励起それぞれに対応する変数の初期値を算出する。例えば処理部12は、配置間相互作用(CI:Configuration Interaction)法による波動関数(電子配置の線形結合)に含まれる複数の電子配置に対応する配置状態関数それぞれのCI係数を古典的量子化学計算手法で計算する。各電子配置に対応するCI係数は、その電子配置とするための電子励起を示す項に乗算される実数の係数である。そして処理部12は、各電子励起に対応するCI係数を、その電子励起に対応する回路に用いられる変数の初期値とする。
【0015】
次に処理部12は、複数の電子励起それぞれについて、対応する変数の初期値が所定の閾値より大きいか否かにより、対応する回路を実装するか否かを判定する。例えば処理部12は、変数の初期値の絶対値が閾値より大きい電子励起については、その電子励起に対応する回路を実装すると判定する。また処理部12は、変数の初期値が閾値以下であれば、その電子励起に対応する回路を実装しないと判定する。
【0016】
そして処理部12は、複数の電子励起のうち、対応する回路を実装すると判定された電子励起それぞれについて、変数の値に応じたエネルギーを算出するための電子励起に対応するゲート操作を行う部分回路2a,2b,・・・,3a,3b,・・・を、量子回路1内に配置する。例えば処理部12は、実装すると判定された電子励起が1電子励起の場合、電子励起に対応するギブンス回転の操作を行う部分回路2a,2b,・・・を量子回路1内に配置する。また処理部12は、実装すると判定された電子励起が2電子励起の場合、電子励起に対応するQNPPX(Quantum-Number-Preserving-Pair-Exchange)の操作を行う部分回路3a,3b,・・・を量子回路1内に配置する。
【0017】
このように、電子励起の変数の初期値が閾値以下の場合には、その電子励起に対応する回路の実装を抑止することで、VQE計算を行う際のゲート操作数を削減することができる。例えば変数の初期値としてCI係数を用いることで、初期値が非常に小さい変数が適用される電子励起は、VQE計算における最適化を行っても、値は小さいままであることが予想される。変数の値が小さい電子励起に応じた回路で算出されるエネルギーは、他の電子励起の回路で算出されるエネルギーに比べて微小となる。そのため、変数の値が小さい電子励起に応じた回路の実装を抑止しても、最終的な基底エネルギーの計算精度の低下は少なくて済む。
【0018】
しかもギブンス回転回路によって1電子励起のゲート操作を行うことで、計算精度を落とさずにゲート操作数をさらに削減することができる。同様にQNPPXによって2電子励起のゲート操作を行うことで、計算精度を落とさずにゲート操作数をさらに削減することができる。
【0019】
VQE計算では、電子励起のゲート操作と計測を、電子励起ごとに並列で行うことができる。しかし使用できる量子ビット数が、すべての電子励起を並列で実行できるだけの数に満たない場合がある。その場合、同時に実行する電子励起における励起元および励起先の量子ビットを重複させずに、より多くの部分回路を並列で実行できるように量子回路1を生成することで、ゲート操作数を削減することができる。なお量子回路1では、並列で実行する回路は同じ列(量子回路1の上下方向に重なった位置)に配置される。
【0020】
例えば処理部12は、1電子励起の部分回路を配置する列と2電子励起の部分回路を配置する列とを分けるものとする。ここで、量子回路1内のある列に既に配置されている部分回路を第1の部分回路とする。また次に配置する部分回路を第2の部分回路とする。このとき処理部12は、第1部分回路における励起元および励起先の量子ビットのいずれとも、第2の部分回路に対応する電子励起の励起元および励起先の量子ビットが重複しない場合、第2の部分回路を第1の部分回路と同じ列に配置する。これにより、量子回路1のゲート操作数が削減される。
【0021】
また1電子励起の部分回路と2電子励起の部分回路とを同じ列に混在させて、ゲート操作数をさらに削減することも可能である。例えば処理部12は、量子回路1における同時実行可能な回路を配置する列に2電子励起に対応する第3の部分回路を配置する。その後、処理部12は、第3の部分回路における励起元および励起先の量子ビットのいずれとも、励起元および励起先の量子ビットが重複しない1電子励起に対応する複数の第4の部分回路を、第3の部分回路と同一の列に配置する。その際、処理部12は、複数の第4の部分回路において励起元または励起先として同一の量子ビットを使用する使用回数が所定数を超えない範囲で、複数の第4の部分回路を第3の部分回路と同じ列に配置する。これにより、ゲート操作数を削減した量子回路1が生成される。
【0022】
〔第2の実施の形態〕
第2の実施の形態は、量子コンピュータを利用してVQEによる量子化学計算を行うコンピュータシステムである。
【0023】
図2は、第2の実施の形態のシステム構成の一例を示す図である。第2の実施の形態では、古典コンピュータ100と量子コンピュータ200とが接続されている。古典コンピュータ100は、ノイマン型コンピュータであり、量子回路の生成、量子回路の計算に使用するパラメータの最適化などの処理を行う。量子コンピュータ200は、量子ビットに対して量子ゲートに基づく操作を行うことで量子化学計算を行うコンピュータである。量子コンピュータ200は、古典コンピュータ100で生成された量子回路およびパラメータに従って、VQEアルゴリズムの量子化学計算を行い、エネルギー期待値を算出する。
【0024】
図3は、古典コンピュータのハードウェアの一例を示す図である。古典コンピュータ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0025】
メモリ102は、古典コンピュータ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0026】
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0027】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、古典コンピュータ100の補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0028】
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0029】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0030】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0031】
機器接続インタフェース107は、古典コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0032】
ネットワークインタフェース108は、量子コンピュータ200に接続されている。ネットワークインタフェース108は、量子コンピュータ200との間でデータの送受信を行う。
【0033】
古典コンピュータ100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、
図3に示した古典コンピュータ100と同様のハードウェアにより実現することができる。
【0034】
古典コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。古典コンピュータ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、古典コンピュータ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また古典コンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0035】
古典コンピュータ100は、
図4に示したハードウェアにより、量子コンピュータ200と連係してVQEによる量子化学計算を行うことができる。
図4は、VQEによる量子化学計算のための古典コンピュータの機能の一例を示すブロック図である。古典コンピュータ100は、量子回路生成部110と量子計算管理部120と最適化計算部130とを有する。
【0036】
量子回路生成部110は、分子などの量子多体系のエネルギーを計算するための量子回路を生成する。例えば量子回路生成部110は、UCCSD ansatzの電子励起をより少ない量子操作で実現したVQEアルゴリズムによる量子回路を生成する。量子回路生成部110は、生成した量子回路を量子計算管理部120に送信する。
【0037】
量子計算管理部120は、生成された量子回路に基づくエネルギー計算を量子コンピュータ200に指示する。例えば量子計算管理部120は、量子回路における量子ゲートでのゲート操作に関する複数のパラメータθを設定する。量子計算管理部120は、最初の量子計算の前に、複数のパラメータθの値に初期値を設定する。量子計算管理部120は、複数のパラメータθでパラメタライズされた量子回路に基づくエネルギーの計算結果を量子コンピュータ200から取得する。エネルギーの計算結果を取得すると、量子計算管理部120は、エネルギーが収束したか否かを判定する。量子計算管理部120は、エネルギーが収束していなければ、最適化計算部130にパラメータの最適化を指示する。
【0038】
最適化計算部130は、量子計算ごとに、エネルギー値が小さくなる方向へ、複数のパラメータθの全部または一部の値を更新する。最適化計算部130は、最適化の計算が終了すると、更新された複数のパラメータθの値を量子計算管理部120に通知する。
【0039】
なお
図4に示した古典コンピュータ100内の各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次にVQEによる分子の基底エネルギーの計算方法について説明する。VQEによる分子の基底エネルギー計算において求めるエネルギーEは以下の式(1)で表される。
【0040】
【0041】
φは量子状態を示す。Hは、ハミルトニアンを示す。ハミルトニアンは、分子間距離Rの関数である。θは、最適化変数として用いられる回転角である。基底エネルギーは最も低いエネルギーである。そのため、回転角θを変動させて式(1)を繰り返し計算したときに、複数回の計算で得られたエネルギーの中の最低エネルギーが基底エネルギーE0となる。基底エネルギーE0を表す式は以下の通りである。
【0042】
【0043】
実際の計算ではハミルトニアンが和の形(H=H1+H2+…)に分解され、分解されたハミルトニアンそれぞれが計算される。すなわち量子回路生成部110は、分解されたハミルトニアンごとに、VQEによる量子化学計算を行うための量子回路を生成する。
【0044】
VQEを構成する量子回路には、Ansatzと呼ばれる回路が含まれる。AnsatzがVQE量子回路の大部分を占める。Ansatzは、変数によってパラメタライズされた波動関数ψ(θ)を、量子回路で表現するための回路である。
【0045】
図5は、Ansatz回路を説明する図である。量子回路30に含まれるAnsatz回路31で表される波動関数は、CI法の変数θで表される重ね合わせ状態である。重ね合わせ状態を式で表すと以下の式(3)となる。
|ψ(θ)>=a|ψ0>+b|ψ1>+c|ψ2>+・・・ (3)
式(3)の右辺の各項は、所定の電子軌道を得るための電子励起に対応する。a,b,cは電子励起ごとの係数である。量子回路30には、Ansatz回路31の他、基底変換回路、Z軸測定回路などが含まれる。
【0046】
高精度を達成するための代表的なAnsatzとしてUCCSD(Unitary Coupled Cluster Singles and Doubles)がある。UCCSDは、理想的(ハードエラーが十分小さいとき)には古典的量子化学計算のCCSD(Coupled Cluster Singles and Doubles)を超える高い精度の計算結果を得ることができる。その一方、UCCSDは20量子ビット程度の問題であっても数万~数十万のゲートが必要になり、現実的にNISQへの実装が難しい。
【0047】
そこで量子回路生成部110は、回転ゲートエレメント(ギブンス回転回路、QNPPX回路)を使用して1電子励起または2電子励起を表現することで、VQEを実現するための量子回路を生成する。これにより、UCCSDと同等の計算精度を達成するとともに、ゲート数の少量化を実現できる。
【0048】
図6は、回転ゲートエレメントを使用することによるゲート数削減の一例を示す図である。UCCSDによるAnsatz回路40では、複数の1電子励起部分回路41a,41b,・・・と複数の2電子励起部分回路42a,42b,・・・とが含まれる。
【0049】
ここで1電子励起部分回路41a,41b,・・・は、i番目の量子ビットからj番目の量子ビットへの1電子励起を表現するものとする。この場合、1電子励起部分回路41a,41b,・・・には、励起1つあたり、4(j-i)個のCNOTゲートと10個の1量子ビットゲートとが用いられる(i,jは0以上の整数)。CNOTゲートは、コントロール量子ビットが|1>のときターゲット量子ビットをビット反転させる2量子ビットゲートである。
【0050】
また2電子励起部分回路42a,42b,・・・は、i,j番目の量子ビットからk,l番目の量子ビットへの2電子励起を表現するものとする。この場合、2電子励起部分回路42a,42b,・・・には、励起1つあたり、16(j+l-i-k)個のCNOTゲートと72個の1量子ビットゲートとが用いられる(i,j,k,lは0以上の整数)。
【0051】
回転ゲートエレメントを使用するAnsatz回路50にも、複数の1電子励起部分回路51a,51b,・・・と複数の2電子励起部分回路52a,52b,・・・とが含まれる。1電子励起部分回路51a,51b,・・・は、ギブンス回転により1電子励起を表現する回路である。1電子励起部分回路51a,51b,・・・には、励起1つあたり、2個の2量子ビットゲートと4個の1量子ビットゲートとが用いられる。また2電子励起部分回路52a,52b,・・・には、QNPPXにより2電子励起を表現する回路である。2電子励起部分回路52a,52b,・・・は、励起1つあたり、12個の2量子ビットゲートと10個の1量子ビットゲートとが用いられる。
【0052】
図7は、ギブンス回転回路の一例を示す図である。
図7のギブンス回転回路60は、「a」番目の量子ビットを励起元、「b」番目の量子ビットを励起先とする1電子励起の例を示している(a,bは0以上の整数)。1電子励起の対象となる量子ビットに対応する横線上に、ギブンス回転回路60を示す2つの回路要素61,62が配置される。
【0053】
回転角をθとしたとき、励起元である「a」番目の量子ビットに対応する回路要素61は、「Ga
ab(θ)」と表される。励起先である「b」番目の量子ビットの回路要素62は、回転角をθとして「Gb
ab(θ)」と表される。回路要素61と回路要素62との組が、1つのギブンス回転回路60を表している。
【0054】
ギブンス回転回路60を1量子ビットゲートと2量子ビットゲートとで表すと、まず励起元の量子ビットにアダマールゲート63が配置される。次に、励起元をコントロール量子ビットとし、励起先をターゲット量子ビットとするCNOTゲート64が配置される。次に励起元の量子ビットと励起先の量子ビットとのそれぞれに、回転角θのY軸周りの回転ゲート65,66が配置される。次に励起元をコントロール量子ビットとし、励起先をターゲット量子ビットとするCNOTゲート67が配置される。最後に、励起元の量子ビットにアダマールゲート68が配置される。
【0055】
このギブンス回転は以下のような式(4)で表される。
G
ab(θ)|…0…1…>=cosθ|…0…1…>+sinθ|…1…0…>
G
ab(θ)|…1…0…>=cosθ|…1…0…>-sinθ|…0…1…>
G
ab(θ)|…0…0…>= |…0…0…>
G
ab(θ)|…1…1…>= |…1…1…> (4)
式(4)において「|…0…1…>」のように示される2つの値のうち左側の値が励起先(「b」番目)の量子ビットの量子状態に対応し、右側の値が励起元(「a」番目)の量子ビットの量子状態に対応する。またギブンス回転は以下の式(5)のように書き表すこともできる。
G
ab(θ)=a
ba
aa
†
ba
†
a+a
†
ba
†
aa
ba
a+cosθ(a
†
aa
a+a
†
ba
b)+sinθ(a
†
ba
a-a
†
aa
b)
=I+(cosθ-1)(a
†
aa
a+a
†
ba
b)+(sinθ)(a
†
ba
a-a
†
aa
b) (5)
式(5)のIは恒等演算子である。
図7に示すように、ギブンス回転回路60に含まれる2量子ビットゲートは2つのCNOTゲート64,67だけである。従って1電子励起1つあたりに配置される2量子ビットゲートは2個である。またギブンス回転回路60に含まれる1量子ビットゲートは、2つのアダマールゲート63,68と2つの回転ゲート65,66である。従って1電子励起1つあたりに配置される1量子ビットゲートは4個である。
【0056】
図8は、QNPPX回路の一例を示す図である。QNPPXでは、励起元の軌道を表す2つの量子ビットと、励起先の軌道を表す2つの量子ビットとに対して操作を行う。
図8に示すQNPPX回路70は、「a
1」番目と「a
2」番目の量子ビットを励起元、「b
1」番目と「b
2」番目の量子ビットを励起先とする2量子励起の例を示している(a
1、a
2、b
1、b
2は0以上の整数)。2電子励起の対象となる量子ビットに対応する横線上に、QNPPX回路70を示す4つの回路要素71~74が配置される。
【0057】
回転角をθとしたとき、励起元である「a1」番目の量子ビットに対応する回路要素71は、「PXa1
a1a2b1b2(θ)」と表される。励起元である「a2」番目の量子ビットに対応する回路要素72は、「PXa2
a1a2b1b2(θ)」と表される。励起先である「b1」番目の量子ビットに対応する回路要素73は、「PXb1
a1a2b1b2(θ)」と表される。励起先である「b2」番目の量子ビットに対応する回路要素74は、「PXb2
a1a2b1b2(θ)」と表される。
【0058】
QNPPX回路70を1量子ビットゲートと2量子ビットゲートとで表すと、まず「a2」番目の量子ビットをコントロール量子ビットとし、「a1」番目の量子ビットをターゲット量子ビットとするCNOTゲート75aが配置される。次に「b2」番目の量子ビットをコントロール量子ビットとし、「b2」番目の量子ビットをターゲット量子ビットとするCNOTゲート75bが配置される。次に「a1」番目の量子ビットと「a2」番目の量子ビットとに対するCZゲート75cが配置されると共に、「b2」番目の量子ビットにアダマールゲート76aが配置される。次に「b2」番目の量子ビットをコントロール量子ビットとし、「b1」番目の量子ビットをターゲット量子ビットとするCNOTゲート75dが配置される。次に「b1」番目の量子ビットに回転角θのY軸周りの回転ゲート76bが配置されると共に、「b2」番目の量子ビットに回転角-θのY軸周りの回転ゲート76cが配置される。
【0059】
次に「a1」番目の量子ビットと「b2」番目の量子ビットとに対するCZゲート75eが配置される。次に「a1」番目の量子ビットをコントロール量子ビットとし、「a2」番目の量子ビットをターゲット量子ビットとするCNOTゲート75fが配置される。次に「b1」番目の量子ビットに回転角θのY軸周りの回転ゲート76dが配置されると共に、「b2」番目の量子ビットに回転角-θのY軸周りの回転ゲート76eが配置される。次に「a2」番目の量子ビットをコントロール量子ビットとし、「b1」番目の量子ビットをターゲット量子ビットとするCNOTゲート75gが配置される。
【0060】
次に「a2」番目の量子ビットをコントロール量子ビットとし、「b2」番目の量子ビットをターゲット量子ビットとするCNOTゲート75hが配置される。次に「b1」番目の量子ビットに回転角-θのY軸周りの回転ゲート76fが配置されると共に、「b2」番目の量子ビットに回転角θのY軸周りの回転ゲート76gが配置される。次に「a1」番目の量子ビットをコントロール量子ビットとし、「b1」番目の量子ビットをターゲット量子ビットとするCNOTゲート75iが配置される。次に「a1」番目の量子ビットと「b2」番目の量子ビットとに対するCZゲート75jが配置される。次に「b1」番目の量子ビットに回転角-θのY軸周りの回転ゲート76hが配置されると共に、「b2」番目の量子ビットに回転角θのY軸周りの回転ゲート76iが配置される。
【0061】
次に「b2」番目の量子ビットをコントロール量子ビットとし、「b1」番目の量子ビットをターゲット量子ビットとするCNOTゲート75kが配置される。次に「a2」番目の量子ビットをコントロール量子ビットとし、「b2」番目の量子ビットをターゲット量子ビットとするCNOTゲート75lが配置される。次に「b2」番目の量子ビットにアダマールゲート76jが配置される。次に「b2」番目の量子ビットをコントロール量子ビットとし、「a2」番目の量子ビットをターゲット量子ビットとするCNOTゲート75mが配置される。次に「a2」番目の量子ビットをコントロール量子ビットとし、「a1」番目の量子ビットをターゲット量子ビットとするCNOTゲート75nが配置される。
【0062】
図9は、QNPPXの数式表現の一例を示す図である。例えば励起元の「a
1」番目と「a
2」番目との量子ビットの状態が共に「1」、励起先の「b
1」番目と「b
2」番目との量子ビットの状態が共に「0」の場合のQNPPXを数式で表すと、以下の式(6)で表される。
PX
a1a2b1b2(θ)|…0…0…1…1…>=cosθ|…0…0…1…1…>+sinθ|…1…1…0…0…>・・・ (6)
各量子ビットのすべての状態に関するQNPPXの操作は、以下の式(7)で表される。
PX
a1a2b1b2(θ)=I+(cosθ-1)(a
†
a2a
†
a1a
a2a
a1+a
†
b2a
†
b1a
b2a
b1)+(sinθ)(a
†
b2a
†
b1a
a2a
a1-a
†
a2a
†
a1a
b2a
b1) (7)
図8に示したQNPPX回路70のうち2量子ビットゲートは、11個のCNOTゲート75a,75b,75d,75f~75i,75k~75nと3つのCZゲート75c,75e,75jである。従って2電子励起1つあたりに配置される2量子ビットゲートは14個である。QNPPX回路70のうち1量子ビットゲートは、2個のアダマールゲート76a,76jと8個の回転ゲート76b~76iである。従って2電子励起1つあたりに配置される1量子ビットゲートは10個である。
【0063】
このように1電子励起および2電子励起を回転ゲートエレメントで実装することにより、ゲート操作回数を削減することが可能となる。また量子回路を実装する電子励起の数が少なければゲート操作数をさらに削減可能である。1電子励起および2電子励起を実現する回転ゲートエレメントにおける回転角θが十分に小さい場合、その励起による波動関数への影響は微小となる。すなわち回転角θが十分に小さい回転ゲートエレメントの量子回路は、実装しなくても計算結果に大きな影響がない。そこで量子回路生成部110は、適用する回転角θが閾値以下の回転ゲートエレメントの実装を抑止することで、ゲート操作数のさらなる削減を図る。
【0064】
以下、ゲート操作数を削減した量子回路を用いたVQEによる基底エネルギー計算処理について詳細に説明する。
図10は、VQEによる量子化学計算の手順の一例を示すフローチャートである。以下、
図10に示す処理をステップ番号に沿って説明する。
【0065】
[ステップS101]量子回路生成部110は、ユーザからの入力に基づいて、計算対象の問題を決定する。例えば量子回路生成部110は、計算対象の分子種、原子位置、基底関数、活性空間(active space)などを決定する。また量子回路生成部110は、波動関数のハミルトニアンに含まれる演算子の量子ビットへの対応付けを、例えばJordan-Wigner変換を使用して決定する。
【0066】
[ステップS102]量子回路生成部110は、電子励起を回転ゲートエレメントを用いて電子励起を表した量子回路を生成する。量子回路生成処理の詳細は後述する(
図11~
図12参照)。
【0067】
[ステップS103]量子計算管理部120は、量子コンピュータ200を制御して、基底エネルギーを計算する。基底エネルギーの計算にはVQEが用いられ、最適化計算部130により最適化変数θの最適化が行われる。基底エネルギー計算処理の詳細は後述する(
図15参照)。
【0068】
[ステップS104]量子計算管理部120は、最終的に求められた最適解(エネルギーが最小値となる状態)を出力する。
このような手順でVQEによる量子化学計算が行われる。以下、量子化学計算の各処理を詳細に説明する。
【0069】
図11は、量子回路生成処理の手順の一例を示すフローチャートの前半である。以下、
図11に示す処理をステップ番号に沿って説明する。
[ステップS111]量子回路生成部110は、古典的な量子力学計算手法によりCI係数を計算する。これにより量子回路に組み込まれる電子励起それぞれに対応するCI係数が計算される。
【0070】
例えば量子回路生成部110は、CISD(Configuration Interaction Singles and Doubles)法によってCI係数を計算する。CISDは、以下の式(8)のような波動関数を作成し、式(9)に示すエネルギーEが小さくなるように係数Cab、Ca1a2b1b2を変分的に求める計算である。
|ψ>=|ψHF>+ΣCaba†
baa|ψHF>+ΣCa1a2b1b2a†
a2a†
a1ab2ab1|ψHF> (8)
E=<ψ|H|ψ> (9)
Cab、Ca1a2b1b2はCI係数である。Cabは、「a」番目の量子ビットに対応する軌道を励起元とし、「b」番目の量子ビットに対応する軌道を励起先とする1電子励起に対応するCI係数である。Ca1a2b1b2は、「a1」番目の量子ビットと「a2」番目の量子ビットとに対応する軌道を励起元とし、「b1」番目の量子ビットと「b2」番目の量子ビットとに対応する軌道を励起先とする2電子励起に対応するCI係数である。また「a†
baa|ψHF>」や「a†
a2a†
a1ab2ab1|ψHF>」は対応する励起先計算基底(例えば|1100>など)を表す。
【0071】
算出されたCI係数は、対応する励起(1電子励起または2電子励起)における回転ゲートエレメントに適用する変数(回転角θ)の初期値として用いられる。CI係数(CabまたはCa1a2b1b2Cab)が十分に小さい場合、そのCI係数に対応する計算基底は、VQEでの最適化後に得られる波動関数において不要であると推測できる。そのため量子回路生成部110は、CI係数の絶対値が閾値以下の計算基底を計算する回路は、VQE計算における量子回路に実装しない。
【0072】
量子回路生成部110は、CI係数(Cab、Ca1a2b1b2)の絶対値が閾値より大きければ、そのCI係数を対応する回路の変数の初期値として利用する。変数の値は、VQEの計算過程で最適化計算部130によって最適化される。
【0073】
[ステップS112]量子回路生成部110は、波動関数の初期状態を生成する。例えば量子回路生成部110は、HF(Hartree Fock)状態を初期状態として使用する。
[ステップS113]量子回路生成部110は、すべての1電子励起に対してステップS114~S116の処理を繰り返す。
【0074】
[ステップS114]量子回路生成部110は、処理対象の1電子励起に対応するCI係数の絶対値が所定の閾値より大きいか否かを判断する。量子回路生成部110は、CI係数の絶対値が閾値より大きければ、処理をステップS115に進める。また量子回路生成部110は、CI係数の絶対値が閾値以下であれば、処理をステップS116に進める。
【0075】
[ステップS115]量子回路生成部110は、処理対象の1電子励起に対応付けて生成フラグ「Yes」を設定する。量子回路生成部110は、その後、処理をステップS117に進める。
【0076】
[ステップS116]量子回路生成部110は、処理対象の1電子励起に対応付けて生成フラグ「No」を設定する。
[ステップS117]量子回路生成部110は、すべての1電子励起に対するステップS114~S116の処理が終了したら、処理をステップS121(
図12参照)に進める。
【0077】
図12は、量子回路生成処理の手順の一例を示すフローチャートの後半である。以下、
図12に示す処理をステップ番号に沿って説明する。
[ステップS121]量子回路生成部110は、すべての2電子励起に対してステップS121~S124の処理を繰り返す。
【0078】
[ステップS122]量子回路生成部110は、処理対象の2電子励起に対応するCI係数の絶対値が所定の閾値より大きいか否かを判断する。量子回路生成部110は、CI係数の絶対値が閾値より大きければ、処理をステップS123に進める。また量子回路生成部110は、CI係数の絶対値が閾値以下であれば、処理をステップS124に進める。
【0079】
[ステップS123]量子回路生成部110は、処理対象の2電子励起に対応付けて生成フラグ「Yes」を設定する。量子回路生成部110は、その後、処理をステップS125に進める。
【0080】
[ステップS124]量子回路生成部110は、処理対象の2電子励起に対応付けて生成フラグ「No」を設定する。
[ステップS125]量子回路生成部110は、すべての2電子励起に対するステップS122~S124の処理が終了したら、処理をステップS126に進める。
【0081】
[ステップS126]量子回路生成部110は、生成フラグ「Yes」の1電子励起に対応するギブンス回転回路を生成する。そして量子回路生成部110は、生成したギブンス回転回路をAnsatz回路31に配置する。また量子回路生成部110は、配置したギブンス回転回路の回転角θを、対応するCI係数の値に初期化する。例えば「a」番目の量子ビットを励起元、「b」番目の量子ビットを励起先とするギブンス回転回路「Gab(θ)」におけるθの初期値として「Cab」が設定される。
【0082】
[ステップS127]量子回路生成部110は、生成フラグ「Yes」の2電子励起に対応するQNPPX回路を生成する。そして量子回路生成部110は、生成したQNPPX回路をAnsatz回路31に配置する。また量子回路生成部110は、配置したQNPPX回路の回転角θを、対応するCI係数の値に初期化する。例えば「a1」番目と「a2」番目の量子ビットを励起元、「b1」番目と「b2」番目の量子ビットを励起先とするQNPPX回路「PXa1a2b1b2(θ)」におけるθの初期値として「Ca1a2b1b2」が設定される。
【0083】
図11、
図12に示したように、CI係数が閾値以下の計算基底に対応する回路はVQEにおけるAnsatz回路31に実装されない。これにより、VQE計算におけるゲート操作回数が削減される。
【0084】
なおVQEでの最適化後の1電子励起または2電子励起に対応する回路の係数の値は、CI係数の絶対値と近くなると推測できる。そのためVQEのパラメータ初期値として対応する励起の回転角にCI係数を設定することで、VQE計算結果の収束を早めることができ、処理が効率化される。
【0085】
またVQEでの最適化後の1電子励起または2電子励起に対応する回路の係数の値がCI係数の絶対値と近くなるのであれば、CI係数が閾値以下の計算基底に対応する回路をVQEから除外しても、VQE計算結果に及ぼす影響は少ない。すなわち、計算精度の劣化が抑止されている。
【0086】
図13は、回転ゲートエレメントによるAnsatz回路の一例を示す図である。例えば量子回路生成部110は、生成フラグが「Yes」となった1電子励起または2電子励起を示す生成テーブル80を生成する。生成テーブル80には、適用される変数の変数名に対応付けて、その変数が適用される励起の励起元の量子番号と励起先の量子番号とが設定されている。1電子励起の場合、励起元と励起先との量子番号は1つずつである。2電子励起の場合、励起元と励起先との量子番号は2つずつである。
【0087】
量子回路生成部110は、生成テーブル80を参照しながらAnsatz回路81を生成する。Ansatz回路81には、まずHF状態を準備するHF状態準備回路82が配置される。HF状態準備回路82に続けて、1電子励起に対応する複数のギブンス回転回路が配置される。
【0088】
量子回路生成部110は、励起元と励起先との量子ビットが重複しない限り、先頭(量子回路における左よりの列に回路を配置する。例えば量子回路生成部110は、生成テーブル80の上位から順に、対応する回路を配置する。なおギブンス回転回路を配置する列の幅は、ギブンス回転回路1つ分の幅である。またQNPPX回路を配置する列の幅は、QNPPX回路1つ分の幅である。
【0089】
例えば量子回路生成部110は、まず第1列に、量子ビット番号「0」の量子ビットを励起元、量子ビット番号「4」の量子ビットを励起先とするギブンス回転回路を配置する。次に量子回路生成部110は、同じ第1列に、量子ビット番号「1」の量子ビットを励起元、量子ビット番号「5」の量子ビットを励起先とするギブンス回転回路を配置する。
【0090】
次の配置対象のギブンス回転回路(生成テーブル80で3行目)は、励起元の量子ビット番号が「0」である。量子ビット番号「0」の量子ビットには、既に1列目に回路が配置されている。そこで量子回路生成部110は、第2列に、量子ビット番号「0」の量子ビットを励起元、量子ビット番号「6」の量子ビットを励起先とするギブンス回転回路を配置する。
【0091】
さらに配置対象のギブンス回転回路(生成テーブル80で3行目)は、励起元の量子ビット番号が「3」であり、励起先の量子ビット番号が「7」である。それらの量子ビット番号に対応する量子ビットに対して、第1列には回路が配置されていない。そこで量子回路生成部110は、第1列に、量子ビット番号「3」の量子ビットを励起元、量子ビット番号「7」の量子ビットを励起先とするギブンス回転回路を配置する。
【0092】
同様にして、2電子励起に対応するQNPPX回路についても、量子ビットに重複のない限り、左に寄せて回路が配置される。その結果、第3列には、量子ビット番号「0,1」の各量子ビットを励起元、量子ビット番号「4,5」の各量子ビットを励起先とするQNPPX回路が配置されている。
【0093】
第4列には、量子ビット番号「0,3」の各量子ビットを励起元、量子ビット番号「4,7」の各量子ビットを励起先とするQNPPX回路が配置されている。さらに第4列には、量子ビット番号「2,1」の各量子ビットを励起元、量子ビット番号「6,5」の各量子ビットを励起先とするQNPPX回路とが配置されている。第5列には、量子ビット番号「0,1」の各量子ビットを励起元、量子ビット番号「6,7」の各量子ビットを励起先とするQNPPX回路が配置されている。
【0094】
このような回路配置を行うことで、回路深さの小さいAnsatz回路81が生成される。このようにして生成されたAnsatz回路81を含む量子回路によってVQEによる量子化学計算が行われる。VQEによる量子化学計算は、量子コンピュータ200と古典コンピュータ100との協働処理によって実行される。
【0095】
図14は、VQEによる量子化学計算の一例を示す図である。VQEによる量子化学計算においては、量子コンピュータ200が、パラメータθ(電子励起に対応する回路の変数θ
ab,θ
a1a2b1b2の集合)の初期値に基づいて量子測定を行う。すなわち量子コンピュータ200は、量子回路に従って、分割された複数のハミルトニアン(H
1,H
2,・・・,H
N)それぞれの値を算出する。量子測定に用いられる量子回路には、
図13に示すようなAnsatz回路81が含まれる。算出された複数のハミルトニアンは古典コンピュータ100で加算され、系全体のエネルギーの期待値となる。すると古典コンピュータ100内の最適化計算部130が、エネルギーの期待値に基づいてパラメータθの最適化を行う。すなわち最適化計算部130は、エネルギーの期待値が小さくなる方向にパラメータθを更新する。パラメータθが更新されると、再度、量子コンピュータ200で更新後のパラメータθに基づくハミルトニアンが計算される。
【0096】
このようなハミルトニアンの計算とパラメータθの更新とが、基底エネルギーが得られるまで繰り返される。
図15は、基底エネルギー計算手順の一例を示すフローチャートである。以下、
図15に示す処理をステップ番号に沿って説明する。
【0097】
[ステップS201]古典コンピュータ100の量子計算管理部120は、量子コンピュータ200へVQE計算用の量子回路によるエネルギーの計算を指示する。その際、量子計算管理部120は、量子回路に適用するパラメータθを指定する。パラメータθの初期値にはCI係数が用いられる。θの最適化後は、最適化によって更新されたパラメータθの値が、変数の値として指定される。
【0098】
[ステップS202]量子コンピュータ200は、量子ビットを量子回路に従って操作し、量子回路の計算を行う。量子コンピュータ200は、量子ビットごとの測定結果を古典コンピュータ100に送信する。
【0099】
[ステップS203]古典コンピュータ100の量子計算管理部120は、量子ビットの測定結果によりエネルギーを計算する。
[ステップS204]量子計算管理部120は、2回目以降のエネルギー計算において、パラメータθの更新前後でのエネルギー差が所定の閾値以下となったか否かを判断する。量子計算管理部120は、エネルギー差が閾値以下であれば、処理をステップS206に進める。また量子計算管理部120は、エネルギー差が閾値以下でなければ処理をステップS205に進める。なお量子計算管理部120は、初回のエネルギー計算の後は、常に処理をステップS205に進める。
【0100】
[ステップS205]最適化計算部130は、エネルギーの期待値が小さくなる方向にパラメータθを更新する。量子計算管理部120は、最適化計算部130から更新後のパラメータθの値を取得し、処理をステップS201に進める。
【0101】
[ステップS206]量子計算管理部120は、繰り返し計算されたエネルギーの最小値を、基底エネルギーとして取得する。
このようにして、基底エネルギーの計算結果を得ることができる。得られる計算結果の精度は、UCCSDと同等となる。
【0102】
図16は、計算結果の比較例を示す図である。
図16には、UCCSDを用いた場合と回転ゲートエレメントを用いた場合とにおける、原子間距離ごとのエネルギー値が示されている。
図16に示すグラフ83は、横軸が原子間距離であり、縦軸がエネルギーである。UCCSDで得られたエネルギー値が+印で示されている。また回転ゲートエレメントを利用したAnsatz回路で得られたエネルギー値が○印で示されている。回転ゲートエレメントを利用したAnsatz回路における励起用の回路を組み込むか否か判定の閾値は、10
-20である。
【0103】
グラフ83に示すように、UCCSDによるエネルギー値と回転ゲートエレメントを利用したい場合のエネルギー値とはほぼ同じ値となり、+印と○印とは重なり合っている。すなわち1電子励起と2電子励起とを回転ゲートエレメントに置き換えても、UCCSDと同等の精度で計算を行うことができる。
【0104】
またAnsatz回路に回転ゲートエレメントを使用することで、UCCSDに比べてゲート数が大幅に削減される。なおAnsatz回路に回転ゲートエレメントを使用する場合のゲート数は、励起用の回路を組み込むか否かの判定の閾値に応じて変動する。
【0105】
図17は、Ansatz回路に適用する技術とゲート数との関係を示す図である。
図17には、Ansatz回路に適用する技術ごとのゲート数を示すゲート数対応表84が示されている。ゲート数対応表84には、Ansatz回路への適用技術の名称に対応付けて、1量子ビットゲート数、1量子ビットゲート数の対UCCSD比、2量子ビットゲート数、2量子ビットゲート数の対UCCSD比が示されている。
【0106】
回転ゲートエレメント使用(閾値「10-2」)のAnsatzでは、1量子ビットゲート数は「610」個であり、2量子ビットゲート数は「854」個である。回転ゲートエレメント使用(閾値「10-20」)のAnsatzでは、1量子ビットゲート数は「5798」個であり、2量子ビットゲート数は「7966」個である。UCCSDのAnsatzでは、1量子ビットゲート数は「41244」個であり、2量子ビットゲート数は「65968」個である。
【0107】
回転ゲートエレメント使用(閾値「10-2」)のAnsatzでは、UCCSDと比較して1量子ビットゲート数が1.5%に減少し、2量子ビットゲート数が1.3%に減少している。回転ゲートエレメント使用(閾値「10-20」)のAnsatzでは、UCCSDと比較して1量子ビットゲート数が14.1%に減少し、2量子ビットゲート数が12.1%に減少している。
【0108】
このようにUCCSDと同程度の精度が得られる閾値「10-20」に設定した場合であっても、UCCSDと比較して8割から9割のゲート数削減効果がある。また精度が落ちることを許容して閾値を「10-2」程度まで大きくすれば、UCCSDと比較して98%~99%のゲート数削減効果がある。従って、例えば量子化学計算において求められる精度に応じて閾値を大きくすることで、計算の高速化を促進させることができる。
【0109】
以下、分子のエネルギー計算の具体例について説明する。問題の対象はN2(窒素分子)とする。使用する量子ビット数は20量子ビットとする。そして結合長(原子間距離)に応じた基底エネルギーを計算するものとする。
【0110】
CI係数の計算には、古典量子化学計算ソフトを使用する。閾値εを定め、ε<|C|となるCI係数Cab、Ca1a2b1b2を選択し、選択したCI係数に対応する励起の回路をAnsatz回路に実装するものとする。初期状態は「ψ(HF)=|00000011111111111111>」とする。
【0111】
電子励起の実装では、「ε=10-3」の場合、C6,18、C7,19に対応する1電子励起がギブンス回転回路で実装される。ここでC6,18、C7,19を含んだ集合をτ1とすると、1電子励起の実装までの波動関数は以下の式(10)で表される。
【0112】
【0113】
1電子励起と同様に、閾値ε以上のCI係数に対応する2電子励起のQNPPX回路が実装される。閾値εを超えたCI係数の集合をτ2とすると、波動関数は以下の式(11)となる。
【0114】
【0115】
この波動関数についてパラメータを最適化計算部130で最適化することで得られた基底エネルギーは「-107.6453」である。これはシュレディンガー方程式を正確に解くFull CIによって得られる厳密解「-107.6528」に十分に近い結果である。
【0116】
〔第3の実施の形態〕
第3の実施の形態は、Ansatz回路への回転ゲートエレメントを配置する際に、QNPPX回路1つ分の幅を有する1つの列への1電子励起と2電子励起との回路の混在を許容するものである。同一列内に1電子励起に対応するギブンス回転回路と2電子励起に対応するQNPPX回路とが混在することを許容することで効率的に計算可能な回路配置が可能となる。
【0117】
例えば量子回路生成部110は、第2の実施の形態に示すステップS126~S127(
図12参照)の処理に替えて、以下の
図18~
図19に示す処理を実行する。
図18は、Ansatz回路への回転ゲートエレメント配置処理手順の一例を示すフローチャートの前半である。以下、
図18に示す処理をステップ番号に沿って説明する。
【0118】
[ステップS301]量子回路生成部110は、生成テーブルを作成する。例えば量子回路生成部110は、生成フラグが「Yes」の1電子励起と2電子励起それぞれに対応するレコードを生成テーブルに登録する。登録されるレコードには、回転角を示す変数に対応付けて、励起元と励起先との量子ビット番号が示される。
【0119】
[ステップS302]量子回路生成部110は、Ansatz回路内の回路配置先とすることが可能な最大の列番号を示す変数「Dep」に初期値「1」を設定する(Dep=1)。
【0120】
[ステップS303]量子回路生成部110は、生成テーブルに示される2電子励起ごとに、配置先を決定する処理(ステップS304~S309)を実行する。ここで配置先の決定対象となる2電子励起を「x」とする。
【0121】
[ステップS304]量子回路生成部110は、第1列~第Dep列までの列ごとに、配置可否判定の処理(ステップS305)を実行する。ここで判定対象の列を列zとする。
【0122】
[ステップS305]量子回路生成部110は、列zで2電子励起xにおける励起元および励起先の少なくとも1つの量子ビットが使用済みか否かを判断する。量子回路生成部110は、少なくとも1つの量子ビットが使用済みの場合、処理をステップS306に進める。また量子回路生成部110は、すべての量子ビットが未使用の場合、処理をステップS307に進める。
【0123】
[ステップS306]量子回路生成部110は、第1列~第Dep列までのすべての列についてステップS305の判定が終了した場合、処理をステップS308に進める。
[ステップS307]量子回路生成部110は、ステップS305で判定対象となっている列zに、配置先の決定対象となっている2電子励起xに対応するQNPPX回路を配置する。その後、量子回路生成部110は処理をステップS310に進める。
【0124】
[ステップS308]量子回路生成部110は、変数「Dep」を1だけカウントアップする(Dep+1)。
[ステップS309]量子回路生成部110は、カウントアップされた後の第Dep列に、配置先の決定対象となっている2電子励起xに対応するQNPPX回路を配置する。
【0125】
[ステップS310]量子回路生成部110は、生成テーブルに示されるすべての2電子励起についてステップS304~S309の処理が完了した場合、処理をステップS321(
図19参照)に進める。
【0126】
図19は、Ansatz回路への回転ゲートエレメント配置処理手順の一例を示すフローチャートの後半である。以下、
図19に示す処理をステップ番号に沿って説明する。
[ステップS321]量子回路生成部110は、生成テーブルに示される1電子励起ごとに、配置先を決定する処理(ステップS322~S328)を実行する。ここで配置先の決定対象となる1電子励起を「y」とする。
【0127】
[ステップS322]量子回路生成部110は、第1列~第Dep列までの列ごとに、ステップS323~S324の判定処理を実行する。ここで判定対象の列を列zとする。
[ステップS323]量子回路生成部110は、列zで1電子励起yにおける励起元および励起先の少なくとも1つの量子ビットが、2電子励起で使用済みか否かを判断する。量子回路生成部110は、少なくとも1つの量子ビットが使用済みの場合、処理をステップS325に進める。また量子回路生成部110は、いずれの量子ビットも未使用の場合、処理をステップS324に進める。
【0128】
[ステップS324]量子回路生成部110は、列zで1電子励起yにおける励起元および励起先の少なくとも1つの量子ビットが、他の1電子励起でn回使用済みか否かを判断する。nは、2電子励起1回の量子操作の時間内に1電子励起の量子操作を何回分実装できるかを示す自然数である。nの値は、1量子ビットゲートの処理実行時間と2量子ビットゲートの処理実行時間とによって決まる。例えばnは「5」程度の値となる。
【0129】
量子回路生成部110は、列zで1電子励起yの対象の量子ビットのうちの少なくとも一方がn回使用済みの場合、処理をステップS325に進める。また量子回路生成部110は、すべての量子ビットがn-1回までしか使用していない場合、処理をステップS326に進める。
【0130】
なお量子回路生成部110は、1電子励起yの対象のいずれの量子ビットもn-1回までしか使用していない場合であっても、列z内に1電子励起yのギブンス回転回路を実装する位置が見つからない場合には処理をステップS325に進める。例えば列zをn個の細分化列に分割したときに、細分化列の中に1電子励起に対応するギブンス回転回路が配置される。実装対象の1電子励起yの励起元および励起先の2つの量子ビットが共に未使用の細分化列があれば、その1電子励起yを列z内に実装可能である。配置対象の1電子励起yの励起元および励起先の2つの量子ビットが共に未使用の細分化列がなければ、その1電子励起yを列z内に実装できないため、処理はステップS325に進められる。
【0131】
[ステップS325]量子回路生成部110は、第1列~第Dep列までのすべての列についてステップS323~S324の判定が終了した場合、処理をステップS327に進める。
【0132】
[ステップS326]量子回路生成部110は、ステップS323~S324で判定対象となっている列zに、配置先の決定対象となっている1電子励起yに対応するギブンス回転回路を配置する。その後、量子回路生成部110は処理をステップS329に進める。
【0133】
[ステップS327]量子回路生成部110は、変数「Dep」を1だけカウントアップする(Dep+1)。
[ステップS328]量子回路生成部110は、カウントアップされた後の第Dep列に、配置先の決定対象となっている1電子励起yに対応するギブンス回転回路を配置する。
【0134】
[ステップS329]量子回路生成部110は、生成テーブルに示されるすべての1電子励起についてステップS322~S327の処理が完了した場合、回転ゲートエレメント配置処理を終了する。
【0135】
このようにして1電子励起のギブンス回転回路と2電子励起のQNPPX回路とを同じ列に混在させたAnsatz回路が生成される。生成されたAnsatz回路は、各量子ビットを効率的利用し、回路の深さが低減される。
【0136】
図20は、同一列に1電子励起と2電子励起との回路を混在させたAnsatz回路の一例を示す図である。量子回路生成部110は、生成テーブル90を参照しながらAnsatz回路91を生成する。Ansatz回路91には、まずHF状態を準備するHF状態準備回路92が配置される。HF状態準備回路92に続けて、1電子励起に対応する複数のギブンス回転回路と2電子励起に対応するQNPPX回路とが混在して配置される。
【0137】
例えば量子回路生成部110は、まず第1列に、量子ビット番号「1,3」の各量子ビットを励起元、量子ビット番号「5,7」の各量子ビットを励起先とするQNPPX回路を配置する。
【0138】
次の配置対象のQNPPX回路(生成テーブル90で5行目)は、励起先の量子ビット番号に「7」が含まれる。第1列において量子ビット番号「7」はすでにQNPPX回路で使用されているため、第1列にはこれ以上配置できない。そこで量子回路生成部110は、第2列に量子ビット番号「0,3」の各量子ビットを励起元、量子ビット番号「4,7」の各量子ビットを励起先とするQNPPX回路を配置する。
【0139】
次に量子回路生成部110は、第2列に、量子ビット番号「2,1」の各量子ビットを励起元、量子ビット番号「6,5」の各量子ビットを励起先とするQNPPX回路を配置する。
【0140】
次の配置対象のQNPPX回路(生成テーブル90で8行目)は、励起先の量子ビット番号に「1」と「7」が含まれる。第1列と第2列の両方において量子ビット番号「1」と「7」はすでにQNPPX回路で使用されている。そのため、第1列と第2列とのいずれにも、次の配置対象のQNPPX回路は配置できない。そこで量子回路生成部110は、第3列に量子ビット番号「0,1」の各量子ビットを励起元、量子ビット番号「6,7」の各量子ビットを励起先とするQNPPX回路を配置する。
【0141】
その後、量子回路生成部110は、各列の空いている領域に、ギブンス回転回路を配置する。なお
図20の例では、QNPPX回路の処理の時間内に2つのギブンス回転回路を処理できるものとする。その結果、第1列に、量子ビット番号「2」の量子ビットを励起元、量子ビット番号「6」の量子ビットを励起先とするギブンス回転回路が配置される。次に同じ第1列に、量子ビット番号「2」の量子ビットを励起元、量子ビット番号「4」の量子ビットを励起先とするギブンス回転回路が配置される。次に第3列に、量子ビット番号「3」の量子ビットを励起元、量子ビット番号「5」の量子ビットを励起先とするギブンス回転回路が配置される。最後に、第3列に、量子ビット番号「3」の量子ビットを励起元、量子ビット番号「4」の量子ビットを励起先とするギブンス回転回路が配置される。
【0142】
このように同一列に1電子励起の回路と2電子励起の回路とを混在可能とすることで、Ansatz回路91の長さを短くすることができる。
〔その他の実施の形態〕
第2の実施の形態では窒素分子の基底エネルギーを算出する場合の例を示したが、第2の実施の形態に示した処理は他の量子化学計算にも適用可能である。
【0143】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【0144】
1 量子回路
2a,2b,・・・,3a,3b,・・・ 部分回路
10 情報処理装置
11 記憶部
12 処理部