2D表面コードラティスには、いくつかのデータキュービットといくつかの測定キュービットがあります。2量子ビット計算を実行するとします。たとえば、量子ビット1のXゲートの後に、制御ビットとしての量子ビット1とターゲットビットとしての量子ビット2を持つCNOTゲートが続きます。
Q:この計算は、量子ビットの2D表面コード配列を備えた量子コンピューターでどのように実現されますか?つまり、どのゲートがどのキュビットに適用されていますか?
2D表面コードラティスには、いくつかのデータキュービットといくつかの測定キュービットがあります。2量子ビット計算を実行するとします。たとえば、量子ビット1のXゲートの後に、制御ビットとしての量子ビット1とターゲットビットとしての量子ビット2を持つCNOTゲートが続きます。
Q:この計算は、量子ビットの2D表面コード配列を備えた量子コンピューターでどのように実現されますか?つまり、どのゲートがどのキュビットに適用されていますか?
回答:
キュービットで論理演算を使用して、2キュービット演算で格子演算を使用する方法を説明します。
下の図では、すべての「ドット」はデータキュービットです。基本的な原理をより明確に示すために、測定キュービットは省略されています。測定キュビットは、スタビライザー測定を実行するときに存在し、スタビライザー測定にのみ関与するため、データキュビットで実行するスタビライザー測定など、データキュビットを使用して何を行うかについて説明します。
平面のフラグメントを使用してキュービットを格納できます。下の画像は、大きなラティスの一部としてエンコードされた4つのキュビットを示しています。黒い輪郭の明るいドットは、エンコードされたキュビットに関係しないキュビットであり、原則として、他の状態と絡み合っていない任意の状態にすることができます。
これらの各フラグメントでは、キュービットは、キュービット間で(理想的には、エラーがない場合)保持するスタビライザー関係によって定義されます。ここに示す種類の境界条件を持つ表面コードの場合、これらは境界の周りの3量子ビットXまたはZスタビライザーと、コードの「バルク」または本体内の4量子ビットXまたはZスタビライザーのいずれかです。これらの安定剤のパターンを以下に示します。Zスタビライザーとオーバーラップする各Xスタビライザーは2つのキュービットでオーバーラップするため、相互に交信することに注意してください。(画像サイズについてのお詫び:適切なサイズで表示することができません。)
これらのスタビライザーの規則性を使用することにより、表面のコードフラグメントが正方形である必要はないことに注意してください(または原則的には長方形です)。
これらのスタビライザーのすべてと通勤する(テンソル積)パウリ演算がいくつかあります。これらは、論理キュービットへのアクセスと変換の両方を行う方法を説明する論理 Pauli演算子を定義するために使用できます。たとえば、境界から境界までの任意の行にわたるZ演算子の積は、すべてのスタビライザーと交換され、論理Z演算子を表すために使用できます。境界から境界までの任意の列にわたるX演算子の積は、論理X演算子を表すために同様に取ることができます。
どの行またはどの列を使用するかは関係ありません。これは、Z演算子の2つの行またはX演算子の任意の2つの列の積がスタビライザーの積として生成できるため、エンコードされたキュビットの恒等演算(スタビライザージェネレーター自体が、エンコードされたキュビットの状態で恒等演算を実行する演算子であるため)。だから:あなたがXを適用したい場合エンコードされた量子ビットへの操作を、そうするための一つの方法は、このような論理的に適用することであろうXの実現により、操作をXを 2つの境界の間で達する列の各キュービットの演算子。**
論理演算子の観点からエンコードされたキュビットを考えることの1つの利点は、「論理測定」を実行する方法も決定できることです。つまり、コード内のキュービット(の一部)だけでなく、エンコードするデータの 論理テイクXの例えば、上記の演算子を:オペレータは、X ⊗ X ⊗···⊗ Xだけではなく、一体であるが、それはあなたができる観測可能であることを意味エルミート、測定。(もちろん、エラーを検出するために測定するコードのスタビライザーでは常に同じアイデアが使用されます。)これは、論理Xを実現するために必要測定測定を実行するだけで十分です。バツ観測可能。(エンコードされたキュービットで標準基底測定を実現したい場合、同じことが論理Zオブザーバブルにも当てはまります。以下に述べるすべての内容は、適切な変更を加えた論理Z測定にも適用できます。)
さて、論理Xオブザーバブルを測定することは、それらの単一キュービットX演算子を一度に1つずつ測定することとまったく同じではありません。オペレータX ⊗ X ⊗···⊗ X 2つのみの固有値を有し+1及び-1ので、各測定に対し、正確な演算子のみ、2つの結果を有することができることが測定N 2つのがあります量子ビットをN成果を。また、それらのシングルキュービットXのそれぞれを測定する演算子のしても、コード空間に留まることはありません。予測された測定後の状態で計算を行う場合、多くのクリーンアップ作業を実行して、適切にエンコードされた状態へのキュービット。
ただし、クリーンアップ作業を行うことを気にしない場合、または測定後の状態を操作する必要がない場合は、これらのシングルキュービット測定を実行して論理X測定をシミュレートし、+ 1と-1成果、そして彼らの製品を計算することは得るために何を測定した結果 X ⊗ X ⊗···⊗ Xなって、「だろう」。(より正確には:これらの単一量子ビットの全ての測定Xの事業者は、テンソル積演算子の測定から生じる状態乱さない何かであるX ⊗ X ⊗···⊗ Xを、およびそれらの単一量子ビットの測定値の積は、テンソル積演算子で一貫性のある結果を得なければならないであろうX ⊗ X ⊗···⊗ X私たちは「ドンあれば、我々はそれより複雑な測定をシミュレートするための方法としてこれを使用することができますので、副作用としてすべての量子ビットが共役基底状態に投影されることに注意してください。)
2量子ビット操作を実現するために、次のように公知の技術を使用することができる格子手術あなたの2D格子の「マージ」および「スプリット」の異なるパッチがそれらパッチ間の動作を実現するための請求項を、([参照arXivの:1111.4022を〕〔、arXivの:これらの操作の詳細については、[ 1612.07330 ]、または[ arXiv:1704.08670 ]を参照してください。開示:私はこれらの記事の3番目の記事の著者です。これは、平面格子の2つの隣接するパッチ間で(上記のように)適切な状態のキュービットの「関与しない」行と列、および以前は測定していなかったスタビライザーの測定メモリをより大きなシステムに拡張するため。(下の図では、|0⟩状態のコードセグメントとキュービットの列の間の水平方向の間隔は、効果のために誇張されています。)
これは、([参照非ユニタリ方法でシステムの論理演算子に影響を与える、最も頻繁に使用される:1612.07330 arXivのをコヒーレント実現するために、たとえば])X ⊗ XまたはZ ⊗ Zを実現するために構成することができ、測定をa CNOT操作[arXiv:1612.07330、図1(b)]:
このようにして、エンコードされたキュービットのペア間のCNOT操作を実現できます。***
* Letinsky [ arXiv:1808.02892 ]が示すように、スタビライザーの通常のパターンのわずかな変更を使用して、エンコードされたキュービットのより用途の広い平面表現を実現することもできます。
**実際には、(不完全な単一キュービット)操作を明示的に実行するのではなく、エンコードされたキュービットの参照フレームが慣例により修正しているフレームであり、更新(または「変換」)するという事実を利用します。パウリ演算を実現したいときの状態そのものではなく、参照フレーム。これは、エラー修正を行うためのスマートな方法でもあります。エラーを「修正」する必要がある「ミス」としてではなく、環境との相互作用の結果として、制御されていないが参照フレーム内の観測可能なドリフトとして扱うためです。次に、このドリフトが十分に遅いので、正確に追跡でき、計算を行うときに参照フレームの変化を補正できます。特に追跡エラーのコンテキストでは、パウリフレーム、およびその仕事は、システムを通常はエラーのないエラー修正コードによって記述される状態にするために必要とされるパウリ操作の観点から参照フレームを記述することです。
***多くの著者は、この構造を格子状手術のポイントとして説明します。これは確かに、元の記事[ arXiv:1111.4022 ] で説明されている元の具体的なアプリケーションです。原則として、マージとスプリットをCNOTのコンポーネントだけでなく、それ自体でプリミティブな操作として扱い、より汎用的な(特に回路のような)変換を使用することにより、スプリットとマージを使用してより複雑な操作を実行できます。 —これは本質的に、Dom Horsman [ arXiv:1704.08670 ] に関する私の記事の要点です。これにより、ZX計算(量子計算のややヘテロドックス表現)が表面コードメモリに直接実用的になる可能性が開かれます。
<img src="https://i.stack.imgur.com/H94nX.png" width="300"/>
表面コードにキュービットを格納する1つの方法は、「穴」のペアとしてです。穴とは、エラーが発生しているかどうかを検出するために使用されるスタビライザー測定を実行する代わりに、何も実行しない表面のチャンクです。
穴の境界がX計測キュビットに沿って移動するか、Z計測キュビットに沿って移動するかに応じて、2つの異なるタイプの穴があります。CNOTは、あるタイプの穴を他のタイプの穴の周りで循環させることによって実行されます。
図式的に言えば、次のようになります。
(b)の図では、時間が左から右に移動しています。各バーは、時間の経過に伴う穴の位置に対応しています。各キュービットは、対応する白いバーのペアの間に保存されます。黒いバーは、CNOTを実行するために使用されている穴を表しています。中央のキュービット(含まれていない)を回避し、下部のキュービット(ターゲット)のバーの1つを囲み、上部のキュービット(コントロール)に導入された「クロスバー」を一周します。それが表面コードCNOTのようなものです。
情報を表面コードに格納する方法は複数あります。使用する方法に応じて、ゲートを行う方法は複数あります。したがって、この問題については言うことがたくさんあります!
メソッドの多様性にもかかわらず、実際的にはすべて同じことになります。コードによってゲートをフォールトトレラントに保つには、クリフォードゲート(X、Z、H、CNOTなど)しか実行できません、S)。他のゲートの場合、魔法状態の蒸留など、フォールトトレラントになるための追加のメカニズムを呼び出す必要があります。
しかし、あなたの例ではクリフォード以外のものを要求しませんでした。XとCNOTが欲しかっただけです。それで物事が簡単になります。
具体的な例として、以下に示す17キュービットの表面コードを考えてみましょう(この記事で説明したように、筆者です)。
あなたがからに得ることができることをすべての状態で 安定剤を適用することによって。
これらの状態の観点からトランスバーサルCNOTの動作を考えると、論理キュービットでCNOTとしてどのように機能するかを理解できるはずです。