(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-18
(45)【発行日】2024-01-26
(54)【発明の名称】量子回路配置
(51)【国際特許分類】
G06N 10/00 20220101AFI20240119BHJP
【FI】
G06N10/00
(21)【出願番号】P 2021532168
(86)(22)【出願日】2020-01-16
(86)【国際出願番号】 IB2020050341
(87)【国際公開番号】W WO2020161549
(87)【国際公開日】2020-08-13
【審査請求日】2022-06-22
(32)【優先日】2019-02-08
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】フリッシュ、アルベルト
(72)【発明者】
【氏名】バロウスキ、ハリー
(72)【発明者】
【氏名】ステーンケン、ドミニク
(72)【発明者】
【氏名】ブッハー、デイヴィッド
(72)【発明者】
【氏名】クス、ガウェル
(72)【発明者】
【氏名】ハイデ、イザベル
(72)【発明者】
【氏名】ミュッゲンブルグ、ジャン
【審査官】小林 秀和
(56)【参考文献】
【文献】特表2018-530805(JP,A)
【文献】米国特許第10171088(US,B1)
【文献】国際公開第2014/151571(WO,A2)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00
(57)【特許請求の範囲】
【請求項1】
量子コンピュータ上で計算を実行するため
に、キュービットの制御が記述された少なくとも1つの量子回
路をコンパイルするための、古典コンピュータ上で実施可能な方法であって、
(i)変数の選択された値についてのキュービットのセットによって表される変数に基づいて事前定義済み関数の値のセットを事前計算することと、
(ii)前記事前計算された値の前記セットの
それぞれの値
を用いて制御回転を実行するように構成される、少なくとも1つの量子回路を生成することと、
を含む、方法。
【請求項2】
前記事前定義済み関数が、絶対値が単調減少する負の導関数を有する、請求項1に記載の方法。
【請求項3】
前記方法が、ビンのセットを事前定義することを含み、前記事前計算された値のセットの各値が、ビンの前記事前定義されたセットのビンに対応する、請求項
1または2に記載の方法。
【請求項4】
前記ビンのサイズが、前記変数の値の増加に対して増加する、請求項3に記載の方法。
【請求項5】
前記変数の
選択された値が、ビンの前記事前定義されたセットに従って選択される、請求項
3または4に記載の方法。
【請求項6】
前記ビンのサイズが、前記変数内の最初の1キュービットの位置に基づき、前記ビンの前記サイズが、前記変数内の前記最初の1キュービットに続くキュービットの数によって定義される、請求項
3ないし
5のいずれか一項に記載の方法。
【請求項7】
前記ビンのサイズが、前記変数内の最後の1キュービットの位置に基づき、前記ビンの前記サイズが、前記変数内の前記最
後の1キュービットに先行するキュービットの数によって定義される、請求項
3ないし
5のいずれか一項に記載の方法。
【請求項8】
前記
量子回路は、HHLアルゴリズムを実行する
ための量子回路であって、
前記量子回路は、量子位相推定を実行するように構成される記述
と、逆量子位相推定を実行するように構成される
記述と、キュービットのさらなるセットの制御回転を実行するように構成される
記述とを含む、請求項
1ないし7のいずれか一項に記載の方法。
【請求項9】
前記関数が、arcsin(1/λ)関数を含
み、前記λはキュービットのセットによって表される変数によって表される固有値である、請求項
1ないし
8のいずれか一項に記載の方法。
【請求項10】
前記量子回路が、
-
第1のキュービットに対する否定制御および第2のキュービットに対する制御で構成されることと、
- 前記制御で基底状態にあるアンシラ・キュービットを量子もつれ状態にすることと、
- 前記アンシラ・キュービットを非計算することと、
をさらに含む、請求項
1ないし
9のいずれか一項に記載の方法。
【請求項11】
- 第2のアンシラ・キュービットを使用することと、
- 前記2つのアンシラ・キュービットを含むサブ・キュービット・パターンに依存する複数制御NOT動作で量子もつれ状態にすることと、
- 前記アンシラ・キュービットおよび残りの組み合わせを条件として制御回転を実行することと、
をさらに含む、請求項
10に記載の方法。
【請求項12】
量子コンピュータ上で計算を実行するため
に、キュービットの制御が記述された少なくとも1つの量子回
路をコンパイルするためのコンピュータに、
(i)変数の選択された値についてのキュービットのセットによって表される変数に基づいて事前定義済み関数の値のセットを事前計算することと、
(ii)前記事前計算された値の前記セットの
それぞれの値
を用いて制御回転を実行するように構成される、少なくとも1つの量子回路を生成することと、
を実行させるコンピュータ・プログラム。
【請求項13】
請求項
1ないし
11のいずれか一項による方法を実行するためのコンピュータ可読プログラム命令を含むデータ処理プログラムの実行のための、データ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、データ処理システムに関し、特に、量子コンピュータ上で計算を実行するための少なくとも1つの量子回路を有する量子回路配置(quantum circuit arrangement)、および量子コンピュータ上で計算を実行するための少なくとも1つの量子回路を有する量子回路配置をコンパイルするための古典コンピュータ上で実施可能な方法に関する。
【背景技術】
【0002】
量子コンピュータは、量子力学に基づいて計算を実行する。専用の問題を解くために著しい高速化が可能である。線形方程式のセットの解法の特徴を推定するために、現況技術において量子アルゴリズムが知られている。同じタスクのための古典アルゴリズムと比較すると、これらのアルゴリズムは、ほぼ指数関数的に高速化され得る。
【0003】
科学および工学の多くの分野において重要な線形方程式は、現実問題において、非常に大きな行列によって定義されることが多く、したがって、大量のデータが記憶され扱われることを必要とする。線形方程式を適用することについての例は、偏微分方程式を離散化することである。ここで、古典コンピューティングは、時間および記憶容量に関してその限界を迎えることがある。したがって、線形方程式を解くことは、並外れた計算速度を伴う量子計算の典型的には専用のタスクである。
【0004】
Harrow, Aram W; Hassidim, Avinatan; Lloyd,Seth (2009), 'Quantum algorithm for solving linear systems of equations', Physical Review Letters, 103(15), 150502により記載される、いわゆるHHLアルゴリズムは、量子コンピュータ上で指数関数的に高速化して線形方程式系を解くことが可能である。HHLアルゴリズムは、量子レジスタに記憶されたデータに対する複数の計算ステップで構成される。
【0005】
制御回転(controlled rotation)というHHLアルゴリズムの特定のステップについて、HHLアルゴリズムの原記載において、著者はこのステップについての解法が与えられると想定したため、効率的な実施態様が今日までに知られていない。
【0006】
記憶されたデータの量子的性質に起因して、古典マシンに対する量子状態の読み出しは計算的にコストが掛かるため、古典計算を適用することはできない。
【発明の概要】
【0007】
量子コンピュータ上で計算を実行するための少なくとも1つの量子回路を有する量子回路配置が提案され、量子回路配置は、キュービットのセットによって表される変数に基づいて、事前定義済み関数の値を判断するように構成されるルックアップ構造(lookup structure)と、変数に基づいて所定のビンを識別するように構成されるビニング構造(binning structure)と、を少なくとも含む。ルックアップ構造は、ビンに基づいて事前定義済み関数の値を判断するように適合される。
【0008】
有利なことに、量子回路は、線形方程式を解くためにHHLアルゴリズムを効率的に実行するための複数のキュービットを含む量子レジスタ上で実行され得る。同じタスクのための古典アルゴリズムと比較すると、HHLアルゴリズムは、ほぼ指数関数的に高速に問題を解く。
【0009】
本発明の好ましい実施形態によれば、HHLアルゴリズムにおける効率的な制御回転ステップは、有利なことに、小さな誤差が許容され得るアプリケーションに対して容易にされ得る。
【0010】
具体的には、実施形態は、制御可能なパラメータが、アプリケーションに依存した精度レベルを設定すること、ならびにアルゴリズム実行時間に変換する量子ゲートの数および使用されるキュービットの数のコストに対して、もたらされた誤差を任意に小さな値まで減少させることを可能にする。
【0011】
典型的には、提案される実施形態に基づくHHLアルゴリズム全体が、パラメータのあるセットについて99.999%よりも良い忠実度および平均20~30%の出力確率を達成するようにシミュレートされ得る。
【0012】
本発明の実施形態は、特定の関数についてのルックアップ構造の事前計算された値およびビニング構造において複数の値をビニングすることに基づく。
【0013】
事前計算された値は、古典コンピュータ上において高精度で計算され得る。いかなる任意の古典計算可能な関数も使用され得るが、提示されるルックアップ構造は、好ましくは単調減少している関数について使用され得る。したがって、HHLアルゴリズムの場合、方法は、関数1/xおよびarcsin(1/x)に減少され得る。事前計算は、量子回路のコンパイル中に実行され、量子アルゴリズムの実行時間を増加させない。
【0014】
複数の値をビニングすることは、量子回路内で実行される必要な回転数を減少させることを可能にする。正確な場合の指数関数的回転量は、ビニングの場合に線形的回転量に減少される。ビニング方法は、最大値に限定される小さな誤差をもたらす。制御回転の数は、固有値精度全体に線形的に依存するが、回転精度の選択で指数関数的にスケールする。
【0015】
提案された量子回路配置を用いるために可能なアプリケーションは、好ましくは、例えば微分方程式、最小二乗フィッティング、古典的パーセプトロン、電磁散乱、または3次スプライン補間を解くことであってもよい。
【0016】
本発明の量子回路配置の好ましい実施形態によれば、事前定義済み関数は、絶対値が単純減少する負の導関数を有してもよく、それは、単純減少する関数が用いられることを意味する。したがって、効率的かつ独自のビニング構造を有する有利なルックアップ構造は、実施形態において実施され得る。
【0017】
本発明の量子回路配置の好ましい実施形態によれば、ビンのサイズは、変数の値の増加に対して増加し得る。このようにして、必要な回転の数は、より高い固有値が事前定義済み関数の入力変数として用いられることに対して減少され得る。
【0018】
本発明の量子回路配置の好ましい実施形態によれば、ビンのサイズは、変数内の最初の1キュービットの位置に基づき得る。ビン・サイズは、キュービットの数から導出され、キュービットの数は、変数内の最初の1キュービットに続くキュービットの数によって定義され得る。したがって、最初の1キュービットを固有値の最上位キュービットとして用いることによって、効率的なビニング構造が、提案される量子回路配置を用いて実施され得る。
【0019】
本発明の量子回路配置の好ましい実施形態によれば、ビンのサイズは、変数内の最後の1キュービットの位置に基づき得る。ビン・サイズは、キュービットの数から導出され、キュービットの数は、変数内の最初の1キュービットに続くキュービットの数によって定義され得る。代替的には、ビニング構造の手法に依存して、右に対して最も遠くの1キュービットである最後の1キュービットが、類似の実施形態において用いられ得る。これは、ここで異なるキュービットの向き(エンディアン性(endianness))を包含するのに役立ち得る。異なるエンディアン性の場合、最初のキュービットはやはり最初のキュービットであるが、他の方向から、左からではなく右からである。
【0020】
本発明の量子回路配置の好ましい実施形態によれば、ルックアップ構造は、キュービットのさらなるセットの制御回転を実行するための少なくとも1つの量子ゲート配置を含み得る。したがって、量子コンピュータ上の計算のために、HHLアルゴリズムの効率的な実施が実現され得る。
【0021】
好ましい実施形態によれば、本発明の量子回路配置は、HHLアルゴリズムを実行するように構成されてもよく、量子位相推定を実行するように構成される量子位相推定構造(quantum phase estimation structure)をさらに含み、逆量子位相推定を実行するように構成される逆量子位相推定構造(inverse quantum phase estimation structure)をさらに含み、キュービットのさらなるセットの制御回転を実行するためのルックアップ構造をさらに含む。このようにして、アルゴリズムの3つの主要なステップ全てを実行する、量子コンピュータ上の全HHLアルゴリズムの効率的な実施が、可能であり得る。同じタスクのための古典アルゴリズムと比較すると、HHLアルゴリズムは、ほぼ指数関数的に高速に問題を解く。
【0022】
本発明の量子回路配置の好ましい実施形態によれば、関数は、arcsin(1/λ)関数を含み得る。提案された関数は、好ましい方法で単調減少関数の要件を満たす。
【0023】
本発明の量子回路配置の好ましい実施形態によれば、量子回路は、ビンの最大サイズ-1のパターンの少なくとも1つのサブ・キュービット・パターンを通して変数に対する反復を実行するように構成され得る。サブ・キュービット・パターンを導入することによって、ビニング構造は、有利なことに、効率性に関してさらに改善され得る。
【0024】
好ましい実施形態によれば、本発明の量子回路配置は、古典コンピュータ上でコンパイルされるようにさらに構成され得る。したがって、量子回路配置の効率的に改善した制御プロセスについての事前定義済み関数の値の事前計算が、可能であり得る。したがって、著しくより効率的な回転ステップが、HHLアルゴリズムにおいて実現され得る。
【0025】
本発明の量子回路配置の好ましい実施形態によれば、量子回路は、第1のキュービットに対する否定制御(negated control)および第2のキュービットに対する制御で構成されてもよく、制御で基底状態にあるアンシラ・キュービット(ancilla qubit)を量子もつれ状態にすることと、アンシラ・キュービットを非計算(uncomputation)することと、をさらに含む。このようにして、量子回路配置は、数が減少した必要な量子ゲートを用いて実施され得る。
【0026】
非計算は、アンシラ・ビットに対する一時的副作用を一掃するための可逆的量子回路において用いられる技術であり、それによってそれらが再使用され得る。非計算は、量子コンピューティングにとって重要である。中間効果が非計算されたか否かが、結果を測定する際に状態がどのように互いに干渉するかに影響を及ぼす。
【0027】
本発明の量子回路配置の好ましい実施形態によれば、量子回路は、第2のアンシラ・キュービットを使用し、2つのアンシラ・キュービットを含むサブ・キュービット・パターンに依存する複数制御NOT動作で量子もつれ状態にし、アンシラ・キュービットおよび残りの組み合わせを条件として制御回転を実行するように構成され得る。残りの組み合わせの数は、2(n-z)に達し、ここで、nは、対応するビンを定義するキュービットの数であり、zは、サブ・キュービット・パターンの長さである。この実施形態において、量子回路配置の効率は、さらに改善され得る。
【0028】
さらに、量子コンピュータ上で計算を実行するための少なくとも1つの量子回路を有する量子回路配置をコンパイルするための、古典コンピュータ上で実施可能な方法が提案される。方法は、変数の選択された値についてのキュービットのセットによって表される変数に基づいて事前定義済み関数の値のセットを事前計算することと、事前計算された値のセットの全ての値によって制御回転を実行するように構成される、少なくとも1つの量子回路を生成することと、を含む。
【0029】
本発明の方法は、特定の関数についてのルックアップ構造の事前計算された値およびビニング構造において複数の値をビニングすることに基づく。
【0030】
事前計算された値は、古典コンピュータ上において高精度で計算され得る。いかなる任意の古典計算可能な関数も使用され得るが、提示されるルックアップ方法は、好ましくは単調減少している関数について使用され得る。したがって、HHLアルゴリズムの場合、方法は、関数1/xおよびarcsin(1/x)に減少され得る。事前計算は、量子回路のコンパイル中に実行され、量子アルゴリズムの実行時間を増加させない。
【0031】
好ましい実施形態によれば、本発明の方法は、ビンのセットを事前定義することを含んでもよく、事前計算された値のセットの各値が、ビンの事前定義されたセットのビンに対応する。複数の値をビニングすることは、量子回路内で実行される必要な回転数を減少させることを可能にする。正確な場合の指数関数的回転量は、ビニングの場合に線形的回転量に減少される。ビニング方法は、最大値に限定される小さな誤差をもたらす。制御回転の数は、固有値精度全体に線形的に依存するが、回転精度の選択で指数関数的にスケールする。
【0032】
好ましい実施形態によれば、本発明の方法は、HHLアルゴリズムを実行することをさらに含んでもよく、量子位相推定を実行するように構成される量子位相推定構造および逆量子位相推定を実行するように構成される逆量子位相推定構造をさらに含み、キュービットのさらなるセットの制御回転を実行するためのルックアップ構造をさらに含む。このようにして、アルゴリズムの3つの主要なステップ全てを実行する、量子コンピュータ上の全HHLアルゴリズムの効率的な実施が、可能であり得る。同じタスクのための古典アルゴリズムと比較すると、HHLアルゴリズムは、ほぼ指数関数的に高速に問題を解く。
【0033】
本発明の方法の好ましい実施形態によれば、関数は、arcsin(1/λ)関数を含み得る。提案された関数は、好ましい方法で単調減少関数の要件を満たす。
【0034】
本発明の方法の好ましい実施形態によれば、量子回路は、ビンの最大サイズ-1のパターンの少なくとも1つのサブ・キュービット・パターンを通して変数に対する反復を実行するように構成され得る。サブ・キュービット・パターンを導入することによって、ビニング構造は、有利なことに、効率性および誤差耐性に関してさらに改善され得る。
【0035】
本発明の方法の好ましい実施形態によれば、変数の値は、ビンの事前定義されたセットに従って選択され得る。複数の値をビニングすることは、量子回路内で実行される必要な回転数を減少させることを可能にする。正確な場合の指数関数的回転量は、ビニングの場合に線形的回転量に減少される。
【0036】
本発明の方法の好ましい実施形態によれば、ビンのサイズは、変数内の最初の1キュービットの位置に基づき得る。ビン・サイズは、キュービットの数から導出され、キュービットの数は、変数内の最初の1キュービットに続くキュービットの数によって定義され得る。したがって、最初の1キュービットを固有値の最上位キュービットとして用いることによって、効率的なビニング構造が、提案される量子回路配置を用いて実施され得る。
【0037】
本発明の方法の好ましい実施形態によれば、ビンのサイズは、変数内の最後の1キュービットの位置に基づき得る。ビン・サイズは、キュービットの数から導出され、キュービットの数は、変数内の最初の1キュービットに続くキュービットの数によって定義され得る。代替的には、ビニング構造の手法に依存して、右に対して最も遠くの1キュービットである最後の1キュービットが、類似の実施形態において用いられ得る。これは、ここで異なるキュービットの向き(エンディアン性)を包含するのに役立ち得る。異なるエンディアン性の場合、最初のキュービットはやはり最初のキュービットであるが、他の方向から、左からではなく右からである。
【0038】
好ましい実施形態によれば、本発明の方法は、量子回路が、第1のキュービットに対する否定制御および第2のキュービットに対する制御で構成されることと、制御で基底状態にあるアンシラ・キュービットを量子もつれ状態にすることと、アンシラ・キュービットを非計算することと、をさらに含み得る。このようにして、量子回路配置は、効率的に減少された数の量子ゲートに必要なもので実施され得る。
【0039】
好ましい実施形態によれば、本発明の方法は、第2のアンシラ・キュービットを使用することと、2つのアンシラ・キュービットを含むサブ・キュービット・パターンに依存する複数制御NOT動作で量子もつれ状態にすることと、アンシラ・キュービットおよび残りの組み合わせを条件として制御回転を実行することと、をさらに含み得る。残りの組み合わせの数は、2(n-z)に達し、ここで、nは、対応するビンを定義するキュービットの数であり、zは、サブ・キュービット・パターンの長さである。この実施形態において、量子回路配置の効率は、さらに改善され得る。
【0040】
さらに、量子コンピュータ上で計算を実行するための少なくとも1つの量子回路を有する量子回路配置をコンパイルするための好ましいコンピュータ・プログラム製品が、提案される。
【0041】
コンピュータ・プログラム製品は、具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令が、変数の選択された値についてキュービットのセットによって表される変数に基づいて、事前定義済み関数の値のセットを事前計算することと、事前計算された値のセットの全ての値によって制御回転を実行するように構成される少なくとも1つの量子回路を生成することと、を含む、方法をコンピュータ・システムに実行させるようにコンピュータ・システムによって実行可能である。
【0042】
さらに、上述した方法を実行するためのコンピュータ可読プログラム命令を含む、データ処理プログラムの実行のためのデータ処理システムが、提案される。
【0043】
上述のおよびその他の目的および利点と共に本発明は、以下の実施形態の詳細な説明から最もよく理解され得るが、実施形態に限定されない。
【図面の簡単な説明】
【0044】
【
図1】本発明の実施形態による、HHL量子アルゴリズムを実行するように構成される、量子コンピュータ上で計算を実行するための量子回路配置を示す図である。
【
図2】本発明の実施形態による、量子回路を示す図である。
【
図3】本発明の実施形態による、固有値レジスタ(eigenvalue register)の制御回転のための量子回路を示す図である。
【
図4】本発明のさらなる実施形態による、サブ・キュービット・パターンを用いた固有値レジスタの制御回転のための量子回路を示す図である。
【
図5】本発明の実施形態による、量子回路配置上でHHLアルゴリズムを実行するためのフローチャートである。
【
図6】本発明の実施形態による、量子回路上でルックアップ構造を準備するためのフローチャートである。
【
図7】本発明の実施形態による、ビニング構造内のビニング位置を判断するためのフローチャートを示す。
【
図8】本発明のさらなる実施形態による、サブ・キュービット・パターンを有するビニング構造内のビニング位置を判断するためのフローチャートである。
【
図9】本発明の実施形態による、ビニングの例を示す図である。
【
図10】本発明のさらなる実施形態による、別のビニングの例を示す。
【
図11】本発明による、方法を実行するためのデータ処理システムの例としての実施形態を示す図である。
【発明を実施するための形態】
【0045】
図面では、類似の要素は、同等の参照番号で参照される。図面は、単なる概略的表現であり、本発明の特定のパラメータを描写することを意図しない。さらに、図面は、本発明の典型的な実施形態のみを示すように意図され、したがって本発明の範囲を限定すると考えられるべきではない。
【0046】
本明細書で説明される例示的な実施形態は、量子コンピュータ上で計算を実行するための少なくとも1つの量子回路を有する量子回路配置を提供する。
【0047】
例示的実施形態は、キュービットのセットによって表される変数に基づいて事前定義済み関数の値を判断するように構成されるルックアップ構造、および変数に基づいて所定のビンを識別するように構成されるビニング構造を少なくとも含む、量子回路配置について用いられてもよく、ルックアップ構造は、ビンに基づいて事前定義済み関数の値を判断するように適合される。
【0048】
例示的実施形態は、時には、説明を明確にするために単なる例として特定の技術を用いて本明細書で説明される。
【0049】
HHLアルゴリズムを実行するための提案される量子回路配置によれば、固有値λが用いられてもよく、arcsin(C/λ)の制御回転がアンシラ・キュービットに適用される。アークサインが任意の正確度まで計算されてもよく、かつy軸を中心とする回転によって、追加の誤差が逆関数に追加されないと仮定すると、固有値λは、kキュービットの正確度で与えられ得る。Cは、C≦λminを満たさなければならない定数であり、λminは最小固有値であり、Cは、2-kに設定され得る。
【0050】
msqは、λのバイナリ表現で1に設定される2の最大累乗に対応する、使用されるキュービット表現で左に対して最も遠い、最上位キュービット(MSQ)のビット位置として定義され得る。この手法では、所与のλについて、例えば、バイナリ形式では、λ=「11100」=2-1+2-2+2-3=0.825である。例では、msqは、1であり(即ち、最高キュービット・セットは、2-1である)、合計の長さkは5である。MSQに続く次のn個のキュービットは、2k-(msq+n)個の異なるバイナリ・パターンが記憶されるビンを定義する。msqおよびそれに続くn個のキュービットによって作られる2n個のバイナリ・パターンのそれぞれについて、事前計算された逆関数λmin/λが、対応するビンに入る全てのバイナリ・パターンに割り当てられる。したがって、ビン内では、ビンの中点が推定として用いられる場合に、λについての誤差は、ελ≦2-(msq+n)/2である(切り捨てなしのキュービット表現の限度、即ち無限の正確度においてのみ等しい)。以下において、前述の式が等しくなる限度が、ビニングによって引き起こされる誤差への上限境界として用いられる。
【0051】
開始において用いられる仮定の下で回転によって追加される誤差は、
【数1】
によって与えられる。
【0052】
【数2】
は、ビン中点として定義される。アークサイン値は、回転によって任意の正確度まで計算および非計算され得るからである。0を中心とする対称性に起因して、λ≧0における領域のみが見られるべきである。1/xの導関数が負であり、かつその絶対値が、その定義範囲において単調減少するため、各ビンについての最大誤差は、各ビンの左境界においてもたらされる(したがって、
【数3】
が用いられる)。λにおける誤差についての式を再公式化することおよび挿入することによって、
【数4】
という結果になる。
【0053】
MSQは、関係式
【数5】
によって求められ得る。
【0054】
この式を挿入すると、
ε
rot≦2
-(n+1)
【数6】
が得られる。
【0055】
これは、ある正確度に到達するために考慮される必要があるキュービットの数が、レジスタ長kから独立であることを意味する。ビニングに起因して、制御回転の数は、レジスタ・サイズkにおいて線形である。それは、ここで、2kではなく(k-n+1)2nである。
【0056】
量子回路設計のプロセスは、長さnのあるキュービット・パターンについてチェックすること、および対応する角度θ=arcsin(C/λ)により制御回転を実行することによって要約され得る。Cは、C≦λminを満たさなければならない定数であり、λminは最小固有値であり、Cは、2-kに設定され得る。
【0057】
それは、(合計k-n+1における)全てのMSQに対して反復し、n個のキュービット・パターンを読み出す制御を反復毎に1キュービットさらにシフトする。MSQより後ろのn個より多くのキュービットであるために無視されるキュービットに起因して発生する、「誤った」回転を防止するために、現在のMSQのトラックが保持され、これは追加の制御として含まれる。このことは、各MSQについて、制御NOT演算が、現在のMSQよりも高い全てのキュービットについての否定制御ノードおよび現在のMSQについての制御ノードを有する、msqガーベッジ・キュービットに対して実行されることを意味する。各MSQの後、レジスタは非計算される。このレジスタは、以下において|msq>と呼ばれ、|msq>は、対応キュービットを表す。
【0058】
例えば、|msq>をm=2に設定するための回路において、非計算の前に、2n回転が、|msq>を条件として実行され得る。
【0059】
さらなる例として、数「101011」および「111010」が、固有値λとして用いられるものとする。k=6およびn=5が用いられる場合、両方の場合においてキュービット・パターンの中間の部分文字列「101」がチェックされる。その代わりに、それは、長さzのキュービットである部分文字列を有する、nキュービット・パターンの全ての可能な部分文字列を通して反復され得る。この例では、キュービット3~5において「101」についてチェックされる。この結果は、ΛZ(σX)関数を用いてガーベッジ・ビットに保存されてもよく、それは、A.Barencoらの(1995)、「Elementary gates for quantum computation」、Physical Review A、52,3457によって論文に示された実施態様による、zキュービット制御トフォリ・ゲート(Toffoli gate)として定義される。表記は、σXのzキュービット制御実行を意味する。次いで、それは、残りのキュービットと、アンシラ・キュービットを回転するためにガーベッジ・キュービット内の結果を考慮して用いられるΛn-Z(σz)ゲートとの、残りの2n-zの組み合わせ全てに対して反復される。その後、ΛZ(σX)で非計算され、次のzキュービット・パターンを用いて開始される。それを効果的に行うことによって、両方の数が同一のサブ・キュービット・パターンを共有する情報が再利用され、ゲート・カウントが減少される。2nΛZ(σX)ゲートは、2Z(2ΛZ(σX)+2n-zΛn-Z+1(σX))ゲートによって置換される。回転は、SU(2)にある対応演算子を有するため、制御回転を実行するために以下の手法が用いられ得る。
【0060】
これを実施するために、複数制御動作が、追加のキュービットを用いることなしに実行される。それは、2nの組み合わせを通してk-n+1回反復され、制御回転が実行される。zの部分文字列を用いると、これは、
(k-n+1)2Z(2ΛZ(σX)+2n-z2[Λn-Z(σX)+Λ2(Ry)])
を用いて実行され得る。
【0061】
Λ
i(U)ゲートは、(2
n-1-1)Λ
1(VまたはV
†)および(2
n-1-2)Λ
1(σ
X)ゲートを必要とする。VまたはV
†は、
【数7】
として定義される。参考文献A. Barenco et al. (1995), 'Elementary gates for quantum computation', Physical Review A, 52, 3457を参照されたい。SU(2)演算子の全てのΛ
1は、4~5個のゲートで実施され得る。Ry回転については、4つの基本ゲートのみが用いられる。
【0062】
msqレジスタを設定するゲートが追加される。それを行うアイデアは、MSQの反復毎に次に高いキュービットが0であるかどうかをチェックする複数制御NOTゲートを有することである。ここで、全てのキュービットが大きなkに対して0であるかどうかをテストするために、異なる手法が用いられ得る。好ましい実施態様を用いてkのゲート・カウント指数関数を結果としてもたらし得る、多くてもk-n個の異なるビンがチェックされる。
【0063】
しかしながら、いくつかの実施態様について0でなくてもよい、わずかな追加キュービットを用いると、ゲート・カウントは、kの線形依存または2次関数依存になり得る。
【0064】
ここで、ゲート・カウントは、nで指数関数的にスケールし、しかしながら、回転角度の正確度がkから独立であるため、大きなレジスタ・サイズに対してnをスケールする必要はない。
【0065】
負の固有値の場合、その絶対値において負の固有値の符号を変えることが考えられ、設定されている符号ビットに基づいてπの別のy軸回転が実行され得る。絶対値を得るためには、この数をビット反転し、次いで1増加し得る(2の補数)。これは、符号ビットを条件として行われ得る。
【0066】
有利なことに、zキュービット・パターンは、複数のMSQによって結合され得る。ΛZゲートは、依然として最大剰余をゲート・カウントに与える。レジスタ内部のキュービット文字列zの位置が変わる場合、Λzゲートは、より頻繁に再使用され得る。
【0067】
説明される量子回路およびプロセスの実施態様は、以下の
図1~
図10において説明される。
【0068】
図1は、本発明の実施形態による、HHL量子アルゴリズムを実行するように構成される、量子コンピュータ上で計算を実行するための量子回路配置100を示す。少なくとも1つの量子回路110を有する量子回路配置100は、キュービット12、14、16、18のセットによって表される変数に基づいて、事前定義済み関数の値を判断するように構成されるルックアップ構造50と、変数に基づいて所定のビン64、66(
図9を参照)を識別するように構成されるビニング構造60と、を含む。ルックアップ構造50は、ビン64、66(
図9を参照)に基づいて事前定義済み関数の値を判断するように適合される。
【0069】
量子回路配置100は、量子位相推定を実行するように構成される量子位相推定構造40、および逆量子位相推定を実行するように構成されている逆量子位相推定構造42をさらに含む。ルックアップ構造50は、キュービット12、14、16、18のさらなるセットの制御回転を実行するように構成される。ルックアップ構造50は、キュービット12、14、16、18のさらなるセットの制御回転を実行するために少なくとも1つの量子ゲート配置30を含む。
【0070】
図1において、量子位相推定構造40への入力は、キュービット12、14、16、18を含む固有値レジスタ10、および量子レジスタ24として示される。固有値レジスタ10は、基底状態にあり、量子状態レジスタ24は、状態「|b>」にある。制御回転は、これも基底状態にあるアンシラ・キュービット22を用いて、量子ゲート配置30によって実行される。アンシラ・キュービット22の出力状態は、測定動作44によって測定される。
図1において、アンシラ・キュービット22の出力状態は、「|1>」であり、これは、制御回転が成功の結果を示すことを意味する。固有値レジスタ10は、逆量子位相推定42の後、再び基底状態にある。量子レジスタ24は、状態「|x>」にある。
【0071】
量子回路配置100は、古典コンピュータ上でコンパイルされるように構成される。
量子回路配置100は、変数の選択された値についてのキュービット12、14、16、18のセットによって表される変数に基づいて事前定義済み関数の値のセットを事前計算するために、古典コンピュータ上でコンパイルされ得る。次いで、事前計算された値のセットの全ての値によって制御回転を実行するように構成される、少なくとも1つの量子回路110が生成され得る。
【0072】
図2は、本発明の実施形態による、量子回路110を示す。固有値レジスタ10のキュービット12、14、16は、アンシラ・キュービット22と共に制御回転プロセスへの入力である。ゲート数を減少させるために、ゲートに対する制御の数が減少される。したがって、量子回路110は、第1のキュービット12に対する否定制御(白丸によってマークされる)、および第2のキュービット14に対する制御(黒丸によってマークされる)で構成される。さらに、アンシラ・キュービット22は、量子もつれ状態にあり、制御で基底状態「0」にある。その後、アンシラ・キュービット22は、非計算され、再使用され得る。
【0073】
図3は、本発明の実施形態による、固有値レジスタ10の制御回転のための量子回路110を示す。回転プロセスへの入力は、キュービット12、14、16、18を有する固有値レジスタ10、さらに最上位キュービットの位置として最初の1キュービット20(|msq>)およびアンシラ・キュービット22(target)である。最初の1キュービット20は、ボックス46において判断され、変数内の最初の1キュービット20の位置に基づいて、ビン64、66(
図9を参照)のサイズを判断するために用いられる。
【0074】
代替的には、ビン64、66のサイズは、変数内の最後の1キュービットの位置に基づき得る。ビン・サイズ64、66は、キュービットの数から導出され、キュービットの数は、変数内の最初の1キュービットに続くキュービットの数によって定義され得る。これは、ここで異なるキュービットの向き(エンディアン性)を包含するのに役立ち得る。異なるエンディアン性の場合、最初のキュービットはやはり最初のキュービットとなるが、他の方向から、左からではなく右からである。
【0075】
図3において、固有値λについての回転プロセスの例が示され、固有値λは0.25の二進小数に対応する「0100」に等しく、固有値レジスタ10のキュービット12、14、16、18に記憶される。制御回転は、角度θについて実行され、角度θは、θ=arcsin(1/λ)としてルックアップ構造50から判断され得る。回転は、θ/2~-θ/2の角度で2つのステップ32および34においてそれぞれ量子ゲート配置30によって実行される。ボックス48において最初の1キュービット20を非計算する前に、固有値「01**」の他の回転が実行され、「**」は、「0」および「1」の組み合わせを表している。
【0076】
したがって、方法は、量子回路110が、第1のキュービット12に対する否定制御および第2のキュービット14に対する制御で構成されることと、制御で基底状態にあるアンシラ・キュービット22を量子もつれ状態にすることと、アンシラ・キュービット22を非計算することと、を含む。
【0077】
図4は、本発明のさらなる実施形態による、サブ・キュービット・パターンを用いた固有値レジスタ10の制御回転のための量子回路110を示す。この実施形態は、さらなる改善を実施し得る。量子回路110は、第2のアンシラ・キュービット26を使用し、2つのアンシラ・キュービット22、26を含むサブ・キュービット・パターンに依存する複数制御NOTゲートで量子もつれ状態にし、アンシラ・キュービット22、26および残りの組み合わせを条件として制御回転を実行するように構成され得る。
【0078】
ここでは、量子回路110は、ビン64、66の最大サイズ-1のパターンの少なくとも1つのサブ・キュービット・パターンを通して変数に対する反復を実行するように構成される。制御回転のための量子ゲート配置30への入力は、キュービットを有する固有値レジスタ10、アンシラ・キュービット22(ancilla)、最初の1キュービット20(msq)、および第2のアンシラ・キュービットである、サブ・キュービット・パターン(z-bitpat)のキュービット26である。
図3に示される実施形態と同様に、制御回転は、ルックアップ構造50から判断される角度θで実行される。
【0079】
図4に示される実施形態について、回路生成ルーチンは、それぞれの最初の1キュービット20について、以下を含む。最初の1キュービット20は量子もつれ状態にある。次いで、各サブ・キュービット・パターンについて、第1のループは、以下を含む。サブ・キュービット・パターン・キュービット26が量子もつれ状態にあり、以下のステップが続く。各(n-z)パターンについて、第2のループは、条件付き回転がサブ・キュービット・パターン・キュービット26、最初の1キュービット20、および固有値レジスタ10のn-zキュービットに対して実行されることを含む。ここで、nはビンのサイズであり、zはサブ・キュービット・パターンのサイズである。次いで、サブ・キュービット・パターン・キュービット26が非計算され、第1のループが終了する。最後に、最初の1キュービット20が、非計算される。
【0080】
図5は、
図1に示される、本発明の実施形態による、量子回路配置上でHHLアルゴリズムを実行するためのフローチャートを示す。HHLアルゴリズムの実行は、ステップS100において入力パラメータを量子回路配置に移送することで開始され、その後にステップS102におけるハミルトン・シミュレーション(Hamiltonian simulation)が続く。
図1によれば、量子位相推定が、ステップ104において量子位相推定構造により実行される。次いで、ルックアップ構造が、ステップS106において制御回転を実行するために適当な回転角度を与えることに役立ち得る。制御回転を達成すると、逆量子位相推定が、ステップS108において逆量子位相推定構造により実行される。次いで、アンシラ・キュービットは、ステップS110において測定ユニットによって測定され得る。ステップS112において、結果が成功であるかどうかがチェックされ、結果が成功であることは、アンシラ・キュービットが「1」を送出することを意味する。この場合は、HHLアルゴリズムの出力が、ステップS114において送出される。そうでない場合、ループは、新たなハミルトン・シミュレーションを実行するために、ステップS102に戻る。
【0081】
図6において、本発明の実施形態による、量子回路上でルックアップ構造を準備するためのフローチャートが示される。このプロセス・ステップは、事前定義済み関数、例えばarcsin(1/λ)関数の値のセットを事前計算するために古典コンピュータ上で実行され得る。準備プロセスは、ステップS200において固有値判断についての精度を選ぶことによって開始され、精度は、固有値レジスタのキュービットの数、|k>によって判断される。次にステップS202において、ビン位置が、確立されたビニング構造を用いて計算される。次いで、ステップS204において、回転角度が、事前定義済み関数を用いて判断される。この回転角度を用いて、ステップS206において、固有値に対して制御回転が実行され、その後にステップS208において古典コンピュータ上で量子回路をコンパイルすることが続く。準備プロセスの結果が、ステップS210において出力用に与えられる。
【0082】
図7は、本発明の実施形態による、ビニング構造内でビニング位置を判断するためのフローチャートを示す。プロセスに対する入力は、ステップS300で与えられる、固有値レジスタのサイズk、およびキュービット・パターンの長さnである。次いで、サブプロセスS301内で、外側ループは、ステップS302において、固有値レジスタの最初のk-nキュービット内の最上位キュービットとしての、最初の1キュービットの位置FOについて実行される。内側ループは、ステップS304において、全てのキュービット・パターンに対して実行され、2
n回繰り返す。ループ内で、ステップ306において、回転角度についての正確な点またはビン中点(bin midpoint)が計算され、その後に、ステップS308において点または中点およびキュービット・パターンを記憶することが続く。サブプロセスS301において、ビニング手続が、1~k-nにわたるループで実行される。
【0083】
次に、最初の1キュービットに対するループが終了した場合、サブプロセスS309内で、ループは、ステップS310において、全てのキュービット・パターンに対して再び実行され、2n回繰り返す。ループ内で、ステップS312において、回転角度についての正確な点が計算され、その後に、ステップS314において点およびキュービット・パターンを記憶することが続く。サブプロセスS309において、最初の1キュービットが判断されず、ビニング手続が実行されない。
【0084】
次いで、ステップS316において出力が与えられる。
【0085】
図8は、本発明のさらなる実施形態による、サブ・キュービット・パターンを有するビニング構造内でビニング位置を判断するためのフローチャートを示す。プロセスについての入力は、固有値レジスタのサイズk、キュービット・パターンの長さn、およびサブ・キュービット・パターンの長さmであり、ステップS400において与えられる。したがって、メイン・キュービット・パターンの長さが、n-mによって与えられる。
【0086】
サブプロセスS401内で、外側ループは、ステップS402において、固有値レジスタの最初のk-n+1キュービット内の最上位キュービットとしての、最初の1キュービットの位置について実行される。内側ループは、ステップS404において、全てのサブ・キュービット・パターンに対して実行され、2m回繰り返す。次の内側ループは、ステップS406において、全てのメイン・キュービット・パターンに対して実行され、2n-m回繰り返す。ループ内で、ステップS408においてキュービット・パターンが連結される。次に、ステップS410において、回転角度についての正確な点またはビン中点が計算され、その後に、ステップS412において、点または中点、ならびにメイン・キュービット・パターンおよびサブ・キュービット・パターンを記憶することが続く。サブプロセスS401において、ビニング手続が、1~k-nにわたるループで実行される。
【0087】
次に、最初の1キュービットに対する外側ループが終了した場合、サブプロセスS413内で、内側ループは、ステップS414において、全てのサブ・キュービット・パターンに対して実行され、2m回繰り返す。次の内側ループは、ステップS416において、全てのメイン・キュービット・パターンに対して実行され、2n-m回繰り返す。ループ内で、ステップS418においてキュービット・パターンが連結される。次に、ステップS420において、回転角度についての正確な点が計算され、その後に、ステップS422において、点ならびにメイン・キュービット・パターンおよびサブ・キュービット・パターンを記憶することが続く。サブプロセスS413において、最初の1キュービットが判断されず、ビニング手続が実行されない。
【0088】
次いで、ステップS424において出力が与えられる。
【0089】
図9は、本発明の実施形態による、ビニングの例を示す。1/λ、値52が固有値λ54の関数として示される。固有値レジスタのサイズがk=4であり、したがって、固有値λ54は、「0000」から「1111」の範囲、即ち二進小数56の0.0000から0.9375の範囲に及ぶ。したがって、各固有値λ54に対して、対応する1/λ、値52は、arcsin(1/λ)を計算することによって制御回転のための角度θを判断するために、曲線から選択され得る。
【0090】
1の最初の1キュービット、および長さ1、即ちn=1のキュービット・パターンについて、
図7のフローチャートによれば、キュービット・パターン「1」が、例えば、「11**」の値キュービットにおいて4回見つけられ得る。これは、4のビン・サイズ68が導出されることを意味する。これは、ビン・サイズ4のフィールド66において示される。ビン・サイズは、バー68によって示される。
【0091】
2の最初の1キュービットについて、キュービット・パターン「1」は、例えば、「011*」の値キュービットにおいて2回見つけられ得る。これは、2のビン・サイズ68が導出されることを意味する。これは、ビン・サイズ2のフィールド64において示される。ビン・サイズは、バー68によって示される。
【0092】
したがって、ビン64、66のサイズは、固有値λ54の値の増加に対して増加する。方法は、ビン64、66のセットを事前定義することを含み、事前計算された値のセットの各値が、ビン64、66の事前定義されたセットのビン64、66に対応する。変数の値は、ビン64、66の事前定義済みセットに従って選択される。
【0093】
固有値λ54の残りについて、正確な回転値62が、
図9の曲線から選択され得る。したがって、合計8の制御回転が、k=4の固有値レジスタのサイズおよびn=1のパターン長の例について実行され得る。
【0094】
図9に示されるビニング構造60から、制御回転について角度θを選ぶプロセスが、ルックアップ構造50(
図1を参照)において実行される。
【0095】
図10は、比較のために本発明のさらなる実施形態による、別のビニングの例を示す。この場合、k=4の固有値レジスタのサイズおよびn=2のパターン長の例が選ばれる。
【0096】
1の最初の1キュービット、および長さ2、即ちn=2のキュービット・パターンについて、
図7のフローチャートによれば、キュービット・パターン「11」は、例えば、「111*」の値キュービットにおいて2回見つけられ得る。これは、2のビン・サイズ68が選ばれ得ることを意味する。これは、ビン・サイズ2のフィールド64において示される。ビン・サイズは、バー68によって示される。同じことがキュービット・パターン「10」に適用され、「10」は、「110*」において2回見つけられ得る。
【0097】
固有値λ54の残りについて、正確な値が、
図10の曲線から選ばれ得る。したがって、合計12の制御回転が、k=4の固有値レジスタのサイズおよびn=2のパターン長の例について実行され得る。
【0098】
ここで
図11を参照すると、データ処理システム210の例の概略が示される。データ処理システム210は、適当なデータ処理システムの単なる1つの例であり、本明細書で説明される本発明の実施形態の使用または機能性の範囲に関するいかなる限定も示唆することを意図しない。それにかかわらず、データ処理システム210は、実施されること、または本明細書で上述した機能性のいずれかを実行すること、あるいはその両方が可能である。
【0099】
データ処理システム210には、コンピュータ・システム/サーバ212が存在し、コンピュータ・システム/サーバ212は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム/サーバ212を用いた使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
【0100】
コンピュータ・システム/サーバ212は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的文脈において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ212は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
【0101】
図11に示されるように、データ処理システム210内のコンピュータ・システム/サーバ212は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ212のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット216、システム・メモリ228、およびシステム・メモリ228を含む様々なシステム・コンポーネントをプロセッサ216に連結するバス218を含み得るが、これらに限定されない。
【0102】
バス218は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
【0103】
コンピュータ・システム/サーバ212は、典型的には多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ212によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。
【0104】
システム・メモリ228は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ(RAM)230またはキャッシュ・メモリ232あるいはその両方などの揮発性メモリの形態で含み得る。コンピュータ・システム/サーバ212は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、記憶システム234は、非リムーバブル不揮発性磁気媒体(図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる)から読み出し、かつそれに書き込むために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)からの読み出しおよびそれに書き込みのための磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROM、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読み出しまたはそれに書き込みのための光学ディスク・ドライブが、提供され得る。このような場合、それぞれが、1つまたは複数のデータ媒体インターフェースによってバス218に接続され得る。さらに図示され、後述されるように、メモリ228は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0105】
プログラム・モジュール242のセット(少なくとも1つ)を有するプログラム/ユーティリティ240は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ228に記憶され得る。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施態様を含み得る。プログラム・モジュール242は、概して、本明細書に説明される本発明の実施形態の機能または方法論あるいはその両方を実行する。
【0106】
コンピュータ・システム/サーバ212は、また、キーボード、ポインティング・デバイス、ディスプレイ224などの1つもしくは複数の外部デバイス214、ユーザがコンピュータ・システム/サーバ212と対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ212が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。このような通信は、入力/出力(I/O)インターフェース222を介して発生し得る。さらに、コンピュータ・システム/サーバ212は、ネットワーク・アダプタ220を介して、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはそれらの組み合わせなどの1つまたは複数のネットワークと通信し得る。図示されるように、ネットワーク・アダプタ220は、バス218を介してコンピュータ・システム/サーバ212の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム/サーバ212と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
【0107】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0108】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
【0109】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、またはエッジサーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
【0110】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0111】
本発明の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0112】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定のやり方で機能するように指示し得るものであってもよい。
【0113】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されるプロセスを作り出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0114】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施態様のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、時には、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
【0115】
本発明の多様な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定することを意図したものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実用的な適用、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書に開示される実施形態を他の当業者が理解可能にするために、選択された。
【符号の説明】
【0116】
10 量子回路
12 キュービット
14 キュービット
16 キュービット
18 キュービット
20 msq
22 アンシラ・キュービット
24 量子レジスタ
26 第2のアンシラ・キュービット
30 制御回転についての量子ゲート配置
32 +回転
34 -回転
40 量子位相推定構造
42 逆量子位相推定構造
44 測定動作
46 最初の1つを計算する
48 最初の1つを非計算する
50 ルックアップ構造
52 1/λ値
54 固有値
56 固有値の二進小数
60 ビニング構造
62 正確な回転
64 ビン・サイズ2
66 ビン・サイズ4
68 ビン・サイズ
100 量子回路配置
110 量子回路
210 データ処理システム
212 コンピュータ・システム/サーバ
214 外部デバイス
216 CPU/データ処理ユニット
218 I/Oバス
220 ネットワーク・アダプタ
222 I/Oインターフェース
224 ディスプレイ
228 メモリ
230 RAM
232 キャッシュ
234 記憶システム
240 プログラム/ユーティリティ
242 プログラム・モジュール
θ 回転角度
S100 入力パラメータを量子回路に移送する
S102 ハミルトン・シミュレーション
S104 量子位相推定
S106 ルックアップ回転角度
S108 逆量子位相推定
S110 アンシラ・キュービットを測定する
S112 結果が成功であるかどうかをチェックする
S114 出力結果を送出する
S200 固有値判断のための精度を選ぶ
S202 ビン位置を計算する
S204 回転角度を計算する
S206 制御回転を生成する
S208 古典コンピュータ上で量子回路をコンパイルする
S210 準備プロセスの結果の出力
S300 固有値レジスタのサイズk、およびキュービット・パターンの長さnを入力する
S301 サブプロセス・ビニング手続
S302 最初の1キュービットの位置についての外側ループ
S304 全てのキュービット・パターンに対する内側ループ、2n回繰り返す
S306 回転角度についての正確な点またはビン中点を計算する
S308 点またはビン中点、およびキュービット・パターンを記憶する
S309 サブプロセス
S310 全てのキュービット・パターンに対するループ、2n回繰り返す
S312 回転角度についての正確な点を計算する
S314 点およびキュービット・パターンを記憶する
S316 結果の出力
S400 固有値レジスタのサイズk、キュービット・パターンの長さn、およびサブ・キュービット・パターンの長さmを入力する
S401 サブプロセス・ビニング手続
S402 最初の1キュービットの位置についての外側ループ
S404 全てのサブ・キュービット・パターンに対する内側ループ、2m回繰り返す
S406 全てのメイン・キュービット・パターンに対する次の内側ループ、2(n-m)回繰り返す
S408 キュービット・パターンを連結する
S410 回転角度についての正確な点またはビン中点を計算する
S412 点またはビン中点、メインおよびサブ・キュービット・パターンを記憶する
S413 サブプロセス
S414 全てのサブ・キュービット・パターンに対する内側ループ、2m回繰り返す
S416 全てのメイン・キュービット・パターンに対する次の内側ループ、2(n-m)回繰り返す
S418 キュービット・パターンを連結する
S420 回転角度についての正確な点を計算する
S422 点、ならびにメインおよびサブ・キュービット・パターンを記憶する
S424 結果の出力