(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】多重制御量子状態反転ゲート
(51)【国際特許分類】
G06F 7/38 20060101AFI20240723BHJP
G06N 10/00 20220101ALI20240723BHJP
【FI】
G06F7/38 510
G06N10/00
(21)【出願番号】P 2021562774
(86)(22)【出願日】2020-04-14
(86)【国際出願番号】 EP2020060425
(87)【国際公開番号】W WO2020216647
(87)【国際公開日】2020-10-29
【審査請求日】2022-09-22
(32)【優先日】2019-04-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】フー、シャオハン
(72)【発明者】
【氏名】マスロフ、ドミトリー
(72)【発明者】
【氏名】ピストイア、マルコ
(72)【発明者】
【氏名】ガンベッタ、ジェイ
【審査官】松浦 かおり
(56)【参考文献】
【文献】特開2006-331249(JP,A)
【文献】特開2004-094885(JP,A)
【文献】Dmitri Maslov,On the advantages of using relative phase Toffolis with an application to multiple control Toffoli optimization,[online],2016年01月05日,p.1-14,[2023年9月12日検索],インターネット<URL:https://arxiv.org/pdf/1508.03273.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 5/01
G06F 7/38- 7/537
G06F 7/57- 7/575
G06F 7/74- 7/78
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
量子回路において反転ゲートを実装することであって、前記反転ゲートが、すべての制御が|1>の量子状態である場合にターゲット入力の量子状態を反転するように構成され、前記反転ゲートが2つの制御を含み、
前記反転ゲートを実装することが、前記反転ゲートの各制御
に、
3以上の数の未配置の制御量子ビットのセットから選択された
1つの制御量子ビット
を接続
することを含む、前記実装することと、
現在実装された前記反転ゲートの前記各制御が制御量子ビットに現在接続されていると決定することに応答して、前記量子回路に第1の補助ゲートを実装することであって、前記第1の補助ゲートは反転ゲートを含み
、前記第1の補助ゲートを実装することは、前記第1の補助ゲートの第1の制御
に、前記反転ゲートの第1の制御
に接続されていた制御量子ビット
を移動し、前記第1の補助ゲートの第2の制御
に、前記未配置の制御量子ビットのセットから選択された
1つの未配置の制御量子ビット
を接続
し、前記第1の補助ゲートのターゲット
を前記反転ゲートの前記第1の制御に接続
することを含む、前記実装することと、
前記量子回路に実装され
た、制御量子ビットに接続されていない最大数の制御を含んでいる
ゲートを決定することに応答して、前記ゲートにおいて、前記ゲートの制御を前記未配置の制御量子ビットのセットから選択された
1つの未配置の制御量子ビットに接続すること
と
を含む、方法。
【請求項2】
前記量子回路において、ミラー補助ゲートを実装することをさらに含み、前記ミラー補助ゲートが、前記第1の補助ゲートと同じ制御およびターゲットを含み、前記ミラー補助ゲートが前記反転ゲートの後に配置される、請求項1に記載の方法。
【請求項3】
前記反転ゲートが標準反転ゲートを含む、請求項1または2に記載の方法。
【請求項4】
前記標準反転ゲートが2つの制御を含む、請求項3に記載の方法。
【請求項5】
前記標準反転ゲート
が10個のCNOTを含む、請求項3または4に記載の方法。
【請求項6】
前記方法は、
前記未配置の制御量子ビットのセットから1つの未配置の制御量子ビットを選択することと、
前記1つの未配置の制御量子ビットを接続した後、前記未配置の制御量子ビットのセットにおいて別の未配置の制御量子ビットが未だ存在するか否かを判定することと
を含み、前記別の未配置の制御量子ビットが存在すると判定された場合には、前記第1の補助ゲートの前記反転ゲートを含めて、現在実装された前記反転ゲートについて、前記反転ゲートの前記各制御が制御量子ビットに現在接続されているか否かが判定され、判定の結果に応じて、前記第1の補助ゲートを実装すること、または、前記ゲートの制御を前記未配置の制御量子ビットのセットから選択された1つの未配置の制御量子ビットに接続することが繰り返される、請求項1ないし5のいずれか一項に記載の方法。
【請求項7】
前記ターゲット入力を中心ノードとして、前記制御量子ビットを葉ノードとして、前記第1の補助ゲートの前記ターゲットを中間ノードとして2次元の形態のHツリーが構成され、前記Hツリーは、前記3以上の数の制御を有する多重反転ゲートを表す、請求項1ないし
6のいずれか一項に記載の方法。
【請求項8】
前記第1の補助ゲートが相対位相反転ゲートを含む、請求項1ないし
7のいずれか一項に記載の方法。
【請求項9】
前記相対位相反転ゲートが2つの制御を含む、請求項8に記載の方法。
【請求項10】
前記相対位相反転ゲートが3つのCNOTを含み、スワップを含まない、請求項8または9に記載の方法。
【請求項11】
前記相対位相反転ゲートが3つの制御を含む、請求項8に記載の方法。
【請求項12】
前記相対位相反転ゲートが6つのCNOTを含み、スワップを含まない、請求項11に記載の方法。
【請求項13】
コンピュータに、
量子回路において反転ゲートを実装することであって、前記反転ゲートが、すべての制御が|1>の量子状態である場合にターゲット入力の量子状態を反転するように構成され、前記反転ゲートが2つの制御を含み、
前記反転ゲートを実装することが、前記反転ゲートの各制御
に、
3以上の数の未配置の制御量子ビットのセットから選択された
1つの制御量子ビット
を接続
することを含む、前記実装することと、
現在実装された前記反転ゲートの前記各制御が制御量子ビットに現在接続されていると決定することに応答して、前記量子回路に第1の補助ゲートを実装することであって、前記第1の補助ゲートは反転ゲートを含み
、前記第1の補助ゲートを実装することは、前記第1の補助ゲートの第1の制御
に、前記反転ゲートの第1の制御
に接続されていた制御量子ビット
を移動し、前記第1の補助ゲートの第2の制御
に、前記未配置の制御量子ビットのセットから選択された
1つの未配置の制御量子ビット
を接続
し、前記第1の補助ゲートのターゲット
を前記反転ゲートの前記第1の制御に接続
することを含む、前記実装することと、
前記量子回路に実装され
た、制御量子ビットに接続されていない最大数の制御を含んでいる
ゲートを決定することに応答して、前記ゲートにおいて、前記ゲートの制御を前記未配置の制御量子ビットのセットから選択された
1つの未配置の制御量子ビットに接続すること
と
を実行させるためのコンピュータ・プログラム。
【請求項14】
前記反転ゲートが標準反転ゲートを含む、請求項13に記載のコンピュータ・プログラム。
【請求項15】
前記標準反転ゲートが2つの制御を含む、請求項14に記載のコンピュータ・プログラム。
【請求項16】
前記標準反転ゲート
が10個のCNOTを含む、請求項14または15に記載のコンピュータ・プログラム。
【請求項17】
前記第1の補助ゲートが標準反転ゲートを含む、請求項13ないし16のいずれか一項に記載のコンピュータ・プログラム。
【請求項18】
請求項13ないし17のいずれか一項に記載のコンピュータ・プログラムを格納したコンピュータ可読記憶媒体。
【請求項19】
1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスとを備えているコンピュータ・システムであって、プログラム命令が、前記1つまたは複数のメモリのうちの少なくとも1つを介して、前記1つまたは複数のプロセッサのうちの少なくとも1つによって実行するために、前記1つまたは複数のストレージ・デバイスのうちの少なくとも1つに格納されており、前記格納されたプログラム命令が、
量子回路において反転ゲートを実装するためのプログラム命令であって、前記反転ゲートが、すべての制御が|1>の量子状態である場合にターゲット入力の量子状態を反転するように構成され、前記反転ゲートが2つの制御を含み、
前記反転ゲートを実装するためのプログラム命令は、前記反転ゲートの各制御
に、
3以上の数の未配置の制御量子ビットのセットから選択された
1つの制御量子ビット
を接続
するためのプログラム命令を含む、前記プログラム命令と、
現在実装された前記反転ゲートの前記各制御が制御量子ビットに現在接続されていると決定することに応答して、前記量子回路に第1の補助ゲートを実装するためのプログラム命令であって、前記第1の補助ゲートは反転ゲートを含み
、前記第1の補助ゲートを実装するためのプログラム命令は、前記第1の補助ゲートの第1の制御
に、前記反転ゲートの第1の制御
に接続されていた制御量子ビット
を移動し、前記第1の補助ゲートの第2の制御
に、前記未配置の制御量子ビットのセットから選択された
1つの未配置の制御量子ビット
を接続
し、前記第1の補助ゲートのターゲット
を前記反転ゲートの前記第1の制御に接続
するためのプログラム命令を含む、前記プログラム命令と、
前記量子回路に実装された
、制御量子ビットに接続されていない最大数の制御を含んでいる
ゲートを決定することに応答して、前記ゲートにおいて、前記ゲートの制御を前記未配置の制御量子ビットのセットから選択された
1つの未配置の制御量子ビットに接続するためのプログラム命令
と
を含む、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、量子プログラミングのための方法、システム、およびコンピュータ・プログラム製品に関する。より詳細には、本発明は、多重制御量子状態反転ゲート(multi-control quantum state inversion gate)のための方法、システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
分子および亜原子粒子は、最も基礎的なレベルで物理的世界がどのように動作しているかを研究する物理学の一分野である量子力学の法則に従う。このレベルでは、粒子は、同時に2つ以上の状態になるという奇妙な方法で振る舞い、非常に遠く離れた他の粒子と相互作用する。量子コンピューティングは、これらの量子現象を利用して情報を処理する。
【0003】
現在使用されているコンピュータは、古典的コンピュータとして知られている(本明細書では、「従来の」コンピュータまたは従来のノード(CN:conventional nodes)とも呼ばれる)。従来のコンピュータは、フォン・ノイマン・アーキテクチャとして知られているアーキテクチャにおいて、半導体材料および半導体技術を使用して製造された従来のプロセッサ、半導体メモリ、ならびに磁気ストレージ・デバイスまたは半導体ストレージ・デバイスを使用する。特に、従来のコンピュータ内のプロセッサは、バイナリ・プロセッサ(すなわち、1および0で表されたバイナリ・データに対して動作するプロセッサ)である。
【0004】
量子プロセッサ(qプロセッサ)は、もつれさせた量子ビット・デバイス(本明細書では、簡潔に「量子ビット」と呼ばれる)の奇妙な性質を使用して、計算動作を実行する。量子力学が作用する特定の領域では、問題の粒子が、複数の状態(「オン」状態、「オフ」状態、および「オン」状態と「オフ」状態の両方が同時に、など)で存在する可能性がある。半導体、プロセッサを使用する2進数計算が、(バイナリ・コードにおける1および0と等価な)オン状態とオフ状態のみを使用することに制限される場合、量子プロセッサは、これらの問題の量子状態を利用して、データ計算において使用できる信号を出力する。本明細書では、量子ビットは、量子情報の物理的キャリアである。量子ビットは、古典的コンピューティングにおけるビットの量子版であり、|0>、または|1>、あるいはこれらの両方の状態の線形結合の量子状態を有することができる。
【0005】
量子コンピューティングは、多くの場合、従来のコンピューティングにおけるよりも高速に問題を解くために使用され得る。例えば、1つの量子アルゴリズムは、従来のコンピューティングの場合よりも少ない検索回数で順序付けられていないN個の項目のリストの検索を実現する、グローバーの検索である。
【0006】
量子ゲートは、量子計算の基本構成要素であり、古典的論理ゲートが一度に1つおよび2つのビットに作用する方法で、量子ビットに作用し、制御可能な方法で量子ビット状態を変更する。Xゲートは、古典的コンピューティングにおいてNOTゲートが単一のビットの状態を反転するのと同様に、単一の量子ビットの状態を反転する。Hゲートまたはアダマール・ゲートは、単一の量子ビットを重ね合わせの状態(0と1の量子状態の組み合わせ)にする。量子ビットは、測定されたときに初めて、確定状態に決定される。例えば、0の量子状態を有する入力が提供された場合、アダマール・ゲート内で量子状態が重ね合わせの状態になるが、その出力は、0の量子状態になる50パーセントの確率、および1の量子状態になる50パーセントの確率を有する。他の単一量子ビット・ゲートは、他の定義された方法で量子ビット状態を変更する。
【0007】
多量子ビット・ゲートは、量子ビット間の条件付き論理を実行するゲートを実装し、つまり、ある量子ビットが別の量子ビットの状態に依存する。例えば、制御NOTゲートまたはCNOTゲートは、2つの量子ビット入力(ターゲット量子ビットおよび制御量子ビット)を含む。制御量子ビットが|1>の量子状態である場合、CNOTゲートはターゲット量子ビットの状態を反転する。制御量子ビットが|0>の量子状態である場合、CNOTゲートはターゲット量子ビットの状態を変更しない。
【0008】
複数の量子ビットをもつれさせることもできる。2つ以上の量子ビットは、互いに影響を与えるには遠く離れすぎているにもかかわらず、個別にランダムな方法で動作するが、各物体が他から独立していると仮定することによっては説明され得ないほどの強い相関性もある場合、もつれている。その結果、もつれた多量子ビット系の結合された特性は予測され得るが、そのような系における各個別の量子ビットの個別の測定結果は、予測され得ない。
【0009】
従来のコンピューティングと同様に、量子コンピューティング・ゲートは、より複雑な動作を実行するために、量子回路と呼ばれるより大きいグループに組み立てられ得る。例えば、量子ビットの対の状態を交換するスワップ・ゲートは、3つのCNOTゲートから構築され得る。
【0010】
量子回路は、一部の動作を並列に実行し、一部の動作を直列に実行することができる。プログラム内の最長の直列の長さは、量子回路の深さとも呼ばれる。例えば、スワップ・ゲートを含んでいる3つのCNOTゲートは、直列に配置されて、3の深さを与える。より浅い深さを有するプログラムは、必要な実行時間がより少なくなり、性能がより良くなるため、好ましい。
【0011】
多重制御反転ゲート(multiple-control inversion gate)(本明細書では、反転ゲートとも呼ばれる)は、CNOTゲートの一般化である。CNOTゲートは、ターゲット量子ビットの状態を制御するために使用される1つの制御量子ビットを含む。これに対して、多重制御反転ゲートは、2つ以上の制御量子ビットを含む。制御量子ビットのすべてが|1>の量子状態である場合、多重制御反転ゲートはターゲット量子ビットの状態を反転する。制御量子ビットのいずれかが|1>の量子状態でない場合、このゲートはターゲット量子ビットの状態を変更しない。多重制御反転ゲートは、トフォリ・ゲートとしても知られている。反転ゲートは、グローバーの検索およびその他の有用な量子処理アルゴリズムにおける主要な構成要素である。
【発明の概要】
【0012】
実施形態例は、方法、システム、およびコンピュータ・プログラム製品を提供する。実施形態は、量子回路において反転ゲートを実装する方法を含み、反転ゲートは、すべての制御が|1>の量子状態である場合にターゲット入力の量子状態を反転するように構成され、反転ゲートは2つの制御を含み、各制御は、未配置の制御量子ビットのセットから選択された制御量子ビットに接続される。実施形態は、量子回路において、反転ゲートの各制御が制御量子ビットに現在接続されていると決定することに応答して、第1の補助ゲート(ancilla gate)を実装する。ここで、第1の補助ゲートは反転ゲートを含み、第1の補助ゲートの第1の制御は反転ゲートの第1の制御から移動された制御量子ビットに接続され、第1の補助ゲートの第2の制御は未配置の制御量子ビットのセットから選択された制御量子ビットに接続され、第1の補助ゲートのターゲットは、反転ゲートの第1の制御に接続される。実施形態は、量子回路に実装されたゲートで、このゲートが制御量子ビットに接続されていない最大数の制御を含んでいると決定することに応答して、このゲートの制御を未配置の制御量子ビットのセットから選択された制御量子ビットに接続する。
【0013】
一実施形態は、コンピュータ使用可能プログラム製品を含む。このコンピュータ使用可能プログラム製品は、1つまたは複数のコンピュータ可読ストレージ・デバイスと、1つまたは複数のストレージ・デバイスのうちの少なくとも1つに格納されたプログラム命令とを含む。
【0014】
一実施形態は、コンピュータ・システムを含む。このコンピュータ・システムは、1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読ストレージ・デバイスとを含み、プログラム命令が、1つまたは複数のメモリのうちの少なくとも1つを介して、1つまたは複数のプロセッサのうちの少なくとも1つによって実行するために、1つまたは複数のストレージ・デバイスのうちの少なくとも1つに格納されている。
【0015】
添付の特許請求の範囲において、本発明の特性と考えられている特定の新しい特徴が示される。しかし、本発明自体ならびに本発明の好ましい使用方法、さらなる目的、および優位性は、実施形態例の以下の詳細な説明を、添付の図面と一緒に読みながら参照することによって、最も良く理解されるであろう。
【図面の簡単な説明】
【0016】
【
図1】実施形態例を実装できるデータ処理システムのネットワークのブロック図を示す図である。
【
図2】実施形態例を実装できる従来のデータ処理システムのブロック図を示す図である。
【
図3】多重制御反転ゲートを実装する従来技術の量子回路を示す図である。
【
図4】実施形態例に従って、多重制御量子状態反転ゲートの例示的な構成のブロック図を示す図である。
【
図5】実施形態例に従って、2制御の記号レイアウトおよび対応する2制御の量子回路の例を示す図である。
【
図6】実施形態例に従って、3制御の記号レイアウトおよび対応する3制御の量子回路の例を示す図である。
【
図7】実施形態例に従って、4制御の記号レイアウトおよび対応する4制御の量子回路の例を示す図である。
【
図8】実施形態例に従って、4制御の記号レイアウトおよび対応する4制御の量子回路の例をさらに示す図である。
【
図9】実施形態例に従って、4制御の量子回路の実装を示す図である。
【
図10】実施形態例に従って、4制御の量子回路の別の実装を示す図である。
【
図11】実施形態例に従って、記号レイアウトの追加の例を示す図である。
【
図12】実施形態例に従って、6制御の記号レイアウトおよび対応する6制御の量子回路の別の例を示す図である。
【
図13】実施形態例に従って、6制御の量子回路の実装を示す図である。
【
図14】実施形態例に従って、記号レイアウトの追加の例を示す図である。
【
図15】実施形態例に従って、多重制御量子状態反転ゲートための例示的なアプリケーションのフローチャートを示す図である。
【発明を実施するための形態】
【0017】
実施形態例は、量子回路内の多重制御反転ゲートの現在使用されている実装が、多重制御ゲートを物理的に実装可能な単一量子ビット・ゲートおよび2量子ビットCNOTゲートに分解し、制御量子ビットおよびターゲットの間に対でのもつれの相互作用を作り出すことに依存しているということを認識する。しかし、現在使用されている量子プロセッサ・アーキテクチャでは、すべての量子ビットが互いに相互作用することができるわけではない。したがって、対でのもつれの相互作用を実装するには、量子信号を一方の量子ビットから他方の量子ビットに動かすためのスワップ・ゲートなどの、追加の動作が必要になることがある。この追加の動作は、追加のゲートおよび追加の回路の深さの両方を、結果として得られる量子回路に追加する。しかし、より多くのゲートを含み、より大きい深さを有する量子回路は、一般に、より少ないゲートを含み、より小さい深さを有する回路よりも、同じ量子プロセッサ上で実行するのにより長い時間がかかる。
【0018】
実施形態例は、現在の量子プロセッサがエラー修正機能を含んでいないため、回路の実行中に回路のノイズによって引き起こされた量子ビット・エラーが蓄積し、実行時間が増加するにつれてエラーが増えるということも認識する。したがって、ノイズによって引き起こされた量子ビット・エラーが結果を使用不能にする前に実行を完了するために、量子回路が十分少ないゲート数および十分小さい深さを有さなければならない。
【0019】
さまざまな実施形態の特定の動作および機能を説明するために、1つまたは複数のトフォリ・ゲートの現在使用されている実装および構成が、いくつかの非限定的な例として使用される。当業者は、本開示の実施形態を、他の同様に提案された実装または構成に適応させることができるであろう。そのような適応は、実施形態例の範囲内で企図される。
【0020】
例えば、現在使用できる1つの多重制御反転ゲートの実装は、ゲートを、V字形に配置された連続する2制御のトフォリ・ゲートに分解する。この連続の第1の部分(例えば、V字形の左腕)が、補助量子ビットとして保持される部分積を計算し、その後、これらの補助量子ビットが計算されて、出力される目的の積になる。補助量子ビット(ancilla qubit)(複数形:ancillae)は、古典的プロセッサにおいてプロセッサのレジスタが情報を一時的に保持するのと同様に、情報を一時的に保持するために使用される量子ビットである。しかし、補助量子ビットは、最終結果ともつれている。正しい結果を取得するには、最終結果を測定する前に、このもつれが除去されなければならない。したがって、この連続の第2の部分(例えば、V字形の右腕)は、補助量子ビットを逆計算して(uncomputes)(すなわち、もつれを除去して)、補助量子ビットを元の状態に移し、目的の最終結果の正しい測定を可能にすることができる。この実装は、直列に配置され、各連続する補助量子ビットの計算は、前の補助量子ビットの計算結果に依存する。この結果は、深い量子回路になる。回路の深さおよび連続の実行は、量子回路の追加の実行時間を必要とし、この実装で使用できる制御の数を制限する。
【0021】
他の現在の反転ゲートの実装は、補助量子ビットを使用しないか、または1つの補助量子ビットのみを使用する。しかし、そのような量子回路の実装は、V字形の実装よりもさらに深く、この実装で使用できる制御の数をやはり制限する。
【0022】
反転ゲートがグローバーの検索およびその他の有用な量子処理アルゴリズムにおける主要な構成要素であるため、実施形態例は、量子回路における反転ゲートの実装の効率を改善することによって、そのような改善された反転ゲートを使用するアルゴリズムの効率も改善するということを認識する。加えて、修正されないエラーがしきい値を超えて蓄積する前に、完全に実行することができない量子回路は、使用可能な結果を全く生成しない。したがって、実施形態例は、当技術分野において必要とされるのは、直列に実行されず、現在使用されている実装よりも深さが小さく、より少ないゲートを使用する、多重制御反転ゲートの実装であるということを認識する。
【0023】
実施形態例は、現在利用できるツールまたは解決策が、これらの必要性に対処せず、これらの必要性に対する十分な解決策を提供しないということを認識する。本発明を説明するために使用される実施形態例は、一般に、前述した問題および多重制御量子状態反転ゲートに関連するその他の問題に対処し、解決する。
【0024】
実施形態は、ソフトウェア・アプリケーションとして実装され得る。実施形態を実装するアプリケーションは、量子回路の論理的表現をqプロセッサによって実行可能な形態に変換する既存のシステムの変更として、そのような変換システムと連動して動作する分離したアプリケーション、スタンドアロン・アプリケーション、またはこれらの何らかの組み合わせとして、構成され得る。
【0025】
特に、一部の実施形態例は、現在の実装を超える改善された性能を有する多重制御反転ゲートが量子回路において実装される方法を提供する。
【0026】
Hツリー・レイアウトは、多重制御反転ゲートの量子回路の実装を視覚化することに役立つ。Hツリー・レイアウトは、2次元の形態で2分木を描く。特に、Hツリーは、2制御反転ゲートまたは2および3制御反転ゲート(two-control or two- and three-control inversion gates)の構成への多重制御反転ゲートの分解を表す。Hツリーの中心のノードは、多重制御反転ゲートのターゲットを表す。Hツリーの葉ノードは、ゲートの制御を表す。Hツリーの中間ノードは、ゲートの実装において使用される補助量子ビットを表す。Hツリーのノードを接続する線分は、1つまたは複数の2制御反転ゲートまたは2および3制御反転ゲートにおいて実装され得るサブツリーを示す。例えば、Hツリー・レイアウトのc-t-cは、各「c」がゲートの制御を示し、「t」がゲートのターゲットを示す、2制御反転ゲートを表す。
【0027】
2分木構造のため、どの補助量子ビットも(どのサブツリーの結果も)、直列ではなく並列に実行することができ、回路の深さを(従来技術のV字形の実装における)線形から平方根の深さに低減する。
【0028】
実施形態は、量子回路において実装される多重制御反転ゲートの仕様を受信する。この仕様は、反転ゲートの制御量子ビットおよびターゲット量子ビットのセットを指定する。この実施形態の目標は、小型反転ゲート(small inversion gates)のセットを使用して、量子回路において指定された多重制御反転ゲートを実装することである。本明細書において使用されているように、小型反転ゲートは、実装されている多重制御反転ゲートの制御入力の数よりも少ない数の制御入力を含む。1つの実施形態では、小型反転ゲートの各々は、2つの制御入力を含む。別の実施形態では、小型反転ゲートの各々は、2つまたは3つのいずれかの制御入力を含む。したがって、指定された多重制御反転ゲートを実装するために、実施形態は、必要に応じて補助量子ビットを使用して、指定された制御量子ビットの各々を小型反転ゲートの制御入力に接続する。
【0029】
構築されている量子回路内で、実施形態は、制御量子ビットのセットのうちの2つおよびターゲット量子ビットを、2制御反転ゲートの対応する入力に接続する。
【0030】
実施形態は、制御量子ビットのセットから、小型反転ゲートの制御入力にまだ接続されていない制御量子ビットを選択する。接続されていない入力を含む現在実装されている小型反転ゲートが存在しない場合、追加の補助量子ビットが計算されなければならない。追加の補助量子ビットを計算するために、実施形態は、量子回路において追加の小型反転ゲートを実装する。新しいゲートを実装するために、実施形態は、1つの制御入力を、以前に実装されたゲートの制御入力から、新しいゲートの制御入力に移動する。実施形態は、配置を必要とする制御量子ビットを、新しいゲートのもう一つの制御入力において接続する。新しいゲートのターゲットは、移動された制御入力の代わりに、以前に実装されたゲートの制御入力として現在機能している補助量子ビットである。
【0031】
代わりに、接続されていない入力を含む現在実装されている小型反転ゲートが存在する場合、追加の補助量子ビットはまだ必要ではない。代わりに、実施形態は、制御量子ビットにまだ接続されていない制御入力を最も多く含んでいる小型反転ゲートを決定する。2つ以上の小型反転ゲートが、同じ数のまだ接続されていない制御入力を含んでいる場合、実施形態は、ゲートの番号順、逆の番号順、ランダムまたは疑似ランダム選択プロセス、あるいは別の選択方法を使用して、ゲートのいずれかを選択する。実施形態は、配置を必要とする制御量子ビットを、選択されたゲートのまだ接続されていない制御入力に接続する。
【0032】
実施形態は、このようにして、配置を必要とする制御量子ビットのセット内の各制御量子ビットが、量子回路内の小型反転ゲートの入力に接続されるまで、このセットからの制御量子ビットを接続し、必要に応じて補助量子ビットを追加することを続行する。この時点で、指定された多重制御反転ゲートの第1の部分が完了する。
【0033】
しかし、回路内のいずれかの補助量子ビットが、まだ逆計算されなければならず、すなわち、最終結果であるターゲット量子ビットから、もつれが除去されなければならない。したがって、実施形態は、量子回路において、ターゲット量子ビットを生成する小型反転ゲートの後に(小型反転ゲートに続くように)、ミラー小型反転ゲート(mirror small inversion gate)を実装する。ミラー小型反転ゲートは、ミラーに対応する反転ゲートと同じ制御量子ビットおよびターゲット量子ビットを含む。ミラー小型反転ゲートは、対応する元のゲートによって計算された補助量子ビットを逆計算する(uncompute)働きをする。別の実施形態は、指定された多重制御反転ゲートの第1の部分が完了するまで待機する代わりに、元のゲートが実装されている場合に、逆計算ゲート(uncompute gate)を実装する。
【0034】
量子回路において元のゲートおよび並列な逆計算ゲートの両方が実装された後に、回路は完成したと見なされる。次に、実施形態は、回路内の各小型反転ゲートを、さらに小さい量子回路の単位を使用している小型反転ゲートの実装に置き換える。小型反転ゲートの1つの実装は、スワップおよびCNOTを使用する。そのような小型反転ゲートの1つの非限定的な実装例は、2つの制御および10個のCNOTを含み、制御とターゲットの間のみの2量子ビット相互作用を伴い、2制御の標準トフォリ・ゲート(two-control regular Toffoli gate)または2制御の真のトフォリ・ゲート(two-control true Toffoli gate)とも呼ばれる。
【0035】
小型反転ゲートの別の実装は、スワップを使用しない。そのような小型反転ゲートの1つの非限定的な実装例は、2つの制御および3つのCNOTを含み、制御とターゲットの間のみの2量子ビット相互作用を伴い、2制御の相対位相トフォリ・ゲート(two-control relative-phase Toffoli gate)とも呼ばれる。そのような小型反転ゲートの別の実装例は、3つの制御および6つのCNOTを含み、制御とターゲットの間のみの2量子ビット相互作用を伴い、3制御の相対位相トフォリ・ゲート(three-control relative-phase Toffoli gate)とも呼ばれる。小型反転ゲートの相対位相の実装は、多重制御反転ゲートのターゲット量子ビットを計算することに使用できない。しかし、相対位相の実装は、補助量子ビットの各々を計算することに使用できる。可能な場合に、標準の実装の代わりに相対位相の実装を使用することは、大幅に少ないCNOTゲート(例えば、2制御の標準の実装の場合の10ゲートに対して3ゲート)を使用することになり、したがって、より効率的な回路になる。
【0036】
別の実施形態は、回路が完成した後に、回路内の各小型反転ゲートを実装に置き換える代わりに、回路が構築されているときに、回路内の各小型反転ゲートを実装に置き換える。実施形態例の範囲内で、量子回路の実装におけるステップの順序に関するその他の変形も可能であり、企図される。
【0037】
本明細書に記載された多重制御量子状態反転ゲートの方法は、現在使用可能な方法では、使用することができない。本明細書に記載された実施形態の方法は、デバイスまたはデータ処理システム上で実行するように実装された場合、より少ないリソースを使用して、より短い時間とより速い実行速度で、元の量子回路と同じ結果を生成する、より最適化された量子回路を生成することによって、量子回路の大幅に進歩した機能を含む。
【0038】
実施形態例は、単に例として、特定の種類の量子回路、量子ゲート、量子ビット、量子プロセッサ、制御、ターゲット、しきい値、制約、動作、実行パラメータ、終了基準、デバイス、データ処理システム、環境、コンポーネント、およびアプリケーションに関して説明される。これらおよびその他の同様のアーチファクトのどのような特定の明示も、本発明を制限するよう意図されていない。これらおよびその他の同様のアーチファクトの任意の適切な明示が、実施形態例の範囲内で選択され得る。
【0039】
さらに、実施形態例は、任意の種類のデータ、データ・ソース、またはデータ・ネットワークを経由したデータ・ソースへのアクセスに関して実装されてよい。本発明の範囲内で、任意の種類のデータ・ストレージ・デバイスが、データ処理システムでローカルに、またはデータ・ネットワークを経由して、本発明の実施形態にデータを提供してよい。モバイル・デバイスを使用して実施形態が説明される場合、実施形態例の範囲内で、モバイル・デバイスと共に使用するのに適した任意の種類のデータ・ストレージ・デバイスが、モバイル・デバイスでローカルに、またはデータ・ネットワークを経由して、そのような実施形態にデータを提供してよい。
【0040】
実施形態例は、単に例として、特定のコード、設計、アーキテクチャ、プロトコル、レイアウト、回路図、およびツールを使用して説明されており、これらの実施形態例に制限していない。さらに、実施形態例は、場合によっては、説明を明確にするために、単に例として、特定のソフトウェア、ツール、およびデータ処理環境を使用して説明される。実施形態例は、他の同等の、または同様の目的を持つ構造、システム、アプリケーション、またはアーキテクチャと共に使用されてよい。したがって例えば、本発明の範囲内で、他の同等のモバイル・デバイス、構造、システム、アプリケーション、またはアーキテクチャが、本発明のそのような実施形態と共に使用されてよい。実施形態例は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせにおいて実装されてよい。
【0041】
本開示における例は、単に説明を明確にするために使用されており、これらの実施形態例に制限していない。追加のデータ、動作、アクション、活動、および操作が、本開示から想到可能となり、それらは、実施形態例の範囲内で企図される。
【0042】
本明細書に示された利点は、例にすぎず、これらの実施形態例に制限するよう意図されていない。追加の利点または異なる利点が、特定の実施形態例によって実現されてよい。さらに、特定の実施形態例が、上記の利点の一部またはすべてを含むか、あるいは上記の利点を何も含まなくてよい。
【0043】
図を参照し、特に
図1および2を参照すると、これらの図は、実施形態例が実装されてよいデータ処理環境の例示的な図である。
図1および2は単なる例であり、さまざまな実施形態が実装されてよい環境に関して、どのような制限も主張または意味するよう意図されていない。特定の実装は、以下の説明に基づいて、示された環境に対して多くの変更を行ってよい。
【0044】
図1は、実施形態例を実装できるデータ処理システムのネットワークのブロック図を示している。データ処理環境100は、実施形態例を実装できるコンピュータのネットワークである。データ処理環境100は、ネットワーク102を含む。ネットワーク102は、データ処理環境100内で一緒に接続されているさまざまなデバイスとコンピュータの間の通信リンクを提供するために使用される媒体である。ネットワーク102は、ワイヤ、無線通信リンク、または光ファイバ・ケーブルなどの接続を含んでよい。
【0045】
クライアントまたはサーバは、ネットワーク102に接続された特定のデータ処理システムの例示的な役割にすぎず、これらのデータ処理システムの他の構成または役割を除外するよう意図されていない。サーバ104およびサーバ106は、ストレージ・ユニット108と共にネットワーク102に結合される。ソフトウェア・アプリケーションが、データ処理環境100内の任意のコンピュータ上で実行されてよい。クライアント110、112、および114も、ネットワーク102に結合される。サーバ104もしくは106、またはクライアント110、112、もしくは114などのデータ処理システムは、データを含んでよく、データ処理システムで実行されるソフトウェア・アプリケーションまたはソフトウェア・ツールを含んでよい。
【0046】
単なる一例として、そのようなアーキテクチャに限定することを意味せずに、
図1は、実施形態の例示的な実装において使用できる特定のコンポーネントを示している。例えば、サーバ104および106、ならびにクライアント110、112、114は、単に例として、サーバおよびクライアントとして示されており、クライアント/サーバ・アーキテクチャに限定することを意味していない。別の例として、実施形態例の範囲内で、ある実施形態は、示されているように、複数のデータ処理システムおよびデータ・ネットワークにわたって分散することができ、一方、別の実施形態は、単一のデータ処理システム上で実装され得る。データ処理システム104、106、110、112、および114は、実施形態を実装するのに適しているクラスタ、パーティション、およびその他の構成内の例示的なノードも表している。
【0047】
デバイス132は、本明細書に記載されたデバイスの例である。例えば、デバイス132は、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、固定型または携帯型のクライアント110、ウェアラブル・コンピューティング・デバイス、または任意のその他の適切なデバイスの形態をとることができる。
図1の別のデータ処理システム内で実行されるとして説明された任意のソフトウェア・アプリケーションは、同様の方法でデバイス132内で実行されるように構成され得る。
図1の別のデータ処理システム内で格納または生成される任意のデータまたは情報は、同様の方法でデバイス132内で格納または生成されるように構成され得る。
【0048】
QCE140は、本明細書に記載されたQCEの例である。一例として、QCE140は、CN104、106、および多くのその他の同様のCN142を含んでいる。一例として、CN106および142は、CNのクラスタ144として構成されてよい。QCE140は、QCN146などの1つまたは複数のQCNをさらに含んでいる。QCN146などのQCNは、1つまたは複数のqプロセッサ148を備えている。現在実行可能な量子ビットは、qプロセッサ148の例である。アプリケーション105は、本明細書に記載された実施形態を実装する。アプリケーション105は、QCE140内のサーバ104などのCN上で動作する。アプリケーション105は、動作ライブラリ、回路、およびメタデータを、ストレージ108または任意のその他の適切なストレージに格納する。
【0049】
QCE140は、有線接続、無線通信プロトコル、またはその他の適切なデータ接続を使用して、ネットワーク102に結合されてよい。例えば、クライアント110、112、および114は、パーソナル・コンピュータまたはネットワーク・コンピュータであってよい。ネットワーク102は、送信制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)およびその他のプロトコルを使用して互いに通信する、ネットワークおよびゲートウェイの集合を表してよい。
図1は、例を示すことを意図しており、さまざま実施形態例に関してアーキテクチャの制限を示すことを意図していない。
【0050】
データ処理環境100は、全体として、クラウドの形態をとり、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供のクラウド・コンピューティング・モデルを採用してもよく、このモデルでは、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。
【0051】
図2を参照すると、この図は、実施形態例を実装できる従来のデータ処理システムのブロック図を示している。データ処理システム200は、
図1のサーバ104および106、またはクライアント110、112、および114、あるいは別の種類のデバイスなどの古典的コンピュータの例であり、このコンピュータ内に、実施形態例のプロセスを実装するコンピュータ使用可能なプログラム・コードまたは命令が配置されてよい。
【0052】
データ処理システム200は、
図1のサーバ104などのデータ処理システムまたはその構成も表しており、このデータ処理システム内に、実施形態例のプロセスを実装するコンピュータ使用可能なプログラム・コードまたは命令が配置されてよい。データ処理システム200は、単に一例として、コンピュータとして説明されているが、これに限定されない。本明細書に記載されたデータ処理システム200の動作および機能の概要から逸脱することなく、
図1のサーバ104などの他のデバイスの形態での実装が、タッチ・インターフェイスを追加することなどによって、データ処理システム200を変更してよく、図に示された特定のコンポーネントをデータ処理システム200から取り除いてもよい。
【0053】
図に示されている例では、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH:North Bridge and memory controller hub)202と、サウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(SB/ICH:South Bridge and input/output (I/O) controller hub)204とを含んでいるハブ・アーキテクチャを採用している。処理ユニット206、メイン・メモリ208、およびグラフィック・プロセッサ210が、ノース・ブリッジおよびメモリ・コントローラ・ハブ(NB/MCH)202に結合されている。処理ユニット206は、1つまたは複数のプロセッサを含んでよく、1つまたは複数の異種プロセッサ・システムを使用して実装されてよい。処理ユニット206は、マルチコア・プロセッサであってよい。グラフィック・プロセッサ210は、特定の実装において、アクセラレーテッド・グラフィックス・ポート(AGP:accelerated graphics port)を介してNB/MCH202に結合されてよい。
【0054】
図に示された例では、ローカル・エリア・ネットワーク(LAN:local area network)アダプタ212が、サウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合されている。オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読み取り専用メモリ(ROM:read only memory)224、ユニバーサル・シリアル・バス(USB:universal serial bus)およびその他のポート232、ならびにPCI/PCIeデバイス234が、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合されている。ハード・ディスク・ドライブ(HDD:Hard disk drive)または半導体ドライブ(SSD:solid-state drive)226およびCD-ROM230が、バス240を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合されている。PCI/PCIeデバイス234は、例えば、ノートブック・コンピュータ用のイーサネット(R)・アダプタ、アドイン・カード、およびPCカードを含んでよい。PCIはカード・バス・コントローラを使用するが、PCIeはカード・バス・コントローラを使用しない。ROM224は、例えば、フラッシュ・バイナリ入出力システム(BIOS:binary input/output system)であってよい。ハード・ディスク・ドライブ226およびCD-ROM230は、例えば、IDE(integrated drive electronics)、シリアルATA(SATA:serial advanced technology attachment)インターフェイス、またはeSATA(external-SATA)およびmSATA(micro-SATA)などの変形を使用してよい。スーパーI/O(SIO:superI/O)デバイス236が、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ(SB/ICH)204に結合されてよい。
【0055】
メイン・メモリ208、ROM224、またはフラッシュ・メモリ(図示されていない)などのメモリは、コンピュータ使用可能ストレージ・デバイスの一部の例である。ハード・ディスク・ドライブまたは半導体ドライブ226、CD-ROM230、およびその他の同様に使用可能なデバイスは、コンピュータ使用可能ストレージ媒体を含むコンピュータ使用可能ストレージ・デバイスの一部の例である。
【0056】
オペレーティング・システムが、処理ユニット206上で実行される。オペレーティング・システムは、
図2のデータ処理システム200内のさまざまなコンポーネントを調整して制御を提供する。オペレーティング・システムは、サーバ・システム、パーソナル・コンピュータ、およびモバイル・デバイスを含むが、これらに限定されない、任意の種類のコンピューティング・プラットフォーム用の、市販されているオペレーティング・システムであってよい。オブジェクト指向またはその他の種類のプログラミング・システムが、オペレーティング・システムと連動し、データ処理システム200上で実行されているプログラムまたはアプリケーションからのオペレーティング・システムに対する呼び出しを提供してよい。
【0057】
オペレーティング・システム、オブジェクト指向プログラミング・システム、および
図1のアプリケーション105などのアプリケーションまたはプログラムの命令が、ハード・ディスク・ドライブ226上のコード226Aの形態などで、ストレージ・デバイスに配置され、処理ユニット206によって実行するために、メイン・メモリ208などの1つまたは複数のメモリのうちの少なくとも1つに読み込まれてよい。実施形態例のプロセスは、コンピュータ実装命令を使用して、処理ユニット206によって実行されてよく、これらのコンピュータ実装命令は、例えばメイン・メモリ208、読み取り専用メモリ224などのメモリ内、または1つもしくは複数の周辺機器内に、配置されてよい。
【0058】
さらに、1つの事例では、コード226Aは、ネットワーク201Aを経由して、類似するコード201Cがストレージ・デバイス201Dに格納されているリモート・システム201Bからダウンロードされてよい。別の事例では、コード226Aは、ネットワーク201Aを経由してリモート・システム201Bにダウンロードされてよく、ダウンロードされたコード201Cが、ストレージ・デバイス201Dに格納される。
【0059】
図1~2のハードウェアは、実装に応じて変化してよい。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどの、その他の内部ハードウェアまたは周辺機器が、
図1~2に示されているハードウェアに加えて、またはそれらのハードウェアの代わりに、使用されてよい。加えて、実施形態例のプロセスは、マルチプロセッサ・データ処理システムに適用されてよい。
【0060】
一部の例では、データ処理システム200は、オペレーティング・システム・ファイルまたはユーザによって生成されたデータあるいはその両方を格納するために、不揮発性メモリを提供するようにフラッシュ・メモリを使用して一般に構成された、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)であってよい。バス・システムは、システム・バス、I/Oバス、およびPCIバスなどの、1つまたは複数のバスを含んでよい。当然ながら、バス・システムは、通信ファブリックまたは通信アーキテクチャに接続された異なるコンポーネントまたはデバイス間のデータの転送を提供する任意の種類の通信ファブリックまたは通信アーキテクチャを使用して、実装されてよい。
【0061】
通信ユニットは、モデムまたはネットワーク・アダプタなどの、データを送信および受信するために使用される1つまたは複数のデバイスを含んでよい。メモリは、例えば、メイン・メモリ208であるか、またはノース・ブリッジおよびメモリ・コントローラ・ハブ202に見られるキャッシュなどの、キャッシュであってよい。処理ユニットは、1つまたは複数のプロセッサまたはCPUを含んでよい。
【0062】
図1~2に示された例および前述した例は、アーキテクチャの制限を意味するよう意図されていない。例えば、データ処理システム200は、モバイル・デバイスまたはウェアラブル・デバイスの形態をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話デバイスであってよい。
【0063】
コンピュータまたはデータ処理システムが仮想マシン、仮想デバイス、または仮想コンポーネントとして説明される場合、仮想マシン、仮想デバイス、または仮想コンポーネントは、データ処理システム200に示された一部またはすべてのコンポーネントの仮想化された明示を使用して、データ処理システム200の方法で動作する。例えば、仮想マシン、仮想デバイス、または仮想コンポーネントでは、処理ユニット206は、ホスト・データ処理システム内で使用できるハードウェア処理ユニット206のすべてまたは一部の仮想化されたインスタンスとして明示され、メイン・メモリ208は、ホスト・データ処理システム内で使用できるメイン・メモリ208のすべてまたは一部の仮想化されたインスタンスとして明示され、ディスク226は、ホスト・データ処理システム内で使用できるディスク226のすべてまたは一部の仮想化されたインスタンスとして明示される。そのような場合、ホスト・データ処理システムはデータ処理システム200によって表される。
【0064】
図3を参照すると、この図は、多重制御反転ゲートを実装する従来技術の量子回路を示している。回路300は、
図1のQCE140において実行され得る。
【0065】
回路300は、ターゲットTの状態を制御するために使用される6つの制御(C1~C6)を含んでいる。回路300は4つの補助量子ビット(A1~A4)も使用し、回路300は、V字形に配置され連続する2制御のトフォリ・ゲートを含んでいる。連続の第1の部分(V字形の左腕)が、C1~C6を使用して、部分積を保持する補助量子ビットであるA1~A4を計算する。次に回路は、A1~A4を使用してT(出力される目的の積)を計算する。連続の第2の部分(V字形の右腕)が、A1~A4を逆計算し、TからA1~A4のもつれを除去する。この実装は、直列に配置され、各連続する補助量子ビットの結果は、前の補助量子ビットの計算に依存し、深い量子回路をもたらす。
【0066】
図4を参照すると、この図は、実施形態例に従って、多重制御量子状態反転ゲートの例示的な構成のブロック図を示している。アプリケーション400は、
図1のシステム104、106、110、112、および114、ならびにデバイス132のいずれかにおいて実行できる。
【0067】
アプリケーション400は、量子回路において実装される多重制御反転ゲートの仕様を受信する。この仕様は、反転ゲートの制御量子ビットおよびターゲット量子ビットのセットを指定する。アプリケーション400の目標は、小型反転ゲートのセットを使用して、量子回路において指定された多重制御反転ゲートを実装することである。
【0068】
構築されている量子回路内で、制御コネクタ・モジュール420は、制御量子ビットのセットのうちの2つおよびターゲット量子ビットを、2制御反転ゲートの対応する入力に接続する。
【0069】
アプリケーション400は、制御量子ビットのセットから、小型反転ゲートの制御入力にまだ接続されていない制御量子ビットを選択する。空制御判定モジュール410は、接続されていない入力を含む現在実装されている小型反転ゲートが存在するかどうかを判定する。接続されていない入力を含む現在実装されている小型反転ゲートが存在しない場合、追加の補助量子ビットが計算されなければならない。追加の補助量子ビットを計算するために、補助量子ビット実装モジュール430が、量子回路において追加の小型反転ゲートを実装する。新しいゲートを実装するために、モジュール430は、1つの制御入力を、以前に実装されたゲートの制御入力から、新しいゲートの制御入力に移動する。モジュール430は、配置を必要とする制御量子ビットを、新しいゲートの別の制御入力に接続する。新しいゲートのターゲットは、移動された制御入力の代わりに、以前に実装されたゲートの制御入力として現在機能している補助量子ビットである。
【0070】
代わりに、接続されていない入力を含む現在実装されている小型反転ゲートが存在する場合、追加の補助量子ビットはまだ必要ではない。代わりに、モジュール410は、制御量子ビットにまだ接続されていない制御入力を最も多く含んでいる小型反転ゲートを決定する。2つ以上の小型反転ゲートが、同じ数のまだ接続されていない制御入力を含んでいる場合、モジュール410は、いずれかの適切な選択方法を使用して、ゲートのいずれかを選択する。モジュール420は、配置を必要とする制御量子ビットを、選択されたゲートのまだ接続されていない制御入力に接続する。
【0071】
アプリケーション400は、このようにして、配置を必要とする制御量子ビットのセット内の各制御量子ビットが、量子回路内の小型反転ゲートの入力に接続されるまで、このセットからの制御量子ビットを接続し、必要に応じて補助量子ビットを追加することを続行する。加えて、実装された補助量子ビットごとに、ミラー補助モジュール440は、量子回路において、ターゲット量子ビットを生成する小型反転ゲートの後に、ミラー小型反転ゲートを実装する。元の小型反転ゲートおよびミラー小型反転ゲートの各々は、同じ制御量子ビットおよびターゲット量子ビットを含む。ミラー小型反転ゲートは、対応する元のゲートによって計算された補助量子ビットを逆計算する働きをする。
【0072】
図5を参照すると、この図は、実施形態例に従って、2制御の記号レイアウトおよび対応する2制御の量子回路の例を示している。2制御の量子回路は、
図4のアプリケーション400を使用して実装され得る。
【0073】
2制御の記号レイアウト510は、2制御のレイアウトを示しており、各「c」がゲートの制御を示し、「t」がゲートのターゲットを示している。2制御の記号回路520は、レイアウト510に対応する量子回路を示している。回路520は、制御C1およびC2ならびにターゲットTを含む2制御反転ゲートを含んでいる。
【0074】
図6を参照すると、この図は、実施形態例に従って、3制御の記号レイアウトおよび対応する3制御の量子回路の例を示している。3制御の量子回路は、
図4のアプリケーション400を使用して実装され得る。
【0075】
3制御の記号レイアウト610は、3制御のレイアウトを示しており、各「c」がゲートの制御を示し、「t」がゲートのターゲットを示している。ここで、2制御の記号レイアウト510の制御のうちの1つが、補助量子ビットを示す「a」および追加の制御に置き換えられている。3制御の記号回路620は、レイアウト610に対応する量子回路を示している。回路620は、追加の制御(C3)および追加の補助量子ビット(A1)を含んでいる。回路620は、制御A1およびC3ならびにターゲットTを含む2制御反転ゲート622も含んでいる。ゲート622は、レイアウト610の領域612に対応する。
【0076】
図7を参照すると、この図は、実施形態例に従って、4制御の記号レイアウトおよび対応する4制御の量子回路の例を示している。4制御の量子回路は、
図4のアプリケーション400を使用して実装され得る。
【0077】
4制御の記号レイアウト710は、4制御のレイアウトを示しており、各「c」が制御を示し、各「a」が補助量子ビットを示し、「t」がゲートのターゲットを示している。ここで、3制御の記号レイアウト610の制御のうちの1つが、「a」および追加の制御に置き換えられている。
【0078】
4制御の記号回路720は、レイアウト710に対応する量子回路を示している。回路720は、追加の制御(C4)および追加の補助量子ビット(A2)を含んでいる。回路720は、制御A1およびA2ならびにターゲットTを含む2制御反転ゲート722も含んでいる。ゲート722は、レイアウト710の領域712に対応する。
【0079】
図8を参照すると、この図は、実施形態例に従って、4制御の記号レイアウトおよび対応する4制御の量子回路の例をさらに示している。4制御の量子回路は、
図4のアプリケーション400を使用して実装され得る。レイアウト710および回路720は、
図7のレイアウト710および回路720と同じである。
【0080】
回路720は、反転ゲート822および824も含んでいる。反転ゲート822および824の各々は、制御C3およびC4ならびにターゲットA2を含む2制御反転ゲートである。ゲート822は、レイアウト710の領域812に対応する。ゲート824は、ゲート822のミラーである。
【0081】
図9を参照すると、この図は、実施形態例に従って、4制御の量子回路の実装を示している。回路720およびゲート722は、
図7の回路720およびゲート722と同じである。
【0082】
回路720は、制御A1およびA2ならびにターゲットTを含む2制御反転ゲート722を含んでいる。ゲート722は、実装930を使用して実装され得る小型反転ゲートの例である。実装930では(本明細書に示されている他の量子回路におけるように)、1つの入力を伴う円内の+記号はCNOTを示し、四角で囲まれたHはアダマール・ゲートを示している。四角で囲まれたTは、円周率/4の位相変化を量子ビットに適用する量子ゲートを示している。四角で囲まれた短剣符付きTは、Tの共役を示している(すなわち、-円周率/4の位相変化を適用する)。実装930は、2つの制御A1およびA2ならびに10個のCNOTを含んでおり、制御とターゲットの間のみの2量子ビット相互作用を伴い、2制御の標準トフォリ・ゲートの例である。
【0083】
図10を参照すると、この図は、実施形態例に従って、4制御の量子回路の別の実装を示している。回路720は、
図7の回路720と同じである。ゲート822は、
図8のゲート822と同じである。
【0084】
回路720は、制御C3およびC4ならびにターゲットA2を含む2制御反転ゲート822を含んでいる。ゲート822は、実装1030を使用して実装され得る小型反転ゲートの例であり、補助量子ビットの各々を計算するために使用され得る。実装1030は、2つの制御C3およびC4ならびに3つのCNOTのみを含んでおり、制御とターゲットの間のみの2量子ビット相互作用を伴い、2制御の相対位相トフォリ・ゲートの例である。
【0085】
図11を参照すると、この図は、実施形態例に従って、記号レイアウトの追加の例を示している。記号レイアウトの各々は、
図4のアプリケーション400を使用して実装され得る量子回路に対応している。4制御の記号レイアウト710は、
図7の4制御の記号レイアウト710と同じである。
【0086】
4制御の記号レイアウト710は、4制御のレイアウトを示しており、各「c」が制御を示し、各「a」が補助量子ビットを示し、「t」がゲートのターゲットを示している。ここで、3制御の記号レイアウト610の制御のうちの1つが、補助量子ビットおよび追加の制御に置き換えられている。
【0087】
6制御の記号レイアウト1120は、6制御のレイアウトを示しており、各「c」が制御を示し、各「a」が補助量子ビットを示し、「t」がゲートのターゲットを示している。ここで、2つの追加の補助量子ビットおよび制御が追加されており、4制御の記号レイアウト710の既存の制御のうちの2つが、追加された補助量子ビットへの現在の入力である。また、このレイアウトは、レイアウト710に関して回転されている。
【0088】
8制御の記号レイアウト1130は、8制御反転ゲートを示しており、各「c」が制御を示し、各「a」が補助量子ビットを示し、「t」がゲートのターゲットを示している。ここで、2つの追加の補助量子ビットおよび制御が追加されており、レイアウト1120の既存の制御のうちの2つが、追加された補助量子ビットへの現在の入力である。
【0089】
N制御の記号レイアウト1140は、レイアウト1130の拡張を示している。レイアウト1140は、対応する補助量子ビット、およびレイアウトの中心にあるターゲット(図示されていない)と共に、N個の制御を含んでいる。ここでNは、8より大きい任意の整数であることができる。アプリケーション400は、量子プロセッサ上で実行できる任意の深さの対応する量子回路を実装することができる。
【0090】
図12を参照すると、この図は、実施形態例に従って、6制御の記号レイアウトおよび対応する6制御の量子回路の別の例を示している。6制御の量子回路は、
図4のアプリケーション400を使用して実装され得る。
【0091】
レイアウト1212は、3つの制御を含む小型反転ゲートならびに2つの制御を含む小型反転ゲートを使用して実装され得る多重制御反転ゲートの記号レイアウトを示している。領域1212は、3つの制御C1~C3と共に、補助量子ビットA1を示している。
【0092】
回路1220は、反転ゲート1222および1224を含んでいる。反転ゲート1222および1224の各々は、制御C1、C2、およびC3、ならびにターゲットA1を含む3制御反転ゲートである。ゲート1222は、レイアウト1210の領域1212に対応する。ゲート1224は、ゲート1222のミラーである。
【0093】
図13を参照すると、この図は、実施形態例に従って、6制御の量子回路の実装を示している。回路1220は、
図12の回路1220と同じである。ゲート1222は、
図12のゲート1222と同じである。
【0094】
回路1220は、制御C1、C2、およびC3、ならびにターゲットA1を含む3制御反転ゲート1222を含んでいる。ゲート1222は、実装1330を使用して実装され得る小型反転ゲートの例であり、補助量子ビットの各々を計算するために使用され得る。実装1330は、3つの制御C1、C2、およびC3、ならびに6つのCNOTのみを含んでおり、制御とターゲットの間のみの2量子ビット相互作用を伴い、3制御の相対位相トフォリ・ゲートの例である。
【0095】
図14を参照すると、この図は、実施形態例に従って、記号レイアウトの追加の例を示している。記号レイアウトの各々は、
図4のアプリケーション400を使用して実装され得る量子回路に対応している。4制御の記号レイアウト710は、
図7の4制御の記号レイアウト710と同じである。
【0096】
6制御の記号レイアウト1410は、6制御のレイアウトを示しており、各「c」が制御を示し、各「a」が補助量子ビットを示し、「t」がゲートのターゲットを示している。ここで、6制御のレイアウト1120とは異なり、各補助量子ビットは3つの制御を含んでいる。
【0097】
12制御の記号レイアウト1420は、12制御のレイアウトを示しており、各「c」が制御を示し、各「a」が補助量子ビットを示し、「t」がゲートのターゲットを示している。ここで、4つの追加の補助量子ビットおよび6つの追加の制御が追加されており、6制御の記号レイアウト1410の既存の制御のうちの4つが、追加された補助量子ビットへの現在の入力である。また、このレイアウトは、レイアウト1410に関して回転されている。
【0098】
図15を参照すると、この図は、実施形態例に従って、多重制御量子状態反転ゲートのための例示的なアプリケーション1500のフローチャートを示している。プロセス1500は、
図4のアプリケーション400において実装され得る。
【0099】
ブロック1502で、アプリケーションは、n個の制御量子ビットのセットを含んでいる多重制御反転ゲートの仕様を受信し、nは任意の正の整数であってよい。ブロック1504で、アプリケーションは、量子回路において、2つの制御を含んでいる反転ゲートを実装し、各制御は、n個の制御量子ビットのセットから選択された制御量子ビットに接続される。ブロック1506で、アプリケーションは、量子回路内のゲートにまだ接続されていない制御量子ビットを選択する。ブロック1508で、アプリケーションは、現在実装されているすべてのゲートの各ゲートの制御が制御量子ビットに接続されているかどうかを判定する。「はい」である場合(ブロック1508の「はい」の経路)、ブロック1510で、アプリケーションは、ゲートの現在接続されている制御から移動された制御量子ビットに接続された補助ゲートの1つの制御と、選択された制御量子ビットに接続された第2の制御と、移動された制御に置き換わるターゲットと、を含む補助ゲートを、量子回路に実装する。「いいえ」である場合(ブロック1508の「いいえ」の経路)、ブロック1512で、アプリケーションは、量子回路においてすでに実装されているゲートの制御を、選択された制御量子ビットに接続する。ブロック1514で、アプリケーションは、配置する別の制御量子ビットが存在するかどうかを判定する。存在する場合(ブロック1514の「はい」の経路)、アプリケーションはブロック1506に戻る。存在しない場合(ブロック1514の「いいえ」の経路)、アプリケーション終了する。
【0100】
したがって、実施形態例において、多重制御量子状態反転ゲート、およびその他の関連する特徴、機能、または動作のためのコンピュータ実装方法、システムまたは装置、およびコンピュータ・プログラム製品が提供される。実施形態またはその一部がデバイスの一種に関して説明される場合、コンピュータ実装方法、システムまたは装置、コンピュータ・プログラム製品、あるいはこれらの一部は、その種類のデバイスの適切な同等の明示と共に使用するように適応されるか、または構成される。
【0101】
実施形態がアプリケーションにおいて実装されるとして説明される場合、実施形態例の範囲内で、SaaS(Software as a Service)モデルにおけるアプリケーションの配信が企図される。SaaSモデルでは、クラウド・インフラストラクチャ内でアプリケーションを実行することによって、実施形態を実施するアプリケーションの機能がユーザに提供される。ユーザは、Webブラウザ(例えば、Webベースの電子メール)またはその他の軽量クライアント・アプリケーションなどのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスを使用してアプリケーションにアクセスすることができる。ユーザは、クラウド・インフラストラクチャのネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを、管理することも制御することもない。場合によっては、ユーザは、SaaSアプリケーションの機能を管理または制御することさえなくてよい。他の事例では、SaaSによるアプリケーションの実施は、可能性のある限定的なユーザ固有のアプリケーション構成設定の例外を許可することができる。
【0102】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0103】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0104】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0105】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0106】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0107】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方法で機能するように指示できるものであってもよい。
【0108】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成するために、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【0109】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。