(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-03
(54)【発明の名称】量子コンピューティング環境における量子ビットの再使用のための装置、コンピュータで実施される方法、およびコンピュータプログラム製品
(51)【国際特許分類】
G06N 10/40 20220101AFI20241126BHJP
【FI】
G06N10/40
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024533075
(86)(22)【出願日】2022-11-30
(85)【翻訳文提出日】2024-07-09
(86)【国際出願番号】 US2022051412
(87)【国際公開番号】W WO2023211500
(87)【国際公開日】2023-11-02
(32)【優先日】2021-12-01
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-10-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-10-27
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】522047446
【氏名又は名称】クオンティニュアム エルエルシー
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】イーライ・チェルトコフ
(72)【発明者】
【氏名】マシュー・デクロス
(72)【発明者】
【氏名】マイケル・フェイグ
(72)【発明者】
【氏名】メーガン・コハーゲン
(57)【要約】
本開示の実施形態は、量子コンピューティング環境の中の量子プログラムのために量子コンピューティング環境内での量子ビットの再使用を実現する。これに関して、実施形態は、初期量子プログラムに基づいて最適化された量子プログラムを生成する。いくつかの実施形態では、最適化された量子プログラムは、初期量子プログラムよりも少ない、量子ビットなどのコンピューティングリソースを利用し得る。いくつかの実施形態では、最適化された量子プログラムは、量子コンピューティング環境においてコンパイルされ実行され得る。
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサと、コンピュータでコーディングされた命令が記憶された少なくとも1つのメモリとを備える装置であって、前記命令が、前記少なくとも1つのプロセッサで実行されると、前記装置に、
初期量子プログラムを受信することと、
前記初期量子プログラムから、初期出力量子ビットセットを特定することと、
前記初期量子プログラムおよび前記初期出力量子ビットセットに基づいて、前記初期量子プログラムに関連する1つまたは複数の因果円錐を決定することと、
前記初期量子プログラム、前記初期出力量子ビットセット、および前記1つまたは複数の因果円錐に基づいて、最適化された量子プログラムを生成することと
を行わせる、装置。
【請求項2】
前記最適化された量子プログラムが、初期入力量子ビットセットよりも1つ以上少ない量子ビットを含む最適化された入力量子ビットセットに関連付けられる、請求項1に記載の装置。
【請求項3】
前記最適化された量子プログラムが、測定動作またはリセット動作のうちの少なくとも1つを含む、請求項1に記載の装置。
【請求項4】
前記最適化された量子プログラムが、前記初期量子プログラムと同じゲーティング動作を含む、請求項1に記載の装置。
【請求項5】
前記装置が、量子コンピュータ上で前記最適化された量子プログラムを実行するようにさらに構成される、請求項1に記載の装置。
【請求項6】
前記装置が、
前記初期量子プログラムの双対を決定することと、
前記初期量子プログラムの前記双対に基づいて、前記初期量子プログラムの前記双対に関連する1つまたは複数の因果円錐を決定することと、
前記初期量子プログラムの前記双対、および前記初期量子プログラムの前記双対に関連する前記1つまたは複数の因果円錐に基づいて、最適化された双対量子プログラムを生成することと
を行うようにさらに構成される、請求項1に記載の装置。
【請求項7】
前記装置が、
前記最適化された量子プログラムに対応する量子ビットの第1の低減された数を決定することと、
前記最適化された双対量子プログラムに対応する量子ビットの第2の低減された数を決定することと、
量子ビットの前記第1の低減された数が量子ビットの前記第2の低減された数以下であるとき、前記最適化された量子プログラムをコンパイルして実行させることと、
量子ビットの前記第2の低減された数が量子ビットの前記第1の低減された数よりも小さいとき、前記最適化された双対量子プログラムの双対をコンパイルして実行させることと
を行うようにさらに構成される、請求項6に記載の装置。
【請求項8】
量子コンピュータのコントローラにおいて、初期量子プログラムを受信するステップと、
前記コントローラによって、前記初期量子プログラムから、初期量子ビットセットを特定するステップと、
前記コントローラによって、前記初期量子プログラムおよび前記初期量子ビットセットに基づいて、前記初期量子プログラムに関連する1つまたは複数の因果円錐を決定するステップと、
前記コントローラによって、前記初期量子プログラム、前記初期入力量子ビットセット、および前記1つまたは複数の因果円錐に基づいて、最適化された量子プログラムを生成するステップと
を備える、コンピュータで実施される方法。
【請求項9】
前記最適化された量子プログラムが、初期入力量子ビットセットよりも1つ以上少ない量子ビットを含む最適化された入力量子ビットセットに関連付けられる、請求項8に記載のコンピュータで実施される方法。
【請求項10】
前記最適化された量子プログラムが、測定動作またはリセット動作のうちの少なくとも1つを含む、請求項8に記載のコンピュータで実施される方法。
【請求項11】
前記最適化された量子プログラムが、前記初期量子プログラムと同じゲーティング動作を含む、請求項8に記載のコンピュータで実施される方法。
【請求項12】
前記コンピュータで実施される方法が、
前記量子コンピュータ上で前記最適化された量子プログラムを実行するステップをさらに備える、請求項8に記載のコンピュータで実施される方法。
【請求項13】
前記初期量子プログラムの双対を決定するステップと、
前記初期量子プログラムの前記双対に基づいて、前記初期量子プログラムの前記双対に関連する1つまたは複数の因果円錐を決定するステップと、
前記初期量子プログラムの前記双対、および前記初期量子プログラムの前記双対に関連する前記1つまたは複数の因果円錐に基づいて、最適化された双対量子プログラムを生成するステップと
をさらに備える、請求項8に記載のコンピュータで実施される方法。
【請求項14】
前記最適化された量子プログラムに対応する量子ビットの第1の低減された数を決定するステップと、
前記最適化された双対量子プログラムに対応する量子ビットの第2の低減された数を決定するステップと、
量子ビットの前記第1の低減された数が量子ビットの前記第2の低減された数以下であるとき、前記最適化された量子プログラムをコンパイルして実行させるステップと、
量子ビットの前記第2の低減された数が量子ビットの前記第1の低減された数よりも小さいとき、前記最適化された双対量子プログラムの双対をコンパイルして実行させるステップと
をさらに備える、請求項13に記載のコンピュータで実施される方法。
【請求項15】
コンピュータプログラムコードが記憶された少なくとも1つの非一時的コンピュータ可読記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータプログラムコードが、少なくとも1つのプロセッサで実行されると、
初期量子プログラムを受信することと、
前記初期量子プログラムから、初期量子ビットセットを特定することと、
前記初期量子プログラムおよび前記初期量子ビットセットに基づいて、前記初期量子プログラムに関連する1つまたは複数の因果円錐を決定することと、
前記初期量子プログラム、前記初期入力量子ビットセット、および前記1つまたは複数の因果円錐に基づいて、最適化された量子プログラムを生成することと
を行うように構成される、コンピュータプログラム製品。
【請求項16】
前記最適化された量子プログラムが、初期入力量子ビットセットよりも1つ以上少ない量子ビットを含む最適化された入力量子ビットセットに関連付けられる、請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記最適化された量子プログラムが、測定動作またはリセット動作のうちの少なくとも1つを含む、請求項15に記載のコンピュータプログラム製品。
【請求項18】
前記最適化された量子プログラムが、前記初期量子プログラムと同じゲーティング動作を含む、請求項15に記載のコンピュータプログラム製品。
【請求項19】
前記コンピュータコードが、前記少なくとも1つのプロセッサによって実行されると、
前記初期量子プログラムの双対を決定することと、
前記初期量子プログラムの前記双対に基づいて、前記初期量子プログラムの前記双対に関連する1つまたは複数の因果円錐を決定することと、
前記初期量子プログラムの前記双対、および前記初期量子プログラムの前記双対に関連する前記1つまたは複数の因果円錐に基づいて、最適化された双対量子プログラムを生成することと
を行うようにさらに構成される、請求項15に記載のコンピュータプログラム製品。
【請求項20】
前記コンピュータコードが、前記少なくとも1つのプロセッサによって実行されると、
前記最適化された量子プログラムに対応する量子ビットの第1の低減された数を決定することと、
前記最適化された双対量子プログラムに対応する量子ビットの第2の低減された数を決定することと、
量子ビットの前記第1の低減された数が量子ビットの前記第2の低減された数以下であるとき、前記最適化された量子プログラムをコンパイルして実行させることと、
量子ビットの前記第2の低減された数が量子ビットの前記第1の低減された数よりも小さいとき、前記最適化された双対量子プログラムの双対をコンパイルして実行させることと
を行うようにさらに構成される、請求項19に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2022年10月27日に出願された米国特許出願第17/974,991号、2022年10月4日に出願された米国仮特許出願第63/378,325号、および2021年12月1日に出願された米国仮特許出願第63/284,722号の利益を主張し、それらの各々の内容全体がすべての目的で本明細書において参照により組み込まれる。
【0002】
本開示の実施形態は全般に、量子コンピューティング環境における実行のために量子プログラムを最適化する際の量子ビットの再使用に関する。
【背景技術】
【0003】
量子プログラムは、量子ビットのセットについて一連のゲートを実施することによって実施される。量子コンピューティング環境は、利用可能な量子ビットの数が限られている。たとえば、量子電荷結合デバイス「QCCD」アーキテクチャでは、量子ビットは物理的なイオンおよび/または他の極小物体であり、量子コンピューティング環境において利用可能な量子ビットの数は、量子コンピューティング環境の極小物体閉じ込め装置に閉じ込めることができるイオンおよび/または他の極小物体の数により制限される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
所与の量子コンピューティング環境における利用可能な量子ビットの数に対する物理的な限界は、量子コンピューティング環境が一部の量子コンピューティングプログラムを実行する能力を制約する。たとえば、従来、量子コンピューティング環境は、量子コンピューティング環境が利用可能であるものよりも多くの量子ビットを必要とする量子プログラムを実施することができない。本明細書で説明されるように、出願者は、量子プログラムの現在の実装形態、ならびに、量子コンピューティング環境による実行および/または実施のための量子プログラムのコンパイルについて、問題を発見している。労力の投入、創意工夫、および革新を通じて、出願者は、本開示において具現化される様々な実装形態および方策においてこれらの特定された問題の多くを解決しており、それらが以下で詳しく説明される。
【課題を解決するための手段】
【0005】
全般に、本明細書で提供される本開示の実施形態は、量子コンピューティング環境(たとえば、QCCD量子コンピューティング環境)において改善された量子プログラムを実現する。そのような改善された量子プログラムは、量子プログラムを実行する際に必要とされる量子コンピューティングリソースの量を減らすこと、たとえば、量子プログラムを実行するために必要とされる全体の量子ビット数の数を減らすことによって、量子プログラムの実行全体を改善する最適化された量子プログラムを含む。以下の図面および詳細な説明の精査により、当業者には他の実装形態が明らかであり、または明らかになるであろう。すべてのそのような追加の実装形態が、この説明に含まれ、本開示の範囲内にあり、以下の請求項により保護されることが意図される。
【0006】
本開示の一態様によれば、量子コンピューティング環境における改善されたグローバルなリソース使用のためのコンピュータで実施される方法が提供される。コンピュータで実施される方法は、たとえばハードウェア、ソフトウェア、ファームウェア、および/またはこれらの任意の組合せで具現化される、本明細書で図示され説明されるような様々なコンピューティングデバイスのいずれかを介して実行され得る。コンピュータで実施される方法の少なくとも1つの例示的な実装形態によれば、例示的なコンピュータで実施される方法は、初期量子プログラムを受信するステップを含む。例示的なコンピュータで実施される方法は、初期量子プログラムから、初期量子ビットセットを特定するステップをさらに含む。例示的なコンピュータで実施される方法は、初期量子プログラムおよび初期量子ビットセットに基づいて、初期量子プログラムに関連する1つまたは複数の因果円錐を決定するステップをさらに含む。例示的なコンピュータで実施される方法は、初期量子プログラム、初期入力量子ビットセット、および1つまたは複数の因果円錐に基づいて、最適化された量子プログラムを生成するステップをさらに含む。
【0007】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、最適化された量子プログラムは、最適化された入力量子ビットセットに関連付けられる。
【0008】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、最適化された入力量子ビットセットは、初期入力量子ビットセットよりも1つ以上少ない量子ビットを含む。
【0009】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、最適化された量子プログラムは、測定動作またはリセット動作のうちの少なくとも1つを含む。
【0010】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、最適化された量子プログラムは、初期量子プログラムと同じゲーティング動作を含む。
【0011】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、コンピュータで実施される方法は、量子コンピュータ上で最適化された量子プログラムを実行するステップをさらに含む。
【0012】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、最適化された量子プログラムを実行するステップは、少なくとも1つの量子ビットの出力状態を測定するために測定動作を実行するステップと、少なくとも1つの量子ビットをリセットするために少なくとも1つのリセット動作を実行するステップと、リセット動作を実行した後で少なくとも1つの量子ビットに対して少なくとも1つのゲート動作を実行するステップとを備える。
【0013】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、コンピュータで実施される方法は、初期量子プログラムの双対を決定するステップと、初期量子プログラムの双対に基づいて、初期量子プログラムの双対に関連する1つまたは複数の因果円錐を決定するステップと、初期量子プログラムの双対、および初期量子プログラムの双対に関連する1つまたは複数の因果円錐に基づいて、最適化された双対量子プログラムを生成するステップとをさらに含む。
【0014】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、コンピュータで実施される方法は、最適化された量子プログラムに対応する量子ビットの第1の低減された数を決定するステップと、最適化された双対量子プログラムに対応する量子ビットの第2の低減された数を決定するステップとをさらに含む。
【0015】
追加または代替として、例示的なコンピュータで実施される方法のいくつかの実施形態では、コンピュータで実施される方法は、量子ビットの第1の低減された数が量子ビットの第2の低減された数以下であるとき、最適化された量子プログラムをコンパイルする、および/またはその実行を引き起こすステップと、量子ビットの第2の低減された数が量子ビットの第1の低減された数よりも小さいとき、最適化された双対量子プログラムの双対をコンパイルする、および/またはその実行を引き起こすステップとをさらに含む。
【0016】
本開示の別の態様によれば、装置が提供され、装置の一例では、例示的な装置は、少なくとも1つのプロセッサと、コンピュータでコーディングされる命令が記憶されている少なくとも1つの非一時的メモリとを備える。コンピュータでコーディングされる命令は、少なくとも1つのプロセッサで実行されると、本明細書で説明される例示的なコンピュータで実施される方法のいずれか1つを実施するように装置を構成する。装置の別の例では、例示的な装置は、本明細書で説明されるコンピュータで実施される方法のいずれか1つの各ステップを実施するための手段を備える。
【0017】
本開示のさらに別の態様によれば、コンピュータプログラム製品が提供され、コンピュータプログラム製品の一例では、例示的なコンピュータプログラム製品は、少なくとも1つのプロセッサで実行されると、本明細書で説明される例示的なコンピュータで実施される方法のいずれか1つを実施するためのコンピュータプログラム製品を構成するコンピュータプログラムコードが記憶された、少なくとも1つの非一時的コンピュータ可読記憶媒体を含む。
【0018】
こうして本開示の様々な実施形態を一般的な用語で説明してきたが、必ずしも縮尺通りに描かれていない添付の図面がここで参照される。
【図面の簡単な説明】
【0019】
【
図1】ある例示的な実施形態による、量子システムコントローラを備える例示的な量子コンピューティングシステムを示す概念図である。
【
図2】量子コンピュータの例示的な量子システムコントローラの概略図である。
【
図3】ある例示的な実施形態に従って使用され得る量子コンピュータシステムの例示的なコンピューティングエンティティの概略図である。
【
図4】本開示の少なくともいくつかの例示的な実施形態に従って処理可能な例示的な量子ビットセットを表す第1の例示的な量子プログラムを示す図である。
【
図5】本開示の少なくともいくつかの例示的な実施形態に従って処理可能な例示的な量子ビットセットを表す第2の例示的な量子プログラムを示す図である。
【
図6】本開示の少なくともいくつかの例示的な実施形態に従って処理可能な例示的な量子ビットセットを表す第3の例示的な量子プログラムを示す図である。
【
図7】本開示の少なくともいくつかの例示的な実施形態に従って処理可能な例示的な量子ビットセットを表す第4の例示的な量子プログラムを示す図である。
【
図8】本開示の少なくともいくつかの例示的な実施形態による、量子プログラム最適化のための例示的なプロセスの動作の例示的なフローチャートである。
【
図9】本開示の少なくともいくつかの例示的な実施形態による、量子プログラム最適化のための例示的なプロセスの動作の例示的なフローチャートである。
【
図10A】簡単な例示的な量子回路を示す図である。
【
図10B】ある例示的な実施形態による、
図10Aに示される例示的な量子回路の双対を示す図である。
【
図11】本開示の少なくともいくつかの例示的な実施形態による、量子プログラム最適化のための例示的なプロセスの動作の例示的なフローチャートである。
【発明を実施するための形態】
【0020】
ここで、本開示の実施形態が、本開示のすべてではないがいくつかの実施形態が示される添付の図面を参照してより完全に説明される。実際に、本開示の実施形態は、多くの異なる形式で具現化されてもよく、本明細書に記載される実施形態に限定されるものと見なされるべきではない。むしろ、これらの実施形態は、適用可能な法的要件を本開示が満たすように提供される。「または」という用語(「/」とも表記される)が、別様に示されない限り、本明細書では代替と接続の両方の意味で使用される。「例示的」および「模範的」という用語は、品質水準を示すことなく例として使用される。「一般に」、「実質的に」、および「およそ」という用語は、別様に示されない限り、加工上および/もしくは製造上の許容誤差内にあること、ならびに/または、ユーザの測定能力の範囲内にあることを指す。図面における同様の参照番号は、全体で同様の要素を指す。
【0021】
前述の説明および関連する図面に提示される教示の利益を有する、本開示が関係する当業者は、本明細書に記載される本開示の多くの修正および他の実施形態を想起するだろう。したがって、実施形態は開示される特定の実施形態に限定されるべきではないこと、ならびに、修正および他の実施形態が添付の請求項の範囲内に含まれることが意図されることが理解されるべきである。その上、前述の説明および関連する図面は、要素および/または機能のいくつかの例示的な組合せの文脈で例示的な実施形態を説明するが、要素および/または機能の異なる組合せが、添付の特許請求の範囲から逸脱することなく代替の実施形態によって提供され得ることが理解されるべきである。これに関して、たとえば、添付の請求項の一部に記載され得るような、上で明確に説明されたものとは異なる要素および/または機能の組合せも企図される。
【0022】
定義
特定の用語が本明細書で利用されるが、それらは限定を目的とするものではなく、包括的かつ記述的な意味でのみ使用される。
【0023】
「QCCD」という用語は、いくつかの動作を介した量子ビットの記憶と配置を可能にする量子電荷結合デバイスアーキテクチャを指す。QCCDにおける量子ビットは、(たとえば、ゲーティングを介して)量子動作を実施するためにチップ上の特定の位置に移動する。例示的なQCCDアーキテクチャは、イオントラップにトラップされたイオンなどの、極小物体閉じ込め装置に閉じ込められた極小物体を量子ビットとして使用する。
【0024】
「量子コンピューティング環境」という用語は、1つまたは複数の量子ビットが関わる量子動作の実施を可能にするように構成される1つまたは複数のコンピューティングデバイスを指す。コンピューティング環境の限定しない例は、様々なQCCDイオントラップ量子コンピュータを含む。
【0025】
「量子グループ」という用語は、特定の時間におけるゲーティング動作のための1つまたは複数の量子ビットを指す。
【0026】
「量子ビットセット」という用語は、量子コンピューティング環境内で任意の数の量子ビットを表す1つまたは複数のデータオブジェクトを指す。
【0027】
「量子プログラム」および「量子回路」という用語は、量子コンピューティング環境において1つまたは複数の量子ビットを利用して実施されることになる任意の数のゲート動作を指す。量子プログラムは、量子コンピューティング環境の1つまたは複数の量子ビットに対して実施される任意の数のゲーティング動作を含み得る。各「ゲート」、「論理ゲート」、「ゲート動作」、「ゲーティング動作」、または量子プログラムの「動作」には、単一の量子ビットまたは2つ以上の量子ビットの量子ビットグループが関わる。
【0028】
「入力量子ビット」という用語は、量子回路への入力として提供される量子ビットを指し、「出力量子ビット」という用語は、量子回路により出力として生み出される量子ビットを指す。量子回路の入力量子ビットおよび出力量子ビットは、物理的には同じ極小物体であってもよいが、たとえば量子プログラムの間に実行されるゲート動作の活動により、時間的に分かれていてもよく、場合によっては異なる状態にあってもよい。
【0029】
「因果円錐」または「出力量子ビットの因果円錐」という用語は、特定の出力量子ビットに因果的に接続される量子プログラムにおける入力量子ビットのセットを指す。入力量子ビットは、出力量子ビットの状態を入力量子ビットの状態に依存したものにする一連の動作が量子プログラムの中にある場合、出力量子ビットに因果的に接続される。入力量子ビットのセットに加えて、「因果円錐」という用語は、これらの入力量子ビットを特定の出力量子ビットに接続する動作のセットも指し得る。
【0030】
「量子プログラムの因果円錐」または「量子回路の因果円錐」という用語は、量子プログラムにおけるすべての出力量子ビットの1つまたは複数の因果円錐を指す。
【0031】
「初期量子プログラム」という用語は、量子ビットの再使用などのために最適化されるべき量子プログラムを指す。
【0032】
「最適化された量子プログラム」という用語は、量子ビットの再使用などのために最適化されている量子プログラムを指す。
【0033】
「初期入力量子ビットセット」という用語は、初期量子プログラムに関連する入力量子ビットセットを指す。初期入力量子ビットセットは、量子ビットとして使用可能であるものとしてある数の極小物体を指定し得る。
【0034】
「最適化された入力量子ビットセット」という用語は、最適化された量子プログラムに関連する入力量子ビットセットを指す。最適化された入力量子ビットセットは、量子ビットとして使用可能であるものとしてある数の極小物体を指定し得る。
【0035】
概観
QCCDイオントラップ量子コンピュータなどの量子コンピュータは、様々なコンピューティング活動において使用するための量子ビットを操作する。1つのそのような文脈では、量子コンピュータは、入力量子ビットの状態に基づいて論理演算を実施するように構成される1つまたは複数の論理ゲートへの入力として量子ビットを利用する。たとえば、量子プログラムが望ましい結果に達するように特に構成される場合、論理ゲートの構成は、量子プログラムにおいて無数の方法で組み合わされ得る。
【0036】
量子プログラム(たとえば、実施されるべき様々な論理ゲート動作の量子回路を具現化する量子プログラム)の実行は、マルチステッププロセスを含む。たとえば、このプロセスはゲートのセットを選択するスケジューリングステップを含み、これは最大化された並列演算に対する選好を含み得る。このプロセスは、選択されたゲート動作のための量子ビットをゲートゾーンへと移動し得る、第2のルーティングステップを含む。これらのステップは、すべての回路動作が量子コンピュータによって実行されるまで、任意の回数繰り返され得る。
【0037】
量子コンピュータは、量子プログラムを実行するために利用可能な量子ビットの数によって制限され得る。たとえば、閉じ込められた極小物体を量子ビットとして使用するQCCDイオントラップ量子コンピュータまたは他の量子コンピュータでは、極小物体(たとえば、イオン、原子、荷電または中性分子など)の数は、極小物体を閉じ込めるために使用される閉じ込め装置の制御素子/電極のサイズおよび/または数によって制限され得る。量子プログラムがどれだけ長い可能性があるか、および/または複雑である可能性があるかにかかわらず、量子ビットの利用な数を含む、利用可能な量子コンピュータリソースに関して可能な限りエラーがなく高速な方式で量子コンピュータを実施させるのが望ましい。発明者らは、量子コンピュータ上で実行されている量子プログラムにおいて使用されることになる量子ビットの数を最小にする最適化を特定しており、その量子コンピュータは、量子ビットの出力状態を測定し、計算の途中などの量子プログラムの間に量子ビットをリセットすることが可能である。様々な実施形態において、最適化は、ヒューリスティック法ならびに最適化の定式化であり得る。
【0038】
様々な実施形態において、量子ビットの状態の測定は、本明細書で測定動作と呼ばれることがある、物理量子ビットに対して実施されるべき動作がもはやないときに実行され得る。たとえば、所与の量子ビットに対する因果円錐の動作のすべてが実施されているとき、所与の量子ビットの状態を読み取り、および/または決定するために、測定動作が実施され得る。
【0039】
様々な実施形態において、量子ビットのリセットは、物理量子ビットが特定の量子ビット状態になるようにして、それにより量子プログラムへの入力として量子ビットを再初期化することによって実行されてもよく、これは本明細書ではリセット動作と呼ばれ得る。たとえば、測定動作が所与の量子ビットに対して実施された後、および/または、所与の量子ビットに対する因果円錐の動作のすべてが実施された後、所与の量子ビットがリセットされ、次いで量子プログラムを実施する際に再使用され得る。
【0040】
様々な実施形態において、そのような最適化は、初期量子プログラムを最適化された量子プログラムへと書き換えることとして記述されることがあり、最適化された量子プログラムでは、量子ビットが使用および/または再使用される順序が最適化されている。たとえば、所与の量子ビットの因果円錐が実施または実行され得るように、量子プログラムによって要求される場合に所与の量子ビットに対して測定動作が実施され得るように、かつ、たとえば所与の量子ビットを具現化した極小物体が新しい量子ビットとして量子プログラムに再導入され得るように所与の量子ビットに対してリセット動作が実施され得るように、ゲート動作が実施されるように順序を決定することによって、初期量子プログラムが書き換えられ得る。
【0041】
本開示の実施形態は、量子プログラムを実行するために必要とされる量子ビットの数を減らし、したがって、量子プログラムを実行するための計算要件を下げることに関連するいくつかの改善を提供するための、実践的な実装形態を実現する。
【0042】
追加または代替として、本開示の実施形態は、量子コンピューティングの分野において無数の技術的な利点を提供する。たとえば、本開示のいくつかの実施形態は、量子プログラムを実行することが必要とされる量子ビットの数を減らし、したがって、最適化された量子プログラムが、初期量子プログラムにより必要とされるものよりも利用可能な量子ビットが少ない可能性のある量子コンピュータにより実行されることを可能にする。また追加または代替として、本開示のいくつかの実施形態は、より少数の量子ビットを使用して量子プログラムを実行できるという前述の能力により、より大きいおよび/または複雑な問題を量子コンピュータが解決することを可能にし得る。
【0043】
例示的なシステムおよび装置
図1は、量子コンピューティングシステム100を備える例示的な量子コンピューティング環境の概略図を提供し、量子プロセッサは、例示的な実施形態に従って、複数の極小物体(たとえば、原子、イオンなど)が閉じ込められた極小物体閉じ込め装置120(たとえば、イオントラップなど)を備える。
【0044】
様々な実施形態において、量子コンピューティングシステム100は、コンピューティングエンティティ10および量子コンピュータ110を備える。様々な実施形態において、量子コンピュータ110は、コントローラ30と呼ばれ得る量子システムコントローラ30と、量子プロセッサ115とを備える。様々な実施形態において、量子システムコントローラ30は、量子プロセッサ115を制御するように、構成、プログラムなどが行われる。ある例示的な実施形態では、量子プロセッサ115は、複数の量子ビット(たとえば、論理量子ビット、補助量子ビットなどへと編成され得るデータ量子ビット)を備える。様々な実施形態において、量子コンピュータ110は、本明細書で説明されるデータベース(図示せず)を含み、またはそれと通信する。たとえば、データベースは、1つまたは複数の有線および/もしくはワイヤレスネットワーク20を介してコントローラ30と通信している1つまたは複数のコンピューティングエンティティ10によって記憶され、ならびに/またはコントローラ30にローカルにメモリによって記憶され得る。
【0045】
様々な実施形態において、量子プロセッサ115は、量子ビットの量子状態の進展を制御するための手段を備える。たとえば、ある例示的な実施形態では、量子プロセッサ115は、閉じ込め装置120(たとえば、イオントラップ)を包囲するクライオスタットおよび/または真空チャンバー40、1つまたは複数の操作源60、1つまたは複数の電圧源50、および/または1つまたは複数の光収集システム70を備える。たとえば、クライオスタットおよび/または真空チャンバー40は、温度および/または圧力が制御されたチャンバーであり得る。ある例示的な実施形態では、操作源60によって生成される操作信号は、対応する光経路66(たとえば、66A、66B、66C)を介してクライオスタットおよび/または真空チャンバー40の内部(極小物体閉じ込め装置120が位置する場所)に提供される。ある例示的な実施形態では、1つまたは複数の操作源60は、1つまたは複数のレーザー(たとえば、光レーザー、マイクロ波源など)を備え得る。様々な実施形態において、1つまたは複数の操作源60は、閉じ込め装置内での1つまたは複数の極小物体の制御された量子状態の進展を操作し、および/または引き起こすように構成される。様々な実施形態において、極小閉じ込め装置内の極小物体(たとえば、イオントラップにトラップされたイオン)は、量子コンピュータ110の量子プロセッサ115のデータ量子ビットおよび/または補助量子ビットとして振る舞う。たとえば、ある例示的な実施形態では、1つまたは複数の操作源60は1つまたは複数のレーザーを備え、レーザーは、クライオスタットおよび/または真空チャンバー40内の閉じ込め装置120にトラップされた極小物体に1つまたは複数のレーザービームを提供し得る。たとえば、操作源60は、極小物体をイオン化すること、量子プロセッサの定められた2状態量子ビット空間内の極小物体を初期化すること、量子プロセッサの1つまたは複数の量子ビットのゲートを実施すること、量子プロセッサの1つまたは複数の量子ビットの量子状態を読み取ることなどを行うように構成される、レーザービームを生成および/または提供し得る。
【0046】
様々な実施形態において、量子コンピュータ110は、(たとえば、測定動作などの読取り手順の間に)量子ビットによって生成される光子を収集および/または検出するように構成される光収集システム70を備える。光収集システム70は、1つまたは複数の光学素子(たとえば、レンズ、鏡、導波管、光ファイバケーブルなど)および1つまたは複数の光検出器を備え得る。様々な実施形態において、光検出器は、フォトダイオード、光電子増倍管、電荷結合デバイス(CCD)センサ、相補型金属酸化物半導体(COMS)センサ、微小電気機械システム(MEMS)センサ、および/または、量子コンピュータ110の量子ビットの予想される蛍光波長の光に感受性のある他の光検出器であり得る。様々な実施形態において、検出器は、1つまたは複数のA/Dコンバータ225(
図2参照)などを介して、量子システムコントローラ30と電子的に通信していてもよい。
【0047】
様々な実施形態において、量子コンピュータ110は、1つまたは複数の電圧源50を備える。たとえば、電圧源50は、複数の電圧ドライバおよび/もしくは電圧源ならびに/または少なくとも1つのRFドライバおよび/もしくは電圧源を備え得る。ある例示的な実施形態では、電圧源50は、閉じ込め装置120の対応する電位生成素子(たとえば、電極)に電気的に結合され得る。電位を変えることで、イオンが複数の位置または状態の間を移動し得る。様々な実施形態において、電位をどのように変えるかは、ある期間にわたって印加すべき1つまたは複数の電圧を規定する波形によって定義され得る。様々な実施形態において、1つまたは複数の電圧源50が回路を介して電極に結合され得る。様々な実施形態において、電圧源50を電極に結合する回路は、クライオスタットおよび/もしくは真空チャンバー40の外部、クライオスタットおよび/もしくは真空チャンバー40の内部、または、クライオスタットおよび/もしくは真空チャンバー40の内部と外部の両方に位置し得る。様々な実施形態において、電圧源50を電極に結合する回路は、温度が4ケルビン未満であり得る、クライオスタットおよび/または真空チャンバーの中の温度などの、それらの位置の温度で動作することが可能な、および/または動作するように構成される回路コンポーネントで構成され得る。
【0048】
いくつかの実施形態では、コンピューティングエンティティ10は、ハードウェア、ソフトウェア、ファームウェア、および/またはこれらの任意の組合せで具現化される1つまたは複数のコンピューティングデバイスを具現化する。コンピューティングエンティティ10は、様々な機能を提供するように構成されるユーザデバイスによって具現化され得る。これに関して、コンピューティングエンティティ10は、量子コンピュータ110と相互作用する従来のコンピューティング環境を具現化し得る。コンピューティングエンティティ10の限定しない例は、特別に構成されたモバイルデバイス、タブレット、スマートフォン、パーソナルコンピュータ、ラップトップ、企業端末などを含む。いくつかの実施形態では、コンピューティングエンティティ10は、本明細書で説明されるような量子コンピュータ110にアクセスするための、および/またはそれを別様に制御するための様々な機能を提供するために、コンピューティングエンティティ10にインストールされる、および/またはそれを介して別様に実行可能である、特別に構成されたソフトウェアアプリケーションによって全体に構成される。様々な実施形態において、コンピューティングエンティティ10は、従来のおよび/または古典的なコンピュータである。
【0049】
いくつかの実施形態では、コンピューティングエンティティ10は、量子コンピュータ110へのアクセスおよび/またはその構成を可能にする、特別に構成されたハードウェア、ソフトウェア、ファームウェア、および/またはこれらの組合せを含む。いくつかの実施形態では、コンピューティングエンティティ10は、量子コンピュータ110のコントローラ30を介した実行のために量子プログラムを生成および/または検索するための機能へのアクセスを提供する。これに関して、コンピューティングエンティティ10は、実行されるべき量子プログラムを構築するための、および/またはそれを別様に具現化する、1つまたは複数のユーザ入力を受け取り得る。たとえば、コンピューティングエンティティ10のユーザは、コンピューティングエンティティ10と対話して、量子回路を構築し、量子回路を記憶し、量子コンピュータ110のコントローラを介した実行のために量子回路を提出し得る。いくつかの実施形態では、たとえばネットワーク20を必要とすることなく通信が起こり得るように、コンピューティングエンティティ10は、量子コンピュータ110のユーザ対面デバイスにより具現化される。
【0050】
追加または代替として、いくつかの実施形態では、コンピューティングエンティティ10は、量子コンピュータ110にアクセスするためのユーザ入力および/または出力が量子プログラムを実行することを可能にする。いくつかの実施形態では、コンピューティングエンティティ10は、コントローラ30などの量子コンピュータ110の1つまたは複数のコンピューティングデバイスと通信し、これは、量子コンピュータ110を介して実行するための命令を生成および/またはコンパイルし得る。
【0051】
追加または代替として、コンピューティングエンティティ10は、ユーザが入力を量子コンピュータ110に(たとえば、コンピューティングエンティティ10のユーザインターフェースを介して)提供すること、および量子コンピュータ110からの出力を受け取ること、見ることなどを可能にするように構成される。
【0052】
ある例示的な実施形態では、コンピューティングエンティティ10は、情報/データ、量子コンピューティングアルゴリズム、量子プログラムなどを、量子システムコントローラ30が理解および/または実装できるコンピューティング言語、実行可能命令、コマンドセットなどに変換し、構成し、フォーマットするなどしてもよい。様々な実施形態において、量子コンピュータ110の1つまたは複数のデバイス(たとえば、コントローラ30)は、量子プログラムを具現化するコンピューティングデバイスエンティティ10からのデータ、量子コンピュータを操作するために実施されるべき命令などを受信する。様々な実施形態において、コンピューティングエンティティ10は、本明細書で説明されるものなどの、最適化された量子プログラムを生成するように量子プログラムを最適化し得る。
【0053】
追加または代替として、様々な実施形態において、コントローラ30は、量子プログラムをコンピューティングエンティティ10から受信し、それをコンパイルして、ハードウェア操作命令を具現化する制御システム命令、または、実行されると量子コンピュータ上での量子プログラムの実行を引き起こすように構成される機械コードレベルコマンドを生み出し得る。様々な実施形態において、量子プログラムの実行は、1つまたは複数の電極に電圧を与えること、および/またはそれらへの電圧を制御することを含み得る。様々な実施形態において、コントローラ30は、本明細書で説明されるものなどの、最適化された量子プログラムを生成するために量子プログラムを最適化し得る。
【0054】
様々な実施形態において、コントローラ30は、量子コンピュータ110の外部にあるがそれと通信可能な1つまたは複数のコンピューティングデバイスによって具現化される。たとえば、コントローラ30は、量子コンピュータ110の内部もしくは外部にあるハードウェア、ソフトウェア、ファームウェア、および/またはこれらの組合せ、量子コンピュータ110と通信可能な専用ハードウェア、量子コンピュータ110と通信可能なコンピューティングシステム上で実行されるソフトウェアなどで具現化される、専用コンピューティングシステムにおいて具現化される回路コンパイラによって具現化され得る。
【0055】
様々な実施形態において、コントローラ30は、たとえば、量子ビットの位置を様々な時間ステップで決定する1つまたは複数のプロセスおよび/またはそのような位置に量子ビットを再配置するための命令を実行するように、1つまたは複数の特別なソフトウェアアプリケーションを介して特別に構成される、従来のコンピューティングシステムを具現化し得る。たとえば、コントローラ30は、様々な時間ステップにおける各量子ビットのための位置割当て、ならびに/または、ゲーティングおよび/もしくはスワップ動作を具現化する命令を決定してもよく、これにより、量子ビットが適切な時間ステップの各々において特定の位置に達するようになり得る。
【0056】
様々な実施形態において、量子システムコントローラ30は、電圧源50、クライオスタットおよび/または真空チャンバー40内の温度と圧力を制御するためのクライオスタットシステムおよび/または真空システム、操作源60、ならびに/あるいは、クライオスタットおよび/もしくは真空チャンバー40内の様々な環境条件(たとえば、温度、圧力など)を制御する、および/または、閉じ込め装置内の1つまたは複数の極小物体の量子状態の制御された進展を操作し、および/もしくは引き起こすように構成される、他のシステムを制御するように構成される。たとえば、量子システムコントローラ30は、量子プログラムを実行するために、閉じ込め装置内の1つまたは複数の極小物体の量子状態の制御された進展を引き起こし得る。たとえば、量子システムコントローラ30は、コヒーレントシェルビング(coherent shelving)を備える読取り手順(たとえば、測定動作)が、場合によっては量子プログラムを実行することの一部として実施されるようにし得る。加えて、量子システムコントローラ30は、光収集システム70からの、量子コンピュータ110の量子ビットの量子状態の読取りに対応する入力データを通信および/または受信するように構成される。様々な実施形態において、閉じ込め装置内に閉じ込められる極小物体が、量子コンピュータ110の量子ビットとして使用される。
【0057】
様々な実施形態において、量子システムコントローラ30は、クライオスタットおよび/もしくは真空チャンバー40内の温度と圧力を制御するクライオスタットシステムおよび/もしくは真空システム、冷却システム、ならびに/または、クライオスタットおよび/もしくは真空チャンバー40内の環境条件(たとえば、温度、湿度、圧力など)を制御する他のシステムを制御するようにさらに構成される。
【0058】
図2は、例示的な量子システムコントローラ30の概略図を提供し、これは、処理要素205、メモリ210、ドライバコントローラ要素215、通信インターフェース220、アナログデジタル(A/D)コンバータ要素225などを含む、様々な量子システムコントローラ要素を備え得る。様々な実施形態において、量子システムコントローラ30は、A/Dコンバータ225を介して光収集システムによって生成される入力データを含む、入力データを受信するように構成される。様々な実施形態において、処理要素205は、本明細書で説明されるように動作するように構成される。
【0059】
様々な実施形態において、処理要素205は、プログラマブルロジックデバイス(CPLD)、マイクロプロセッサ、コプロセッシングエンティティ、特定用途向け命令セットプロセッサ(ASIP)、集積回路、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、ハードウェアアクセラレータ、他の処理要素および/または回路などの、処理要素を備える。回路という用語は、全体がハードウェアの実施形態またはハードウェアとコンピュータプログラム製品の組合せを指し得る。ある例示的な実施形態では、量子システムコントローラ30の処理要素205はクロックを備え、および/またはクロックと通信している。
【0060】
様々な実施形態において、メモリ210は、ハードディスク、ROM、PROM、EPROM、EEPROM、フラッシュメモリ、MMC、SDメモリカード、メモリスティック、CBRAM、PRAM、FeRAM、RRAM、SONOS、レーストラックメモリ、RAM、DRAM、SRAM、FPM DRAM、EDO DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、RDRAM、RIMM、DIMM、SIMM、VRAM、キャッシュメモリ、レジスタメモリなどの1つまたは複数などの、揮発性および/または不揮発性メモリストレージなどの非一時的メモリを備える。
【0061】
様々な実施形態において、メモリ210は、量子プログラムが実行されるようにするために実行されるべきコマンドのキュー(たとえば、実行可能キュー)、量子コンピュータの量子ビットに対応する量子ビット記録(たとえば、量子ビット記録データストア、量子ビット記録データベース、量子ビット記録テーブルなどの中の)、較正テーブル、コンピュータプログラムコード(たとえば、1つまたは複数のコンピュータ言語、特別な量子システムコントローラ言語など)などを記憶し得る。ある例示的な実施形態では、メモリ210に記憶されているコンピュータプログラムコードの少なくとも一部分の実行(たとえば、処理要素205による)は、量子回路の少なくとも一部分を実施すること、1つまたは複数の量子ビットレジスタを更新することなどを量子プロセッサ115に行わせるように構成されるコマンドの1つまたは複数のセットを生成するための、1つまたは複数のステップ、動作、プロセス、手順などを量子システムコントローラ30に実施させる。ある例示的な実施形態では、メモリ210に記憶されているコンピュータプログラムコードの少なくとも一部分の実行は、1つまたは複数のコマンドが実施されるようにすることを、量子システムコントローラ30に行わせる。
【0062】
様々な実施形態において、ドライバ量子システムコントローラ要素215は、1つまたは複数のドライバ、および/または、1つまたは複数のドライバを制御するように各々構成される量子システムコントローラ要素を含む。様々な実施形態において、ドライバ量子システムコントローラ要素215は、ドライバおよび/またはドライバコントローラを備え得る。たとえば、ドライバコントローラは、1つまたは複数の対応するドライバが、量子システムコントローラ30によって生成され、スケジュールされ、実行される、実行可能命令、コマンドなどに従って動作されるようにするように構成され得る。たとえば、処理要素205は、第1のドライバによって実施されるべき1つまたは複数のコマンドを生成し得る。
【0063】
様々な実施形態において、ドライバコントローラ要素215は、量子システムコントローラ30が、電圧源50、操作源60、冷却システム、真空システムなどを動作させることを可能にする。様々な実施形態において、ドライバは、閉じ込め装置120のトラップ電位を維持および/もしくは制御するために使用される電極に印加される電流ならびに/または電圧を制御するためのドライバ(たとえば、1つまたは複数の電圧源50を動作および/または制御するように構成される)(および/または、閉じ込め装置の電位生成素子にドライバ活動シーケンスを提供するための他のドライバ)、レーザードライバ(たとえば、1つまたは複数の操作源60を動作および/または制御するように構成される)、真空コンポーネントドライバ、クライオスタットおよび/または真空システムコンポーネントドライバ、冷却システムドライバなどであり得る。
【0064】
様々な実施形態において、ドライバコントローラ要素215の各々は、システム内のエンドポイント(たとえば、操作源60のコンポーネント、電圧源50のコンポーネント(高周波電圧源、任意波形生成器(AWG)、直接デジタル合成器(DDS)、および/または他の波形生成器)、冷却および/または真空システムのコンポーネント、光収集システム70のコンポーネントなど)に対応する。量子コンピュータ110内の各エンドポイントは、個々のハードウェア制御手段を表す。様々な実施形態において、各エンドポイントは、受け入れられたマイクロコマンドの固有のセットを有し得る。限定はされないが、例には、直接デジタル合成器(DDS)などの電圧源50、光電子増倍管(PMT)などの光収集システム70のコンポーネント、レーザードライバおよび/もしくは光変調器スイッチなどの操作源60のコンポーネント、ならびに/または汎用出力(GPO)がある。DDSのための個々のコマンドは、それにより生成される制御信号のパワーレベル、周波数、および位相の設定を実現する。様々な実施形態において、PMTインターフェースのためのコマンドは、光子カウント開始/停止およびカウントのリセットを含む。GPOエンドポイントのためのコマンドは、1つまたは複数の出力線の設定および/またはクリアを含む。これらの出力線は、量子回路の実行と同期して外部ハードウェアを制御するために使用され得る。
【0065】
様々な実施形態において、量子システムコントローラ30は、1つまたは複数の(たとえば、光収集システム70の)受光器コンポーネントから信号を通信および/または受信するための手段を備える。たとえば、量子システムコントローラ30は、1つまたは複数の受光器コンポーネント(たとえば、光収集システム70の光検出器)、較正センサなどから信号を受信するように構成される1つまたは複数のアナログデジタル(A/D)コンバータ要素225を備え得る。様々な実施形態において、A/Dコンバータ要素225は、光収集システム70の1つまたは複数の受光器コンポーネントによって生成される受信された信号を変換することによって生成される入力データをメモリ210に書き込むように構成される。
【0066】
様々な実施形態において、量子システムコントローラ30は、たとえば、コンピューティングエンティティ10とインターフェースおよび/または通信するための通信インターフェース220を備え得る。たとえば、量子システムコントローラ30は、実行可能命令、コマンドセットなどをコンピューティングエンティティ10から受信し、量子コンピュータ110から(たとえば、光収集システム70から)受信された出力および/または出力を処理した結果をコンピューティングエンティティ10に提供するための、通信インターフェース220を備え得る。様々な実施形態において、コンピューティングエンティティ10および量子システムコントローラ30は、直接の有線接続および/もしくはワイヤレス接続を介して、ならびに/または、1つまたは複数の有線および/もしくはワイヤレスネットワーク20を介して通信し得る。
【0067】
様々な実施形態において、量子システムコントローラ30は、1つまたは複数の量子ビットが使用または再使用され得る順序を決定することによって、量子プログラムを最適化するように構成され得る。たとえば、本明細書で説明されるように、コントローラ30は初期量子プログラムを受信または特定し得る。様々な実施形態において、量子プログラムは、1つまたは複数の極小物体に関連付けられ得る初期量子ビットセットに関連付けられ、またはそれによって表され得る。様々な実施形態において、初期量子ビットセットの中の量子ビットの総数は、量子プログラムが量子ビットとして使用し得る極小物体の数に等しくてもよい。追加または代替として、いくつかの実施形態では、コントローラ30は、初期量子プログラムに関連する最適化された量子プログラムを生成し、最適化された量子プログラムは、同じ初期量子ビットセットまたは最適化された量子ビットセットに関連付けられてもよく、これは、初期量子ビットセットよりも少ない量子ビットを含んでもよく、初期量子ビットセットが関連付けられるものよりも少ない極小物体に関連する最適化された量子ビットセットを有してもよい。
【0068】
図3は、本開示の実施形態とともに使用され得る例示的なコンピューティングエンティティ10を表す例示的な概略図を提供する。様々な実施形態において、コンピューティングエンティティ10は、ユーザが(たとえば、コンピューティングエンティティ10のユーザインターフェースを介して)入力を量子コンピュータ110に提供し、量子コンピュータ110からの出力を受け取ること、表示すること、分析することなどを行うのを可能にするように構成される、古典的な(たとえば、半導体ベースの)コンピュータである。様々な実施形態において、ユーザは、量子プログラムの作成および/または実行をもたらす入力をユーザが提供し得るときなどに、コンピューティングエンティティ10を使用して入力を量子コンピュータ110に提供し得る。
【0069】
図3に示されるように、コンピューティングエンティティ10は、アンテナ312、送信機304(たとえば、無線)、受信機306(たとえば、無線)、および送信機304に信号を提供して受信機306から信号を受信する処理要素308を含み得る。送信機304に提供され受信機306から受信される信号は、量子システムコントローラ30、他のコンピューティングエンティティ10などの様々なエンティティと通信するために、適用可能なワイヤレスシステムのエアインターフェース規格に従ったシグナリング情報/データを含み得る。コンピューティングエンティティ10はネットワークインターフェース320を含むことができ、これは、量子システムコントローラ30、他のコンピューティングエンティティ10などの様々エンティティと通信するために、適用可能なネットワークシステムのインターフェース規格に従って信号を提供して信号を受信し得る。
【0070】
これに関して、コンピューティングエンティティ10は、1つまたは複数のエアインターフェース規格、通信プロトコル、変調タイプ、およびアクセスタイプで動作することが可能であり得る。たとえば、コンピューティングエンティティ10は、ファイバ分散データインターフェース(FDDI)、デジタル加入者線(DSL)、イーサネット、非同期転送モード(ATM)、フレームリレー、data over cable service interface specification (DOCSIS)、または任意の他の有線送信プロトコルなどの、有線データ送信プロトコルを使用して通信を受信および/または提供するように構成され得る。同様に、コンピューティングエンティティ10は、general packet radio service (GPRS)、Universal Mobile Telecommunications System (UMTS)、Code Division Multiple Access 2000 (CDMA2000)、CDMA2000 1X (1xRTT)、Wideband Code Division Multiple Access (WCDMA(登録商標))、Global System for Mobile Communications (GSM)、Enhanced Data rates for GSM Evolution (EDGE)、Time Division-Synchronous Code Division Multiple Access (TDSCDMA)、Long Term Evolution (LTE)、Evolved Universal Terrestrial Radio Access Network (E-UTRAN)、Evolution-Data Optimized (EVDO)、High Speed Packet Access (HSPA)、High Speed Downlink Packet Access (HSDPA)、IEEE 802.11 (Wi-Fi)、Wi-Fi Direct、802.16 (WiMAX)、ultra wideband (UWB)、赤外線(IR)プロトコル、近距離通信(NFC)プロトコル、Wibree、Bluetoothプロトコル、ワイヤレスユニバーサルシリアルバス(USB)プロトコル、および/または任意の他のワイヤレスプロトコルなどの、種々のプロトコルのいずれかを使用してワイヤレス外部通信ネットワークを介して通信するように構成され得る。コンピューティングエンティティ10は、ボーダーゲートウェイプロトコル(BGP)、ダイナミックホスト構成プロトコル(DHCP)、ドメイン名システム(DNS)、ファイル転送プロトコル(FTP)、ハイパーテキスト転送プロトコル(HTTP)、HTTP over TLS/SSL/Secure、インターネットメッセージアクセスプロトコル(IMAP)、ネットワークタイムプロトコル(NTP)、簡易メール転送プロトコル(SMTP)、Telnet、トランスポートレイヤセキュリティ(TLS)、セキュアソケッツレイヤ(SSL)、インターネットプロトコル(IP)、送信制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、データ混雑制御プロトコル(DCCP)、ストリーム制御送信プロトコル(SCTP)、ハイパーテキストマークアップ言語(HTML)などを使用して通信するために、そのようなプロトコルおよび規格を使用し得る。
【0071】
そのような通信規格およびプロトコルを介して、コンピューティングエンティティ10は、非構造化補助サービス情報/データ(USSD)、ショートメッセージサービス(SMS)、マルチメディアメッセージングサービス(MMS)、Dual-Tone Multi-Frequency Signaling (DTMF)、および/または加入者識別モジュールダイヤラ(SIMダイヤラ)などの概念を使用して、様々な他のエンティティと通信し得る。コンピューティングエンティティ10はまた、たとえば、そのファームウェア、ソフトウェア(たとえば、実行可能命令、アプリケーション、プログラムモジュールを含む)、およびオペレーティングシステムへの変更、アドオン、および更新をダウンロードし得る。
【0072】
コンピューティングエンティティ10はまた、1つまたは複数のユーザ入力/出力インターフェースを備えるユーザインターフェースデバイス(たとえば、処理要素308に結合されたディスプレイ316および/またはスピーカー/スピーカードライバ、ならびに、処理要素308に結合されたタッチスクリーン、キーボード、マウス、および/またはマイクロフォン)を備えるユーザインターフェースデバイスを備え得る。たとえば、ユーザ出力インターフェースは、情報/データの表示または可聴の提示を引き起こし、1つまたは複数のユーザ入力インターフェースを介して情報/データと対話するための、コンピューティングエンティティ10上で実行される、および/またはそれを介してアクセス可能な、アプリケーション、ブラウザ、ユーザインターフェース、インターフェース、ダッシュボード、スクリーン、ウェブページ、ページ、および/または、本明細書で交換可能に使用される類似する用語を提供するように構成され得る。ユーザ入力インターフェースは、キーパッド318(ハードまたはソフト)、タッチディスプレイ、音声/発話またはモーションインターフェース、スキャナ、リーダ、または他の入力デバイスなどのデータをコンピューティングエンティティ10が受け取ることを可能にする、多数のデバイスのいずれをも備えることができる。キーパッド318を含む実施形態では、キーパッド318は、従来の数字(0~9)および関連するキー(#、*)、およびコンピューティングエンティティ10を動作させるために使用される他のキーを含む(またはその表示を引き起こす)ことができ、英数字キーの完全なセットまたは英数字キーの完全なセットを提供するように有効化され得るキーのセットを含み得る。入力を提供することに加えて、ユーザ入力インターフェースが、たとえば、スクリーンセイバーおよび/またはスリープモードなどの何らかの機能を有効化または無効化するために使用され得る。そのような入力を通じて、コンピューティングエンティティ10は、情報/データ、ユーザ対話/入力などを収集することができる。
【0073】
コンピューティングエンティティ10は、揮発性ストレージもしくはメモリ322および/または不揮発性ストレージもしくはメモリ324も含むことができ、これらは、埋め込まれてもよく、および/または取り外し可能であってもよい。たとえば、不揮発性メモリは、ROM、PROM、EPROM、EEPROM、フラッシュメモリ、MMC、SDメモリカード、メモリスティック、CBRAM、PRAM、FeRAM、RRAM、SONOS、レーストラックメモリなどであり得る。揮発性メモリは、RAM、DRAM、SRAM、FPM DRAM、EDO DRAM、SDRAM、DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、RDRAM、RIMM、DIMM、SIMM、VRAM、キャッシュメモリ、レジスタメモリなどのであり得る。揮発性および不揮発性ストレージまたはメモリは、コンピューティングエンティティ10の機能を実装するために、データベース、データベースインスタンス、データベース管理システムエンティティ、データ、アプリケーション、プログラム、プログラムモジュール、スクリプト、ソースコード、オブジェクトコード、バイトコード、コンパイルされたコード、解釈されたコード、機械コード、実行可能命令などを記憶することができる。
【0074】
例示的なデータの視覚化
本開示による例示的なシステムおよび装置アーキテクチャを説明してきたが、本開示に従って維持および/または処理されるデータの例示的な視覚化が以下で説明される。以下の図面の各々に図示されるデータの視覚化は、任意の数の方法で具現化され得ることが理解されるべきである。たとえば、様々な実施形態は、本明細書で説明される様々な機能を実行するためにそのようなデータオブジェクトの記憶および/または操作を可能にするように構成される任意の数のデータオブジェクトとして、図示されるデータを維持し得る。
【0075】
量子プログラムの視覚化(たとえば、量子回路図)の以下の図解において、量子ビットとして使用されるべき各極小物体は、その生涯が垂直方向に示された状態で図示されている。
図4および
図5の示される実施形態では、図示される量子コンピューティング環境は、量子ビットとして使用されるべき5つの極小物体を含む。
図6の示される実施形態では、図示される量子コンピューティング環境は、量子ビットとして使用されるべき4つの極小物体を含む。
図7の示される実施形態では、示される量子コンピューティング環境は、量子ビットとして使用されるべき3つの極小物体を含む。様々な実施形態において、1つの極小物体(たとえば、イオン)が1つまたは複数の量子ビットとして使用され得る。
【0076】
示される視覚化において、第1の量子ビットが量子ビットセットの別の第2の量子ビットとともにゲーティングされることになり、第1の量子ビットおよび第2の量子ビットが水平方向の線で接続され、実施されるべきゲートを表す2つの量子ビットの各々に対して垂直方向の線にボックスまたはコネクタが接続される、状況。
【0077】
いくつかの実施形態では、量子ビットグループは、下部にある初期状態および上部にある出力状態に対応し得る、それらの初期状態からそれらの出力へと(たとえば、下から上に)図示される順序でゲーティングされることが必要であり得ることを理解されたい。他の実施形態では、量子ビットグループは、少なくとも1つの量子ビットを共有する量子ビットグループが、量子プログラムにおいて定められた実行の順序(たとえば、図示されるように下から上)を満たす方式で実施される限り、任意の順序でゲーティングされ得る。
【0078】
図4は、本開示の少なくともいくつかの例示的な実施形態に従って処理可能な例示的な量子ビットセットを表す量子プログラムの例示的な視覚化を示す。
図4に示されるように、量子プログラム400の視覚化は、論理演算を実施するためにゲーティングされるべき量子ビットグループを図示する。この視覚化は、量子ビットが量子プログラムへどのように入力として提供されるか(視覚化の下部において)、動作が量子ビットに対してどのように実施されるか、そして、量子ビットが量子プログラムの出力としてどのように返されるか(視覚化の上部において)を示す。
【0079】
量子プログラム400の図示される視覚化において、参照番号402、404、406、408、410を用いて図示される、量子ビットとして使用されることになる5つの極小物体がある。たとえば、第1の量子ビットレジスタによって追跡される第1の極小物体はq0と指定され(たとえば、402)、第2の量子ビットレジスタによって追跡される第2の極小物体はq1と指定され(たとえば、404)、第3の量子ビットレジスタによって追跡される第3の極小物体はq2と指定され(たとえば、406)、第4の量子ビットレジスタによって追跡される第4の極小物体はq3と指定され(たとえば、408)、第5の量子ビットレジスタによって追跡される第5の極小物体はq4と指定され(たとえば、410)。
図4において、量子ビットについて実施される動作は、図解の下から上の順序で行われるものとして表される。図解の下部における量子ビットはその入力状態にある量子ビットを表し(たとえば、量子プログラムのための入力として)、図解の上部における量子ビットはその出力状態にある量子ビットを表す(たとえば、量子プログラムの出力として)。たとえば、量子ビットq1は、第1の動作412および第2の動作416という、出力状態になる前にそれに対して実施される2つの動作を有する。
【0080】
図4の量子プログラム400について、5つの量子ビットq0、q1、q2、q3、およびq4は、量子プログラム400を実行するための初期量子ビットセットである。量子プログラム400は、参照番号412、414、416、および418において示される4つの動作からなり、これらはたとえばゲート動作であり得る。参照番号412は、量子ビットq0(たとえば、402)および量子ビットq1(たとえば、404)に対して実施される動作を示す。同様に、参照番号414は、量子ビットq2(たとえば、406)および量子ビットq3(たとえば、408)に対して実施される動作を示し、参照番号416は、量子ビットq1(たとえば、404)および量子ビットq2(たとえば、406)に対して実施される動作を示し、参照番号418は、量子ビットq3(たとえば、408)および量子ビットq4(たとえば、410)に対して実施される動作を示す。動作のすべてが実施された後、量子プログラム400は完了し、5つの量子ビットq0、q1、q2、q3、およびq4はそれらのそれぞれの出力状態にあり、様々な実施形態において、これらの状態は出力量子ビットと呼ばれ得る。
【0081】
示されるように、量子動作が、たとえば量子プログラム400において実行されることにより、各出力量子ビットは、量子プログラム400への入力量子ビットのセットに因果的に依存する。量子プログラム400が初期量子プログラムであり得る様々な実施形態において、各出力量子ビットは初期出力量子ビットであってもよく、各初期出力量子ビットは、因果的な依存性などにより、初期入力量子ビットセットに関連付けられ得る。様々な実施形態において、初期出力量子ビットの1つよりも多くが集合的に初期出力量子ビットセットであってもよく、初期出力量子ビットセットの中の各初期出力量子ビットはそれぞれ、固有の初期入力量子ビットセットに関連付けられる。
【0082】
図5は量子プログラム500の例示的な視覚化を示し、これは、様々な実施形態において、出力量子ビットq1(たとえば、404)と、出力量子ビットq1への関連する初期量子ビットセットを備える量子プログラム400への入力量子ビットのサブセットとの因果的依存性の一例を例証するための、量子プログラム400の修正であり得る。量子プログラム500は、量子ビットq1が出力状態を取得することをもたらす量子プログラム400の部分である。たとえば、量子プログラム500は、量子プログラム400のための量子ビットq1の因果円錐を示す。
【0083】
量子プログラム500の
図5に示されるように、量子ビットとして使用されることになる5つの極小物体(たとえば、402、404、406、408、および410)があり、初期量子ビットセットは、量子ビットq0(たとえば、402)、量子ビットq1(たとえば、404)、量子ビットq2(たとえば、406)、量子ビットq3(たとえば、408)、および量子ビットq4(たとえば、410)という5つの量子ビットからなる。
図5に示されるように、4つの量子ビットだけが動作412、414、および416に関連付けられる。たとえば、量子ビットq1の因果円錐は、量子ビットq4とのどのような相互作用も含まない。様々な実施形態において、第1の時間において、動作412が量子ビットq0(たとえば、402)および量子ビットq1(たとえば、404)に対して実行され、動作414が量子ビットq2(たとえば、406)および量子ビットq3(たとえば、408)に対して実行される。
【0084】
様々な実施形態において、動作412は動作414の前または後に起こり得る。動作412および414に続いて、動作416が量子ビットq1(たとえば、404)および量子ビットq2(たとえば、406)に対して実行される。動作412、414、および416が実行された後、量子ビットq1(たとえば、404)はその出力状態にある。したがって、量子ビットq1(たとえば、404)の出力状態は、量子ビットq0、q1、q2、およびq3に対して実行された動作412、414、および416に因果的に依存する。出力量子ビットq1は、入力量子ビットq0、q1、q2、およびq3だけに因果的に依存するので、これは、量子ビットq1の出力状態を生み出すために4つの量子ビット(すなわち、q0、q1、q2、およびq3)しか必要ではないことを意味する。そのような依存性とともに、関連する動作が、因果円錐と呼ばれ得る。
【0085】
他の実施形態(示されない)では、出力量子ビットの各々の因果円錐が決定され得る。たとえば、
図4の図解を使用すると、量子ビットq4(たとえば、410)の因果円錐は、初期量子ビットセットならびに量子プログラム400の動作を考慮して、量子ビットq4の出力状態から決定され得る。量子プログラム400の量子ビットq4に対して、因果円錐は、量子ビットq2(たとえば、406)、量子ビットq3(たとえば、408)、および量子ビットq4(たとえば、410)を動作414および418とともに含む。
【0086】
5つ以上の量子ビットがある様々な実施形態において、量子プログラム400および量子プログラム500が、利用可能な量子ビットに対して実行され得る。しかしながら、他の実施形態は、5つ以上の量子ビットを有しなくてもよく、または代替として、量子プログラム400もしくは量子プログラム500を実行するために利用可能な5つの量子ビットを有しなくてもよい。したがって、量子プログラム400または量子プログラム500は、とりわけ、より少数の量子ビットを利用するように最適化され得る。より少数の量子ビットの利用は、量子コンピュータ110の量子ビットが、測定動作およびリセット動作などとともに、測定され、リセットされ、および/または再使用され得るときに可能であり得る。様々な実施形態において、これは、量子プログラムの中で量子ビットの測定、リセット、および再使用を実行することにより起こり得る。
【0087】
図6は、量子プログラム600の例示的な視覚化を示し、これは量子プログラム400の最適化であってもよく、最適化の一実施形態を例証する。量子プログラム600は、量子プログラムを実行するために4つの量子ビットが利用可能である量子コンピュータ110上で量子プログラム400が実行されることを可能にする、量子プログラム400の最適化である。
【0088】
量子プログラム600の
図6に示されるように、量子ビットとして使用されることになる4つの極小物体(たとえば、602、604、606、および608)があり、初期量子ビットセットは4つの量子ビットからなる。たとえば、第1の量子ビットレジスタによって追跡される第1の極小物体はq0(たとえば、602)と指定され、第2の量子ビットレジスタによって追跡される第2の極小物体はq1(たとえば、604)と指定されてq4(たとえば、610)に再初期化および/またはリセットされ、第3の量子ビットレジスタによって追跡される第3の極小物体はq2(たとえば、606)と指定され、第4の量子ビットレジスタによって追跡される第4の極小物体はq3(たとえば、608)と指定される。量子プログラム600は、量子プログラム400と同じ4つの動作(すなわち、動作412、414、416、および418)を含む。しかしながら、量子プログラム600では、量子ビットq1の出力状態を測定し、量子ビットq1(たとえば、604)を量子ビットq4(たとえば、610)にリセットする動作620がある。
図6は、極小物体に関係する垂直線を用いて、これが同じ極小物体であることを示す。
【0089】
様々な実施形態において、
図6に示されるように、第1の時間において、動作412が量子ビットq0(たとえば、602)および量子ビットq1(たとえば、604)に対して実行され、動作414が量子ビットq2(たとえば、606)および量子ビットq3(たとえば、608)に対して実行される。他の実施形態では、動作412は動作414の前または後に起こり得る。動作412および414に続いて、動作416が量子ビットq1(たとえば、604)およびq2(たとえば、606)に対して実行される。動作412、414、および416が実行された後、量子ビットq0(たとえば、602)、量子ビットq1(たとえば、604)、および量子ビットq2(たとえば、606)はそれぞれの出力状態にある。しかしながら、動作418が量子ビットq3(たとえば、608)および量子ビットq4(動作620の前は利用可能ではない)に対して実行されることになるので、量子プログラム600は完了していない。動作418を実行するために、量子ビットq1(たとえば、604)は、動作620において、量子ビットq4(たとえば、610)としてリセットされ再使用される前にその出力状態について測定される。動作620の後、量子プログラム600は動作418に進み、これにより、量子ビットq3(たとえば、608)と量子ビットq4(たとえば、610)がそれぞれの出力状態になり、これらが測定され得る。したがって、この例では、量子ビットq0、q1、q2、q3、およびq4の出力状態が測定されてもよく、したがって、量子プログラム400と同じ各量子ビット測定の出力状態が生じている。
【0090】
量子プログラム600の例は、量子プログラム400の最適化の一例であり、他の実施形態では、1つまたは複数の量子ビットの測定、リセット、および再使用が量子プログラム400の他の時点で起こってもよいことが理解されるだろう。最適化は、量子プログラム全体または量子プログラムの一部分の最適化であり得ることが、さらに理解されるだろう。たとえば、量子プログラム全体が、サブルーチン、プログラム部分などへと分解されてもよく、このとき、量子ビットの出力状態などの測定が行われてもよく、量子プログラムが各サブルーチンに対して最適化されてもよい。そのような最適化は、量子プログラムが量子プログラムの別の部分への入力として量子ビットの測定結果を必要とし得るような場合に有利であり得る。そのような入力は、限定はされないが、プログラムが正しく実行していることの確認、累算された量子ビット位相の決定などを含み得る。
【0091】
図7は量子プログラム700の例示的な視覚化を示し、これは、量子プログラム400の最適化または量子プログラム600の最適化であり得る。量子プログラム700は、これらの量子プログラムの各々の最適化の一実施形態を例証する。量子プログラム700は、量子プログラムを実行するための量子ビットとして使用するための3つの極小物体を有する量子コンピュータ110上で量子プログラム400または量子プログラム600が実行されることを可能にする最適化である。
【0092】
量子プログラム700の
図7に示されるように、量子ビットとして使用されることになる3つの極小物体(たとえば、702、704、および708)があり、初期量子ビットセットは3つの量子ビットからなる。たとえば、第1の量子ビットレジスタによって追跡される第1の極小物体はq0(たとえば、702)と指定されてq2(たとえば、706)へと再初期化および/またはリセットされ、第2の量子ビットレジスタによって追跡される第2の極小物体はq1(たとえば、704)と指定されてq4(たとえば、710)へと再初期化および/またはリセットされ、第3の量子ビットレジスタによって追跡される第3の極小物体はq2(たとえば、608)と指定される。量子プログラム700は、量子プログラム400と同じ4つの動作(すなわち、動作412、414、416、および418)を含む。量子プログラム400と同じ各量子ビット測定の出力状態も生じる。しかしながら、量子プログラム700では、量子ビット(たとえば、量子ビットq0(たとえば、702)から量子ビットq2(たとえば、706)、および量子ビットq1(たとえば、704)から量子ビットq4(たとえば、710))をリセットする2つの動作(たとえば、動作720および動作722)がある。
図7は、極小物体の各々にそれぞれ関係する垂直線を用いて、これらが同じ極小物体であることを示す。
【0093】
様々な実施形態において、
図7に示されるように、第1の時間において、動作412が量子ビットq0(たとえば、702)および量子ビットq1(たとえば、704)に対して実行される。動作412が実行された後、量子ビットq0(たとえば、702)はその出力状態にある。動作722において、量子ビットq0(たとえば、702)は、リセットされて量子ビットq2(たとえば、706)として再使用される前にその出力状態について測定される。動作722の後、動作414は量子ビットq2(たとえば、706)および量子ビットq3(たとえば、708)に対して実行される。動作414の後、動作416が量子ビットq2(たとえば、706)および量子ビットq1(たとえば、704)に対して実行される。動作416が実行された後、量子ビットq1(たとえば、704)および量子ビットq2(たとえば、706)は出力状態にある。
図7に示される実施形態では、動作720において、量子ビットq1(たとえば、704)は、リセットされて量子ビットq4(たとえば、710)として再使用される前にその出力状態について測定される。動作720の後、動作418が量子ビットq4(たとえば、710)および量子ビットq3(たとえば、708)に対して実行される。動作418が実行された後、量子ビットq4(たとえば、710)および量子ビットq3(たとえば、708)は出力状態にあり、それが測定され得る。
【0094】
したがって、この例では、量子ビットq0、q1、q2、q3、およびq4の出力状態が測定されてもよく、したがって、量子プログラム400および量子プログラム600と同じ各量子ビット測定の出力状態が生じている。
【0095】
例示的な最適化プロセス
本開示の例示的なシステム、装置、コンピューティング環境、およびデータ視覚化を説明してきたが、本開示による例示的なプロセスがここで説明される。フローチャートの各々は、本明細書で説明される装置、システム、デバイス、および/またはコンピュータプログラム製品の1つまたは複数によって実行され得る例示的なコンピュータで実施されるプロセス、たとえば、それらの特別に構成されたコンポーネントの1つまたは複数を利用したそのようなプロセスを図示することが理解されるだろう。
【0096】
フローチャートにおいて図示されるブロックは動作を示す。そのような動作は、限定はされないが、本明細書で図示され説明されるような順序と方式を含めて、多数の方法のいずれかで実行され得る。いくつかの実施形態では、本明細書で説明されるプロセスのいずれかの1つまたは複数のブロックは、別のプロセスの1つまたは複数のブロックの間に、別のプロセスの1つまたは複数のブロックの前に、別のプロセスの1つまたは複数のブロックと並列に、および/または、1つまたは複数の反復でブロックを実施するために繰り返されるなど、第2のプロセスのサブプロセスとして、存在する。追加または代替として、プロセスのいずれもが、いくつかの実施形態における1つまたは複数の任意選択のブロックを含む、説明および/もしくは図示されるいくつかまたはすべての動作ステップを含み得る。本明細書に示されるフローチャートに関して、図示されるブロックの1つまたは複数は、本開示のいくつかまたはすべての実施形態において任意選択であり得る。同様に、各フローチャートの動作のうちの1つまたは複数は、組合せ可能であり、置換可能であり、および/または本明細書で説明されるように別様に変更され得ることが理解されるべきである。
【0097】
様々な実施形態において、量子プログラムを最適化するためのプロセスは、初期量子プログラムを受信すること、初期入力量子ビットセットおよび/または初期出力量子ビットセットを(たとえば、初期量子プログラムを解析および/または分析することによって)特定すること、初期入力量子ビットセットの関連する初期入力量子ビットに基づいて初期出力量子ビットセットの1つまたは複数の出力量子ビットに関連する1つまたは複数の因果円錐を決定すること、初期量子プログラムを最適化すること、初期量子プログラムの最適化に基づいて最適化された量子プログラムを生成すること、最適化された量子プログラムをコンパイルすること、および/またはコンパイルされ最適化された量子プログラムを実行することを含む。様々な実施形態において、本明細書で説明されるように、最適化することは、生成され得る初期量子プログラムを最適化するために、厳密法および/またはヒューリスティック法を使用し得る。
【0098】
図8は、本開示の少なくともいくつかの例示的な実施形態に従って量子プログラムを最適化するための例示的なプロセスの動作を示す。具体的には、
図8は例示的なプロセス800の動作を図示する。いくつかの実施形態では、プロセス800は、コンピューティングエンティティ10またはコントローラ30の非一時的コンピュータ可読記憶媒体上などで、図示され説明されるようなプロセスを実施するための、実行のために構成されるコンピュータプログラム製品の非一時的コンピュータ可読記憶媒体に記憶されたコンピュータプログラムコードによって具現化される。代替または追加として、いくつかの実施形態では、プロセス800は、コンピューティングエンティティ10、コントローラ30、または量子コンピュータ110のコンピューティングエンティティ(
図1に図示されない)などの、1つまたは複数の特別に構成されたコンピューティングデバイスによって実施され、これは、単独であってもよく、または1つまたは複数の他のコンポーネント、デバイス、システムなどと通信していてもよい。これに関して、いくつかのそのような実施形態では、コンピューティングエンティティ10、コントローラ30、または量子コンピュータ110のコンピューティングエンティティは、たとえば、関連するメモリ、ならびに/または、本明細書で図示および/もしくは説明される別のコンポーネントに記憶された、ならびに/あるいは、図示され説明される動作を実施するために別様にアクセス可能な、コンピュータでコーディングされた命令(たとえば、コンピュータプログラム命令)によって特別に構成され得る。説明を簡単にする目的で、プロセス800は、コントローラ30によって実施されるものとして、かつコントローラ30の観点から説明される。たとえば、コンピューティングエンティティ10は、プロセス800のステップおよび/または動作のうちの少なくともいくつかを実施し、次いで、その結果をコントローラ30に提供し得る。たとえば、処理要素308は、プロセス800の1つまたは複数のステップおよび/または動作を実施するために、コンピュータプログラムコードおよび/または実行可能命令(たとえば、メモリ322、324に記憶された)を実行し得る。
【0099】
プロセス800は動作802において開始する。動作802において、初期量子プログラムが受信される。様々な実施形態において、コンピューティングエンティティ10上でユーザにより入力された、またはコンピューティングエンティティ10のユーザによって特定された可能性のある、コンピューティングエンティティ10のユーザによって提供される量子プログラムなどの初期量子プログラムが、コンピューティングエンティティ10からコントローラ30によって受信され得る。様々な実施形態において、コンピューティングエンティティ10のユーザは、コントローラ30に提供されコントローラ30によって受信されることになる、1つまたは複数のデータベースに記憶されている量子プログラム(
図1に図示されていない)を特定し得る。そのようなデータベースは、複数の量子プログラムを記憶し得る量子プログラムデータベースを含み得る。初期量子プログラムは、量子ビットの1つまたは複数に対して実施されるべき様々なゲート動作、測定動作、およびリセット動作を表し得る。初期量子プログラムは、特定のゲート動作が特定の望まれる順序に従って行われるように順序付けられ得ることが理解されるべきである。
【0100】
動作804において、初期量子プログラムの1つまたは複数の因果円錐が決定される。様々な実施形態において、測定され得る初期出力量子ビットの各々を各入力量子ビットとゲート動作がどのようにもたらし得るかについての決定は、初期入力量子ビット、ゲート動作、および測定動作に基づく。たとえば、初期出力量子ビットの各々のためのそれぞれの因果円錐が決定される。様々な実施形態において、因果円錐を決定するために、量子回路が有向非巡回グラフ(DAG)へと変換されてもよく、グラフの中の各ノードは、入力量子ビット、出力量子ビット、または量子動作(たとえば、ゲート、測定、またはリセット)である。DAGを使用して、出力量子ビットの因果円錐の中のゲートおよび入力量子ビットが、DAGの中の出力量子ビットノードの祖先ノードを見つけることによって決定され得る。様々な実施形態において、この決定は、動作が量子ビットに適用される順序に基づく。たとえば、各出力量子ビットに対して、量子プログラムを通じて逐次的に後方に、プログラムの最初に到達するまで、動作が最後の動作(たとえば、測定)から順序付けられ得る。様々な実施形態において、量子回路をDAGへと変換することが、量子回路コンパイラによって実施され得る。様々な実施形態において、祖先ノードの計算は、グラフ理論からの技法などを使用して、アルゴリズム動作を用いて実施され得る。
【0101】
様々な実施形態において、量子ビットは測定されるが後で再使用されてもよく、測定された量子ビットは測定量子ビットと呼ばれ得る。様々な実施形態において、測定量子ビットは、量子プログラムのすべてではないが一部分の出力であり得る。因果円錐の構造に基づいて、因果円錐の決定は、量子プログラムの各測定量子ビットに対してマッピングされ得る。様々な実施形態において、因果円錐構造(たとえば、それぞれの初期出力量子ビットに各々対応する複数の因果円錐)は、処理要素205および/または308によって量子プログラムを分析および/または処理することによって決定される。
【0102】
動作806において、初期量子プログラムは、最大限の量子ビットの再使用を促すために、測定の順序が最適化される。様々な実施形態において、測定量子ビットに関連する因果円錐について決定された因果円錐構造に基づいて、測定量子ビットは、再使用のために利用可能であると決定され得る。様々な実施形態において、量子ビットの再使用は、既知の基底状態の量子ビットとなるように極小物体を再初期化することによって行われてもよく、この既知の基底状態は、初期入力量子ビットセットの中の別の量子ビットを表し得る。最適化された量子プログラムは、測定量子ビットに対する測定動作を実施し、測定量子ビットを初期入力量子ビットセットの中の量子ビットの基底状態に再初期化し、初期入力量子ビットセットの中の量子ビットの数を減らすためにゲーティング動作(または他の動作)の順番を並べ替えるための命令に対応する、1つまたは複数のコマンドを含み得る。様々な例において、最適化は厳密法および/またはヒューリスティック法で実施され得る。
【0103】
初期量子プログラムは、本明細書で厳密法と呼ばれるものにより少なくとも一部基づいて最適化されてもよく、このとき、ある因果円錐または1つよりも多くの因果円錐が、量子プログラムの一部またはすべてを最適化する際に使用される。様々な実施形態において、厳密法は、最適化された量子プログラムにおいて使用されるおよび/または必要とされる量子ビットの総数を最小にすることによって(たとえば、量子ビットを具現化する極小物体を適宜再使用することによって)量子プログラムを最適化することに基づいて、実施され得る。ある例示的な実施形態では、厳密法は、最適化された量子プログラムにおいて任意の時点で使用されるおよび/または必要とされる量子ビットの数を最小にすることによって量子プログラムを最適化することに基づいて、実施され得る。様々な実施形態において、厳密法は、制約プログラミングモデルおよび/または二進線形整数プログラミングモデルなどの、1つまたは複数のモデルの実行を含み得る。様々な実施形態において、これらのモデルは、限定はされないが、domain simplification、constraint decomposition、lazy clause generation、large neighborhood search、バックトラッキング、ブランチング、および/またはcutting planesを含む、モデルを解決するための技法の組合せを実装する1つまたは複数のソルバとともに使用され得る。
【0104】
様々な実施形態において、厳密法は二進整数プログラミングモデルを含んでもよく、このとき、最適化されることになるモデル入力は0または1の値(すなわち、二進の整数)をとる。ある例では、二進整数プログラムモデルは制約プログラミングモデルであってもよく、このとき、最適化は二進の変数に対する制約を介したものであり得る。モデル入力の量ならびにモデル入力に対する制約は、発見された解が目的(たとえば、量子ビットの再使用)を最適化するように変化させられ得る。様々な実施形態において、最適化は、初期入力量子ビットセットの中の各量子ビットのみが特定の回数(たとえば、一度)測定されること、量子プログラムの実行に必要とされる量子ビットを追跡することなどの、指定された制約に従いながら、使用される量子ビットを最小にするような方式で、量子ビットが測定されるべき順序を決定し得る。様々な実施形態において、制約は、ブーリアンおよび/または不等式制約を含み得る。
【0105】
初期量子プログラムは、本明細書においてヒューリスティック法と呼ばれるものに少なくとも一部基づいて最適化され得る。様々な実施形態において、ヒューリスティック法は、貪欲法または修正貪欲法を含み、このとき、どこで出力状態が測定され量子ビットがリセットされ得るかを決定するために、1つまたは複数の因果円錐が使用され、その測定またはリセットはルールセットに基づいて実施され得る。いくつかの実施形態では、ルールセットは、貪欲法を用いて選ばれた第1の量子ビットにわたって最適化することなどの、1つまたは複数のアルゴリズムを使用して最適化するためのルールを含み得る。様々な実施形態において、貪欲法は、全体としての結果にかかわらず少数の段階で最適な選択を行うアルゴリズム戦略であり得る。追加または代替として、ルールセットは、それぞれの因果円錐に少なくとも一部基づいて、量子ビットが量子ビットリセットキューに追加される順序を選択するためのルールを含み得る。たとえば、ヒューリスティック法は、最適化された量子プログラムの中の量子ビットの総数を暗黙的に最小にする1つまたは複数のルールに基づいて、リセット順序を選び得る。
【0106】
様々な実施形態において、貪欲法は、因果円錐が最小である第1の出力量子ビットを測定することによって、量子プログラムを最適化し得る。次いで、後続の測定および他の出力量子ビットのリセットが適用される順序は、各ステップにおいて、以前にリセットされた出力量子ビットの因果円錐に存在しない最少の新しい量子ビットを追加する、測定されリセットされることになる出力量子ビットを選択することによって、決定され得る。
【0107】
様々な実施形態において、ヒューリスティックモデルは修正貪欲法を含んでもよく、このとき、第1の出力量子ビットは必ずしも因果円錐が最小のものではなく、むしろ、N個の量子ビットがある場合、N個の異なる出力量子ビットの順序が決定され、その各々において、異なる出力量子ビットが最初に測定されリセットされるものとして選ばれる。N個の異なる順序のうち、量子コンピュータ上で実行するために必要な量子ビットが最も少ない順序が決定される。
【0108】
厳密法とヒューリスティック法の両方が、量子プログラムまたは量子プログラムの一部分を最適化してもよく、これは、1つまたは複数の量子ビットが測定され、リセットされ、再使用される順序および/またはタイミングを決定することを含み得る。様々な実施形態において、厳密法は、最適な回答を生み出すことがあるが、大きい可能性のある計算オーバーヘッドを必要とすることがあり、これは、様々な実施形態において、法外な量のリソースおよび/または時間を必要とすることがある。様々な実施形態において、ヒューリスティック法は、はるかに小さい計算オーバーヘッドで準最適である可能性のある回答を生み出し得る。様々な実施形態において、量子プログラムのすべてまたは一部が、厳密法とヒューリスティック法の一方または両方を使用して最適化され得る。
【0109】
厳密法および/またはヒューリスティック法を使用した最適化は、量子プログラム全体または量子プログラムの一部分のいずれかを最適化し得る。様々な実施形態において、厳密法またはヒューリスティック法だけが使用され得る。様々な実施形態において、厳密法とヒューリスティック法の両方が使用されることがあり、方法は、並列に、順番に、または繰り返し行われてもよく、これは、初期量子プログラム全体が特定の方法によって最適化されているかどうか、または、初期量子プログラムの複数の部分が特定の方法によって最適化されているかどうかに依存してもよい。
【0110】
動作806において、最適化は最大限の量子ビットの再使用を促すためのものであるが、様々な実施形態において、最適化は、最大限ではない量子ビットの再使用のためのものであり得る。量子プログラムの実行には、限定はされないが、メモリ使用量、ノイズ生成、および加熱を含む、多くの要因が考慮されるべきである。量子ビットの再使用以外の要因に関連する要件または目標を最適化が満たすように、最適化は最大限ではない量子ビットの再使用のためのものであり得る。
【0111】
動作808において、最適化された量子プログラムが生成される。様々な実施形態において、初期量子プログラムは、プログラム中の測定およびリセットを使用して量子プログラムを書き換え、最適化された入力量子ビットセットのために必要とされる極小物体を減らすことなどによって、最適化された量子プログラムとして書き換えられ得る。他の実施形態では、最適化された量子プログラムは、最適化された量子プログラムを備える新しい量子プログラムを書くことなどによって、初期量子プログラムを書き換えることなく初期量子プログラムに基づいて生成され得る。最適化された量子プログラムは、量子プログラムデータベースなどのデータベースに保存され得る。
【0112】
動作810において、最適化された量子プログラムがコンパイルされる。様々な実施形態において、コントローラ30は、最適化された量子プログラムを、量子コンピュータ110によって実行されることになる量子ビット操作命令のセットへとコンパイルし得る。たとえば、そのようなコマンドは、量子ビットが量子コンピューティング環境内に物理的に再配置されること、ゲート動作が量子ビットに基づいて呼び出されること、量子ビットの測定が起こること、および/または既知の基底状態への量子ビットの再初期化を引き起こし得る。
【0113】
動作812において、最適化された量子プログラムが実行される。様々な実施形態において、コンパイルされ最適化された量子プログラムの量子ビット操作命令のセットの実行は、初期入力量子ビットセットよりも少なくてもよい、低減された数の入力量子ビットを伴う最適化された量子プログラムの実行が起こるようにする。様々な実施形態は、ゲート動作、量子ビットの測定、および量子ビットのリセットの実行を含む、量子コンピュータ110を使用したコントローラ30による実行を含んでもよく、これらは後で、最適化された量子プログラムの実行において再使用されてもよい。
【0114】
図4に関連する初期量子プログラム400が
図6の最適化された量子プログラム600に最適化され得るような例示的な実施形態では、量子プログラム400の動作は、
図6の視覚化において示される追加の動作を含むように修正される。この例では、最適化は、量子ビットq1の出力状態を測定して、量子ビットq1を量子ビットq4となるようにリセットするための命令を含む。コンピューティングエンティティ10のユーザは、初期量子プログラムをコンピューティングエンティティ10に入力し、それを量子コンピュータ110に送信し得る。量子コンピュータ10のコントローラ30は、初期量子プログラムを受信する。コントローラ30は、
図4の量子プログラム400などの初期量子プログラムに関連するq0、q1、q2、q3、およびq4という初期量子ビットセットを特定する。初期入力量子ビットセット(たとえば、q0、q1、q2、およびq3)に関連している初期出力量子ビット(たとえば、q1)などに対して、決定は1つまたは複数の因果円錐についてのものであり得る。初期量子プログラムおよび初期出力量子ビットセットの各量子ビットのための関連する初期入力量子ビットセットに基づいて、各出力量子ビットのための因果円錐が決定される。例示的な実施形態では、因果円錐に基づいて、初期量子プログラム400は、最適化された量子プログラム600を生み出すように最適化されてもよく、これは、とりわけ、初期量子プログラムを実行するための量子ビットとしての役割を果たすことが可能な極小物体の利用可能な数に基づいてもよい。上で説明されたように、この最適化された量子プログラム600は、量子ビットの測定とリセットを含み得る。最適化された量子プログラム600は次いで、量子コンピュータ110上で実行され得る実行可能命令へとコンパイルされ得る。
【0115】
前の例では、最適化された量子プログラムの最適化された入力量子ビットセットは、初期入力量子ビットセットのサブセットを含んでいた(たとえば、量子プログラム600の最適化された入力量子ビットセットは、動作620において量子ビットq1が量子ビットq4としてリセットされるので、最適化された入力量子ビットセットの中の入力量子ビットとして量子ビットq4を含まない)。
【0116】
様々な実施形態において、初期量子プログラムは、より量子ビットの少ない最適化された量子プログラムとして表されることが可能ではないことがある。そのような実施形態では、厳密法および/またはヒューリスティック法などを用いた最適化は、初期量子プログラムと同じ数の初期入力量子ビットを伴う最適化された量子プログラムを決定し得る。様々な実施形態において、最適化された量子プログラムはどのようなリセット動作も含まないことがある。
【0117】
図9は、
図8のステップ806において示されるものなどの、貪欲法を使用した本開示の少なくともいくつかの例示的な実施形態に従って初期量子プログラムを最適化するための例示的なプロセスの動作を示す。
図9は、プロセス800の間に実施され得る貪欲法のある実施形態の具体的な動作を図示するが、追加の動作または
図9に示される動作の反復が実施されてもよいことが理解される。
【0118】
図9の動作902において、コンピューティングエンティティ10および/またはコントローラ30は、リセット順序リストを初期化する。様々な実施形態において、リセット順序リストは測定順序を記憶してもよく、これは測定動作およびリセット動作の順序であり得る。
【0119】
動作904において、コンピューティングエンティティ10および/またはコントローラ30は、リセット順序リストの中にない出力量子ビット(たとえば、初期出力量子ビット)を決定し、出力量子ビットは、最少の新しい入力量子ビットを含む因果円錐に関連付けられる(たとえば、入力量子ビットは、リセット順序リストの中にすでにある他の出力量子ビットの因果円錐の中にない)。
【0120】
動作906において、コンピューティングエンティティ10および/またはコントローラ30は、決定された出力量子ビットをリセット順序リストに追加する。様々な実施形態において、出力量子ビットがリセット順序リストに追加された後、動作904が、リセット順序リストの中にない別の出力量子ビットを決定するために再び実施され得る。そのような反復は、出力量子ビットのすべて(たとえば、初期出力量子ビットセットの中の出力量子ビットのすべて)がリセット順序リストに追加されるまで続き得る。
【0121】
動作908において、リセット順序リストが返される。様々な実施形態において、リセット順序リストは、最大限の量子ビットの再使用を促すための動作の最適化された順序を含む。様々な実施形態において、リセット順序リストは、最適化された量子プログラムを生成するために使用され得る。
【0122】
ある例示的な実施形態では、コンピューティングエンティティ10および/またはコントローラ30は、リセットすべき1つまたは複数の量子ビットを決定するために厳密法またはヒューリスティック法を使用し、次いで、リセットすべき量子ビットの残りの順序を決定するために他の方法(たとえば、ヒューリスティック法または厳密法)を使用する。たとえば、ある例示的な実施形態では、ヒューリスティック法は、量子プログラムの最適化を完了するために厳密法によって探索されるべき解空間を減らすために使用され得る。
【0123】
動作908において、決定されたリセット順序リストが返され、最適化された量子プログラムが決定されたリセット順序リストに基づいて生成される。決定されたリセット順序リストおよび/または最適化された量子プログラムは次いで、最適化された量子プログラムを量子コンピュータ110による実行のためにコンパイルするために、コンパイラに渡され得る。
【0124】
様々な実施形態において、最適化された量子プログラムは、量子回路の双対に基づいて決定される。たとえば、
図10Aは、3つの状態準備動作1002(たとえば、1002A、1002B、1002C)、3つの測定動作1006(たとえば、1006A、1006B、1006C)、および3つの2量子ビットゲート1004(たとえば、1004A、1004B、1004C)を備える、例示的な量子回路1020を示す。
図10Bは、量子回路1020の双対1022を示す。一般に、量子回路の双対は、量子回路の測定動作を状態準備動作で置き換え、量子回路の状態準備動作を測定動作で置き換え、量子回路に対する時間の流れを逆にすることによって生成される。たとえば、量子回路1020の双対1022は、3つの状態準備動作1002、3つの測定動作1006、および3つの2量子ビットゲート1004を備える。しかしながら、量子回路1020の双対1022の3つの2量子ビットゲート1004は、量子回路1020と比較して反対の順序にある。特に、量子回路1020の双対1022は、量子回路1020と同じ数の量子ビットを必要とする。
【0125】
したがって、量子回路Cについて、量子回路の双対C*が決定され得る。量子回路の双対C*は、量子回路の最適化された双対R(C*)を決定および/または生成するために、上で説明されたのと同じプロセス(たとえば、
図8および/または
図9に示されるような)を使用して、量子回路の双対C*によって必要とされる、および/または使用される量子ビットの数を減らすように最適化され得る。一般に、量子回路の最適化された双対の双対R(C*)*は、最適化された量子回路R(C)と機能的に等価であり、これは、量子回路Cと機能的に等価となるように生成および/または決定される。
【0126】
量子回路Cについて、量子回路の双対C*は同じ数の量子ビットを使用する。たとえば、初期の量子ビット数Nを使用する量子回路Cについて、量子回路の双対C*も初期の量子ビット数Nを使用する。量子回路の最適化されたおよび/または量子ビットが減らされたバージョンR(C)は、量子ビットの第1の低減された数M
1<Nを必要とし、および/または使用する。量子回路の双対C*も、上で説明されたのと同じプロセス(たとえば、
図8および/または
図9に示されるような)を使用して、低減された数の量子ビットを使用するように最適化され得る。量子回路の双対の最適化されたおよび/または量子ビットが減らされたバージョンR(C*)は、量子ビットの第2の低減された数M
2<Nを必要とし、および/または使用する。様々なシナリオにおいて、M
1<M
2、M
1=M
2、またはM
1>M
2である。したがって、いくつかのシナリオでは、量子回路の最適化された双対の双対R(C*)*を実施することによって、量子回路を実施するのが有利である。
【0127】
図11は、最適化された量子プログラムを決定して実施するための、様々なプロセス、手順、動作などを示すフローチャートを提供する。具体的には、
図11は例示的なプロセス1100の動作を図示する。いくつかの実施形態では、プロセス1100は、図示され説明されるようなプロセスを実施するために、実行のために構成されたコンピュータプログラム製品の非一時的コンピュータ可読記憶媒体、たとえばコンピューティングエンティティ10またはコントローラ30の非一時的コンピュータ可読記憶媒体に記憶されている、コンピュータプログラムコードによって具現化される。代替または追加として、いくつかの実施形態では、プロセス1100は、コンピューティングエンティティ10、コントローラ30、または量子コンピュータ110のコンピューティングエンティティ(
図1に図示されない)などの、1つまたは複数の特別に構成されたコンピューティングデバイスによって実施され、これは単独であってもよく、または1つまたは複数の他のコンポーネント、デバイス、システムなどと通信していてもよい。これに関して、いくつかのそのような実施形態では、コンピューティングエンティティ10、コントローラ30、または量子コンピュータ110のコンピューティングエンティティは、たとえば、関連するメモリの中の、ならびに/または本明細書で図示および/もしくは説明される別のコンポーネントの中の、ならびに/または図示され説明されるような動作を実施するために別様にアクセス可能な、記憶されているコンピュータでコーディングされた命令(たとえば、コンピュータプログラム命令)によって特別に構成され得る。説明を簡単にする目的で、プロセス1100は、コントローラ30によって実施されるものとして、コントローラ30の観点から説明される。たとえば、コンピューティングエンティティ10は、プロセス1100のステップおよび/または動作のうちの少なくともいくつかを実施し、次いで、その結果をコントローラ30に提供し得る。たとえば、処理要素308は、プロセス1100の1つまたは複数のステップおよび/または動作を実施するために、コンピュータプログラムコードおよび/または実行可能命令(たとえば、メモリ322、324に記憶されている)を実行し得る。
【0128】
プロセス1100は動作1102において開始する。動作1102において、初期量子プログラムが受信される。様々な実施形態において、コンピューティングエンティティ10のユーザによって提供される量子プログラムなどの、初期量子プログラムがコンピューティングエンティティ10からコントローラ30によって受信されてもよく、これは、コンピューティングエンティティ10上でユーザによって入力され、またはコンピューティングエンティティ10のユーザによって特定されていてもよい。様々な実施形態において、コンピューティングエンティティ10のユーザは、コントローラ30に提供されコントローラ30によって受信されるべき、1つまたは複数のデータベース(
図1に図示されない)に記憶されている量子プログラムを特定し得る。そのようなデータベースは、複数の量子プログラムを記憶し得る、量子プログラムデータベースを含み得る。初期量子プログラムは、量子ビットの1つまたは複数に対して実施されるべき様々なゲート動作、測定動作、およびリセット動作を表し得る。初期量子プログラムは、特定のゲート動作が特定の望まれる順序に従って発生するように順序付けられ得ることが理解されるべきである。
【0129】
動作1104において、初期量子プログラムの双対が決定および/または生成される。たとえば、初期量子プログラムの双対は、初期量子プログラムの測定動作を状態準備動作で置き換え、初期量子プログラムの状態準備動作を測定動作で置き換え、初期量子プログラムの時間順序を逆にすることによって決定および/または生成される。
【0130】
動作1106Aにおいて、初期量子プログラムの1つまたは複数の因果円錐が決定される。様々な実施形態において、測定され得る初期出力量子ビットの各々を各入力量子ビットとゲート動作がどのようにもたらし得るかについての決定は、初期入力量子ビット、ゲート動作、および測定動作に基づく。たとえば、初期出力量子ビットの各々のためのそれぞれの因果円錐は、初期量子プログラムに基づいて決定される。様々な実施形態において、因果円錐を決定するために、量子回路が有向非巡回グラフ(DAG)へと変換されてもよく、グラフの中の各ノードは、入力量子ビット、出力量子ビット、または量子動作(たとえば、ゲート、測定、またはリセット)である。DAGを使用して、出力量子ビットの因果円錐の中のゲートおよび入力量子ビットが、DAGの中の出力量子ビットノードの祖先ノードを見つけることによって決定され得る。様々な実施形態において、この決定は、動作が初期量子回路に基づいて量子ビットに適用される順序に基づく。たとえば、各出力量子ビットに対して、量子プログラムを通じて逐次的に後方に、プログラムの最初に到達するまで、動作が最後の動作(たとえば、測定)から順序付けられ得る。様々な実施形態において、量子回路をDAGへと変換することが、量子回路コンパイラによって実施され得る。様々な実施形態において、祖先ノードの計算は、グラフ理論からの技法などを使用して、アルゴリズム動作を用いて実施され得る。
【0131】
様々な実施形態において、量子ビットは測定されるが後で再使用されてもよく、測定された量子ビットは測定量子ビットと呼ばれ得る。様々な実施形態において、測定量子ビットは、量子プログラムのすべてではないが一部分の出力であり得る。因果円錐の構造に基づいて、因果円錐の決定は、量子プログラムの各測定量子ビットに対してマッピングされ得る。様々な実施形態において、因果円錐構造(たとえば、それぞれの初期出力量子ビットに各々対応する複数の因果円錐)は、処理要素205および/または308によって量子プログラムを分析および/または処理することによって決定される。
【0132】
動作1106Bにおいて、初期量子プログラムの双対の1つまたは複数の因果円錐が決定される。様々な実施形態において、測定され得る初期出力量子ビットの各々を各入力量子ビットとゲート動作がどのようにもたらし得るかについての決定は、初期入力量子ビット、ゲート動作、および測定動作の双対表現に基づく。たとえば、初期出力量子ビットの各々のためのそれぞれの因果円錐は、初期量子プログラムの双対に基づいて決定される。様々な実施形態において、因果円錐を決定するために、量子回路は有向巡回グラフ(DAG)へと変換されてもよく、グラフの中の各ノードは、入力量子ビット、出力量子ビット、または量子動作(たとえば、ゲート、測定、またはリセット)である。DAGを使用して、出力量子ビットの因果円錐の中のゲートおよび入力量子ビットが、DAGの中の出力量子ビットノードの祖先ノードを見つけることによって決定され得る。様々な実施形態において、この決定は、動作が初期量子プログラムの双対の中の量子ビットに適用される順序に基づく。たとえば、各出力量子ビットに対して、初期量子プログラムの双対を通じて逐次的に後方に、量子プログラムの双対の最初に到達するまで、動作が最後の動作(たとえば、測定)から順序付けられ得る。様々な実施形態において、初期量子回路の双対をDAGへと変換することが、量子回路コンパイラによって実施され得る。様々な実施形態において、祖先ノードの計算は、グラフ理論からの技法などを使用して、アルゴリズム動作を用いて実施され得る。
【0133】
様々な実施形態において、量子ビットは測定されるが後で再使用されてもよく、測定された量子ビットは測定量子ビットと呼ばれ得る。様々な実施形態において、測定量子ビットは、量子プログラムのすべてではないが一部分の出力であり得る。因果円錐の構造に基づいて、因果円錐の決定は、量子プログラムの双対の各測定量子ビットに対してマッピングされ得る。様々な実施形態において、因果円錐構造(たとえば、それぞれの初期出力量子ビットに各々対応する複数の因果円錐)は、処理要素205および/または308によって量子プログラムの双対を分析および/または処理することによって決定される。
【0134】
動作1108Aにおいて、初期量子プログラムは、最大限の量子ビットの再使用を促すために、測定の順序が最適化される。様々な実施形態において、初期量子プログラムの測定量子ビットに関連する因果円錐のために決定される因果円錐構造に基づいて、測定量子ビットは、再使用のために利用可能であるものとして決定され得る。様々な実施形態において、量子ビットの再使用は、既知の基底状態の量子ビットとなるように極小物体を再初期化することによって行われてもよく、この既知の基底状態は、初期入力量子ビットセットの中の別の量子ビットを表し得る。最適化された量子プログラムは、測定量子ビットに対する測定動作を実施し、測定量子ビットを初期入力量子ビットセットの中の量子ビットの基底状態に再初期化し(たとえば、測定が実施された後で測定量子ビットに対して状態準備動作を実施する)、初期入力量子ビットセットの中の量子ビットの数を減らすためにゲーティング動作(または他の動作)の順番を並べ替えるための命令に対応する、1つまたは複数のコマンドを含み得る。様々な例において、最適化は厳密法および/またはヒューリスティック法を用いて実施され得る。
【0135】
初期量子プログラムは、本明細書で厳密法と呼ばれるものにより少なくとも一部基づいて最適化されてもよく、このとき、ある因果円錐または1つよりも多くの因果円錐が、量子プログラムの一部またはすべてを最適化する際に使用される。様々な実施形態において、厳密法は、最適化された量子プログラムにおいて使用されるおよび/または必要とされる量子ビットの総数を最小にすることによって(たとえば、量子ビットを具現化する極小物体を適宜再使用することによって)量子プログラムを最適化することに基づいて、実施され得る。ある例示的な実施形態では、厳密法は、最適化された量子プログラムにおいて任意の時点で使用されるおよび/または必要とされる量子ビットの数を最小にすることによって量子プログラムを最適化することに基づいて、実施され得る。様々な実施形態において、厳密法は、制約プログラミングモデルおよび/または二進線形整数プログラミングモデルなどの、1つまたは複数のモデルの実行を含み得る。様々な実施形態において、これらのモデルは、限定はされないが、domain simplification、constraint decomposition、lazy clause generation、large neighborhood search、バックトラッキング、ブランチング、および/またはcutting planesを含む、モデルを解決するための技法の組合せを実装する1つまたは複数のソルバとともに使用され得る。
【0136】
様々な実施形態において、厳密法は二進整数プログラミングモデルを含んでもよく、このとき、最適化されることになるモデル入力は0または1の値(すなわち、二進の整数)をとる。ある例では、二進整数プログラムモデルは制約プログラミングモデルであってもよく、このとき、最適化は二進の変数に対する制約を介したものであり得る。モデル入力の量ならびにモデル入力に対する制約は、発見された解が目的(たとえば、量子ビットの再使用)を最適化するように変化させられ得る。様々な実施形態において、最適化は、初期入力量子ビットセットの中の各量子ビットが特定の回数(たとえば、一度)だけ測定されること、量子プログラムの実行に必要とされる量子ビットを追跡することなどの、指定された制約に従いながら、使用される量子ビットを最小にするような方式で、量子ビットが測定されるべき順序を決定し得る。様々な実施形態において、制約は、ブーリアンおよび/または不等式制約を含み得る。
【0137】
初期量子プログラムは、本明細書においてヒューリスティック法と呼ばれるものに少なくとも一部基づいて最適化され得る。様々な実施形態において、ヒューリスティック法は、貪欲法または修正貪欲法を含み、このとき、どこで出力状態が測定され量子ビットがリセットされ得るかを決定するために、1つまたは複数の因果円錐が使用され、その測定またはリセットはルールセットに基づいて実施され得る。いくつかの実施形態では、ルールセットは、貪欲法を用いて選ばれた第1の量子ビットにわたって最適化することなどの、1つまたは複数のアルゴリズムを使用して最適化するためのルールを含み得る。様々な実施形態において、貪欲法は、全体としての結果にかかわらず少数の段階で最適な選択を行うアルゴリズム戦略であり得る。追加または代替として、ルールセットは、それぞれの因果円錐に少なくとも一部基づいて、量子ビットが量子ビットリセットキューに追加される順序を選択するためのルールを含み得る。たとえば、ヒューリスティック法は、最適化された量子プログラムの中の量子ビットの総数を暗黙的に最小にする1つまたは複数のルールに基づいて、リセット順序を選び得る。
【0138】
様々な実施形態において、貪欲法は、因果円錐が最小である第1の出力量子ビットを測定することによって、量子プログラムを最適化し得る。次いで、後続の測定および他の出力量子ビットのリセットが適用される順序は、各ステップにおいて、以前にリセットされた出力量子ビットの因果円錐に存在しない最少の新しい量子ビットを追加する、測定されリセットされることになる出力量子ビットを選択することによって、決定され得る。
【0139】
様々な実施形態において、ヒューリスティックモデルは修正貪欲法を含んでもよく、このとき、第1の出力量子ビットは必ずしも因果円錐が最小のものではなく、むしろ、N個の量子ビットがある場合、N個の異なる出力量子ビットの順序が決定され、その各々において、異なる出力量子ビットが最初に測定されリセットされるものとして選ばれる。N個の異なる順序のうち、量子コンピュータ上で実行するために必要な量子ビットが最も少ない順序が決定される。
【0140】
厳密法とヒューリスティック法の両方が、量子プログラムまたは量子プログラムの一部分を最適化してもよく、これは、1つまたは複数の量子ビットが測定され、リセットされ、再使用される順序および/またはタイミングを決定することを含み得る。様々な実施形態において、厳密法は、最適な回答を生み出すことがあるが、大きい可能性のある計算オーバーヘッドを必要とすることがあり、これは、様々な実施形態において、法外な量のリソースおよび/または時間を必要とすることがある。様々な実施形態において、ヒューリスティック法は、はるかに小さい計算オーバーヘッドで準最適である可能性のある回答を生み出し得る。様々な実施形態において、量子プログラムのすべてまたは一部が、厳密法とヒューリスティック法の一方または両方を使用して最適化され得る。
【0141】
厳密法および/またはヒューリスティック法を使用した最適化は、量子プログラム全体または量子プログラムの一部分のいずれかを最適化し得る。様々な実施形態において、厳密法またはヒューリスティック法だけが使用され得る。様々な実施形態において、厳密法とヒューリスティック法の両方が使用されることがあり、方法は、並列に、順番に、または繰り返し行われてもよく、これは、初期量子プログラム全体が特定の方法によって最適化されているかどうか、または、初期量子プログラムの複数の部分が特定の方法によって最適化されているかどうかに依存してもよい。
【0142】
動作1108Aにおいて、最適化は最大限の量子ビットの再使用を促すためのものであるが、様々な実施形態において、最適化は、最大限ではない量子ビットの再使用のためのものであり得る。量子プログラムの実行には、限定はされないが、メモリ使用量、ノイズ生成、および加熱を含む、多くの要因が考慮されるべきである。量子ビットの再使用以外の要因に関連する要件または目標を最適化が満たすように、最適化は最大限ではない量子ビットの再使用のためのものであり得る。
【0143】
動作1108Bにおいて、初期量子プログラムの双対は、最大限の量子ビットの再使用を促すために測定順序が最適化される。様々な実施形態において、初期量子プログラムの双対の測定量子ビットに関連する因果円錐のために決定される因果円錐構造に基づいて、測定量子ビットは、再使用のために利用可能であると決定され得る。最適化された双対量子プログラムは、測定量子ビットに対する測定動作を実施し、測定量子ビットを初期入力量子ビットセットの中の量子ビットの基底状態に再初期化し(たとえば、測定が実施された後に測定量子ビットに対して状態準備動作を実施し)、初期入力量子ビットセットの中の量子ビットの数を減らすためにゲーティング動作(または他の動作)の順番を並べ替えるための命令に対応する、1つまたは複数のコマンドを含み得る。様々な例において、最適化は厳密法および/またはヒューリスティック法を用いて実施され得る。たとえば、最適化された双対量子プログラムは、最適化された量子プログラムを初期量子プログラムから生成するために使用されるのと同じまたは似た技法を使用して、量子プログラムの双対から生成され得る。
【0144】
動作1108Bにおいて、最適化は最大限の量子ビットの再使用を促すためのものであるが、様々な実施形態において、最適化は、最大限ではない量子ビットの再使用のためのものであり得る。量子プログラムの実行には、限定はされないが、メモリ使用量、ノイズ生成、および加熱を含む、多くの要因が考慮されるべきである。量子ビットの再使用以外の要因に関連する要件または目標を最適化が満たすように、最適化は最大限ではない量子ビットの再使用のためのものであり得る。
【0145】
動作1110Aにおいて、最適化された量子プログラムが生成される。様々な実施形態において、初期量子プログラムは、プログラム中の測定およびリセットを使用して量子プログラムを書き換え、最適化された入力量子ビットセットのために必要とされる極小物体を減らすことなどによって、最適化された量子プログラムとして書き換えられ得る。他の実施形態では、最適化された量子プログラムは、最適化された量子プログラムを備える新しい量子プログラムを書くことなどによって、初期量子プログラムを書き換えることなく初期量子プログラムに基づいて生成され得る。最適化された量子プログラムは、量子プログラムデータベースなどのデータベースに保存され得る。様々な実施形態において、最適化された量子プログラムは、量子ビットの第1の低減された数M1<Nを必要とし、および/または使用し、Nは、初期量子プログラムおよび初期量子プログラムの双対によって必要とされる、ならびに/または使用される量子ビットの数である。
【0146】
動作1110Bにおいて、最適化された双対量子プログラムの双対が生成される。様々な実施形態において、初期量子プログラムは、プログラム中の測定およびリセットを使用して量子プログラムを書き換え、最適化された入力量子ビットセットのために必要とされる極小物体を減らすことなどによって、最適化された双対量子プログラムの双対として書き換えられ得る。他の実施形態では、最適化された双対量子プログラムの双対は、最適化された双対量子プログラムの双対を備える新しい量子プログラムを書くことなどによって、初期量子プログラムを書き換えることなく初期量子プログラムに基づいて生成され得る。最適化された双対量子プログラムの双対は、量子プログラムデータベースなどのデータベースに保存され得る。様々な実施形態において、最適化された双対量子プログラムの双対は、量子ビットの第2の低減された数M2<Nを必要とし、および/または使用し、Nは、初期量子プログラムおよび初期量子プログラムの双対によって必要とされる、ならびに/または使用される量子ビットの数である。
【0147】
様々な実施形態において、動作1106A、1108A、および1110Aは、動作1106B、1108B、および1110Bと並列または直列に実施される。
【0148】
動作1112において、最適化された量子プログラムまたは最適化された双対量子プログラムの双対の1つが選択される。たとえば、量子ビットの第1の低減された数M1および量子ビットの第2の低減された数M2は、どちらがより小さいかを決定するために比較される。ある例示的な実施形態では、量子ビットの第1の低減された数M1が量子ビットの第2の低減された数M2よりも小さいとき、最適化された量子プログラムが選択される。ある例示的な実施形態では、量子ビットの第2の低減された数M2が量子ビットの第1の低減された数M1よりも小さいとき、最適化された双対量子プログラムの双対が選択される。
【0149】
ある例示的な実施形態では、最適化された量子プログラムまたは最適化された双対量子プログラムの双対のうちの選択された1つのみが、量子プログラムデータベースに記憶される。ある例示的な実施形態では、動作1106A、1108A、および1110Aまたは動作1106B、1108B、および1110Bの1つのセットのみが実施され、動作1112はスキップされる。
【0150】
動作1114において、選択された量子プログラムがコンパイルされる。様々な実施形態において、コントローラ30は、選択された量子プログラムを、量子コンピュータ110によって実行されることになる量子ビット操作命令のセットへとコンパイルし得る。たとえば、そのようなコマンドは、量子ビットが量子コンピューティング環境内に物理的に再配置されること、ゲート動作が量子ビットに基づいて呼び出されること、量子ビットの測定が起こること、および/または既知の基底状態への量子ビットの再初期化を引き起こし得る。たとえば、最適化された量子プログラムまたは最適化された双対量子プログラムの双対のうちの選択された1つは、コンパイルされた量子プログラムを生成および/または提供するためにコンパイルされる。
【0151】
動作1116において、コンパイルされた量子プログラムが実行される。様々な実施形態において、コンパイルされた量子プログラムの量子ビット操作命令のセットの実行は、初期入力量子ビットセットよりも少なくてもよい、低減された数の入力量子ビット(たとえば、コンパイルされる量子プログラムがコンパイルされる最適化された量子プログラムであるときは量子ビットの第1の低減された数M1、またはコンパイルされるプログラムが最適化された双対量子プログラムのコンパイルされた双対であるときは量子ビットの第2の低減された数M2)を伴う最適化された量子プログラムまたは最適化された双対量子プログラムの双対のうちの選択された1つの実行が起こるようにする。様々な実施形態は、ゲート動作、量子ビットの測定、および量子ビットのリセットの実行を含む、量子コンピュータ110を使用したコントローラ30による実行を含んでもよく、これらは後で、コンパイルされた量子プログラムの実行において再使用されてもよい。
【0152】
結論
例示的なシステムが上で説明されたが、本明細書で説明される主題と動作の実装形態または実施形態は、本明細書で開示される構造およびそれらの構造的な均等物を含む、他のタイプのデジタル電子回路、コンピュータソフトウェアもしくはプログラム、ファームウェア、またはハードウェアにおいて、あるいは、それらの1つまたは複数の組合せにおいて実装され得る。
【0153】
本明細書で説明される主題の実施形態は、情報/データ処理装置による実行のために、またはその動作を制御するために、コンピュータ記憶媒体に符号化された1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、人工的に生成される伝播信号、たとえば、機械で生成される電気信号、光信号、または電磁信号に符号化されてもよく、これは、情報/データ処理装置による実行のための適切な受信機への送信のために情報/データを符号化するために生成される。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらの1つまたは複数の組合せであってもよく、あるいはそれらに含まれてもよい。その上、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体が、人工的に生成される伝播信号に符号化されるコンピュータプログラム命令の源または保存先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理コンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であってもよく、またはそれらに含まれてもよい。
【0154】
本明細書で説明される動作は、1つまたは複数のコンピュータ可読記憶デバイスに記憶されている、または他のソースから受信された情報/データに対して、情報/データ処理装置によって実施される動作として実施され得る。
【0155】
上で使用されるような「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、または、それらの複数もしくは組合せを含めて、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置はまた、ハードウェアに加えて、対象のコンピュータプログラムのための実行環境を作り出すコード、たとえば、プロセッサファームウェア、プロトコルスタック、リポジトリ管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらの1つまたは複数の組合せを作り出すコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0156】
コンピュータソフトウェアまたはコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイラ型言語またはインタプリタ型言語、宣言型言語または手続型言語を含む、任意の形式のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含めて、任意の形式で展開されてもよい。コンピュータプログラムは、ファイルシステムの中のファイルに対応することがあるが、そうである必要はない。コンピュータプログラムは、他のプログラムもしくは情報/データを保持するファイルの部分(たとえば、マークアップ言語ドキュメントに記憶される1つまたは複数のスクリプト)に、対象のプログラムに専用の単一のファイルに、または複数の協調したファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つの場所に位置する、もしくは複数の場所に分散しており通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。
【0157】
本明細書で説明されるプロセスおよび論理フローは、入力情報/データに対して作用して出力を生成することによって活動を実施するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実施され得る。コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリまたは両方から、命令および情報/データを受け取る。コンピュータの必須の要素は、命令に従って活動を実施するためのプロセッサ、および命令とデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、磁気光ディスク、もしくは光ディスクを含み、または、それらからの情報/データの受信、もしくはそれらへの情報/データの転送、もしくはそれらの両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。コンピュータプログラム命令および情報/データを記憶するのに適したデバイスは、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内部ハードディスクまたはリムーバブルディスク、磁気光ディスク、ならびにCD-ROMおよびDVD-ROMディスクを例として含む、すべての形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補助され、またはそれに組み込まれ得る。
【0158】
ユーザとの対話を実現するために、本明細書で説明される主題の実施形態は、情報/データをユーザに表示するための表示デバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびに、ユーザがそれにより入力をコンピュータに提供することができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有する、コンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を実現するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、発話入力、または触覚入力を含む任意の形式で受け取られてもよい。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信してそのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してウェブページをユーザのクライアントデバイスのウェブブラウザに送信することによって、ユーザと対話することができる。
【0159】
本明細書で説明される主題の実施形態は、バックエンドコンポーネントをたとえば情報/データサーバとして含む、またはミドルウェアコンポーネント、たとえばアプリケーションサーバを含む、またはフロントエンドコンポーネント、たとえばユーザが本明細書で説明される主題の実装形態とそれを通じて対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含む、または1つまたは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムのコンポーネントは、デジタル情報/データ通信の任意の形式または媒体、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0160】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般に、互いに離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行され、互いにクライアントとサーバの関係を有することにより生じる。いくつかの実施形態では、サーバは、情報/データ(たとえば、HTMLページ)をクライアントデバイスに送信する(たとえば、情報/データを表示し、クライアントデバイスと対話しているユーザからユーザ入力を受け取る目的で)。クライアントデバイスにおいて生成される情報/データ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
【0161】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、開示の範囲または特許請求され得るものに対する制約として見なされるべきではなく、むしろ、特定の開示の特定の実施形態に固有の特徴の説明であると見なされるべきである。別々の実施形態の文脈で本明細書において説明されるいくつかの特徴は、単一の実施形態において組合せでも実装され得る。逆に、単一の実施形態の文脈において説明される様々な特徴は、複数の実施形態において別々に、または任意の適切な部分組合せでも実装され得る。その上、複数の特徴がある組合せで機能するものとして上で説明されることがあり、そのように最初に特許請求されることすらあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては組合せから削除されてもよく、特許請求される組合せは、部分組合せまたは部分組合せの変形を対象としてもよい。
【0162】
同様に、動作は図面において特定の順序で図示されているが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序もしくは逐次的な順序で実施されること、またはすべての示される動作が実施されることが必要であるものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上で説明された実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムは一般に、単一のソフトウェア製品へと一緒に統合され、または複数のソフトウェア製品へとパッケージングされ得ることが理解されるべきである。
【0163】
したがって、主題の特定の実施形態が説明されてきた。他の実施形態が以下の特許請求の範囲内にある。場合によっては、請求項に記載される活動は、異なる順序で実施されてもよく、それでも望ましい結果を達成することができる。加えて、添付の図面において図示されるプロセスは、望ましい結果を達成するために、示される特定の順序または逐次的な順序を必ずしも必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0164】
10 コンピューティングエンティティ
20 ワイヤレスネットワーク
30 コントローラ
40 クライオスタットおよび/または真空チャンバー
50 電圧源
60 操作源
66 光経路
70 光収集システム
100 量子コンピューティングシステム
110 量子コンピュータ
115 量子プロセッサ
120 極小物体閉じ込め装置
205 処理要素
210 メモリ
215 ドライバコントローラ要素
220 通信インターフェース
225 A/Dコンバータ
304 送信機
306 受信機
308 処理要素
312 アンテナ
316 ディスプレイ
318 キーパッド
320 ネットワークインターフェース
322 揮発性メモリ
324 不揮発性メモリ
400 量子プログラム
600 量子プログラム
602 極小物体
604 極小物体
606 極小物体
608 極小物体
610 量子ビット
700 量子プログラム
702 極小物体
704 極小物体
706 量子ビット
708 極小物体
710 量子ビット
1002 状態準備動作
1004 2量子ビットゲート
1006 測定動作
1020 量子回路
【手続補正書】
【提出日】2024-07-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサと、コンピュータでコーディングされた命令が記憶された少なくとも1つのメモリとを備える装置であって、前記命令が、前記少なくとも1つのプロセッサで実行されると、前記装置に、
初期量子プログラムを受信することと、
前記初期量子プログラムから、初期出力量子ビットセットを特定することと、
前記初期量子プログラムおよび前記初期出力量子ビットセットに基づいて、前記初期量子プログラムに関連する1つまたは複数の因果円錐を決定することと、
前記初期量子プログラム、前記初期出力量子ビットセット、および前記1つまたは複数の因果円錐に基づいて、最適化された量子プログラムを生成することと
を行わせる、装置。
【請求項2】
前記装置が、
前記初期量子プログラムの双対を決定することと、
前記初期量子プログラムの前記双対に基づいて、前記初期量子プログラムの前記双対に関連する1つまたは複数の因果円錐を決定することと、
前記初期量子プログラムの前記双対、および前記初期量子プログラムの前記双対に関連する前記1つまたは複数の因果円錐に基づいて、最適化された双対量子プログラムを生成することと
を行うようにさらに構成される、請求項1に記載の装置。
【請求項3】
前記装置が、
前記最適化された量子プログラムに対応する量子ビットの第1の低減された数を決定することと、
前記最適化された双対量子プログラムに対応する量子ビットの第2の低減された数を決定することと、
量子ビットの前記第1の低減された数が量子ビットの前記第2の低減された数以下であるとき、前記最適化された量子プログラムをコンパイルして実行させることと、
量子ビットの前記第2の低減された数が量子ビットの前記第1の低減された数よりも小さいとき、前記最適化された双対量子プログラムの双対をコンパイルして実行させることと
を行うようにさらに構成される、請求項
2に記載の装置。
【国際調査報告】