(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-10-10
(45)【発行日】2024-10-21
(54)【発明の名称】近似量子フーリエ変換装置、近似量子フーリエ変換方法及び近似量子フーリエ変換プログラム
(51)【国際特許分類】
G06N 10/60 20220101AFI20241011BHJP
【FI】
G06N10/60
(21)【出願番号】P 2024550225
(86)(22)【出願日】2022-12-07
(86)【国際出願番号】 JP2022045128
【審査請求日】2024-08-23
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】大西 健斗
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2008-52365(JP,A)
【文献】米国特許出願公開第2022/0114471(US,A1)
【文献】中国特許出願公開第114282676(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算部と、
前記実計算部で利用する複数の量子状態を保存する量子状態保存部と
を備え、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記実計算部は、前記量子ビットを、制御演算の標的ビットとして演算処理が行われる演算状態aと、制御演算の制御ビットとして演算処理を行う演算状態bとに順に遷移させ、
前記量子状態保存部は、前記演算状態aの処理が終了した際の位相ずれを修正するために利用される前処理状態と、前記演算状態bの処理で利用される実計算状態と、前記演算状態bの処理が終了した際の位相ずれを修正する際に利用される後処理状態との量子状態を、即時実行可能とする量子ビットについて保存する近似量子フーリエ変換装置。
【請求項2】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算部と、
前記実計算部で利用する複数の量子状態を保存する量子状態保存部と
を備え、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記実計算部は、前記量子ビットに対して位相ゲートとアダマールゲートと制御NOTゲートとを適用し、前記位相ゲートを適用する際に、前記量子状態保存部に保存された量子状態を呼び出して利用する近似量子フーリエ変換装置。
【請求項3】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算部と、
前記実計算部で利用する複数の量子状態を保存する量子状態保存部と
を備え、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記量子状態保存部は、前記実計算部の動作に応じて、即時実行が不要となった量子ビットについての量子状態を廃棄し、即時実行が必要になった量子ビットについての量子状態を生成して保存する近似量子フーリエ変換装置。
【請求項4】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算部と、
前記実計算部で利用する複数の量子状態を保存する量子状態保存部と
を備え、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記量子状態保存部は、前記実計算部の動作により崩壊した量子状態であって、依然として即時実行が必要な量子ビットについての量子状態を再生成して保存する近似量子フーリエ変換装置。
【請求項5】
前記実計算部は、前記量子ビットの状態を変換する処理の進捗により、新たな量子ビットについての状態を変換する処理の実行が可能になると、前記新たな量子ビットについての状態を変換する処理を開始する
請求項1から
4までのいずれか1項に記載の近似量子フーリエ変換装置。
【請求項6】
制御NOTゲート1回の実行時間と量子状態の測定1回の実行時間との合計時間を1ステップとし、Tゲートを生成するのにかかる時間をd
Tとし、近似精度をεとした場合に、前記即時実行可能とする量子ビットは3d
Tlog(1/ε)ステップで必要となる量子ビットである
請求項
1に記載の近似量子フーリエ変換装置。
【請求項7】
近似量子フーリエ変換装置における実計算部が、量子ビットの状態を変換することにより、近似量子フーリエ変換を行い、
前記近似量子フーリエ変換装置における量子状態保存部が、前記実計算部で利用する複数の量子状態を保存し、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記実計算部は、前記量子ビットを、制御演算の標的ビットとして演算処理が行われる演算状態aと、制御演算の制御ビットとして演算処理を行う演算状態bとに順に遷移させ、
前記量子状態保存部は、前記演算状態aの処理が終了した際の位相ずれを修正するために利用される前処理状態と、前記演算状態bの処理で利用される実計算状態と、前記演算状態bの処理が終了した際の位相ずれを修正する際に利用される後処理状態との量子状態を、即時実行可能とする量子ビットについて保存する近似量子フーリエ変換方法。
【請求項8】
近似量子フーリエ変換装置における実計算部が、量子ビットの状態を変換することにより、近似量子フーリエ変換を行い、
前記近似量子フーリエ変換装置における量子状態保存部が、前記実計算部で利用する複数の量子状態を保存し、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記実計算部は、前記量子ビットに対して位相ゲートとアダマールゲートと制御NOTゲートとを適用し、前記位相ゲートを適用する際に、前記量子状態保存部に保存された量子状態を呼び出して利用する近似量子フーリエ変換方法。
【請求項9】
近似量子フーリエ変換装置における実計算部が、量子ビットの状態を変換することにより、近似量子フーリエ変換を行い、
前記近似量子フーリエ変換装置における量子状態保存部が、前記実計算部で利用する複数の量子状態を保存し、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記量子状態保存部は、前記実計算部の動作に応じて、即時実行が不要となった量子ビットについての量子状態を廃棄し、即時実行が必要になった量子ビットについての量子状態を生成して保存する近似量子フーリエ変換方法。
【請求項10】
近似量子フーリエ変換装置における実計算部が、量子ビットの状態を変換することにより、近似量子フーリエ変換を行い、
前記近似量子フーリエ変換装置における量子状態保存部が、前記実計算部で利用する複数の量子状態を保存し、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記量子状態保存部は、前記実計算部の動作により崩壊した量子状態であって、依然として即時実行が必要な量子ビットについての量子状態を再生成して保存する近似量子フーリエ変換方法。
【請求項11】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算処理と、
前記実計算処理で利用する複数の量子状態を保存する量子状態保存処理と
を行う近似量子フーリエ変換装置としてコンピュータを機能させ、
前記実計算処理は、前記量子状態保存処理で保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記実計算処理は、前記量子ビットを、制御演算の標的ビットとして演算処理が行われる演算状態aと、制御演算の制御ビットとして演算処理を行う演算状態bとに順に遷移させ、
前記量子状態保存処理は、前記演算状態aの処理が終了した際の位相ずれを修正するために利用される前処理状態と、前記演算状態bの処理で利用される実計算状態と、前記演算状態bの処理が終了した際の位相ずれを修正する際に利用される後処理状態との量子状態を、即時実行可能とする量子ビットについて保存する近似量子フーリエ変換プログラム。
【請求項12】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算処理と、
前記実計算処理で利用する複数の量子状態を保存する量子状態保存処理と
を行う近似量子フーリエ変換装置としてコンピュータを機能させ、
前記実計算処理は、前記量子状態保存処理で保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記実計算処理は、前記量子ビットに対して位相ゲートとアダマールゲートと制御NOTゲートとを適用し、前記位相ゲートを適用する際に、前記量子状態保存処理で保存された量子状態を呼び出して利用する近似量子フーリエ変換プログラム。
【請求項13】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算処理と、
前記実計算処理で利用する複数の量子状態を保存する量子状態保存処理と
を行う近似量子フーリエ変換装置としてコンピュータを機能させ、
前記実計算処理は、前記量子状態保存処理で保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記量子状態保存処理は、前記実計算処理の動作に応じて、即時実行が不要となった量子ビットについての量子状態を廃棄し、即時実行が必要になった量子ビットについての量子状態を生成して保存する近似量子フーリエ変換プログラム。
【請求項14】
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算処理と、
前記実計算処理で利用する複数の量子状態を保存する量子状態保存処理と
を行う近似量子フーリエ変換装置としてコンピュータを機能させ、
前記実計算処理は、前記量子状態保存処理で保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用
し、
前記量子状態保存処理は、前記実計算処理の動作により崩壊した量子状態であって、依然として即時実行が必要な量子ビットについての量子状態を再生成して保存する近似量子フーリエ変換プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、近似量子フーリエ変換を行う技術に関する。
【背景技術】
【0002】
量子フーリエ変換は、量子計算機が古典計算機より優位性を持つための重要な演算である。量子フーリエ変換を、以下QFTと記載する。QFTは、素因数分解及び信号処理の高速実行に利用される。
【0003】
従来は、計算結果に微小な影響しか及ぼさない演算を省略することによって、近似QFTの高速実行を行っていた(特許文献1参照)。しかし、近年、大規模量子計算の実現のための、量子誤り訂正の研究が進行した。その結果、近似QFTに利用される量子位相ゲートについて、従来よりも極めて長い計算時間が必要であることが判明した。
【0004】
この事実を踏まえ、近年、量子誤り訂正を踏まえた近似QFTが提案されてきた(非特許文献1,2参照)。非特許文献1,2では、量子計算で主流となりつつあるClifford+Tゲートモデルの下、計算コストの大きいTゲート数を減らすことによって、近似QFTの効率化を行う方法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【非特許文献】
【0006】
【文献】R. Rines and I. Chuang, High Performance Quantum Modular Multipliers, eprint arXiv, 1801.01081, January 3rd, 2018.
【文献】Y. Nam, Y. Su, and D. Maslov, Approximate Quantum Fourier Transform with O(n log(n)) T Gates, Npj Quantum Information, 6(26), March 13th, 2020. First online as eprint arXiv 1803.04933, March 13th, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0007】
非特許文献1,2で提案された近似QFTでは、近似QFTを構成する各ゲートを逐一実行する。そのため、計算時間が長く非効率である。
本開示は、近似QFTの計算時間を削減可能にすることを目的とする。
【課題を解決するための手段】
【0008】
本開示に係る近似量子フーリエ変換装置は、
量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算部と、
前記実計算部で利用する複数の量子状態を保存する量子状態保存部と
を備え、
前記実計算部は、前記量子状態保存部に保存された前記複数の量子状態から、変換に必要な量子状態を呼び出して利用する。
【発明の効果】
【0009】
本開示では、量子状態記憶部に記憶された量子状態を呼び出して利用して量子ビットの状態を変換する。これにより、計算時間を削減して近似QFTを実行可能である。
【図面の簡単な説明】
【0010】
【
図1】実施の形態1に係る近似量子フーリエ変換装置10の構成図。
【
図2】実施の形態1に係る近似量子フーリエ変換装置10の動作概要を示すフローチャート。
【
図3】実施の形態1に係る近似量子フーリエ変換装置10の詳細な動作を示すフローチャート。
【
図4】実施の形態1に係る前処理のフローチャート。
【
図5】実施の形態1に係る実計算処理のフローチャート。
【
図6】実施の形態1に係る後処理のフローチャート。
【
図7】変形例1に係る近似量子フーリエ変換装置10の構成図。
【発明を実施するための形態】
【0011】
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係る近似量子フーリエ変換装置10の構成を説明する。
近似量子フーリエ変換装置10は、コンピュータである。
近似量子フーリエ変換装置10は、プロセッサ11と、メモリ12と、ストレージ13とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。近似量子フーリエ変換装置10は、表示器40と接続されている。
【0012】
プロセッサ11は、プロセッシングを行うICである。ICはIntegrated Circuitの略である。プロセッサ11は、具体例としては、CPU、DSP、GPUである。CPUは、Central Processing Unitの略である。DSPは、Digital Signal Processorの略である。GPUは、Graphics Processing Unitの略である。
【0013】
メモリ12は、データを一時的に記憶する記憶装置である。メモリ12は、具体例としては、SRAM、DRAMである。SRAMは、Static Random Access Memoryの略である。DRAMは、Dynamic Random Access Memoryの略である。
【0014】
ストレージ13は、データを保管する記憶装置である。ストレージ13は、具体例としては、HDDである。HDDは、Hard Disk Driveの略である。また、ストレージ13は、SD(登録商標)メモリカード、CompactFlash(登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、Blu-ray(登録商標)ディスク、DVDといった可搬記録媒体であってもよい。SDは、Secure Digitalの略である。DVDは、Digital Versatile Diskの略である。
【0015】
近似量子フーリエ変換装置10は、機能構成要素として、量子計算部20と、古典計算部30とを備える。量子計算部20は、実計算部21と、量子状態保存部22とを備える。量子状態保存部22は、Tゲート生成部23と、状態計算部24とを備える。古典計算部30は、測定部31と、進捗出力部32とを備える。近似量子フーリエ変換装置10の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ13には、近似量子フーリエ変換装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、近似量子フーリエ変換装置10の各機能構成要素の機能が実現される。
【0016】
図1では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。
【0017】
***動作の説明***
図2から
図6を参照して、実施の形態1に係る近似量子フーリエ変換装置10の動作を説明する。
実施の形態1に係る近似量子フーリエ変換装置10の動作手順は、実施の形態1に係る近似量子フーリエ変換方法に相当する。また、実施の形態1に係る近似量子フーリエ変換装置10の動作を実現するプログラムは、実施の形態1に係る近似量子フーリエ変換プログラムに相当する。
【0018】
図2を参照して、実施の形態1に係る近似量子フーリエ変換装置10の動作概要を説明する。
(ステップS101:量子状態保存処理)
量子状態保存部22は、複数の量子状態を事前計算して保存しておく。
具体的には、Tゲート生成部23は、Tゲートを生成する。状態計算部24は、Tゲート生成部23によって生成されたTゲートを利用して、実計算部21が利用する位相ゲートを実行するために必要な量子状態を生成する。
状態計算部24は、Tゲートを利用する際、測定部31による測定結果を利用した補正を行う。具体的には、状態計算部24は、まず、Tゲートの適用対象である量子ビットを制御ビット、Tゲート生成部23によって生成された量子ビットを標的ビットとする制御NOTゲートを適用する。次に、状態計算部24は、Tゲート生成部23の量子ビットを測定部31に測定させる。状態計算部24は、この測定結果が0の場合は処理を終了し、測定結果が1の場合はTゲートの適用対象である量子ビットにSゲートを適用する。
なお、以降の処理において、状態計算部24が量子状態を生成又は再生成する際にも、Tゲート生成部23によって生成されたTゲートを利用する。
【0019】
(ステップS102:初期値設定処理)
実計算部21は、実行可能な位相ゲートの初期値を与える。
【0020】
続いて、ステップS103からステップS108を含むループ1で、実計算部21は近似QFTを実行する。この際、実計算部21は、量子状態保存部22に保存された複数の量子状態から、必要な量子状態を呼び出して、各位相ゲートを実行する。実計算部21は、各位相ゲートの実行状況を、実行可能な位相ゲートの把握に利用する。
【0021】
ループ1では、全ての位相ゲートについて完了するまで、完了していない実行可能な位相ゲートを対象の位相ゲートとして処理が実行される。
【0022】
(ステップS103:ゲート実行処理)
実計算部21は、対象の位相ゲートを実行する。この際、実計算部21は、量子状態保存部22から必要な量子状態を呼び出す。そして、測定部31に古典ビットへの測定を行わせる。
この時点で、量子状態保存部22から呼び出された量子状態は崩壊する。量子状態保存部22は、利用された量子状態の再生成を開始する。なお、ステップS103では、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理はステップS104に移行される。
【0023】
(ステップS104:測定結果判定処理)
実計算部21は、測定部31による測定結果を利用して、さらなる位相ゲートの適用が必要か否かを判定する。
具体的には、実計算部21は、測定結果が0であるか否かを判定する。実計算部21は、測定結果が0であるなら対象の位相ゲートは適用できたものとみなす。そして、実計算部21は、ゲートの適用を終了し、処理をステップS107に移行する。一方、実計算部21は、測定結果が0でないなら対象の位相ゲートの適用は未完了とみなす。そして、実計算部21は、さらなるゲートを適用するため、処理をステップS105に移行する。
【0024】
(ステップS105:回数判定処理)
実計算部21は、ステップS103での測定回数が指定回数に達しているか否かを判定する。指定回数は予め設定されているものとする。
実計算部21は、測定回数が指定回数に達している場合には、処理をステップS106に移行する。一方、実計算部21は、測定回数が指定回数に達していない場合には、処理をステップS103に戻す。
【0025】
(ステップS106:ゲート適用処理)
実計算部21は、適切なゲートを適用して、処理をステップS107に移行する。
【0026】
(ステップS107:進捗出力処理)
実計算部21は、進捗出力部32に対象の位相ゲートの計算完了を出力する。進捗出力部32は、計算完了の出力を受け、近似QFTの計算完了部分を表示器300に表示する。
この際、実計算部21は、対象の位相ゲートの計算完了に伴い、実行可能な位相ゲートの情報を更新する。
【0027】
(ステップS108:量子状態更新処理)
量子状態保存部22は、保存されている複数の量子状態のうち、利用しない量子状態を廃棄し、後で利用する量子状態の再生成を開始する。ここで、量子状態保存部22が保存している各量子状態には量子もつれがない。そのため、量子状態保存部22は、測定部31に測定を行わせた上で、初期状態に戻す。その後、量子状態の再生成を開始する。
なお、ステップS108では、ステップS103と同様に、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理はステップS104に移行される。
【0028】
次に、実施の形態1に係る近似量子フーリエ変換装置10の動作の前提となる事項を説明する。
以下の説明では、近似QFTにより変換される量子状態の量子ビット数をnとし、量子ビットの番号を1,2,・・・,nとする。
【0029】
以下の説明では、近似QFTの近似精度εについてε~n-a(aはある定数)を想定して記載する。しかし、より精度の高い近似精度についても、同様に、適用可能である。近似でない通常のQFTは、ε=2-nの状況で実行され、それ以上の近似精度は不要である。そのため、近似精度の最大精度はε=2-nである。
【0030】
以下の説明では、log(1/ε)という値が使用される。これは本来、数11であり、log(1/ε)以上の最小の整数を意図しているが、簡単のためにlog(1/ε)と記載する。
【数11】
【0031】
以下の説明では、自然数jについて、R
jゲートを数12に示す通りとする。ここで、R
jゲートの逆行列であるR
j
-1ゲートは数13に示す通りである。ここでは、位相ゲートは、R
jゲート及びR
j
-1ゲートの積で表されるゲートの集合を意味している。
【数12】
【数13】
【0032】
量子状態保存部22が保存する量子状態について説明する。
量子状態保存部22が保存する量子状態には、各量子ビットに応じて、(1)前処理状態と、(2)実計算状態と、(3)後処理状態の3種類の量子状態がある。これらの量子状態は、(1)から(3)の順に利用される。
具体的には、各量子ビットは、(a)制御演算の標的ビットとして演算処理が行われる状態と、(b)制御演算の制御ビットとして演算処理が行われる状態との2状態に順に遷移する。この2状態の間が数14に示すHゲート(アダマールゲート)で区切られる。
【数14】
このとき、(1)から(3)の量子状態は、それぞれ、次の状況で利用される。まず、(1)前処理状態は、演算状態(a)の処理が終了した際の位相ずれを修正するために利用される。(2)実計算状態は、演算状態(b)の処理で利用される。(3)後処理状態は、演算状態(b)の処理が終了した際の位相ずれを修正する際に利用される。
【0033】
具体的には、量子状態保存部22が保存する量子状態は以下のようになる。
(1)前処理状態について
量子状態保存部22は、量子ビットの番号jが2≦j≦log(1/ε)の場合はR
2R
j+1
-1ゲートに、それ以外の場合はR
2R
log(1/ε)+1
-1ゲートに対応する量子状態を保存する。ここで、R
2R
j
-1ゲートでは、数15に示すj-2個の量子状態が保存される。
【数15】
【0034】
(2)実計算状態について
量子状態保存部22は、量子ビットの番号jが1≦j≦n-log(1/ε)+1の場合はR
3
-1,R
4
-1,・・・,R
log(1/ε)+1
-1ゲートに、それ以外の場合はR
3
-1,R
4
-1,・・・,R
n-j+2
-1ゲートに対応する量子状態を保存する。ここで、R
j
-1ゲートでは、数16に示すj-2個の量子状態が保存される。
【数16】
【0035】
(3)後処理状態について
量子状態保存部22は、量子ビットの番号jが1≦j≦n-log(1/ε)+1の場合はR2Rlog(1/ε)+1
-1ゲートに、それ以外の場合はR2Rn-j+2
-1ゲートに対応する量子状態を保存する。
【0036】
量子状態保存部22は、上記の(1)~(3)についての量子状態をすべて保存するのではない。量子状態保存部22は、一部の量子状態のみを保存し、即時実行可能とする。その上で、実計算部分110で利用されて崩壊した量子状態の再生成を行うことで、利用する量子ビット数の削減を行う。
ここで、Tゲートを生成するのに必要な計算時間をdTステップとしたとき、量子状態の再生成にかかる時間は、おおよそ3dTlog(1/ε)ステップである。ここで、「ステップ」とは、制御NOTゲート1回の実行時間と量子状態の測定1回の実行時間との合計時間、又は、それと同等の計算時間である。したがって、即時実行可能とすべき位相ゲートは、3dTlog(1/ε)ステップで必要な分で十分である。
【0037】
(1)から(3)の量子状態について、実際に保存する量子状態数について概要を説明する。具体的な利用スケジュールについては、
図3を参照して後述する。なお、以下において、量子状態の個数が「約〇個」と書かれている場合、「約」は、十分小さい項を無視し、主要項を抽出していることを示す。
【0038】
(1)前処理状態について
R2Rj
-1ゲート1個の消費間隔は少なくとも2ステップである。よって、1ステップで利用するR2Rj
-1ゲートの数は高々1/2個とみなすことができる。したがって、3/2dTlog(1/ε)回分、R2Rj
-1ゲートに利用する量子状態を保存しておけば、前処理状態は即時実行可能である。つまり、準備すべき量子状態数は、約3/2dT(log(1/ε))2個である。
【0039】
(2)実計算状態について
各Rj
-1ゲート1個の消費間隔は少なくとも2ステップである。よって、1ステップで利用するRj
-1ゲートの数は高々1/2個とみなすことができる。ここで、実計算状態で用意するR3
-1,R4
-1,・・・,Rlog(1/ε)+1
-1ゲートに必要な量子状態数を全て合わせると、約1/2(log(1/ε))2個である。そのため、1ステップで利用する量子状態数は、高々1/4(log(1/ε))2個である、したがって、準備すべき量子状態数は、約3/4dT(log(1/ε))3個である。
【0040】
(3)後処理状態について
前処理状態と同様、R2Rj
-1ゲート1個の消費間隔は少なくとも2ステップである。よって、1ステップで利用するR2Rj
-1ゲートの数は高々1/2個とみなすことができる。したがって、3/2dTlog(1/ε)回分、R2Rj
-1ゲートに利用する量子状態を保存しておけば、後処理状態は即時実行可能である。つまり、準備すべき量子状態数は、約3/2dT(log(1/ε))2個である。
【0041】
以上のことから、準備すべき量子状態数は、(2)実計算状態の量子状態数が主要項となる。つまり、準備すべき量子状態数は、約3/4dT(log(1/ε))3個となる。
【0042】
図3を参照して、実施の形態1に係る近似量子フーリエ変換装置10の詳細な動作を説明する。
図3のフローチャート及びその説明では、ゲートに適用について、適用番号を示す記号を導入する。まず、[j]にゲートを適用とある場合には、番号jの量子ビットに、1量子ビットに対する量子ゲートを適用する。また、[j,k]に制御NOTゲートを適用とある場合には、番号jの量子ビットを制御ビット、番号kの量子ビットを標的ビットとする制御NOTゲートを適用する。また、
図3のフローチャート及びその説明に登場する[j,k]について、j又はkが、量子ビット番号の範囲である1以上n以下にない場合、その[j,k]は処理完了とみなす。さらに、j≧kが成立する要素[j,k]についても処理完了とみなす。
【0043】
ステップS201の処理が
図2のステップS101の処理に対応する。ステップS202及びステップS203の処理が
図2のステップS102の処理に対応する。ステップS204以降の処理が、
図2のループ1の処理に対応する。
【0044】
(ステップS201:量子状態保存処理)
量子状態保存部22は、複数の量子状態を事前計算して保存しておく。
(1)前処理状態については、量子状態保存部22は、量子ビットの番号jが2≦j≦min(n,3/2dTlog(1/ε)+1)の量子ビットで必要なゲートに対応する量子状態を保存する。具体的には、量子状態保存部22は、各量子ビットjで利用されるR2Rmin(j+1,log(1/ε)+1)
-1ゲートに必要な量子状態を保存する。
(2)実計算状態については、量子状態保存部22は、R3
-1,R4
-1,・・・Rlog(1/ε)+1
-1ゲートの組である3/2dTlog(1/ε)組で準備すべき量子状態全てを保存する。
(3)後処理状態については、量子状態保存部22は、量子ビットの番号jが1≦j≦min(n,3/2dTlog(1/ε))の量子ビットで必要なゲートに対応する量子状態を保存する。具体的には、量子状態保存部22は、各量子ビットjで利用されるR2Rmin(n-j+2,log(1/ε)+1)
-1ゲートに必要な量子状態を保存する。
なお、上記の量子状態の生成は、Tゲート生成部23で生成されたTゲートを利用して、状態計算部24が行う。
【0045】
(ステップS202:初期値設定処理)
実計算部21は、実行可能な位相ゲートの初期値を与える。ここでは、実計算部21は、位相ゲートの初期値として、添え字の集合Sに[1,2]を与える。
【0046】
(ステップS203:第1前処理)
実計算部21は、番号1の量子ビットについて、(1)前処理状態を利用した前処理を行う。具体的な処理については、
図4を参照して後述する。
【0047】
続いて、実計算部21は、近似QFTを実行する。実計算部21は、集合Sの各要素sについて、ループ2(ステップS204からステップS214の処理)を繰り返し実行する。
なお、各要素sに関する操作は並列実行可能である。特に、ここでは、集合Sに含まれる実行可能な状態にある要素sを、全て並列に実行することを想定している。つまり、実計算部21は、実行可能な状態にある各要素sを対象の要素sとして、全ての対象の要素sについて並列にステップS204からステップS214の処理を繰り返し実行する。
【0048】
(ステップS204:要素設定処理)
実計算部21は、対象の要素sの第1成分をjに設定し、第2成分をkに設定する。
【0049】
(ステップS205:待機判定処理)
実計算部21は、要素[j-1,k]と要素[j,k-1]とのいずれの処理も完了しているか否かを判定する。実計算部21は、いずれの処理も完了している場合には、処理をステップS206に移行する。一方、実計算部21は、少なくともいずれかの処理が完了していない場合には、処理をループ2の先頭に戻す。
【0050】
(ステップS206:第1制御NOTゲート適用処理)
実計算部21は、番号jの量子ビットを制御ビット、番号kの量子ビットを標的ビットとする制御NOTゲートを適用する。
【0051】
(ステップS207:実計算処理)
実計算部21は、番号kの量子ビットに、(2)実計算状態を利用して、位相ゲートR
k-j+2
-1を適用する。具体的な処理については、
図5を参照して後述する。
【0052】
(ステップS208:第2制御NOTゲート適用処理)
実計算部21は、番号jの量子ビットを制御ビット、番号kの量子ビットを標的ビットとする制御NOTゲートを適用する。
その上で、実計算部21は、要素[j,k]を処理完了とする。具体的には、実計算部21は、進捗出力部32に要素[j,k]の計算完了を出力する。進捗出力部32は、計算完了の出力を受け、近似QFTの計算完了部分を表示器300に表示する。
【0053】
(ステップS209:k完了判定処理)
実計算部21は、番号kの量子ビットが標的ビットとして利用完了したかを判定する。具体的には、実計算部21は、k-j=1である場合には、番号kの量子ビットは標的ビットとして利用完了したと判定する。一方、実計算部21は、k-j=1でない場合には、番号kの量子ビットは標的ビットとして利用完了していないと判定する。
実計算部21は、番号kの量子ビットが標的ビットとして利用完了した場合には、処理をステップS210に移行する。一方、実計算部21は、番号kの量子ビットが標的ビットとして利用完了していない場合には、処理をステップS211に移行する。
【0054】
(ステップS210:第2前処理)
実計算部21は、番号kの量子ビットについて、(1)前処理状態を利用した前処理を行う。具体的な処理については、ステップS203の処理と同様に、
図4を参照して後述する。
【0055】
(ステップS211:第1要素追加処理)
実計算部21は、要素[j+1,k]を集合Sに追加する。
【0056】
(ステップS212:j完了判定処理)
実計算部21は、番号jの量子ビットについて、当該量子ビットを制御ビットとする演算が完了しており、かつ、後処理が完了していないという条件を満たすか否かを判定する。k-j=log(1/ε)-1又はk=nである場合には、番号jの量子ビットについて、当該量子ビットを制御ビットとする演算が完了していることになる。
実計算部21は、条件を満たす場合には、処理をステップS213に移行する。一方、実計算部21は、条件を満たさない場合には、処理をステップS214に移行する。
【0057】
(ステップS213:後処理)
実計算部21は、番号jの量子ビットについて、(3)後処理状態を利用した後処理を行う。具体的な処理については、
図6を参照して後述する。
【0058】
(ステップS214:第2要素追加処理)
実計算部21は、要素[j,k+1]を集合Sに追加する。
【0059】
(ステップS215:全要素完了判定処理)
実計算部21は、集合Sの全ての要素が処理完了となっているか否かを判定する。
実計算部21は、全ての要素の処理が完了している場合には、処理を終了する。一方、実計算部21は、処理が完了していない要素が残っている場合には、処理を第2ループの先頭に戻す。
【0060】
図4を参照して、実施の形態1に係る前処理(
図3のステップS203及びS210)を説明する。
図4のフローチャート及びその説明では、パラメータj,εが外部で定められているものとする。特に、パラメータjは、前処理を行う量子ビットの番号を表し、以前の説明における添え字jとは無関係である。また、内部変数kも以前の説明とは無関係である。
【0061】
(ステップS301:第1j判定処理)
実計算部21は、パラメータj=1であるか否かを判定する。
実計算部21は、パラメータj=1である場合には、処理をステップS311に移行する。一方、実計算部21は、パラメータj=1でない場合には、処理をステップS302に移行する。
【0062】
(ステップS302:k初期化処理)
実計算部21は、パラメータkに初期値0を設定する。パラメータkは、測定回数の累積値を表す。
【0063】
(ステップS303:ゲート適用処理)
実計算部21は、パラメータkの値に応じた(1)前処理状態であって、量子状態保存部22に保存されている(1)前処理状態を呼び出す。具体的には、実計算部21は、数17に示す(1)前処理状態を呼び出す。
【数17】
そして、実計算部21は、番号jの量子ビットを制御ビット、呼び出された量子状態(前処理状態)を標的ビットとする制御NOTゲートを適用する。
【0064】
(ステップS304:測定回数累積処理)
実計算部21は、パラメータkに1を加算する。
【0065】
(ステップS305:測定処理)
実計算部21は、ステップS303で呼び出された量子状態を、測定部31に測定させる。
【0066】
(ステップS306:第2j判定処理)
実計算部21は、パラメータj≧log(1/ε)か否かを判定する。
実計算部21は、パラメータj≧log(1/ε)である場合には、処理をステップS307に移行する。一方、実計算部21は、パラメータj≧log(1/ε)でない場合には、処理をステップS308に移行する。
【0067】
(ステップS307:量子状態再生成処理)
量子状態保存部22は、ステップS303で呼び出され利用された量子状態の再生成を開始する。ステップS307では、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理はステップS308に移行される。
【0068】
(ステップS308:測定結果判定処理)
実計算部21は、ステップS305で測定された結果が0であるか否かを判定する。
実計算部21は、測定結果が0である場合には、処理をステップS311に移行する。一方、実計算部21は、測定結果が0でない場合には、処理をステップS309に移行する。
【0069】
(ステップS309:測定回数判定処理)
実計算部21は、測定回数が基準回数に達しているか否かを判定する。基準回数は、min(j-1,log(1/ε)-1)である。
実計算部21は、測定回数が基準回数に達している場合には、処理をステップS310に移行する。一方、実計算部21は、測定回数が基準回数に達していない場合には、処理をステップS303に戻す。
【0070】
(ステップS310:R
2
-1ゲート適用処理)
実計算部21は、数18に示すR
2
-1ゲートを適用する。
【数18】
【0071】
(ステップS311:Hゲート適用処理)
実計算部21は、Hゲート(アダマールゲート)を適用する。
【0072】
(ステップS312:進捗出力処理)
実計算部21は、進捗出力部32に位相ゲートの計算完了を出力する。進捗出力部32は、計算完了の出力を受け、近似QFTの計算完了部分を表示器300に表示する。
【0073】
(ステップS313:第3j判定処理)
実計算部21は、パラメータj≧log(1/ε)か否かを判定する。
実計算部21は、パラメータj≧log(1/ε)である場合には、処理を終了する。一方、実計算部21は、パラメータj≧log(1/ε)でない場合には、処理をステップS314に移行する。
【0074】
(ステップS314:量子状態更新処理)
量子状態保存部22は、R2Rj+1
-1ゲート用の量子状態を廃棄する。また、量子状態保存部22は、R2Rlog(1/ε)+1
-1ゲート用の量子状態1組の生成を開始する。ステップS314では、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理は終了状態に移行する。
【0075】
図5を参照して、実施の形態1に係る実計算処理(
図3のステップS207)を説明する。
図5のフローチャート及びその説明では、R
j
-1ゲートの実行方法が示されている。この添え字jは、以前の説明に登場したjとは無関係である。また、内部変数kも以前の説明とは無関係である。
【0076】
(ステップS401:k初期化処理)
実計算部21は、パラメータkに初期値0を設定する。パラメータkは、測定回数の累積値を表す。
【0077】
(ステップS402:ゲート適用処理)
実計算部21は、パラメータkの値に応じた(2)実計算状態であって、量子状態保存部22に保存されている(2)実計算状態を呼び出す。具体的には、実計算部21は、数19に示す(2)実計算状態を呼び出す。
【数19】
そして、実計算部21は、番号jの量子ビットを制御ビット、呼び出された量子状態(実計算状態)を標的ビットとする制御NOTゲートを適用する。
【0078】
(ステップS403:測定回数累積処理)
実計算部21は、パラメータkに1を加算する。
【0079】
(ステップS404:測定処理)
実計算部21は、ステップS402で呼び出された量子状態を、測定部31に測定させる。
【0080】
(ステップS405:量子状態再生成処理)
量子状態保存部22は、ステップS402で呼び出され利用された量子状態の再生成を開始する。ステップS405では、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理はステップS406に移行される。
【0081】
(ステップS406:測定結果判定処理)
実計算部21は、ステップS404で測定された結果が0であるか否かを判定する。
実計算部21は、測定結果が0である場合には、処理をステップS409に移行する。一方、実計算部21は、測定結果が0でない場合には、処理をステップS407に移行する。
【0082】
(ステップS407:測定回数判定処理)
実計算部21は、測定回数が基準回数に達しているか否かを判定する。基準回数は、j-2である。
実計算部21は、測定回数が基準回数に達している場合には、処理をステップS408に移行する。一方、実計算部21は、測定回数が基準回数に達していない場合には、処理をステップS402に戻す。
【0083】
(ステップS408:R
2
-1ゲート適用処理)
実計算部21は、数20に示すR
2
-1ゲートを適用する。
【数20】
【0084】
(ステップS409:進捗出力処理)
実計算部21は、進捗出力部32に位相ゲートの計算完了を出力する。進捗出力部32は、計算完了の出力を受け、近似QFTの計算完了部分を表示器300に表示する。
【0085】
図6を参照して、実施の形態1に係る後処理(
図3のステップS213)を説明する。
図6のフローチャート及びその説明では、パラメータj,εが外部で定められているものとする。特に、パラメータjは、後処理を行う量子ビットの番号を表し、以前の説明における添え字jとは無関係である。また、内部変数kも以前の説明とは無関係である。
【0086】
(ステップS501:k初期化処理)
実計算部21は、パラメータkに初期値0を設定する。パラメータkは、測定回数の累積値を表す。
【0087】
(ステップS502:ゲート適用処理)
実計算部21は、パラメータkの値に応じた(3)後処理状態であって、量子状態保存部22に保存されている(3)後処理状態を呼び出す。具体的には、実計算部21は、数21に示す(3)後処理状態を呼び出す。
【数21】
そして、実計算部21は、番号jの量子ビットを制御ビット、呼び出された量子状態(後処理状態)を標的ビットとする制御NOTゲートを適用する。
【0088】
(ステップS503:測定回数累積処理)
実計算部21は、パラメータkに1を加算する。
【0089】
(ステップS504:測定処理)
実計算部21は、ステップS502で呼び出された量子状態を、測定部31に測定させる。
【0090】
(ステップS505:第1j判定処理)
実計算部21は、パラメータj≦n-(3dT+1)log(1/ε)+1か否かを判定する。
実計算部21は、パラメータj≦n-(3dT+1)log(1/ε)+1である場合には、処理をステップS506に移行する。一方、実計算部21は、パラメータj≦n-(3dT+1)log(1/ε)+1でない場合には、処理をステップS507に移行する。
【0091】
(ステップS506:量子状態再生成処理)
量子状態保存部22は、ステップS502で呼び出され利用された量子状態の再生成を開始する。ステップS502では、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理はステップS507に移行される。
【0092】
(ステップS507:測定結果判定処理)
実計算部21は、ステップS504で測定された結果が0であるか否かを判定する。
実計算部21は、測定結果が0である場合には、処理をステップS510に移行する。一方、実計算部21は、測定結果が0でない場合には、処理をステップS508に移行する。
【0093】
(ステップS508:測定回数判定処理)
実計算部21は、測定回数が基準回数に達しているか否かを判定する。基準回数は、min(n-j,log(1/ε)-1)である。
実計算部21は、測定回数が基準回数に達している場合には、処理をステップS509に移行する。一方、実計算部21は、測定回数が基準回数に達していない場合には、処理をステップS502に戻す。
【0094】
(ステップS509:R
2
-1ゲート適用処理)
実計算部21は、数22に示すR
2
-1ゲートを適用する。
【数22】
【0095】
(ステップS510:進捗出力処理)
実計算部21は、進捗出力部32に位相ゲートの計算完了を出力する。進捗出力部32は、計算完了の出力を受け、近似QFTの計算完了部分を表示器300に表示する。
【0096】
(ステップS511:第2j判定処理)
実計算部21は、パラメータjが、n-(3dT+1)log(1/ε)+1<j≦n-3dTlog(1/ε)-1を満たすか否かを判定する。
実計算部21は、満たす場合には、処理をステップS512に移行する。一方、実計算部21は、満たさない場合には、処理を終了する。
【0097】
(ステップS512:量子状態更新処理)
量子状態保存部22は、R2Rlog(1/ε)+1
-1ゲート用の量子状態を廃棄する。また、量子状態保存部22は、R2Rn-3dTlog(1/ε)+2-j
-1ゲート用の量子状態の生成を開始する。ここでは、dTは、dTを表す。ステップS512では、あくまでも、量子状態の再生成を開始するだけであり、量子状態の生成完了を待たず、処理は終了状態に移行する。
【0098】
***実施の形態1の効果***
以上のように、実施の形態1に係る近似量子フーリエ変換装置10は、量子状態保存部22が即時実行可能とする位相ゲートについての量子状態を事前に生成して保存しておく。そして、実計算部21は、量子状態保存部22に保存された量子状態を利用して位相ゲートを適用する。
これにより、従来はおよそ3log(1/ε)ステップのゲート実行が必要であった位相ゲートが、期待値2ステップのゲートで実行可能となる。したがって、実施の形態1に係る近似量子フーリエ変換装置10によって実行される近似QFTは、従来と異なり、各位相ゲートが近似精度に依存しない計算時間で実行可能となる。そのため、近似量子フーリエ変換装置10は、近似QFTを、従来技術と比較して、極めて高速に行うことが可能である。
【0099】
また、実施の形態1に係る近似量子フーリエ変換装置10は、近似QFTで利用するn量子ビットに加え、約(3/4)dT(log(1/ε))3個の量子ビットを追加で利用する。ここで、上記説明では、近似QFTの近似精度εについてε~n-a(aはある定数)を想定したが、この下で追加量子ビット数は約((3a3)/4)dT(logn)3個となる。ここで、nが極めて大きくなるような大規模計算において、((3a3)/4)dT(logn)3≪nである。したがって、近似量子フーリエ変換装置10が実現する近似QFTでは、実計算部21の量子ビット数が量子ビット数の主要項となる。そのため、量子状態保存部22の量子ビットは、近似量子フーリエ変換装置10で要求される量子ビット数には大きな影響を及ぼさない。
【0100】
***他の構成***
<変形例1>
実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
【0101】
図7を参照して、変形例1に係る近似量子フーリエ変換装置10の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、近似量子フーリエ変換装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路14を備える。電子回路14は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
【0102】
電子回路14としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAが想定される。GAは、Gate Arrayの略である。ASICは、Application Specific Integrated Circuitの略である。FPGAは、Field-Programmable Gate Arrayの略である。
各機能構成要素を1つの電子回路14で実現してもよいし、各機能構成要素を複数の電子回路14に分散させて実現してもよい。
【0103】
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【0104】
プロセッサ11とメモリ12とストレージ13と電子回路14とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【0105】
なお、以上の説明における「部」を、「回路」、「工程」、「手順」、「処理」又は「処理回路」に読み替えてもよい。
【0106】
以上、本開示の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、本開示は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【0107】
10 近似量子フーリエ変換装置、11 プロセッサ、12 メモリ、13 ストレージ、14 電子回路、20 量子計算部、21 実計算部、22 量子状態保存部、23 Tゲート生成部、24 状態計算部、30 古典計算部、31 測定部、32 進捗出力部、40 表示器。
【要約】
近似量子フーリエ変換装置(10)は、量子計算部(20)と古典計算部(30)との機能構成要素を備える。量子計算部(20)は、量子ビットの状態を変換することにより、近似量子フーリエ変換を行う実計算部(21)と、実計算部(21)で利用する複数の量子状態を保存する量子状態保存部(22)とを備える。実計算部(21)は、量子状態保存部(22)に保存された複数の量子状態から、変換に必要な量子状態を呼び出して利用する。