(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023168371
(43)【公開日】2023-11-24
(54)【発明の名称】情報処理方法、量子回路生成装置及びプログラム
(51)【国際特許分類】
G06N 10/60 20220101AFI20231116BHJP
G06F 7/38 20060101ALI20231116BHJP
【FI】
G06N10/60
G06F7/38 510
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023150769
(22)【出願日】2023-09-19
(62)【分割の表示】P 2023549811の分割
【原出願日】2022-09-14
(31)【優先権主張番号】P 2021189039
(32)【優先日】2021-11-19
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】519307850
【氏名又は名称】株式会社Quemix
(71)【出願人】
【識別番号】304021417
【氏名又は名称】国立大学法人東京工業大学
(74)【代理人】
【識別番号】110002789
【氏名又は名称】弁理士法人IPX
(72)【発明者】
【氏名】西 紘史
(72)【発明者】
【氏名】小杉 太一
(72)【発明者】
【氏名】西谷 侑将
(72)【発明者】
【氏名】松下 雄一郎
(57)【要約】
【課題】量子ビットの指数関数的測定回数をより抑えた情報処理方法等を提供すること。
【解決手段】本発明の一態様によれば、情報処理方法が提供される。この情報処理方法は、次の各ステップを備える。変換ステップでは、n個の量子ビットに対する演算子を、(n/2)個未満の補助ビットを用いて、ユニタリゲートに変換する。ユニタリゲートは演算子を直接実装可能な形式である。回路生成ステップでは、ユニタリゲートに基づいて、補助ビットが所定の状態として観測された場合に時間発展演算子として機能する量子回路を生成する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
情報処理方法であって、
次の各ステップを備え、
変換ステップでは、n個の量子ビットに対する演算子を、(n/2)個未満の補助ビットを用いて、ユニタリゲートに変換し、ここで、前記ユニタリゲートは前記演算子を直接実装可能な形式であり、
回路生成ステップでは、前記ユニタリゲートに基づいて、前記補助ビットが所定の状態として観測された場合に時間発展演算子として機能する量子回路を生成する、方法。
【請求項2】
請求項1に記載の情報処理方法において、
前記変換ステップでは、前記演算子を、前記時間発展演算子とユニタリ演算子とのみを用いる形式に変換し、ここで、前記時間発展演算子はエルミート演算子を含む、方法。
【請求項3】
請求項1又は請求項2に記載の情報処理方法において、
前記変換ステップでは、前記演算子を、前記時間発展演算子とは異なる実時間発展演算子とユニタリ演算子とのみを用いる形式に変換し、ここで、前記実時間発展演算子はユニタリ演算子を含む、方法。
【請求項4】
請求項1~請求項3の何れか1つに記載の情報処理方法において、
前記時間発展演算子は、エルミート演算子により生成可能に構成される、方法。
【請求項5】
請求項1~請求項4の何れか1つに記載の情報処理方法において、
演算ステップをさらに備え、
前記演算ステップでは、前記量子回路を用いた量子計算を実行する、方法。
【請求項6】
請求項5に記載の情報処理方法において、
前記演算ステップでは、前記量子回路が反復的に使用される場合に、この量子回路を規定するパラメータを古典計算機に初回のみ演算させる、方法。
【請求項7】
請求項5又は請求項6に記載の情報処理方法において、
前記演算ステップでは、行列又は演算子の、実部が最小の固有値に属する固有ベクトルを取得する場合に、前記固有ベクトルを量子ビット状態として取得する、方法。
【請求項8】
請求項5~請求項7の何れか1つに記載の情報処理方法において、
前記演算ステップでは、
与えられた線形演算子の固有ベクトルを量子ビット状態として取得し、
前記量子ビット状態の前記固有ベクトルを入力とする量子計算に基づいて、固有値を新たに取得し、これにより前記固有ベクトルを求める問題を行列のカーネルを決定する問題に変換する、方法。
【請求項9】
請求項5~請求項8の何れか1つに記載の情報処理方法において、
前記演算ステップは、ループ処理を含み、
前記ループ処理では、前記時間発展演算子を用いて線形演算子の固有値問題を解く場合に、各回の演算結果に応じて前記量子回路の構成を更新する、方法。
【請求項10】
請求項1~請求項9の何れか1つに記載の情報処理方法において、
前記量子回路は、前記補助ビットが前記所定の状態として観測される確率を向上可能な量子振幅増幅回路をさらに含む、方法。
【請求項11】
請求項1~請求項10の何れか1つに記載の情報処理方法において、
さらに、前置振幅増幅回路生成ステップでは、生成された前記量子回路に基づき前置振幅増幅演算子に対応する前置振幅増幅回路を生成し、ここで、
前記前置振幅増幅演算子は、前記量子ビット及び前記補助ビットに対して作用することにより、前記補助ビットが前記所定の状態である確率振幅を増加可能なユニタリ演算子であり、少なくとも、前記演算子に対応する前記時間発展演算子を含み、
さらに、増幅ステップでは、生成された前記前置振幅増幅回路を作用させた後に、生成される前記量子回路を作用させる、方法。
【請求項12】
請求項11に記載の情報処理方法において、
前記前置振幅増幅演算子は、前記量子ビットの状態が特定状態である場合、当該特定状態の符号を反転させる反射演算子を少なくとも含み、
前記増幅ステップでは、前記反射演算子が演算された後に、生成された前記量子回路を作用させる、方法。
【請求項13】
請求項11又は請求項12に記載の情報処理方法において、
さらに、増幅回数決定ステップでは、前記時間発展演算子に対応する所定の比例定数に基づき、前記前置振幅増幅回路を繰り返し作用させる増幅回数を決定する、方法。
【請求項14】
請求項13に記載の情報処理方法において、
前記増幅回数決定ステップでは、さらに、前記時間発展演算子が作用された前記n個の量子ビットの状態の存在確率に基づき、前記増幅回数を決定する、方法。
【請求項15】
請求項11~請求項14の何れか1つに記載の情報処理方法において、
前記回路生成ステップでは、前記前置振幅増幅演算子を作用させた前記量子ビット及び前記補助ビットに対して、前記補助ビットを測定せずにさらに生成された前記量子回路を作用させるように構成された二次量子回路を生成する、方法。
【請求項16】
請求項15に記載の情報処理方法において、
前記回路生成ステップでは、前記補助ビットが前記所定の状態とは異なる状態として観測される場合における前記量子ビットの状態の係数と、前記補助ビットが前記所定の状態として観測される場合における前記量子ビットの状態の係数と、の比が予め定められた許容値以上の場合に、前記二次量子回路を生成する、方法。
【請求項17】
請求項1~請求項16の何れか1つに記載の情報処理システムにおいて、
前記変換ステップでは、前記演算子に含まれる虚時間発展演算子を、複数の異なる実時間発展演算子の線形和に対応する前記ユニタリゲートに変換する、方法。
【請求項18】
請求項17に記載の情報処理方法において、
前記変換ステップでは、
K個の前記実時間発展演算子のそれぞれと前記虚時間発展演算子とを時間ステップに関してK次の線形空間における基底の線形結合に変換した場合における、前記虚時間発展演算子に関する当該基底の係数と、前記実時間発展演算子の線形和に関する当該基底の係数と、の比較を行い、
当該比較の結果に基づき、複数の異なる実時間発展演算子の線形和に対応する前記ユニタリゲートに変換する、方法。
【請求項19】
量子回路生成装置であって、
制御部を備え、
前記制御部は、請求項1~請求項18の何れか1つに記載の情報処理方法の各ステップを実行するように構成される、もの。
【請求項20】
プログラムであって、
コンピュータに、請求項1~請求項18の何れか1つに記載の情報処理方法の各ステップを実行させる、もの。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理方法、量子回路生成装置及びプログラムに関する。
【背景技術】
【0002】
量子力学を情報処理に用いた量子情報処理が提案されている。また、このような量子情報処理に基づく量子計算機が、多く研究されている。
【0003】
例えば、特許文献1には、量子情報処理の従来技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、従来の量子情報処理によれば、ある演算子の最小固有値とその固有ベクトルの量子状態を求める際、2^N回程度の莫大な数の測定(量子ビットの指数関数的測定回数)を繰り返さなくてはならなかった。
【0006】
本発明では上記事情に鑑み、量子ビットの指数関数的測定回数をより抑えた情報処理方法等を提供することとした。
【課題を解決するための手段】
【0007】
本発明の一態様によれば、情報処理方法が提供される。この情報処理方法は、次の各ステップを備える。変換ステップでは、n個の量子ビットに対する演算子を、(n/2)個未満の補助ビットを用いて、ユニタリゲートに変換する。ユニタリゲートは演算子を直接実装可能な形式である。回路生成ステップでは、ユニタリゲートに基づいて、補助ビットが所定の状態として観測された場合に時間発展演算子として機能する量子回路を生成する。
【0008】
このような態様によれば、量子ビットの指数関数的測定回数をより抑えることができる。
【図面の簡単な説明】
【0009】
【
図1】量子回路生成装置1のハードウェア構成を示すブロック図である。
【
図2】第1の実施形態に係る量子回路生成装置1における制御部13等によって実現される機能を示すブロック図である。
【
図3】一般の演算子Lを生成子とする時間発展演算子exp(LΔt)を実装する量子回路である。
【
図4】一般のエルミート演算子Hを生成子とする虚時間発展演算子exp(-HΔτ)を実装する量子回路である。
【
図5】
図4にある量子回路にΔτの一次の範囲内で等価な量子回路である。
【
図6】一般の演算子Lを生成子とする時間発展演算子exp(LΔt)を実行する手順を示すフローチャートである。
【
図7】虚時間発展法を用いて自己無撞着方程式の解を得るための手順を示すフローチャートである。
【
図8】実施例における正しい基底状態と虚時間発展計算の初期状態を示している。
【
図9】実施例における正しい基底状態と、虚時間発展計算の成功状態及び失敗状態とを示している。
【
図10】
図5に示される量子回路と等価な量子回路の一例を示す図である。
【
図11】厳密な虚時間発展法における振幅増幅演算子Qを実装する量子回路の一例を示す図である。
【
図12】虚時間発展演算子exp(-HΔτ)に対応する厳密な前置振幅増幅演算子を実装する量子回路の一例を示す図である。
【
図13】Δτの1次の範囲で等価な虚時間発展演算子exp(-HΔτ)に対応する前置振幅増幅演算子Q~を実装する量子回路の一例を示す図である。
【
図14】虚時間発展法に対して前置振幅増幅演算子に基づく量子振幅増幅法を適用する場合における量子回路の一例を示す図である。
【
図15】2つの連続した虚時間発展演算子exp(-HΔτ)を実装する量子回路C_{two}の一例を示す図である。
【
図16】前のステップにおける参照回路U_refを実装する量子回路の概要を示す図である。
【
図17】N_τステップにおける前置振幅増幅演算子Q~_{N_τ}を実装する量子回路の一例を示す図である。
【
図18】D_two^(1)を実装する量子回路の一例を示す図である。
【
図19】虚時間発展法と量子振幅増幅法を併用した場合の情報処理の流れの一例を示すフローチャートである。
【
図20】量子ビット数Nの変化による、振幅増幅演算子Qのための量子回路に必要なCXゲート数と、前置振幅増幅演算子Q~のための量子回路に必要なCXゲート数を示す図である。
【
図21】実施例における各虚時間ステップにおける成功確率のシミュレーション結果を示す図である。
【
図22】実施例における全成功確率のシミュレーション結果を示す図である。
【
図23】実施例における各虚時間ステップにおける忠実度のシミュレーション結果を示す図である。
【
図24】N量子ビット系に対して、2つのユニタリ演算子U0,U1の線形和を演算するための量子回路QC1の一例を示す図である。
【
図25】ユニタリの線形和のための量子回路QC1を一般化した量子回路QCnの一例を示す図である。
【
図26】τの2次の範囲で等価な虚時間発展演算子のための量子回路QCτ2の一例を示す図である。
【
図27】τの高次の範囲で等価な虚時間発展計算と量子振幅増幅を併用した場合における量子回路QCA1の一例を示す図である。
【
図28】τの高次の範囲で等価な虚時間発展計算のためのフローチャートである。
【
図29】実施例におけるτの高次の範囲で等価な虚時間発展計算の忠実度のシミュレーション結果を示す図である。
【発明を実施するための形態】
【0010】
[実施形態]
以下、図面を用いて本発明の実施形態について説明する。以下に示す実施形態中で示した各種特徴事項は、互いに組み合わせ可能である。
【0011】
ところで、本実施形態に登場するソフトウェアを実現するためのプログラムは、コンピュータが読み取り可能な非一時的な記録媒体(Non-Transitory Computer-Readable Medium)として提供されてもよいし、外部のサーバからダウンロード可能に提供されてもよいし、外部のコンピュータで当該プログラムを起動させてクライアント端末でその機能を実現(いわゆるクラウドコンピューティング)するように提供されてもよい。
【0012】
また、本実施形態において「部」とは、例えば、広義の回路によって実施されるハードウェア資源と、これらのハードウェア資源によって具体的に実現されうるソフトウェアの情報処理とを合わせたものも含みうる。また、本実施形態においては様々な情報を取り扱うが、これら情報は、例えば電圧・電流を表す信号値の物理的な値、0又は1で構成される2進数のビット集合体としての信号値の高低、又は量子的な重ね合わせ(いわゆる量子ビット)によって表され、広義の回路上で通信・演算が実行されうる。
【0013】
また、広義の回路とは、回路(Circuit)、回路類(Circuitry)、プロセッサ(Processor)、及びメモリ(Memory)等を少なくとも適当に組み合わせることによって実現される回路である。すなわち、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、プログラマブル論理デバイス(例えば、単純プログラマブル論理デバイス(Simple Programmable Logic Device:SPLD)、複合プログラマブル論理デバイス(Complex Programmable Logic Device:CPLD)、及びフィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA))等を含むものである。
【0014】
1.ハードウェア構成
本節では、本実施形態のハードウェア構成について説明する。以下、古典計算機の一例として量子回路生成装置1のハードウェア構成について説明する。なお、あくまでも一例であり、量子メモリ、量子プロセッサ等を備える量子計算機の構成として量子回路生成装置1を実施してもよい。
【0015】
図1は、量子回路生成装置1のハードウェア構成を示すブロック図である。量子回路生成装置1は、通信部11と、記憶部12と、制御部13と、表示部14と、入力部15とを有し、これらの構成要素が量子回路生成装置1の内部において通信バス10を介して電気的に接続されている。各構成要素についてさらに説明する。
【0016】
通信部11は、USB、IEEE1394、Thunderbolt(登録商標)、有線LANネットワーク通信等といった有線型の通信手段が好ましいものの、無線LANネットワーク通信、3G/LTE/5G等のモバイル通信、Bluetooth(登録商標)通信等を必要に応じて含めてもよい。すなわち、これら複数の通信手段の集合として実施することがより好ましい。すなわち、量子回路生成装置1は、通信部11及びネットワークを介して、外部から種々の情報を通信してもよい。
【0017】
記憶部12は、前述の記載により定義される様々な情報を記憶する。これは、例えば、制御部13によって実行される量子回路生成装置1に係る種々のプログラム等を記憶するソリッドステートドライブ(Solid State Drive:SSD)等のストレージデバイスとして、あるいは、プログラムの演算に係る一時的に必要な情報(引数、配列等)を記憶するランダムアクセスメモリ(Random Access Memory:RAM)等のメモリとして実施されうる。記憶部12は、制御部13によって実行される量子回路生成装置1に係る種々のプログラムや変数等を記憶している。
【0018】
制御部13は、量子回路生成装置1に関連する全体動作の処理・制御を行う。制御部13は、例えば不図示の中央処理装置(Central Processing Unit:CPU)である。制御部13は、記憶部12に記憶された所定のプログラムを読み出すことによって、量子回路生成装置1に係る種々の機能を実現する。すなわち、記憶部12に記憶されているソフトウェアによる情報処理が、ハードウェアの一例である制御部13によって具体的に実現されることで、制御部13に含まれる各機能部として実行されうる。これらについては、次節においてさらに詳述する。なお、制御部13は単一であることに限定されず、機能ごとに複数の制御部13を有するように実施してもよい。またそれらの組合せであってもよい。
【0019】
表示部14は、例えば、量子回路生成装置1の筐体に含まれるものであってもよいし、外付けされるものであってもよい。表示部14は、ユーザが操作可能なグラフィカルユーザインターフェース(Graphical User Interface:GUI)の画面を表示する。これは例えば、CRTディスプレイ、液晶ディスプレイ、有機ELディスプレイ及びプラズマディスプレイ等の表示デバイスを使い分けて実施することが好ましい。
【0020】
入力部15は、量子回路生成装置1の筐体に含まれるものであってもよいし、外付けされるものであってもよい。例えば、入力部15は、表示部14と一体となってタッチパネルとして実施されてもよい。タッチパネルであれば、ユーザは、タップ操作、スワイプ操作等を入力することができる。もちろん、タッチパネルに代えて、スイッチボタン、マウス、QWERTYキーボード等を採用してもよい。すなわち、入力部15がユーザによってなされた操作入力を受け付ける。当該入力が命令信号として、通信バス10を介して制御部13に転送され、制御部13が必要に応じて所定の制御や演算を実行しうる。
【0021】
2.機能構成
本節では、本実施形態の機能構成について説明する。前述の通り、記憶部12に記憶されているソフトウェアによる情報処理がハードウェアの一例である制御部13によって具体的に実現されることで、制御部13に含まれる各機能部が実行されうる。
【0022】
図2は、第1の実施形態に係る量子回路生成装置1における制御部13等によって実現される機能を示すブロック図である。具体的には、量子回路生成装置1は、受付部131と、出力部132と、変換部133と、回路生成部134と、演算部135とを備える。
【0023】
受付部131は、通信部11を介して外部から種々の情報を受け付けるように構成される。例えば、受付部131は、受付部131が受け付けた種々の情報は記憶部12に記憶され、必要に応じて記憶部12における作業メモリに読み出されてもよい。
【0024】
出力部132は、量子回路生成装置1における演算結果等の種々の情報を出力するように構成される。出力される情報は、例えば、画面や画像として表示部14に表示させるための出力等が該当する。
【0025】
変換部133は、量子情報処理における種々の変換を実行するように構成される。具体的には例えば、変換部133は、変換ステップにおいて、n個の量子ビットに対する演算子を、(n/2)個未満の補助ビットを用いて、ユニタリゲートに変換する。なお、ユニタリゲートは、演算子を直接実装可能な形式である。これについては後にさらに詳述する。
【0026】
回路生成部134は、ユーザが所望する量子回路を生成するように構成される。例えば、かかる量子回路は、時間発展演算子として機能する量子回路であってよい。さらに具体的には例えば、回路生成部134は、回路生成ステップにおいて、ユニタリゲートに基づいて、補助ビットが所定の状態として観測された場合に時間発展演算子として機能する量子回路を生成する。これについては後に更に詳述する。
【0027】
演算部135は、種々の演算を実行するように構成される。具体的には例えば、演算部135は、演算ステップにおいて、量子回路を用いた量子計算を実行することができる。
【0028】
3.前提知識
本節では、次節に説明する情報処理方法の前に、量子力学的背景について概説する。
【0029】
古典計算機は、現代においては物理学、化学及び工学の各分野における学問的課題を解決だけでなく多様な産業における商品開発や種々の最適化問題などで日常的に活用されている。しかし、これらの課題の少なくない種類のものは、より高度な問題を扱おうとすると要求される計算機資源が爆発的に増加してしまい、古典計算機だけでは手に負えなくなる。
【0030】
この困難を回避する有望な可能性として、量子計算機の研究が進められている。量子計算機を使用すれば古典計算機よりも効率的に解くことができる問題には、現時点で知られているだけでも様々な種類のものがあるが、それらの多くは量子力学に従う物理系の最低エネルギー状態を得るための問題、あるいはその物理系の時間発展を追跡する問題に書き換えられることが知られている。したがって、このような物理系に関する問題を量子計算機で効率的かつ省資源で解けるようになることが好ましい。
【0031】
実際には、量子計算機には、古典計算機には無い特有の制約があるため、その制約の下で目的を果たすための巧妙な手法を考案しなければならない。
【0032】
N量子ビット系に対して、重ね合わせ状態を考えると、N量子ビットの状態は2^N個の状態の重ね合わせで表現される。ところで、その2^N個の係数を自由度と見做し、2^N次元のベクトルであるとみなすことができ、そのように考えるとN量子ビットで2^N次元ベクトルの情報を表すことができる。そして、そのN量子ビットの2^N個の係数に対して、自由に好きな量を複素数の自由度まで含めて入力することが好ましい。しかし、一般に、その2^N個の係数を直接的に出力させることはできない。少なくとも、測定を行い、その2^N個の係数の大きさを測定結果から知ることができるに過ぎない。また、そのためには、単純には2^N回程度の測定を行わなくてはならず、莫大な数の測定を繰り返さなくてはならない。
【0033】
例えば、N量子ビット系に対して、ある初期状態を設定し、虚時間発展を行うことにより、ある演算子Lの固有ベクトルの量子状態を得ることが出来る。しかし、固有ベクトルの情報を引き出すためには、2^N回程度の莫大な数の測定を繰り返さなくてはならない。虚時間発展法などで仮に、ゲート操作数を指数関数的に減らすことができても、測定回数が指数関数回必要であると、量子アルゴリズムのありがたさを享受することができない。
【0034】
最小化問題において、しばしば問題は、イジングハミルトニアンの問題へとマッピングされる。つまり、効率的にイジング問題を解くことができれば、最小化問題が解けたということとなる。ここで、イジング問題を解くとは、さまざまなスピン状態の中でイジングハミルトニアンの最小固有値状態を見つけることである。
【0035】
さらに、物理系の最小エネルギー状態を求めることは、与えられた電子系ハミルトニアンに対して、そのハミルトニアンの最小固有値状態を見つけることである。このように、最小化問題・物理系の最小エネルギー状態を求めることは、それぞれのハミルトニアンの最小固有値状態を見つけることである、という意味で同じ問題である。ここで、ハミルトニアンをLと書いたとする。つまり、Lx=λx(ここで、xはベクトル、λは固有値とする)を満たす固有値の内、最小固有値λ_{min}とその固有ベクトルx_{min}を見つける問題と数学的に言い換えることができる。
【0036】
さて、与えられたハミルトニアンの最小固有値状態を見つけることは、昔から量子力学の世界で重要なトピックスであった。その解法の中に重要なものとして、虚時間発展法が挙げられる。ある初期状態ベクトルx_0に対して、演算子exp(-Lτ)を作用させ(τは実数パラメータであり、虚時間と呼ばれる量である)、パラメータτを十分に大きくすることにより(つまり、虚時間発展をさせることにより)、初期状態ベクトルx_0はノルムを除いてx_{min}ベクトルへと収束する。つまり、演算子exp(-Lτ)を量子計算機上に実装することができれば、最小固有値x_{min}ベクトルを量子計算機上にて実現することができる。つまり、演算子(-Lτ)を改めて、Lと定義してやると、一般に演算子exp(L)を量子計算機上に実装することができれば、最小値問題や、物理系の最小エネルギー状態を解けることにつながってくる。
【0037】
対象の量子ビット系のための一般の演算子Lの指数関数により定義される非ユニタリ演算子exp(L)が与えられたとき、少数の補助ビットが追加された量子回路上のユニタリゲートと測定を組み合わせることによってその演算子exp(L)を実装する。例えば、回路パラメータの決定が要求する古典計算量が問題サイズに関して指数的であるのに対し、本手法におけるそれは問題サイズの多項式時間によって表されるため有利である。この回路の使用によって確率的に所望の演算が行われる。つまり、補助ビットの測定結果が特定のものである場合には所望の演算が実行された対象量子ビット系が得られる。
【0038】
従来手法は確率的でない、つまり所望の演算が確実に実行されるという性質を持っているが、計算コストが未だ実用の範囲にはない。本手法は量子回路で補助ビットと所望の演算子の演算のビットのテンソル積を実現し、少数の補助ビットの状態に依存して確率的に所望の演算を行った上で量子振幅増幅と呼ばれる既存の手法を併用して補助ビットの所定の状態の発生確率を増幅させることによりその計算の実現確率を確保し、補助ビットが所定の状態で観測された結果のみを選択的に取得することで、従来よりも格段に小さい計算コストで実用に耐える確率で所望の演算を実行することが可能になる。
【0039】
ある演算子Lの最小固有値とその固有ベクトルの量子状態を求める際、特に、固有ベクトルの情報を引き出すためには、2^N回程度の莫大な数の測定を繰り返さなくてはならなかった。本実施形態では、量子計算機上で虚時間発展法によって2^N回だけ最低固有値の固有ベクトルを生成・測定し、固有ベクトルを求めることはせずに、量子計算機上で虚時間発展法によって数回だけ最低固有値の固有ベクトルを生成し、量子位相推定(QPE)などの量子回路を通し、最低固有値をまず求めることを行う。最低固有値(ここではλ_{min}とする)を求めた後、演算子{L-λ_{min}}のカーネルを古典計算機上で求めることで、量子ビットの指数関数的測定回数を回避することができる。これについては、次節以降でさらに詳しく説明する。
【0040】
4.情報処理方法
本節では、前述した機能構成に関する量子力学的な理論について補足し、これに基づく情報処理方法について説明する。
【0041】
また、本節で参照する各図は、以下の通りである。
図3は、一般の演算子Lを生成子とする時間発展演算子exp(LΔt)を実装する量子回路である。
図4は、一般のエルミート演算子Hを生成子とする虚時間発展演算子exp(-HΔτ)を実装する量子回路である。
図5は、
図4にある量子回路にΔτの一次の範囲内で等価な量子回路である。
図6は、一般の演算子Lを生成子とする時間発展演算子exp(LΔt)を実行する手順を示すフローチャートである。
図7は、虚時間発展法を用いて自己無撞着方程式の解を得るための手順を示すフローチャートである。
【0042】
4.1 一般の演算子を生成子とする時間発展演算子のための量子回路
本情報処理では、N量子ビット系のための一般の演算子Lが与えられたときに、これを生成子とする時間発展演算子exp(LΔt)を実装する量子回路を構成することを考える。Δtは時間ステップを表す微小な実数である。時間発展演算子exp(LΔt)を量子回路として構成することができれば、それを反復することにより任意の自然数Nに対して、時間発展演算子exp(LNΔt)を実行することができる。
【0043】
実定数m0から非ユニタリなエルミート演算子Mは、数1のように定義される。また、非エルミートなユニタリ演算子Uは、数2のように定義される。
【数1】
【数2】
【0044】
さらに、N量子ビット系のためのエルミート演算子Θが、数3のように定義される。
【数3】
【0045】
κとd0とをそれぞれ数4及び数5にあるように定義すると、これらを用いてθ0が数6にあるように定義される。
【数4】
【数5】
【数6】
【0046】
n+2個の量子ビットのための量子回路として、
図3に示される量子回路2が定義される。これに含まれるゲートWは数7により定義される単一量子ビット変換である。
図3におけるRyは、y回転ゲートである。
【数7】
【0047】
任意のN量子ビット状態|ψ>(入力ビット23)と|0>状態である補助ビット21と補助ビット22とから成るn+2量子ビット状態を、量子回路2に入力すると、測定直前までに全体の状態はΔtの一次の範囲内で数8のように変化する。なお、補助ビット21及び補助ビット22等の補助ビットは、アンシラビットとも呼ばれる。その右辺を見れば分かるように、補助ビット21及び補助ビット22を測定して、観測部211及び観測部221において、
状態が得られたならば、その直後にN量子ビット状態は、物理的に重要でない定数因子を別にして、所望の状態exp(LΔt)|ψ>になる。
【数8】
【0048】
このことは、量子回路2を用いればN量子ビットのための演算子exp(LΔt)を確率的に実装可能であることを意味する。またN量子ビットのための演算子exp(iκΘ)とexp(-iκΘ)は、ユニタリ演算子であるから、補助ビットを組み合わせることによりn+2量子ビットのためのユニタリゲートとしてこれらを実装することができる。
【0049】
以上をまとめると、この情報処理方法は、次の各ステップを備える。変換ステップでは、n個の量子ビットに対する演算子を、(n/2)個未満の補助ビットを用いて、ユニタリゲートに変換する。ユニタリゲートは、演算子を直接実装可能な形式である。回路生成ステップでは、ユニタリゲートに基づいて、補助ビットが所定の状態として観測された場合に所望の時間発展演算子として機能する量子回路を生成する。このような態様によれば、量子ビットの指数関数的測定回数をより抑えることができる。
【0050】
4.2 一般のエルミート演算子を生成子とする虚時間発展演算子のための量子回路
図3に示される量子回路2に関して、特別な場合としてLがエルミート演算子である場合(改めて、演算子Lがエルミートであることを明示的に表すために以下ではLの代わりに、エルミート演算子Hを用いる)は、より少ない補助ビット数で所望の演算を実装することができる。また、エルミート演算子の例としては、電子系ハミルトニアンやイジングハミルトニアン等が挙げられるが、あくまでも例でありこの限りではない。
【0051】
N量子ビット系のためのエルミート演算子Hが与えられているとする。これと実数Δτにより指定される虚時間発展演算子exp(-HΔτ)を考える。これと実定数m0から非ユニタリなエルミート演算子Mが数9のように定義される。Mは、非ユニタリ演算子である。
【数9】
【0052】
また、N量子ビット系のためのエルミート演算子Θは、数10のように定義される。
【数10】
【0053】
任意のN量子ビット状態|ψ>が与えられたときにM|ψ>を取得する量子回路を構成することを考える。演算子Mを実装するために、n+1個の量子ビットのための量子回路として
図4に示される量子回路3を考える。
【0054】
任意のN量子ビット状態である|ψ>(入力ビット33)と、|0>状態である補助ビット31とから成るN+1量子ビット状態を、量子回路3に入力すると、測定直前までに全体の状態は数11のように変化する。その右辺を見れば分かるように、補助ビット31を測定して観測部311において|0>状態が得られたならば、その直後にN量子ビット状態は(物理的に重要でない定数因子を別にして)所望の状態M|ψ>になる。
【数11】
【0055】
このことは、量子回路3を用いればN量子ビットのための虚時間発展演算子Mを確率的に実装することができることを意味する。またN量子ビットのための演算子exp(iκΘ)とexp(-iκΘ)とはユニタリ演算子(より詳しくは実時間発展演算子)であるから、アンシラビットを組み合わせることによりN+1量子ビットのためのユニタリゲートとしてこれらを実装することができる。
【0056】
換言すると、好ましくは、変換部133は、変換ステップにおいて、演算子を、時間発展演算子とその他のユニタリ演算子とのみを用いる形式に変換する。時間発展演算子は、エルミート演算子を含む。
詳細には、変換部133は、変換ステップにおいて、演算子を、実時間発展演算子とその他のユニタリ演算子とのみを用いる形式に変換する。実時間発展演算子は、ユニタリ演算子を含む。また、時間発展演算子は、エルミート演算子Hにより生成可能に構成される。なお、時間発展演算子の形式はこれに限らず任意である。例えば、時間発展演算子の形式は、その表式の中に演算子が現れる形式であっても、演算子が集合の要素として属する形式であってもよい。
【0057】
4.3 エルミート演算子を生成子とする場合の量子回路の等価変形
図4に示される量子回路3に含まれるexp(iκΘ)とexp(-iκΘ)とはユニタリ演算子であるから、原理的にはユニタリゲートとして実装可能である。しかし数10にあるΘの定義をそのままユニタリゲートとして実装する具体的な方法は自明ではない。そのため、
図3に示される量子回路2を、同じ計算を行う別の回路に近似(数学的な展開の有限次の範囲で厳密に等価であるような回路への変形)することができれば、その回路は実際的な量子計算のために有益である。その等価変形を以下で説明する。
【0058】
s_{1}は、数12のように定義される。これを用いて、ユニタリ演算子U_{RTE}が数13にあるように定義される。
【数12】
【数13】
【0059】
任意のN量子ビット状態|ψ>(入力ビット33)と|0>状態である1つの補助ビット31とから成るN+1量子ビット状態を、量子回路3に入力すると、測定直前までに全体の状態はΔτの一次の範囲内で数14のように変化する。この変化後の状態は数11にある状態にΔτの一次の範囲内で一致する。これは
図5に示される量子回路4が、
図4に示される量子回路3にΔτの一次の範囲内で等価であることを意味する。
【数14】
【0060】
exp(is_{1}HΔτ)とexp(-is_{1}HΔτ)とはユニタリな実時間発展演算子であり、これらを効率的に量子ゲートとして実装する様々な方法がすでに提案されている。したがってそれらの既存の手法をそのまま本手法のために流用できる。
【0061】
虚時間発展演算子を量子回路として実装し、それを反復させることにより、所望の自然数Nに対して、時間発展演算子exp(LNΔt)を実行することができる。ここで、正しく各虚時間ステップを演算するには、アンシラビットが|0>状態を出さなければならない。各虚時間発展ステップで、アンシラビットが|0>状態を取る振幅(確率)を増幅させることにより、より高確率に時間発展演算子exp(LΔt)を実行することができる。
【0062】
アンシラビットが|0>状態である振幅の増幅は、1つの方法として量子振幅増幅回路を挟むことにより、実現することができる。すなわち好ましくは、量子回路は、補助ビットが所定の状態として観測される確率を向上可能な量子振幅増幅回路をさらに含んでもよい。一般の演算子Lに対して、演算子exp(LNΔt)を量子計算機上において実装することができ、任意の初期状態に演算子exp(LNΔt)を作用させる量子回路を実現することができる。
【0063】
しかし、一般の演算子Lの場合、最低固有値が必ずしも実数になる必然性はなく、もし演算子Lがエルミート演算子の場合にのみ、固有値が実数になることが保証されているのみである。演算子Lが正則な非エルミート演算子である場合は、十分大きな数Nで虚時間発展演算子exp(LNΔt)を任意の初期状態に作用させると、Lの固有値のうち実部が最低のものに対応する固有状態に収束する。ただし、Lが正則でなくても演算子exp(LNΔt)を表す量子回路を実現できることには留意されたい。
【0064】
ここで、
図6を参照して、量子虚時間発展の情報処理について説明する。まず、初期値設定として、任意の量子ビットの初期状態が設定される。また、後述するループ処理に向けてカウンタkが1に設定される(ステップS101)。
【0065】
続いて、演算部135が量子虚時間発展を実行する(ステップS102)。具体的には、演算部135は、量子虚時間発展の実行部として機能するもので、少数アンシラビットを用いて量子虚時間発展ステップを表す量子回路により実行される。
【0066】
続いて、演算部135が量子振幅増幅を実行する(ステップS103)。具体的には、演算部135は、量子振幅増幅の実行部として機能するもので、量子振幅増幅は、アンシラビットの状態が|0>状態である確率を増幅させる量子回路により実行される。好ましくは、量子虚時間発展の実行において測定を実施する直前に挟み込まれる操作であり、アンシラビットにおいて所定の状態の観測確率を上げるように挿入される。
【0067】
続いて、演算部135がカウンタkの値がループ回数Nであるかどうかを判定する(ステップS104)。カウンタkに値がNに満たない場合は、カウンタkの値を1インクリメントして(ステップS105)、ステップS102に戻る。すなわち、ステップS102及びステップS103の処理が、ループ回数Nだけ繰り返されればよい。なお、本実施形態では、量子回路生成装置1が古典計算機である場合を例にしているが、特に当該処理についてはどちらで実施してもかまわない。
【0068】
カウンタkの値がNのとき、演算部135は、固有値及び固有ベクトルの少なくとも一方を求める処理を実行し(ステップS105)、その後処理を終了する。より具体的には、N回の量子虚時間発展を実施した後に、演算部135は、固有値及び固有ベクトルの一方又はその両方を求める実行部として機能する。
【0069】
さらに、上記問題を演算子L自身が固有ベクトルに依存している場合の固有値問題として、一般化することもできる。演算子Lが固有ベクトルxに依存していることを明示的に表すために、演算子A(x)と書き直すことにする。演算子Lが固有ベクトルxに依存していることは、非線型方程式を解く際に問題を擬似的に線形化する方法としてよく用いられる方法であり、物理においても密度汎関数理論など、様々な場面で見られるが、本実施形態はこれらに限定されない。
【0070】
ここで
図7を参照して、A(x)x=λxのxを求めるために自己無撞着計算を行う際、虚時間発展を行う手順について説明する。なお、xはベクトルであり未知数であり、λは未知数、A(x)は引数のベクトルに依存した演算子であり、所与の個数の量子ビットに作用する有限次元の行列として表現可能であるとする。Aの引数が定ベクトルのとき、解くべき方程式は線形方程式である。
【0071】
まず、演算部135は、演算子の初期値を、なんらかのベクトルyを用いてA(y)と設定する(ステップS201)。かかる処理は、古典計算機で実行するとよい。換言すると、好ましくは、演算部135は、演算ステップにおいて、このように量子回路が反復的に使用される場合に、この量子回路を規定するパラメータを古典計算機に初回のみ演算させるとよい。
【0072】
続いて、演算部135は、任意の量子ビットの初期状態を設定する(ステップS202)。
【0073】
続いて、後述するループ処理に向けてカウンタkが1に設定される(ステップS203)。
【0074】
続いて、演算部135が量子虚時間発展を実行する(ステップS204)。具体的には、演算部135は、量子虚時間発展の実行部として機能するもので、少数アンシラビットを用いて量子虚時間発展ステップを表す量子回路により実行される。
【0075】
続いて、演算部135が量子振幅増幅を実行する(ステップS205)。具体的には、演算部135は、量子振幅増幅の実行部として機能するもので、量子振幅増幅は、アンシラビットの状態が|0>状態である確率を増幅させる量子回路により実行される。好ましくは、量子虚時間発展の実行において測定を実施する直前に挟み込まれる操作であり、アンシラビットにおいて所定の状態の観測確率を上げるように挿入される。
【0076】
続いて、演算部135がカウンタkの値がループ回数Nであるかどうかを判定する(ステップS206)。カウンタkに値がNに満たないは、カウンタkの値を1インクリメントして(ステップS207)、ステップS204に戻る。すなわち、ステップS204及びステップS205の処理が、ループ回数Nだけ繰り返されればよい。
【0077】
カウンタkの値がNのとき、演算部135は、固有値及び固有ベクトルの少なくとも一方を求める処理を実行する(ステップS208)。より具体的には、N回の量子虚時間発展を実施した後に、演算部135は、A(y)の固有値及び固有ベクトルの一方又はその両方を求める実行部として機能する。換言すると、演算部135は、演算ステップにおいて、行列又は演算子の、実部が最小の固有値に属する固有ベクトルを取得する場合に、固有ベクトルを量子ビット状態として取得する。
【0078】
続いて、演算部135が出力された上記固有値λ及び固有ベクトルxの情報に基づいて、演算子A(y)を演算子A(x)に更新する(ステップS209)。つまり好ましくは、演算ステップは、ループ処理を含むもので、演算部135は、ループ処理において、時間発展演算子を用いて線形演算子の固有値問題を解く場合に、各回の演算結果に応じて量子回路の構成を更新する。
【0079】
続いて、演算部135が演算子A、固有値λ及び固有ベクトルxの収束を判定する(ステップS210)。これらのうち少なくとも1つが収束しなかった場合は、処理をステップS202に戻し、収束した場合は、処理を終了する。
【0080】
5.実施例
本節では、上記実施形態で説明した手法の実施例を説明する。ここでは、虚時間発展法を使用して量子力学的粒子の基底状態の波動関数を取得するための量子計算を説明する。この物理系のハミルトニアンHはエルミート演算子であり、虚時間発展法においては非ユニタリ演算子exp(-HΔτ)を粒子の初期状態に反復的に作用させることにより粒子は基底状態(あるいは同じことだが最低固有値状態)に到達することが知られており、古典計算機のための手法として広く使用されている。
【0081】
この実施例における問題設定は以下の通りである。ここでは、例として一次元井戸型ポテンシャルに閉じ込められた基底電子状態を、虚時間発展法を用いて求める。一次元空間内の長さ10の区間を64個の等間隔点に分割する。つまり、今の問題では64次元ベクトルを持った基底状態とその固有値を求めるとする。この固有ベクトルを量子計算機上で求めるために、6個の量子ビットを考える。6個の量子ビットが表す2^6個の独立な状態のそれぞれの係数を、64次元ベクトルの各成分に割り当てる。
【0082】
この場合の量子ビットの状態は|ψ>=Σ_{j=0}^{63}c_j|j>と表される。基底状態を表すように虚時間発展法で係数c_jを決定できればよい。
図8は、実施例における正しい基底状態と虚時間発展計算の初期状態を示している。
図8において、横軸は実空間(今の場合は1次元)を表し、縦軸は波動関数の振幅を表す。図中(A)として示される曲線が正しい基底波動関数(又は、ハミルトニアンの最小固有値を持つ固有ベクトル)である。本検証には、図中(B)として示される曲線の初期状態を選び、量子ビットの状態として入力を実施した。あくまで一例として、この曲線の状態を選んだものであり、任意の初期状態で構わない。この初期状態に対して、量子虚時間発展の量子回路を通した。
【0083】
非ユニタリ演算子exp(-HΔτ)を
図5に示した量子回路4として実装して、Δτを0.15とし、15ステップの虚時間発展計算を量子計算機で実行したときの結果を古典計算機でシミュレーションしたところ
図9にある結果が得られた。
図9は、実施例における正しい基底状態と、虚時間発展計算の成功状態及び失敗状態とを示している。
【0084】
図中の成功状態はアンシラビットの測定結果として|0>が得られたときの粒子の状態を表し、失敗状態は|1>が得られたときの粒子の状態を表す。同図によれば、図中(E)として示される成功状態は、図中(C)として示される正しい基底状態にほぼ一致しており、本手法が量子計算の手法として正しく動作していることが確認された。なお、図中(D)に示される曲線は、虚時間発展計算の失敗状態の一例である。
【0085】
一連の虚時間発展演算を反復的に繰り返すことにより、基底状態ベクトルを求めることが出来た。続いて、観測を通じて基底状態ベクトルを出力させる。固有状態ベクトルを出力させる方法として、いくつかの方法がある。ここでは一例として2つの方法を挙げる。1回の測定において得られる固有値ベクトルの情報は、量子ビットの状態|ψ>=Σ_{j=0}^{63}c_j|j>に対して、1つの状態|k>が|c_k|^2(絶対値の2乗)の確率で得られる、ことのみである。多数回測定を繰り返すことにより、|c_k|^2(絶対値の2乗)を求めることにより固有ベクトルの情報を出力させる方法がある。
【0086】
もう1つの固有ベクトルを求める方法の例としては、得られた量子ビット状態としての基底状態ベクトルに対し、固有ベクトルよりも先に基底固有値λを求めることを行う。基底固有値を求める方法として、測定前の固有ベクトルを用いて演算子Aの期待値を出力させる、又は、量子位相推定(QPE)を用いて演算子Aの期待値を出力させても良い。こうすることにより、基底固有値を求め、その後、演算子{A―λI}の核(カーネル)を、古典計算機を用いて求めることにより、固有ベクトルを求めることも出来る。
【0087】
換言すると、演算部135は、演算ステップにおいて、与えられた線形演算子の固有ベクトルを量子ビット状態として取得する。演算部135は、量子ビット状態の固有ベクトルを入力とする量子計算に基づいて、固有値を新たに取得し、これにより固有ベクトルを求める問題を行列のカーネルを決定する問題に変換する。
【0088】
上記の手順を踏むことにより、6量子ビット上の64次元固有ベクトルを出力させることができる。
【0089】
6.情報処理方法の別例
本章では、第4章で説明した情報処理方法の別例について、前述した機能構成に関する量子力学的な理論について補足しつつ説明する。本章で説明される情報処理方法は、第4章で説明した量子虚時間発展を実行することにより生成される状態に対する量子振幅増幅の別例ともいえる。なお、以下の説明においても、これまでと同様に、ある演算子と、当該演算子に対応する量子回路と、当該演算子に対応する量子操作とが、同一の部材番号を用いて表記されることがある。また、整数を表す添字、例えばm,nなどは、同一の記号であっても異なる値であってもよい。また、以下の説明では、量子虚時間発展を単に虚時間発展と表記することがある。以下の説明で用いられる
図10~
図18では、上記
図3~
図5と同様に、量子ビットをInputと、補助ビットをAncillaと表記する。説明の便宜上、補助ビットが1つの場合の量子回路が記載されることもあるが、補助ビットの数はこれに限られない。
【0090】
本章で説明される情報処理方法を用いることで、第4章で提案された情報処理において補助ビットが所定の状態として観測される確率をさらに増大させることができる。
【0091】
6.1 量子増幅回路の別例について
図10は、
図5に示される量子回路と等価な量子回路の一例を示す図である。以下、説明の便宜上、
図5に示される量子回路4と等価な量子回路を、単に量子回路5という。量子回路5は、N量子ビット系に対して非制御ユニタリゲートU_{RTE}を作用させ、その後、補助ビットを制御ビットとする制御ユニタリゲートU_{RTE}^†^2(ユニタリゲートU_{RTE}の2乗のエルミート共役)を作用させるように構成されている。この変形により、量子回路4に含まれる1つの制御ユニタリゲートU_{RTE}が非制御ユニタリゲートU_{RTE}に置き換わっている。これにより、虚時間発展演算子exp(-HΔτ)として機能する量子回路に含まれるゲート数が少なくなる。
図10では、量子回路4からユニタリ演算子U_{RTE}の制御ゲートを除くことで量子回路5を得ることができるが、同様にユニタリ演算子U_{RTE}^†の制御ゲートを除き制御ユニタリ演算子U_{RTE}^2とすることも可能である。以降で議論する量子回路に関しても同様の方法により、量子ゲート操作を削減することが可能である。
【0092】
6.2 量子振幅増幅を組み合わせた虚時間発展のための量子回路
6.2.1 虚時間発展法における量子振幅増幅演算子について
次に、虚時間発展法と量子振幅増幅法との併用の準備のために、量子回路U_PITEを用いて説明する。
【0093】
<量子回路U_PITE>
量子回路U_PITEは、N量子ビットと補助ビットとを含むN+1量子ビットの状態を作用するように構成されている。量子回路U_PITEは、N量子ビットに対して作用する参照回路U_refと、エルミート演算子Θを生成子として実時間発展演算子exp(-iκΘ)を実装する量子回路C_PITE(すなわち、量子回路3)と、を順に作用させるように構成されている。詳細には、量子回路U_PITEは、参照回路U_refと量子回路C_PITEの積を用いて数15のように表される。
【数15】
【0094】
<参照回路U_ref>
参照回路U_refは、量子回路U_PITEに入力されるN+1量子ビット状態のうちのN量子ビット状態から、N量子ビットの状態|ψ>を生成するための量子回路である。詳細には、参照回路U_refは、
状態から構成されるN量子ビット系を入力することで、所望の|ψ>状態から構成されるN量子ビット系を生成する。これにより、|0>状態に設定される1つの補助ビットと|ψ>状態から構成されるN+1量子ビット系が生成される。参照回路U_refは、生成されるN量子ビットの状態|ψ>に応じて適宜設定可能である。参照回路U_refは、量子回路C_PITEに
状態からなるN+1量子ビット系を入力するための量子回路として機能する。
【0095】
<量子回路C_PITE>
量子回路C_PITEは、例えば、
図4に示す量子回路3によって表される。量子回路C_PITEは、
状態から構成されるN+1量子ビット系に対して作用するように構成される。これにより、N量子ビット系に対して一般のエルミート演算子Hを生成子とする虚時間発展演算子exp(-HΔτ)を作用させた状態が、確率的に得られる。このような量子回路C_PITEは、時間ステップΔτをパラメータとする多項式展開可能に構成されている。以下、説明の便宜上、C_PITEのΔτの1次の範囲で等価な量子回路を、量子回路C_PITE^(1)という。
【0096】
上記N+1量子ビットから構成される
状態に対して量子回路U_PITEが作用することにより、数11の右辺に示されるように補助ビットが|0>状態の場合には|ψ>状態から構成されるN量子ビット系に対して虚時間発展演算子exp(-HΔτ)が作用された状態が得られる。以下、説明の便宜上、虚時間発展演算子exp(-HΔτ)が作用した状態を|ψ_success>といい、虚時間発展演算子exp(-HΔτ)が正しく作用しなかった状態を|ψ_failure>という。数11は、数16のように表すことができる。
【数16】
【0097】
ここで、|ψ_success>の係数がsinθ_aと、|ψ_failure>の係数がcosθ_aと表記される。これにより、|ψ_success>と|ψ_failure>とがどちらも規格化されている。
【0098】
と
が、補助ビットを含めたN+1量子ビット状態に関する表記として定義される。|Ψ_good>状態と|Ψ_bad>状態は、規格化されており、かつ、互いに直交している。cosθ_aは、本実施形態における補助ビットが所定の状態(|0>状態)とは異なる状態(|1>状態)として観測される場合における量子ビットの状態(|ψ_failure>状態)の係数に相当する。また、sinθ_aは、本実施形態における補助ビットが所定の状態(|0>状態)として観測される場合における量子ビットの状態|ψ_success>の係数に相当する。|Ψ_good>状態と|Ψ_bad>状態の2状態に対して量子振幅増幅が行われた場合、数16で表される状態は、数17へと変化する。
【数17】
【0099】
Qは、振幅増幅演算子である。振幅増幅演算子Qは、N+1量子ビット系に対する量子振幅増幅を表す。mは、振幅増幅演算子Qを作用させる増幅回数である。|Ψ_good>状態の係数が最大となるような増幅回数mとθ_aとの関係は、数18で表される。
【数18】
【0100】
kは任意の整数である。このような関係をもとに、制御部13は、予め得られたθ_aに基づき、より最適な増幅回数mを求めることができる。当該θ_aは、例えば、予め推定された成功確率を通じて取得することができる。なお、成功確率とは、|ψ_success>を観測する確率に対応する。制御部13は、このように計算された増幅回数mだけ振幅増幅演算子Qを繰り返し作用させることにより、望みの|Ψ_good>状態を得る確率を増幅させることができる。なお、増幅回数mは、|Ψ_good>状態の係数が最大となる場合に限らず、補助ビットが所定の状態とは異なる状態として観測される場合における量子ビットの状態の係数と、補助ビットが所定の状態として観測される場合における量子ビットの状態の係数と、の比(本実施形態では、tanθ_a)が予め定められた許容値以上となる範囲の値であってもよい。当該比は、成功確率に対応する。
【0101】
ここで、振幅増幅演算子Qの詳細について説明する。
図11は、厳密な虚時間発展法における振幅増幅演算子Qを実装する量子回路の一例を示す図である。当該振幅増幅演算子Qは、オラクルS_χを作用させ、その後、U_PITEとU_PITE^†とによって挟まれた零反射S_0を作用させるものである。具体的には、振幅増幅演算子Qは、数19により定義される。
【数19】
【0102】
<零反射S_0>
反射演算子S_φは、N個の量子ビットの状態のうち、特定状態|φ>の符号を反転させるが、それ以外の状態は変化させない操作である。特定状態|φ>が|0...0>である反射演算子S_φを零反射S_0という。
【0103】
<オラクルS_χ>
オラクルS_χは、増幅したい状態に直交する状態(ここでは|Ψ_bad>状態)の符号を反転させる操作を行う。零反射S_0は、量子振幅増幅と組み合わされるアルゴリズムに依らない量子回路として実装できる。オラクルS_χは、そのようなアルゴリズム(本実施形態では虚時間発展法)に対応する量子回路として適宜実装すればよい。
【0104】
6.2.2 量子振幅増幅演算子に対応する量子回路の構築
虚時間発展法におけるオラクルS_χは、補助ビットが|1>状態の場合に符号を反転するように構築されればよい。そのため、オラクルS_χは、数20のように表すことができる。
【数20】
【0105】
この場合、オラクルS_χは、補助ビットに作用する1量子ビット演算として実装できる。そのため、振幅増幅演算子Qは、
図11に示すような量子回路6として実装できる。当該量子回路6は、時間ステップΔτの1次の範囲で等価な虚時間発展法における振幅増幅演算子Qに対応するものであるが、高次の範囲で等価な虚時間発展法における振幅増幅演算子、及び厳密な虚時間発展法における振幅増幅演算子に対応する量子回路も、当該量子回路6と同様に実装できる。
【0106】
振幅増幅演算子Qを増幅回数mだけ繰り返し作用させる演算子Q^mと、ユニタリ演算子U_PITEの積から成る演算子は、数21のように変形可能である。
【数21】
【0107】
前置振幅増幅演算子Q~は、数22のように定義される。
【数22】
【0108】
図12は、虚時間発展演算子exp(-HΔτ)に対応する厳密な前置振幅増幅演算子を実装する量子回路の一例を示す図である。
図13は、Δτの1次の範囲で等価な虚時間発展演算子exp(-HΔτ)に対応する前置振幅増幅演算子Q~を実装する量子回路の一例を示す図である。
【0109】
厳密な虚時間発展のための量子回路に対応する前置振幅増幅演算子Q~は、
図12に示す量子回路7として実装できる。特に、量子回路U_PITEが時間ステップΔτの1次の範囲で等価な量子回路4の場合、前置振幅増幅演算子Q~は、
図13に示される量子回路8として実装できる。量子回路7、及び量子回路8は、前置振幅増幅回路の例である。
【0110】
量子回路8は、まず、入力されるN量子ビット系に対して参照回路U_refを作用させるように構成される。これにより、所望の|ψ>状態により構成されるN量子ビット系が生成される。次に、量子回路8は、生成された|ψ>状態により構成されるN量子ビット系に対して、U_{RTE}^2及びU_{RTE}^†^2のうちのいずれか1つを作用させるように構成される。次に、量子回路8は、N量子ビット系に対してU_ref^†を作用させ、補助ビットに対して回転ゲート演算R_z(-4θ_0)と、Xゲート演算σ_zと、を順に作用させるようにされる。次に、量子回路8は、N+1量子ビット系に対して零反射S_0を順に作用させるように構成されている。すなわち、前置振幅増幅演算子Q~は、(N個の)量子ビットの状態が特定状態|φ>である場合、当該特定状態|φ>の符号を反転させる反射演算子S_φを少なくとも含む。本実施形態では、前置振幅増幅演算子Q~は、反射演算子S_φとして、零反射S_0を少なくとも含む。なお、量子回路8は、上記演算以外にも、補助ビットに対してアダマール演算Hなどが適宜作用されるように構成されている。
【0111】
数12及び数13の関係より、U_{RTE}(s_{1}Δτ)^2は、U_{RTE}(2s_{1}Δτ)と等しい。そのため、U_{RTE}^2は、U_{RTE}^2の演算回数とU_{RTE}の演算回数とが一致するように、ユニタリ演算子U_{RTE}^2を実装できる。そのため、
図13に示される量子回路8は、
図11に示される量子回路6によって実装される振幅増幅演算子Qと同様に、所望の|ψ>状態に対する量子振幅増幅を行うように構成されている。一方、
図13に示される量子回路8は、
図11に示される量子回路6に比べて、ゲート演算の数が少ない。これは、振幅増幅演算子Qを
図11の量子回路のように実装する場合に比べて、
図12又は
図13のようにU_{RTE}^2及びU_{RTE}^†^2のうちの1つを作用させる前置振幅増幅演算子Q~として量子回路上に実装する方が制御ユニタリ演算子U_{RTE}と制御ユニタリ演算子U_{RTE}^†だけ量子回路の深さを削減できることを意味する。このような量子回路の深さの削減は、数21のような式変形により達せられる。数21の変形は、オラクルS_χが1量子ビットに対してのみ作用する演算子であることに着目し、オラクルS_χを量子回路U_PITEとその随伴行列U_PITE^†により挟むことを見出した点において創意工夫に富むものである。
【0112】
このように、前置振幅増幅演算子Q~は、量子ビット及び補助ビットに対して作用することにより、補助ビットが所定の状態(|0>)である確率振幅(すなわち、係数sinθ_a)を増加可能なユニタリ演算子であり、少なくとも、演算子に対応する時間発展演算子exp(iΘτ)を含む。
【0113】
図14は、虚時間発展法に対して前置振幅増幅演算子に基づく量子振幅増幅法を適用する場合における量子回路の一例を示す図である。量子回路9は、まず、入力されるN+1量子ビット系に対して前置振幅増幅演算子Q~が増幅回数mだけ繰り返し作用するように構成される。これにより、上記sinθ_aが増加し、|Ψ_good>状態の割合が増加する。量子回路9は、次に参照回路U_refが作用するように構成される。量子回路9は、次に、虚時間発展演算子exp(-HΔτ)を実装する量子回路C_PITEが作用するように構成される。なお、虚時間発展法に対して前置振幅増幅演算子に基づく量子振幅増幅法を適用するための量子回路は、虚時間発展演算子exp(-HΔτ)を実装する量子回路C_PITEがΔτの1次の範囲で等価な量子回路8である場合に限られず、Δτの高次の範囲で等価な量子回路であっても、厳密な虚時間発展のための量子回路であっても同様に構築可能である。
【0114】
6.2.3 振幅増幅の繰り返し回数を最小とするγの決定
振幅増幅の繰り返し回数mの最適値(増幅後の|Ψ_good>の係数が最大になるような増幅回数m)は、数17に示されるように、量子振幅増幅を行う前の状態の係数に依存する。そのため、何ら留意することなく増幅回数mが設定された場合、意図せずに増幅回数mが大きくなり、演算回数が不必要に多くなるおそれがある。
【0115】
そこで、本実施形態では、成功確率が量子回路実装において導入される実定数m0の関数であることに着目して、増幅回数mを最小とする実定数m0の決定法を提案する。上述したように、量子振幅増幅を行う前の状態の係数は、θ_aに依存し、当該θ_aは、成功確率と相関がある。そのため、実定数m0は、θ_aと相関がある。以下では、実定数m0のことをγとも記載する。
【0116】
量子振幅増幅をせずに厳密な虚時間発展法を用いた場合における成功確率は、γ^2に比例する。また、Δτの1次の範囲で等価な虚時間発展法を用いた場合における成功確率もまた、Δτの1次の範囲であればγ^2に比例する。そのため、成功確率が1となるために増幅回数mとパラメータγが満たすべき条件は数23で与えられる。なお、nは任意の非負の整数である。
【数23】
【0117】
【0118】
パラメータγの取りうる範囲は、0<γ<1かつγ≠1/√2である。制御部13は、この範囲において数23を満たすパラメータの組(m、γ、n)を探索し、当該組のなかで最小のmを増幅回数mとして採用すればよい。
【0119】
例えば、Δτが小さく(m、n)=(1、1)の場合、α^2≒1―2Δτ<ψ|H|ψ>≒1±Δより、数23の右辺は
となる。このΔは、1に対して十分小さい量である。Δが小さければパラメータγは条件0<γ<1かつγ≠1/√2を満たす。このとき、量子振幅増幅を1回のみ作用させれば良いため、演算回数の観点において望ましい。
【0120】
なお、制御部13は、上記方法により数23の条件を厳密に満たすmを増幅回数mとして採用しなくてもよい。例えば、制御部13は、数23と同様に、成功確率が所定の許容値以上の場合におけるパラメータの組(m、γ、n)を探索し、当該組のなかで最小のmを増幅回数mとして採用してもよい。
【0121】
6.2.4 確率的虚時間発展と量子振幅増幅の併用により得られた分離可能状態への確率的虚時間発展
次に、上記確率的虚時間発展と量子振幅増幅の併用を繰り返し行う場合について説明する。数17に示すように、上記量子回路U_PITE及び振幅増幅演算子Qに対応する量子回路(
図14に示される量子回路9を含む。)を通じて生成されるN+1ビット系の状態は、|Ψ_good>と|Ψ_bad>との重ね合わせ状態となり得る。しかし、上記量子回路U_PITEに入力される状態は、|Ψ_good>と|Ψ_bad>とがほぼ分離可能な状態であることが好ましい。
【0122】
ここで、上記手法により最適なγとmが採用された場合、量子振幅増幅演算子Q^mを作用させることにより、ほぼ100%の確率で|Ψ_good>状態が得られる。これは、|Ψ_good>と|Ψ_bad>とがほぼ分離可能な状態であることを示す。このとき、1ステップ目において補助ビットを測定せず、それを2ステップ目の補助ビットとして使用することが可能である。
【0123】
図15は、2つの連続した虚時間発展演算子exp(-HΔτ)を実装する量子回路C_{two}の一例を示す図である。1ステップ目と2ステップ目の虚時間発展は、
図15に示される量子回路C_{two}により実装可能である。量子回路C_{two}は、前置振幅増幅のための量子回路8(詳細には
図13)と同様に、制御時間発展演算子U_{RTE}及びその随伴行列U_{RTE}^†を含む。
図10に示す量子回路を2つ用意するよりも演算回数の観点において望ましい。以下、1ステップ目における虚時間発展演算子U_{RTE}のパラメータは、s_1、Δτ_1、及びθ_1と表される。また、2ステップ目における虚時間発展演算子のパラメータを、s_2、Δτ_2、及びθ_2と表される。
【0124】
6.2.5 2ステップ目以降の確率的虚時間発展
次に、前回ステップまでの虚時間発展と量子振幅増幅を併用した量子回路(例えば、量子回路9)を、次のステップの虚時間発展の参照回路U_refとして採用する場合について説明する。
図16は、前のステップにおける参照回路U_refを実装する量子回路の概要を示す図である。2ステップ目の参照回路U_ref^[2]は、数25によって表される。
【数25】
【0125】
以下、説明の便宜上、nステップ目における参照回路をU_ref^[n]と記す。なお、2ステップ目以降における参照回路U_ref^[n]は、補助ビットに対しても作用するように量子回路上で実装される。この参照回路U_ref^[2]は、
図16上側の量子回路9として表される。説明の便宜上、当該量子回路9は、量子回路9-1として表記されることもある。
【0126】
U_ref^[2]を参照回路とする量子回路に、2ステップ目の虚時間発展演算子exp(-HΔτ)を実装する量子回路を実行した場合、N+1量子ビット系に対して2ステップ目の虚時間発展演算子exp(-HΔτ)が作用した状態が、確率的に得られる。この確率的に得られる状態に対して、1ステップ目と同様に量子振幅増幅を行えば虚時間発展演算子exp(-HΔτ)が2回作用した状態を分離可能状態として取得することができる。この参照回路U_ref^[3]は、
図16下側の量子回路として表される。同様に、
図16右下側の量子回路9-2を3ステップ目の参照回路U_ref^[3]として使用する。このような手順を順次繰り返していくことは可能である。このように、量子回路9-1,9-2は、前置振幅増幅演算子Q~を作用させた量子ビット及び補助ビットに対して、補助ビットを観測せずにさらに生成された量子回路U_PITEを作用させるように構成されている。以下、説明の便宜上、補助ビットを観測せずにさらに生成された量子回路を作用させるように構成された量子回路は、二次量子回路CQと称される。すなわち、量子回路9-1,9-2は、二次量子回路CQの一例である。
【0127】
次に、上記議論をnステップまで一般化した場合における、量子振幅増幅回路の生成方法の一例について説明する。nステップ目の参照回路U_ref^[n]は、数26のように表される。
【数26】
ここで、nステップにおけるユニタリ操作(虚時間発展演算子exp(-HΔτ)と参照回路)をU_PITE^[n]、前置振幅増幅演算子をQ~_n、前置振幅増幅演算子の繰返し回数をm_{n}と表す。この手順に従った結果として、N_τステップ分だけ虚時間発展演算子exp(-HΔτ)が作用した状態を分離可能状態として取得することができる。
【0128】
このとき、N_τステップにおける参照回路U_ref^[N_τ]に虚時間発展演算子exp(-HΔτ)が作用した状態を取得するためのユニタリ操作U_PITE^[N_τ]は、数27のように表される。
【数27】
【0129】
また、N_τステップにおける虚時間発展演算子exp(-HΔτ)のパラメータをγ_{N_τ}及びΔτ_{N_τ}と表す。数27の右辺は、U_PITE^[N_τ-1]を展開すると数28のように表される。
【数28】
【0130】
ここで、Π_{i=N_τ}^{1}C_PITE^(1)(γ_i,Δτ_i)=C_PITE^(1)(γ_{N_τ},Δτ_{N_τ})...C_PITE^(1)(γ_1,Δτ_1)、Π_{i=1}^{N_τ―1}Q~_i^{m_i}=Q~_{N_τ―1}^{m_{N_τ―1}}...Q~_{1}^{m_{1}}である。
【0131】
Π_{i=N_τ}^{1}C_PITE^{(1)}(γ_i,Δτ_i)は、N_τが奇数の場合は数29のように表され、偶数の場合は数30のように表される。
【数29】
【数30】
【0132】
つまり、N_τが奇数の場合、Π_{i=N_τ}^{1}C_PITE^{(1)}(γ_i,Δτ_i)は、Δτの1次の範囲で等価な量子回路(例えば、
図10に示される量子回路5)により実装可能である。なお、量子回路のパラメータ(例えば、θ_0)は、異なっていてもよい。特に、N_τ=1の場合、数28は、数21の最右辺に一致する。N_τが偶数の場合においても、数30で示される演算子は、C_two^(1)を用いて、Δτの1次の範囲で等価な量子回路(量子回路5)と同等の演算回数で、量子回路として実装することができる。
【0133】
前置振幅増幅演算子Q~_{N_τ}は数31のように表される。
図17は、N_τステップにおける前置振幅増幅演算子Q~_{N_τ}を実装する量子回路の一例を示す図である。当該量子回路は、二次量子回路CQの一例である。
【数31】
【0134】
ここで、数31におけるD~^{(1)}(θ,s,Δτ)は、数32のように定義される。
【数32】
【0135】
D^(1)は、数33で定義される。数33の量子回路は、
図13の量子回路から零反射S_0、参照回路U_ref、及びこれらの複素共役を除いた量子回路と等しい。
【数33】
【0136】
D_two^(1)は、数34で定義される。
図18は、D_two^(1)を実装する量子回路の一例を示す図である。
【数34】
【0137】
N_τステップにおける前置振幅増幅演算子Q~_{N_τ}は、1からN_τ-1ステップにおける前置振幅増幅演算子Q~_{1},...,Q~_{N_τ-1}から構成される。そのため、前置振幅増幅演算子を実装する量子回路の演算回数は冪で増加する。他方、虚時間発展演算子exp(-HΔτ)が作用した状態を得る成功確率は単調増加する。そのため、虚時間発展法と量子振幅増幅法を併用する場合は、虚時間ステップの初めに2、3回のステップ数だけ虚時間発展法と量子振幅増幅法を併用することが望ましい。
【0138】
6.3 情報処理の流れについて
図19は、虚時間発展法と量子振幅増幅法を併用した場合の情報処理の流れの一例を示すフローチャートである。本節では、
図19を参照して、上述された虚時間発展法と量子振幅増幅法を併用した場合の情報処理の流れについて説明する。具体的には、量子回路の演算回数に有利な前置振幅増幅演算子に基づく情報処理が実行される。なお、当該情報処理は、当該フローチャートに図示されない、任意の例外処理を含みうる。例外処理は、当該情報処理の中断や、各処理の省略を含む。当該情報処理にて行われる選択又は入力は、ユーザによる操作に基づくものでも、ユーザの操作に依らず自動で行われるものでもよい。また、以下で説明される各動作は、量子回路生成装置1によって直接実行されても、量子回路生成装置1が他の部材(例えば、図示されない量子計算機など)に対して当該動作のための信号を送ることによって、当該他の部材に実行されてもよい。
【0139】
[ステップS301]
まず、ステップS301にて、制御部13は、初期値設定を行う。詳細には、制御部13は、ステップS101と同様に、補助ビットを含むすべての量子ビット160に|0...0>状態を設定する処理を行う。これにより、任意の量子ビットの初期状態が設定される。このとき、後述するループ処理に向けてカウンタkが1に設定される。ステップ数Nは、ユーザによって直接設定されたものでも、取得された情報に基づいて古典計算機によって設定されたものでもよい。または、ループ処理の繰り返し条件は、前回ステップとのエネルギー差などの条件として設定されても良い。
【0140】
また、初期化処理にて、制御部13は、演算子に基づく非ユニタリ演算子の設定を受け付ける。当該設定は、ユーザにより行われても、量子回路生成装置1に含まれるデバイスによって行われても、量子回路生成装置1以外のデバイスによって行われてもよい。以下、説明の便宜上、演算子は、エルミート演算子であるハミルトニアンHであるものとし、非エルミート演算子は、当該ハミルトニアンHを生成子とするexp(-HΔτ)であるものとするが、これに限られない。
【0141】
[ステップS302]
次に、ステップS302にて、制御部13が第1の回路生成処理を実行する。これにより、回路生成部134が、量子回路C_PITEと参照回路U_refとを生成し、これらに基づき量子回路U_PITEを生成する。
【0142】
第1の回路生成処理の一例として、変換部133は、まず、補助ビットを用いることで非ユニタリ演算子としての虚時間発展演算子exp(-Hτ)をユニタリ演算(例えば、実時間発展演算子exp(is_{1}HΔτ)及びexp(-is_{1}HΔτ))に変換する。これらのユニタリ演算は、回路生成部134にて量子計算実行可能な量子演算に変換される。回路生成部134は、変換されたユニタリ演算子に基づき、少数アンシラビットを用いて虚時間発展ステップを表す量子回路C_PITE(具体的には、量子回路3,4,5など)を生成する。
【0143】
また、回路生成部134が、参照回路U_refを生成する。これにより、量子回路C_PITEに入力される所望のN+1量子ビット系の状態が生成される。参照回路U_refは、所望のN+1量子ビット系の状態に応じて適宜設定される。参照回路U_refは、例えば、k=1の場合は、任意の量子状態を生成するための量子回路であればよい。k>1の場合には、好ましくは前のステップにおいてk―1回の虚時間発展演算子exp(-HΔτ)が作用した状態を、好ましくは分離可能状態として取得するために使用した量子回路(例えば、
図16に示されるような量子回路9-1,9-2,...9-{k-1})であればよい。
【0144】
本実施形態の回路生成部134は、生成された参照回路U_refと、虚時間発展演算子として機能する量子回路C_PITEと、に基づき、量子回路U_PITEを生成する。
【0145】
[ステップS303]
次に、処理がステップS303に進み、回路生成部134が、生成された量子回路C_PITEに基づき前置振幅増幅演算子Q~に対応する前置振幅増幅回路(例えば、量子回路7,8など)を生成する。詳細には、回路生成部124は、量子回路C_PITEと、参照回路U_refとに基づき、前置振幅増幅演算子Q~を実装する前置振幅増幅回路(例えば、量子回路7,8など)を生成する。前置振幅増幅演算子Q~は、振幅増幅演算子Qと比べて制御時間発展演算子の数が少なくなるように変換された量子回路により実行可能である。ステップS303の処理は、前置振幅増幅回路生成ステップの一例である。すなわち、前置振幅増幅回路生成ステップでは、生成された量子回路に基づき前置振幅増幅演算子Q~に対応する前置振幅量子回路を生成する。
【0146】
[ステップS304]
次に、処理がステップS304に進み、制御部13は、時間発展演算子に対応する所定の比例定数γに基づき、増幅回数mを決定する。増幅回数mは、後述する前置振幅増幅を実行する際に、生成された前置振幅増幅回路を繰り返し作用させる回数である。制御部13は、さらに、時間発展演算子が作用されたn個の量子ビットの状態の存在確率に基づき、増幅回数mを決定してもよい。本実施形態では、制御部13は、量子ビットの状態の存在確率に対応するパラメータγに基づき、増幅回数mを決定する。ステップS304の処理は、増幅回数決定ステップの一例である。
【0147】
ここで、増幅回数mの決定方法の一例について説明する。
まず、演算部135は、6.2.1節で説明されたように、成功確率を計算する。成功確率の計算は、補助ビットを複数回測定に基づく推定により行われてもよく、量子振幅推定を用いて行われてもよい。また、量子振幅推定は、非特許文献1において開示されている量子フーリエ変換を用いた量子振幅推定を実行しても良いし、最尤推定を用いた量子振幅推定を実行しても良い。すなわち、成功確率を推定する具体的態様は任意である。その後、演算部135は、推定された成功確率に基づき、パラメータθ_aを計算する。
【0148】
次に、演算部135は、計算された成功確率を元に、補助ビットが所定の状態とは異なる状態として観測される場合における量子ビットの状態の係数と、補助ビットが所定の状態として観測される場合における量子ビットの状態の係数と、の比が予め定められた許容値以上となるようなパラメータγ及び増幅回数mを決定する。当該許容値は任意に設定可能であるが、本実施形態では、許容値がほぼ1となるように設定されている。すなわち、演算部135は、|Ψ_bad>がほとんど含まれない状態となるような、パラメータγ及び増幅回数mの組を探索する。本実施形態では、演算部135は、上述したように、パラメータγの取りうる範囲(0<γ<1かつγ≠1/√2)において、数23を満たすパラメータの組(m、γ、n)を探索し、mが最小となるようにパラメータγを決定する。
このような最適なパラメータγは、好ましくは、1回の前置振幅増幅演算子Q~の繰り返しにより、アンシラビットにおいて所望の状態の観測確率を1とするように決定される。回路生成部134は、このように決定されたパラメータγに基づき、改めて量子回路C_PITE及び前置振幅増幅回路Q~を生成してもよい。
【0149】
[ステップS305]
次に、処理がステップS305に進み、演算部135は、量子振幅増幅を行う。本実施形態では、演算部135は、生成された前置振幅増幅回路に基づき、N個の量子ビットと1個の補助ビットから構成されるN+1量子ビット系に対する演算を行う。詳細には、演算部135は、N+1量子ビット系に対して、生成された前置振幅増幅回路に基づく演算が増幅回数mだけ繰り返し行う。
【0150】
[ステップS306]
次に、処理がステップS306に進み、演算部135は、N+1量子ビット系に対する量子虚時間発展を行う。本実施形態では、演算部135は、生成された量子回路U_PITEに基づき、N+1量子ビット系に対する演算する。言い換えれば、演算部135は、生成された前置振幅量子回路を作用させた後に、生成される量子回路U_PITEを作用させる。これにより、量子回路U_PITEに含まれるユニタリゲートによって、N量子ビット系の状態が確率的に虚時間発展するように変化する。このような量子計算の計算結果は、量子虚時間発展が参照状態に作用した状態とそれ以外の状態のエンタングルメント状態であり得る。
【0151】
本実施形態では、上記増幅回数mだけ前置振幅増幅回路に基づく演算が行われているため、|Ψ_bad>状態からほぼ分離可能な|Ψ_good>状態が、量子回路U_PITEから出力される。そのため、本実施形態では、演算部135は、少なくとも生成された量子回路U_PITEに基づく演算が行われる前に、前置振幅増幅演算子を作用させた量子ビット及び補助ビットに対して、補助ビットを測定しない。したがって、回路生成部134は、補助ビットを測定せずに生成された量子回路を作用させるように構成された二次量子回路CQを生成する。上記前置振幅増幅回路は、最後に反射演算子としての零反射S_0を作用させるように構成されている。そのため、ステップS305,S306を通じて、演算部135は、反射演算子が演算された後に、生成された量子回路U_PITEを作用させる。
【0152】
なお、上記虚時間発展処理は一例であり、これに限られない。例えば、上記虚時間発展処理は、ステップS102の処理を適宜組み合わせて行われてもよい。
【0153】
[ステップS307、ステップS308]
次に、処理がステップS307に進み、演算部135は、カウンタkの値がループ回数Nであるかどうかを判定する。カウンタkに値がNに満たないと判定された場合は、処理がステップS308に進み、制御部13は、カウンタkの値を1だけインクリメントして、ステップS302に戻る。すなわち、ステップS302~ステップS306の処理が、ループ回数Nだけ繰り返されればよい。なお、本実施形態では、量子回路生成装置1が古典計算機である場合を例にしているが、特に当該処理についてはどちらで実施してもかまわない。
【0154】
[ステップS309]
一方、カウンタkの値がNであると判定された場合、処理がステップS309に進み、演算部135は、固有値及び固有ベクトルの少なくとも一方を求める処理を実行する。当該処理の具体的態様は、ステップS105と同様であってもよい。その後、制御部13は、本情報処理を終了する。より具体的には、N回の量子虚時間発展を実施した後に、演算部135は、固有値及び固有ベクトルの一方又はその両方を求める実行部として機能する。
【0155】
量子虚時間発展と振幅増幅を併用する量子回路については、全ての虚時間ステップを通じて行う必要はない。例えば、0<=N_1<=Nを満たす整数N_1に関して、k<N_1ステップでは、虚時間発展と振幅増幅を併用する量子回路により実行され、それ以降の処理においては量子虚時間発展を実装する量子回路のみ実行しても良い。
【0156】
6.4 実施例
ここでは、本章で説明した情報処理の結果の一例について説明する。
【0157】
CXゲートは2量子ビットゲート操作であり、1量子ビットゲート操作に比べてゲート操作時間及びエラー率が大きいため、主にはCXゲートにより演算回数が特徴付けられる。尚、本実施例においては、2量子ビットゲート操作は、CXゲートのみを使用して量子回路として実装された。本実施例では、演算子Lとして、全結合イジングハミルトニアンHを扱う。虚時間発展演算子exp(-HΔτ)のための量子回路として
図10に示す量子回路5が採用されている。
【0158】
図20は、量子ビット数Nの変化による、振幅増幅演算子Qのための量子回路に必要なCXゲート数と、前置振幅増幅演算子Q~のための量子回路に必要なCXゲート数を示す図である。虚時間発展演算子exp(-HΔτ)のための量子回路のCXゲート数は、
図20中のC_ITEで示される。また、零反射S_0は、補助ビット1つを使用した方法により量子回路上で実装されている。このときに必要なCXゲート数は、量子ビット数Nに対して線形のオーダーで増加する。当該CXゲート数と量子ビット数Nとの関係は、
図20中のS_0として示される。振幅増幅演算子のための量子回路に必要なCXゲート数は、
図20中のC_Qで示される。前置振幅増幅演算子を実装する量子回路に必要なCXゲート数は、
図20中のC_Q~で示される。
図20から明らかなように、量子振幅増幅を行う際に、振幅増幅演算子Qの代わりに前置振幅増幅演算子Q~を使用する方が、演算回数を少なくすることができる。
【0159】
ここでは、虚時間発展法と量子振幅増幅法を併用して手法を使用して最大カット問題の最大カット数を求める。例として、辺{(0、1)、(1、2)、(2、3)、(3、0)}から構成される重みなしグラフを扱う。最大カット問題は、イジングハミルトニアンに変換することができる。
【0160】
図19に示す情報処理に従い虚時間発展計算を量子計算機で実行したときの結果を古典計算機でシミュレーションした。これにより、
図21~
図23に示される結果が得られた。
【0161】
図21は、実施例における各虚時間ステップにおける成功確率(
図21中のw QAA)のシミュレーション結果を示す図である。
図22は、実施例における全成功確率(
図22中のw QAA)のシミュレーション結果を示す図である。
図23は、実施例における各虚時間ステップにおける忠実度(
図23中のw QAA)のシミュレーション結果を示す図である。
図21~
図23には、比較のため、量子振幅増幅を併用しない場合におけるγ=0.4の結果(w/o QAA γ=0.4)及び0.8の結果(w/o QAA γ=0.8)も示されている。
【0162】
量子振幅増幅を併用しない場合の結果では、成功確率は、虚時間発展ステップの増加に伴い単調増加しているが1には達しないことが確認できる。一方で、量子振幅増幅を併用した場合の結果では、成功確率はほぼ1であり、更には全成功確率もほぼ1であることが確認できる。量子振幅増幅を併用しない場合の結果において全成功確率が単調減少している結果ことを鑑みると、上記情報処理が有用であること示唆する。
【0163】
また、忠実度は基底状態のベクトルと、各ステップにおける状態のベクトルとの内積の絶対値2乗である。量子振幅増幅を併用した場合においても、併用しない場合(
図23 w/o QAA γ=0.4 、w/o QAA γ=0.8)においても基底状態が取得できていることが確認できる。
【0164】
7.情報処理の別例
本章では、第4章及び第6章で説明したそれぞれの情報処理方法の別例について、前述した機能構成に関する量子力学的な理論について補足しつつ説明する。本章で説明される情報処理方法は、第4章で説明した量子虚時間発展を実行する量子回路を生成する方法の別例ともいえる。なお、以下の説明においても、これまでと同様に、ある演算子と、当該演算子に対応する量子回路と、当該演算子に対応する量子操作とが、同一の部材番号を用いて表記されることがある。また、整数を表す添字、例えばm,nなどは、同一の記号であっても異なる値であってもよい。
【0165】
7.1 実時間発展演算子の線形和による虚時間発展
一般のエルミート演算子Hを生成子とする虚時間発展演算子は、エルミート演算子Hを生成子とする実時間発展演算子exp(iα_{k}τH)の線型結合として表される。このときの関係式を数35に示す。
【数35】
【0166】
本章では、既知の時間ステップがτと表記され、実数定数がm_0、α_kと表記され、未知の線型結合の係数をc_kと表記される。ただし、kは整数を表す添字である。
【0167】
本実施形態では、実用上の観点から、時間ステップτに関して虚時間発展演算子のK-1次の範囲で一致するように、線形結合による展開が打ち切られる。このときの関係式は、数36に示される。
【数36】
【0168】
数36の左辺の虚時間発展演算子をτに関してテイラー展開を行う。同様に、数36の右辺の時間発展演算子をτに関してテイラー展開を行う。変換部133は、両辺のテイラー展開の各係数が一致するように線型結合の係数c_kを決定する。これは数37で表される線型方程式の解を求めることに変換される。ここで、c={c_0,c_1,・・・,c_K-1}とした。
【数37】
【0169】
ベクトルbのk成分は、数38のように表される。
【数38】
【0170】
行列Aは数39のように表される。ここで、数39は、ヴァンデルモンドの行列として知られるもので、逆行列を持つことが証明されている。つまり、この線型方程式は、常に解くことができる。
【数39】
【0171】
すなわち、変換部133は、K個の実時間発展演算子のそれぞれと虚時間発展演算子とを時間ステップに関してK次の線形空間における基底の線形結合に変換した場合における、虚時間発展演算子に関する当該基底の係数と、実時間発展演算子の線形和に関する当該基底の係数と、の比較を行う。そして、変換部133は、当該比較の結果に基づき、複数の異なる実時間発展演算子の線形和に対応するユニタリゲートに変換する。
【0172】
精度εを達成するために必要な次数Kは、数40のように表される。
【数40】
【0173】
N_τは、時間ステップτの量子虚時間発展を繰り返す回数、すなわち、全虚時間発展のステップ数である。これより、精度εを高精度にするにあたり必要な次数Kは、対数関数的に増加することが分かる。また、当該次数Kは、虚時間発展のステップ数N_τに対しても対数関数的に増加する。つまり、当該次数Kは、精度εまたは時間ステップ数N_τに対して指数加速が達せられることが分かる。
【0174】
7.2 実時間発展演算子の線形和のための量子回路
上述のように、K個の実時間発展演算子の線型結合により時間ステップτに関してK―1次の範囲で虚時間発展演算子が表せることを示した。本節では、時間ステップτのK-1次の範囲での虚時間発展演算子を実装するための量子回路ついて述べる。複数のユニタリの線形和から構成される演算子は、公知の方法を採用すればよい。
【0175】
ユニタリ演算子の線形和のための量子回路では、補助ビットを用いて確率的にユニタリ演算子の線形和を実装する。必要な補助ビット数は、n_a=log_{2}Kである。ここで、n_aは整数であるため、log_{2}Kの小数点以下は切り上げとなる。
【0176】
図24は、N量子ビット系に対して、2つのユニタリ演算子U0,U1の線形和を演算するための量子回路QC1の一例を示す図である。量子回路QC1は、N個の量子ビットTQと、1つの補助ビットAQ0と、に対する演算を規定する。ここでは、N量子ビット系の状態は|ψ>状態と表記され、補助ビットAQ0の状態は、|q_{0}^A>と表記される。また、
図25に示されるように、|q_{0}^A>の初期状態は、|0>である。
【0177】
量子回路QC1は、まず、補助ビットAQ0に対し、アダマールゲートHを演算するように構成されている。量子回路QC1は、次に、補助ビットAQの状態に応じて、ユニタリ演算U0又はU1のいずれか一方を演算するように構成されている。具体的には、量子回路QC1は、補助ビットAQ0を制御ビットとし、量子ビットTQを標的ビットとする、制御ビット演算を行うように構成される。本実施形態では、補助ビットAQ0の状態が|0>状態の場合に量子ビットTQに対してユニタリ演算U0を演算するような制御ゲート演算と、補助ビットAQ0の状態が|1>状態の場合に量子ビットTQに対してユニタリ演算U1を演算するような制御ゲート演算と、を含む。量子回路QC1は、その後、R_y回転ゲートを演算するように構成されている。量子回路QC1は、その後、補助ビットAQ0の状態の測定を行うように構成されている。説明の便宜上、このような量子回路QC1のうち、制御ビット演算から測定の前までの一連の演算を、C^{(1)}と表記する。
【0178】
このような構成により、量子回路QC1に入力されるN量子ビット系の|ψ>状態は、数41のように遷移する。
【数41】
【0179】
ここで、R_y回転ゲート演算後の補助ビットの状態が|0>であることが観測された場合、N量子ビット系の状態|ψ>は、2つのユニタリ演算U0,U1の線形和が当該状態|ψ>に対して演算された状態となる。これにより、パラメータθを適宜決定することにより、2つのユニタリ演算U0,U1の足し算を量子回路として実装することが可能となる。
【0180】
上記2つのユニタリ演算U0,U1の線形和を実装するための量子回路QC1は、補助ビットの数を増やすことによって、2より多い数のユニタリ演算U0,U1の線形和として実装することが可能である。
図25は、ユニタリの線形和のための量子回路QC1を一般化した量子回路QCnの一例を示す図である。
【0181】
量子回路QCnは、N個の量子ビットTQとn個の補助ビットAQ0~AQn-1からなる、N+n量子ビット系に対する演算を規定する。具体的には、量子回路QCnは、補助ビットAQ0~AQn-2に対してアダマールゲートHを作用させ、補助ビットAQn-1に対してR_yゲートを作用させるように構成されている。当該R_yゲートの回転角は、2θ_{pre}に設定されている。量子回路QCnは、次に、量子ビットTQに対する制御ゲート演算を含む演算C^{(n)}を行うように構成されている。n=1の場合、当該演算C^{(n)}は、
図24における演算C^{(1)}と等価になる。その後、量子回路QCnは、補助ビットAQ0~AQn-1の測定を行うように構成されている。
【0182】
量子回路QCn(特に、上記演算C^{(n)})は、量子ビットTQと補助ビットAQ0~AQn-2からなる状態を、量子回路QC1における|ψ>状態とし、補助ビットAQn-1からなる状態を量子回路QC1における補助ビットAQ0の状態とし、ユニタリ演算U0,U1としてC^{(n-1)}を用いることにより、量子回路QC1から再帰的に得ることができる。すなわち、量子回路QCnは、補助ビットAQn-1に対して、他の補助ビットAQ0~AQn-2と異なり、他の量子ビット又は補助ビットを制御ビットとする制御ゲート演算が行われないように構成されている。以下、説明の便宜上、少なくともユニタリ演算の線形和を行うための量子回路QCnにおいて、他の量子ビットからの標的ビットとなる制御ゲート演算が行われない補助ビットAQn-1を、最上位の補助ビットAQn-1ということがある。
【0183】
ここで、
図25に示される量子回路QCnは、
図24に示される量子回路QC1と比べて、最上位の補助ビットAQn-1に作用する演算が、アダマールゲートHではなくR_y回転ゲートである点で異なる。これにより、数41に示されるような各ユニタリ演算の係数の絶対値を決定することができる。また、R_y回転ゲートは、数35の係数m_0を調整するために行われるものであり、係数m_0の調整により振幅増幅のコストを最小にすることができる。詳細は後述する。
【0184】
ここで、演算C^{(n)}を規定するパラメータθ^{(n)}の決定方法の一例について説明する。
【0185】
R_y回転ゲートの回転角θ_preと、パラメータθ^{(n)}と、は、数42に示される関係を有する。
【数42】
【0186】
これにより、2つの回転角θ_pre及びθ^{(n)}が得られる。ここで、ユニタリの線形和の係数の絶対値をc_00...0からc_11...1で表した。
【0187】
数42を満たすθ_preとθ^{(n)}が存在するためには、係数m_0は、数43で表される不等式条件を満たす必要がある。
【数43】
【0188】
これらの関係式をもとに、パラメータθ^{(n)}は、係数m_0を調整するために導入されたR_yゲートの回転角θ_preとともに決定される。このように、R_yゲートの導入によってθ_preによる拘束条件が設定されるため、演算部135は、上記数42,数43の関係に基づき、パラメータθ^{(n)}の絶対値を決定することができる。
【0189】
7.3 時間ステップτの2次の範囲で等価な虚時間発展演算子のための量子回路について
次に、時間ステップτの2次の範囲で等価な虚時間発展演算子のための量子回路の生成方法の具体例について説明する。
【0190】
τの2次の場合の実時間発展演算子の線形和は、数44のように表される。
【数44】
【0191】
数44に示すように、τの2次の範囲で等価な虚時間発展演算子は、3つのユニタリ演算子I_{2^n},exp(iτH),exp(-iτH)の線形和として表される。そのため、数44に示される演算子を量子回路として実装するために必要な補助ビットの数は2つである。
【0192】
図26は、τの2次の範囲で等価な虚時間発展演算子のための量子回路QCτ2の一例を示す図である。
図26において、補助ビットAQ0の状態は、|q_1^A=0>と表記され、補助ビットAQ1の状態は、|q_2^A=0>と表記される。ここで、補助ビットAQ0,AQ2の初期状態は、|0>状態として用意される。補助ビットAQ0,AQ1を制御ビットとし、|ψ>状態を入力状態とする量子ビットTQを標的ビットとする制御時間発展演算子により、実時間発展演算子の線形和が実装される。恒等演算子は回路実装の必要がないため、
図26中には2つの制御時間発展演算子U_{RTE}(τ),U_{RTE}(τ)^†が現れる。
【0193】
具体的には、量子回路QCτ2は、まず、補助ビットAQ0に対してアダマール演算Hを作用させ、最上位の補助ビットAQ1に対してR_y回転ゲート演算を作用させるように構成されている。量子回路QCτ2は、次に、量子ビット|ψ>に対して、2つの補助ビットAQ0,AQ1の状態に応じて、2つの制御時間発展演算子U_{RTE}(τ),U_{RTE}(τ)^†を作用させるように構成されている。具体的には、量子回路QCτ2は、補助ビットAQ0,AQ1の状態がともに|0>の場合に、量子ビットTQに対して実時間発展演算子U_{RTE}(τ)を作用させ、補助ビットAQ0の状態が|0>でかつ補助ビットAQ1の状態が|1>の場合に実時間発展演算子U_{RTE}(τ)^†を作用させるように構成されている。量子回路QCτ2は、次に、補助ビットAQ0に対して、その状態が|0>ならば、Qゲート及びR_y回転ゲートを順に作用させるように構成されている。量子回路QCτ2は、次に、補助ビットAQ1に対して、Pゲート及びR_y回転ゲートを順に作用させるように構成されている。量子回路QCτ2は、その後、補助ビットAQ0,AQ1の測定を行うように構成されている。
【0194】
図26中のPゲートは位相ゲートである。また、Qゲートは、2つの位相ゲートから構成され、数45のように表される。
【数45】
【0195】
図26中のパラメータは、φ_00=3π/4,φ_01=5π/4,φ_10=0,θ^(1)_0=π/4である。θ^(2)とθ_preは、数46のように表される。これらのパラメータにより、数44のユニタリ演算子の係数(数44の場合は、exp(-i3π/4)及びexp(i5π/4))が実現される。
【数46】
【0196】
7.4 実時間発展演算子の線形和のための量子回路と量子振幅増幅の併用
上述のユニタリゲートの線形和は、確率的に計算が実行される。望みの計算が実行される確率を増大するためには、既存の量子振幅増幅を併用すれば良い。
【0197】
このような量子回路として、例えば、
図27に示すような量子回路QCA1が挙げられる。
図27は、τの高次の範囲で等価な虚時間発展計算と量子振幅増幅を併用した場合における量子回路QCA1の一例を示す図である。量子振幅増幅では、増幅したい状態に直交する状態の符号を反転させる操作(オラクルS_χ)と初期状態に関する反射操作を繰り返し実行する。上述したように、初期状態に関する反射操作は、初期状態を生成するためのユニタリゲート(本実施形態では、ユニタリ演算子の線形和のための回路と参照回路U_ref)と零反射S_0とを含む。参照回路U_refは、上述のように、量子虚時間発展を作用させる初期状態|ψ>を|0...0>状態から構築するための量子回路である。本実施形態のオラクルS_χは、補助ビットAQ0~AQn-1にのみ作用する零反射S_0の符号を反転させたものである。
【0198】
量子振幅増幅を用いない場合、所望の状態が得られる確率(言い換えれば、成功確率)P_0は、数47で表される。
【数47】
【0199】
また、数47は、任意の角度θ_aを用いて数48のようにも表せる。
【数48】
【0200】
一方で、量子振幅増幅を用いた場合は、所望の状態が得られる確率P_0は数49で表される。
【数49】
【0201】
mは、量子振幅増幅の繰り返し回数(すなわち、増幅回数)である。上述したように、量子振幅増幅の最適な繰り返し回数(増幅回数m)は、量子振幅推定からθ_aを推定した後に、P_0=1となるように数49から求めることが可能である。ただし、このときの最適な繰り返し回数は、自由に設定することができないため、繰り返し回数が多くなってしまう場合がある。m_0は、数42の不等式条件を満たす範囲でθ_preを介して自由に設定できるため、制御部13は、m_0を調整することにより最適な繰り返し回数mを最小とすることが可能である。これは、数50を満たすパラメータの組(m、m_0、n)のうちmが最小であるものを採用することにより達せられる。ここで、nは任意の非負の整数である。
【数50】
【0202】
【0203】
7.5 情報処理の別例の流れ
本節で、上述したような高次の虚時間発展法の情報処理の流れについて説明する。
図28は、τの高次の範囲で等価な虚時間発展計算のためのフローチャートである。なお、当該情報処理は、当該フローチャートに図示されない、任意の例外処理を含みうる。例外処理は、当該情報処理の中断や、各処理の省略を含む。当該情報処理にて行われる選択又は入力は、ユーザによる操作に基づくものでも、ユーザの操作に依らず自動で行われるものでもよい。また、以下で説明される各動作は、量子回路生成装置1によって直接実行されても、量子回路生成装置1が他の部材(例えば、図示されない量子計算機など)に対して当該動作のための信号を送ることによって、当該他の部材に実行されてもよい。
【0204】
[ステップS401]
まず、ステップS401にて、制御部13は、初期値設定を行う。詳細には、制御部13は、ステップS101と同様に、補助ビットを含むすべての量子ビット160に|0...0>状態を設定する処理を行う。これにより、任意の量子ビットの初期状態が設定される。このとき、後述するループ処理に向けてカウンタkが1に設定される。ステップ数Nは、ユーザによって直接設定されたものでも、取得された情報に基づいて古典計算機によって設定されたものでもよい。または、ループ処理の繰り返し条件は、前回ステップとのエネルギー差などの条件として設定されても良い。
【0205】
[ステップS402]
次に、処理がステップS402に進み、制御部13は、時間ステップτ及び次数Kなどの、虚時間発展演算子exp(ーHτ)を展開するための実時間発展演算子exp(iα_{k}τH)を決定するために必要なパラメータを設定する(ステップS401)。次数Kは、ユーザによって設定されても、要求される精度εに基づき設定されてもよい。精度εは、ユーザによって設定されても、取得される演算子の性質に基づき設定されてもよい。これらの情報の取得は、例えば、ステップS401の初期化処理にて行われる。その後、制御部13は、設定された時間ステップτ及び次数Kなどの上記パラメータに基づき、少なくとも1つの実時間発展演算子exp(iα_{k}τH)を設定する。なお、α_{k}の値は、次数Kに応じて予め設定されていてもよい。
【0206】
[ステップS403]
次に、処理がステップS403に進み、制御部13は、実時間発展演算子exp(iα_{k}τH)の係数c_kを決定する。これにより、制御部13は、演算子Hを生成子とする虚時間発展演算子exp(-τH)を、数36に示すような、実時間発展演算子exp(iα_{k}τH)の線形和に変換る。
【0207】
具体的には、制御部13は、時間ステップτの少なくともK次の範囲において精確な量子虚時間発展を構築のために、上記線型方程式を解く。これにより、変換部133は、実時間発展演算子の線型結合の係数を決定する。次に、変換部133は、この係数を再現するようにユニタリの線型和のための量子回路の回路パラメータを求める。このように、変換部133は、演算子Hに含まれる虚時間発展演算子exp(ーHτ)を、複数の異なる実時間発展演算子exp(iα_{k}τH)の線形和に対応するユニタリゲート(例えば、量子回路QCn)に変換する。このような線型方程式の求解には古典計算機が用いられても、量子計算機が用いられても、これらの組み合わせが用いられてもよい。
【0208】
[ステップS404]
次に、処理がステップS404に進み、制御部13は、変換された実時間発展演算子exp(iα_{k}τH)の線形和に基づき、回路生成処理を実行する。これにより、ステップS403にて得られた実時間発展演算子exp(iα_{k}τH)の線形和が、量子虚時間発展ための量子回路(例えば、
図25に示される量子回路QCn)を生成する。このとき、演算部135は、参照回路U_refとして、前回ステップにおける計算結果を取得するための量子回路を採用する。また、k=1ステップにおいては、ユーザにより指定される参照回路U_ref、または等重率の重ね合わせ状態を作り出す量子回路を参照回路U_refとして使用する。
【0209】
[ステップS405]
次に、処理がステップS405に進み、生成された量子回路QCnに基づき、量子振幅増幅を行うための量子回路(例えば、量子回路QCA1)を生成する。この量子回路の生成には、例えば、上記アルゴリズムが用いられる。
【0210】
[ステップS406]
次に、処理がステップS406に進み、制御部13は、増幅回数mを決定する。増幅回数mは、例えば、上述したステップS304と同様に行えばよい。
【0211】
[ステップS407]
次に、処理がステップS407に進み、演算部135は、量子虚時間発展を行う。詳細には、演算部135は、生成された、量子虚時間発展のための量子回路QCnによって規定される量子操作を、量子ビットTQ及び補助ビットAQ0~AQn-1に対して演算する。
【0212】
[ステップS408]
次に、処理がステップS408に進み、演算部135は、量子振幅増幅を行う。詳細には、演算部135は、生成された、量子振幅増幅のための量子回路QCA1によって基底される量子操作を、増幅回数mだけ繰り返し、量子ビットTQ及び補助ビットAQ0~AQn-1に対して演算する。
【0213】
[ステップS409]
次に、処理がステップS409に進み、演算部135は、カウンタkの値がループ回数Nであるかどうかを判定する。カウンタkに値がNに満たないと判定された場合は、処理がステップS410に進み、制御部13は、カウンタkの値を1だけインクリメントして、ステップS404に戻る。すなわち、ステップS404~ステップS408の処理が、ループ回数Nだけ繰り返されればよい。なお、本実施形態では、量子回路生成装置1が古典計算機である場合を例にしているが、特に当該処理についてはどちらで実施してもかまわない。
【0214】
[ステップS411]
一方、カウンタkの値がNであると判定された場合、処理がステップS411に進み、演算部135は、固有値及び固有ベクトルの少なくとも一方を求める処理を実行する。当該処理の具体的態様は、ステップS105又はステップS309と同様であってもよい。その後、制御部13は、本情報処理を終了する。より具体的には、N回の量子虚時間発展を実行した後に、演算部135は、固有値及び固有ベクトルの一方又はその両方を求める実行部として機能する。
【0215】
なお、量子虚時間発展と振幅増幅を併用する量子回路によって規定される操作は、全ての虚時間ステップを通じて行われなくてもよい。言い換えれば、量子虚時間発展と振幅増幅を併用する量子回路は、虚時間ステップごとに異なっていてもよい。例えば、0<=N_1<=Nを満たす整数N_1に関して、k<N_1ステップでは、虚時間発展と振幅増幅を併用する量子回路により実行され、それ以降の処理においては量子虚時間発展を実装する量子回路QCnのみ実行しても良い。
【0216】
本章の情報処理では、虚時間発展演算子を複数の実時間発展演算子の線形和により、時間ステップτに関してK-1次の範囲において正しい虚時間発展が実現される。このときの線型結合の係数は線型方程式を解くことにより求められる。このときに必要な実時間発展演算子の項数はKであり、log_{2}K個の補助ビットを用いて実時間発展演算子の線形和を量子回路実装する。補助ビットが所望の状態として観測された場合に、K-1次の範囲においてより正確な虚時間発展が実現される。
【0217】
7.6 実施例
ここでは、ステップS401~ステップS411の処理を含む上記情報処理の実施例について説明する。本実施例では、τの高次の範囲で等価な虚時間発展を使用して最大カット問題の最大カット数を求める。例として、辺{(0、1)、(1、2)、(2、3)、(3、0)}から構成される重みなしグラフを扱う。最大カット問題は、イジングハミルトニアンに変換することができる。
【0218】
図29は、実施例におけるτの高次の範囲で等価な虚時間発展計算の忠実度のシミュレーション結果を示す図である。
図29の縦軸が忠実度で、横軸が虚時間ステップ数である。虚時間ステップ幅は、τ=0.5とした。また、
図25に示すR_y(2θ_pre)の代わりにアダマールゲートを使用した。実時間発展演算子の項数K=3、5、7の場合について計算した。比較例として、厳密な量子虚時間発展をExact ITEで示した。
【0219】
項数K=3,5,7の場合の結果は、それぞれ、τの2次、4次、6次の範囲で精確な虚時間発展の結果に対応する。本シミュレーション結果は、Kが大きいほど厳密な虚時間発展に近づくことを示唆している。
【0220】
8.その他
前述の実施形態に係る量子回路生成装置1に関して、以下のような態様を採用してもよい。
【0221】
上記演算子Lは、非エルミート演算子であってもよい。この場合、αは、例えば、数24に代えて数52を用いて定義されてもよい。
【数52】
【0222】
これにより、αは、任意の演算子Lに対して確率的なパラメータとして解釈することができる。
【0223】
量子回路生成装置1は、上記情報処理によって生成される種々の量子回路に基づき、量子演算を行うものでなくてもよい。例えば、量子回路生成装置1は、上記情報処理によって、種々の量子回路を生成するだけでもよい。
【0224】
実施形態の一態様は、量子回路生成装置1に限らず、情報処理方法そのものでもよいし、コンピュータに、これらの情報処理方法の各ステップを実行させるプログラムであってもよい。
【0225】
上記の情報処理を行うにあたって、ユーザが適宜所望する情報を入力部15を介して入力し、受付部131がこれを受け付けるように実施してもよい。また、出力部132が種々の演算結果を出力し、これを表示部14に表示させるように実施してもよい。
【0226】
さらに、次に記載の各態様で提供されてもよい。
【0227】
(1)情報処理方法であって、次の各ステップを備え、変換ステップでは、n個の量子ビットに対する演算子を、(n/2)個未満の補助ビットを用いて、ユニタリゲートに変換し、ここで、前記ユニタリゲートは前記演算子を直接実装可能な形式であり、回路生成ステップでは、前記ユニタリゲートに基づいて、前記補助ビットが所定の状態として観測された場合に時間発展演算子として機能する量子回路を生成する、方法。
【0228】
(2)上記(1)に記載の情報処理方法において、前記変換ステップでは、前記演算子を、前記時間発展演算子とユニタリ演算子とのみを用いる形式に変換し、ここで、前記時間発展演算子はエルミート演算子を含む、方法。
【0229】
(3)上記(1)又は(2)に記載の情報処理方法において、前記変換ステップでは、前記演算子を、前記時間発展演算子とは異なる実時間発展演算子とユニタリ演算子とのみを用いる形式に変換し、ここで、前記実時間発展演算子はユニタリ演算子を含む、方法。
【0230】
(4)上記(1)~(3)の何れか1つに記載の情報処理方法において、前記時間発展演算子は、エルミート演算子により生成可能に構成される、方法。
【0231】
(5)上記(1)~(4)の何れか1つに記載の情報処理方法において、演算ステップをさらに備え、前記演算ステップでは、前記量子回路を用いた量子計算を実行する、方法。
【0232】
(6)上記(5)に記載の情報処理方法において、前記演算ステップでは、前記量子回路が反復的に使用される場合に、この量子回路を規定するパラメータを古典計算機に初回のみ演算させる、方法。
【0233】
(7)上記(5)又は(6)に記載の情報処理方法において、前記演算ステップでは、行列又は演算子の、実部が最小の固有値に属する固有ベクトルを取得する場合に、前記固有ベクトルを量子ビット状態として取得する、方法。
【0234】
(8)上記(5)~(7)の何れか1つに記載の情報処理方法において、前記演算ステップでは、与えられた線形演算子の固有ベクトルを量子ビット状態として取得し、前記量子ビット状態の前記固有ベクトルを入力とする量子計算に基づいて、固有値を新たに取得し、これにより前記固有ベクトルを求める問題を行列のカーネルを決定する問題に変換する、方法。
【0235】
(9)上記(5)~(8)の何れか1つに記載の情報処理方法において、前記演算ステップは、ループ処理を含み、前記ループ処理では、前記時間発展演算子を用いて線形演算子の固有値問題を解く場合に、各回の演算結果に応じて前記量子回路の構成を更新する、方法。
【0236】
(10)上記(1)~(9)の何れか1つに記載の情報処理方法において、前記量子回路は、前記補助ビットが前記所定の状態として観測される確率を向上可能な量子振幅増幅回路をさらに含む、方法。
【0237】
(11)上記(1)~(10)の何れか1つに記載の情報処理方法において、さらに、前置振幅増幅回路生成ステップでは、生成された前記量子回路に基づき前置振幅増幅演算子に対応する前置振幅増幅回路を生成し、ここで、前記前置振幅増幅演算子は、前記量子ビット及び前記補助ビットに対して作用することにより、前記補助ビットが前記所定の状態である確率振幅を増加可能なユニタリ演算子であり、少なくとも、前記演算子に対応する前記時間発展演算子を含み、さらに、増幅ステップでは、生成された前記前置振幅増幅回路を作用させた後に、生成される前記量子回路を作用させる、方法。
【0238】
このような構成によれば、前置振幅増幅演算子を量子ビット及び補助ビットに作用させることで、補助ビットが所定の状態であることを観測する観測確率、言い換えれば確率振幅、が大きくなる。ここで、時間発展演算子として機能する量子回路の前に前置振幅増幅演算子を作用させることで、従来の量子振幅増幅法に比べて、当該振幅を増幅する際に必要な演算の数を少なくすることができる。
【0239】
(12)上記(11)に記載の情報処理方法において、前記前置振幅増幅演算子は、前記量子ビットの状態が特定状態である場合、当該特定状態の符号を反転させる反射演算子を少なくとも含み、前記増幅ステップでは、前記反射演算子が演算された後に、生成された前記量子回路を作用させる、方法。
【0240】
(13)上記(11)又は(12)に記載の情報処理方法において、さらに、増幅回数決定ステップでは、前記時間発展演算子に対応する所定の比例定数に基づき、前記前置振幅増幅回路を繰り返し作用させる増幅回数を決定する、方法。
【0241】
このような構成によれば、補助ビットが所定の状態であることを観測する確率は、増幅回数の増加に伴い、増加と減少とを繰り返す傾向にある。そのため、当該確率が所定の許容可能な範囲となる増幅回数が複数存在することがある。そこで、時間発展演算子に対応する所定の比例定数に基づき、前置振幅増幅回路による増幅回数を決定することにより、比較的少ない演算回数で当該確率を大きくすることができる。
【0242】
(14)上記(13)に記載の情報処理方法において、前記増幅回数決定ステップでは、さらに、前記時間発展演算子が作用された前記n個の量子ビットの状態の存在確率に基づき、前記増幅回数を決定する、方法。
【0243】
(15)上記(11)~(14)の何れか1つに記載の情報処理方法において、前記回路生成ステップでは、前記前置振幅増幅演算子を作用させた前記量子ビット及び前記補助ビットに対して、前記補助ビットを測定せずにさらに生成された前記量子回路を作用させるように構成された二次量子回路を生成する、方法。
【0244】
このような構成によれば、補助ビットが所定の状態であることを観測する確率を増加させることにより、n個の量子ビットの状態が、当該補助ビットの状態に対応する状態として観測される確率が高まる。これにより、n個の量子ビットの状態が、補助ビットを測定することによって補助ビットの状態がある固有状態に射影された場合における状態に近づく。このような状態に対して補助ビットを測定せずに量子回路を作用させた状態は、補助ビットが所定の状態であることを観測した後の状態に対して量子回路を作用させた状態に近づく。したがって、量子回路を繰り返し演算する際の演算回数の増加を抑制することができる。
【0245】
(16)上記(15)に記載の情報処理方法において、前記回路生成ステップでは、前記補助ビットが前記所定の状態とは異なる状態として観測される場合における前記量子ビットの状態の係数と、前記補助ビットが前記所定の状態として観測される場合における前記量子ビットの状態の係数と、の比が予め定められた許容値以上の場合に、前記二次量子回路を生成する、方法。
【0246】
このような構成によれば、前置振幅増幅回路を作用させた後のn個の量子ビットの状態を、補助ビットが所定の状態であることを観測した後の状態に近づけることができる。
【0247】
(17)上記(1)~(16)の何れか1つに記載の情報処理システムにおいて、前記変換ステップでは、前記演算子に含まれる虚時間発展演算子を、複数の異なる実時間発展演算子の線形和に対応する前記ユニタリゲートに変換する、方法。
【0248】
このような構成によれば、複数の異なる実時間発展演算子によって虚時間発展演算子のより高次の成分を表現することができる。したがって、虚時間発展演算子を1つの実時間発展演算子に対応するユニタリゲートとして実装する場合に比べて、虚時間発展演算子として機能する量子回路の計算精度を向上させることができる。
【0249】
(18)上記(17)に記載の情報処理方法において、前記変換ステップでは、K個の前記実時間発展演算子のそれぞれと前記虚時間発展演算子とを時間ステップに関してK次の線形空間における基底の線形結合に変換した場合における、前記虚時間発展演算子に関する当該基底の係数と、前記実時間発展演算子の線形和に関する当該基底の係数と、の比較を行い、当該比較の結果に基づき、複数の異なる実時間発展演算子の線形和に対応する前記ユニタリゲートに変換する、方法。
【0250】
このような構成によれば、虚時間発展演算子をユニタリゲートとして実装することを、既存の連立方程式の問題を解くことに帰着させることができる。
【0251】
(19)量子回路生成装置であって、制御部を備え、前記制御部は、上記(1)~(18)の何れか1つに記載の情報処理方法の各ステップを実行するように構成される、もの。
【0252】
(20)プログラムであって、コンピュータに、上記(1)~(18)の何れか1つに記載の情報処理方法の各ステップを実行させる、もの。
もちろん、この限りではない。
【0253】
最後に、本発明に係る種々の実施形態を説明したが、これらは、例として提示したものであり、発明の範囲を限定することは意図していない。当該新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。当該実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0254】
1 :量子回路生成装置
10 :通信バス
11 :通信部
12 :記憶部
13 :制御部
131 :受付部
132 :出力部
133 :変換部
134 :回路生成部
135 :演算部
14 :表示部
15 :入力部
2 :量子回路
21 :補助ビット
211 :観測部
22 :補助ビット
221 :観測部
23 :入力ビット
3 :量子回路
31 :補助ビット
311 :観測部
33 :入力ビット
4 :量子回路
5 :量子回路
6 :量子回路
7 :量子回路
8 :量子回路
9 :量子回路
9-1 :量子回路
9-2 :量子回路
124 :回路生成部
AQ0~AQn-1 :補助ビット
CQ :二次量子回路
C_PITE :量子回路
Q :量子振幅増幅演算子
Q~ :前置振幅増幅回路
Q~_{N_τ}:前置振幅増幅回路
QC1 :量子回路
QCA1 :量子回路
QCn :量子回路
QCτ2 :量子回路
R_z :回転ゲート演算
S_0 :零反射
S_χ :オラクル
TQ :量子ビット
U0 :ユニタリ演算
U1 :ユニタリ演算
U_PITE :量子回路
U_ref :参照回路