この記事は理物Advent Calender 2022の23日目の記事です。
0. はじめに
はじめまして、量子班に所属している理物3年のROTAGILLAと申します。
早いもので、2022年も残すところあと一週間ほどとなりました。サッカーワールドカップで日本が活躍するなど記憶に残る出来事がたくさんあった一年でしたが、何と言っても(!?)今年のハイライトは「Bellの不等式の破れ」に対してノーベル物理学賞が与えられたことでしょう。関連分野の皆さんがとても喜んでいらっしゃったのが印象的でしたね。
そこでこの記事では今年のノーベル賞のテーマとなった「量子もつれ」に関連する話で僕が面白いと思ったテーマをまとめてみました。具体的には、量子計算で重要なCNOTゲートがKitaevのToric Codeと呼ばれるモデルでどのように実現されるかを説明する記事となっています。個人的に、このテーマを学ぶうちに量子もつれの「もつれたる所以」を垣間見た気がしたので、皆さんにも少し考えてもらえると嬉しいです。(8. Braidingのところに書いてある内容です)
最近は何かと量子コンピュータが話題ですし、物理以外の人や高校生の方にもひょっとすると読んでもらえるかもしれない(!)と調子に乗った結果、量子力学の解説までしてしまいました。ですから、線形代数が少し分かる人であれば、適宜注釈も参照しつつ最後まで読めるようになっているはずです。もちろん、物理の人にもある程度面白いと思ってもらえるように書いています。
丁寧な説明を心がけた分ちょっぴり長い記事になってしまったと思わざるを得ませんが、よろしければお付き合いください。
1. 量子力学
まず、最低限必要な量子力学の知識について少し書きます。物理の人や、すでによく知っている人はこの章と次の量子もつれの章は読み飛ばしていただいて構いません。今回必要となる量子力学の知識は、以下の3つです。
1)状態はHilbert空間\(\hspace{0.2em}\mathcal{H}\hspace{0.2em}\)1 (良い性質を持った複素線型空間と思えば大体OKです)の元\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)2で表される。特に、状態の線形和(重ねあわせ)もまた状態として許される。
2)状態\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)に対する測定とは、\(\mathcal{H}\hspace{0.2em}\)のある正規直交基底の組\(\hspace{0.2em}e_{i}\hspace{0.2em}\)に対して\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)を射影することあり、どの基底ベクトルに射影されるかは確率的に定まる。その確率は\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)を\(\hspace{0.2em}e_{i}\hspace{0.2em}\)で展開した係数3の絶対値の二乗に等しい。 特に、\(\ket{\psi}\hspace{0.2em}\)に対してエルミート演算子\(\hspace{0.2em}\hat{A}\hspace{0.2em}\)を測定する、とは\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)を\(\hspace{0.2em}\hat{A}\hspace{0.2em}\)の固有ベクトルで作った正規直交基底に射影することである。測定の結果\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)が\(\hspace{0.2em}e_{i}\hspace{0.2em}\)に射影されたならば、\(\hat{A}\hspace{0.2em}\)の固有ベクトル\(\hspace{0.2em}e_{i}\hspace{0.2em}\)に対応する固有値\(\hspace{0.2em}a_{i}\hspace{0.2em}\)が得られる。
3)二つの物理系をまとめて一つの物理系とみなす時はテンソル積を用いる。記号は\(\hspace{0.2em}\otimes\)。(独立な自由度を並列する記号だと思っておけばまぁ大体OKです)
以上で終わりです。(真面目に物理をやっている人が見たら怒りそうですが、そういう人はそもそもこの章は読まないでください)ただ、さすがにこれだけでは馴染みのない人はよくわからないと思うので、もう少し具体的に考えてみましょう。
<例1重ね合わせと射影測定> 2つの状態\(\hspace{0.2em}\ket{0}, \ket{1}\hspace{0.2em}\)をとる系(二準位系)があるとすると4、その線形和
重ね合わせ状態に対する測定結果は必ず\(\hspace{0.2em}\ket{0}, \ket{1}\hspace{0.2em}\)のどちらかの状態となるのですが、測定を行うまではそのどちらの状態でもなくそれらが「重ね合わさった」状態です。ただし、測定でどちらの状態を得るかの確率は定まっているので、同一の重ね合わせ状態をたくさん集めて測定を行うと、得られる結果について定量的な予言をすることができます。
また、一度測定を行なって\(\hspace{0.2em}\ket{0}\hspace{0.2em}\)や\(\hspace{0.2em}\ket{1}\hspace{0.2em}\)などの状態を得ると、以降は同じ\(\hspace{0.2em}\ket{0}, \ket{1}\hspace{0.2em}\)基底で測定をするかぎり、最初に得られたのと同じ結果が出続けます。これは重ね合わせ状態が測定によって破壊された、とも言えます。量子状態は測定の影響を容易に受けてしまうのです。
<例2 テンソル積> 系Aで\(\hspace{0.2em}\ket{0}\hspace{0.2em}\), 系Bで\(\hspace{0.2em}\ket{0}\hspace{0.2em}\)となっている状態をまとめて一つの系(合成系)とみなした状態は
この辺りの話は去年のPhysicsLabでmanmaru_hukuroくんがより詳しくこちらにまとめてくれています。
2. 量子もつれ
さて、重ねあわせ、射影測定、テンソル積について説明したところで、例2 テンソル積と順番を逆にして、テンソル積を取ってから均等重ね合わせを行った
まず、テンソル積の形に分解できないということは、AやBのそれぞれの地点で局所的に状態が\(\hspace{0.2em}\ket{\phi_{A}}\hspace{0.2em}\)などと決められないことを含意しています。これは物理状態が局所的であるはずだという素朴な直感に反します。東京にある量子状態がNewYorkにある量子状態と切っても切れない関係にあるなどということは想像しにくいでしょう?でも、そういう状態が原理的にはありうるわけで、もっと近い距離ならば実験的にも確認されています。
さらに、エンタングルした状態の非局所性を利用すると、通信と組み合わせた一連の操作を行うことでAに存在する量子状態を勝手な場所Bに作り出す「量子テレポーテーション」を行うことができることも知られています。情報を送ることさえできればトラックに乗せて輸送したりしなくても、量子状態を事実上輸送(テレポート)できるというわけです。こうした性質はあのアインシュタインにとっても受け入れがたかったようで、彼はこれに関連した議論で量子力学に反論しています。(EPRパラドックスとして有名な話です。ちなみに、量子テレポーテーションでは通信が必要であり、通信速度は光速を超えないので相対論には矛盾しません)
この辺りの話は去年のPhysicsLabの解説記事でmatsumotoくんがより詳しくこちらにまとめてくれています。
3. CNOTゲート
さて、上述したことをかなり雑にまとめると、量子もつれ状態はなんか凄そうなわけです。「うまい話には裏がある」といいますから、量子もつれはそう簡単には生成できないように思われます。実際、量子もつれを生成するには光子を使う方法などがあるようですが、実験的にはなかなか面倒なプロセスを経ているようです。また、量子状態は測定によって破壊されてしまうので、量子もつれ状態を保つのも一苦労です。
ところが、多くの量子情報関連の授業や教科書では、量子もつれを生成するプロセスは以下のように簡単な図で済まされています。
途中に出てきている黒丸と白丸の記号はCNOTゲートと呼ばれ、黒丸の量子ビットが\(\hspace{0.2em}\ket{0}\hspace{0.2em}\)状態なら何もせず、\(\ket{1}\hspace{0.2em}\)状態なら白丸の量子ビットを反転させる(=\(\hspace{0.2em}\ket{0}\hspace{0.2em}\)状態と\(\hspace{0.2em}\ket{1}\hspace{0.2em}\)状態を入れ替える)という操作です。実際、上の量子回路(左から右に読みます)を追っていくと、CNOTゲートをかける前の系の状態は
4. Toric Code
そこで登場するのがKitaevという物理学者によって提唱されたToric Codeと呼ばれる模型です。トーラス(またの名をドーナッツの表面といいます)の上に前述したような\(\hspace{0.2em}\ket{0}=(1,0), \hspace{3mm}\ket{1} =(0,1)\hspace{0.2em}\)の二つの準位をとる二準位系(以降、スピンと呼びます)をたくさん配置し、下図のように格子状に並べます。5
そして、以下のような演算子\(\hspace{0.2em}\hat{A}\)(Star演算子)と\(\hspace{0.2em}\hat{B}\)(Plaquette演算子)を考えます。
これらの演算子を使って、ハミルトニアンと呼ばれる以下のような演算子を考えます。
唐突に変な系を考え始めて戸惑っているかもしれませんが、実はこのセットアップの元ではCNOTゲートを面白い方法で実現することができます。そしてそのプロセスを見ると、「量子もつれ」が文字通りの意味で「もつれ」なのではないかという気がしてきます。その感覚(錯覚?)を皆さんと共有するのがこの記事の本題で、8.Braidingの章にかいてあります。ただし、その前に準備としてStabilizer形式というものについて長々と説明しなければなりません。
5. Stabilizer形式
今までは量子状態をヒルベルト空間の元\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)であらわしていましたが、これだと多自由度の系に対してテンソル積をたくさん並べて表現しなければならなくなり、不便です。そこでStabilizer形式では発想を転換して、演算子の組をまず定義し、その固有状態として状態を表現します。段階を追って概念に慣れていくことにしましょう。
5.1 群
まず、群について簡単に説明します。群というのは、かなり雑に言えば「まともな操作や作用の集合」のことです。(またしても真面目に勉強している人に怒られそうです、、、)具体的には、\(x,y\in G\hspace{0.2em}\)に対して演算\(\hspace{0.2em}*\hspace{0.2em}\)が定まり、
- \(\hspace{-0.2em}\hspace{0.2em}x*y\in G\hspace{0.2em}\)
- \(\hspace{-0.2em}\hspace{0.2em}(x*y)*z =x*(y*z)\hspace{0.2em}\)
- 単位元が存在
- 任意の\(\hspace{0.2em}x\in G\hspace{0.2em}\)に対して逆元が存在
という条件を満たす集合のことです。物理で出てくるようなまともな操作は多くの場合、なんらかの群をなします。
また、\(G\hspace{0.2em}\)の独立な元を何個かとってきて集合\(\hspace{0.2em}I\hspace{0.2em}\)を作り、Gの任意の元が\(\hspace{0.2em}I\hspace{0.2em}\)の元やその逆元同士の結合\(\hspace{0.2em}*\hspace{0.2em}\)を使って作れるとき、\(G\hspace{0.2em}\)は\(\hspace{0.2em}I\hspace{0.2em}\)によって生成されるといいます。そのような\(\hspace{0.2em}I\hspace{0.2em}\)のうち元の数が最小になるような作り方をしたときに\(\hspace{0.2em}I\hspace{0.2em}\)に含まれる元のことを、\(G\hspace{0.2em}\)の生成元と呼びます。もちろん、生成元自体は一意には定まりませんが、その数は定まります。線型空間の基底のようなものであると思えば大体OKです。
5.2 Pauli群
次に、Pauli群について説明します。恒等演算子IとPauli行列\(\hspace{0.2em}X,Y,Z\)(4. Toric codeで定義)の中から重複を許して\(\hspace{0.2em}n\hspace{0.2em}\)個の演算子(操作、作用ともいう)を選び、テンソル積を取ります。\(n=3\hspace{0.2em}\)のときはたとえば以下のようなやつがあります。
5.3 Stabilizer群、Stabilizer状態
ここでStabilizer群が定義できます。Pauli群\(\hspace{0.2em}\mathcal{P}_{n}\hspace{0.2em}\)の部分群6のうち、
の条件を満たすものをStabilizer群\(\hspace{0.2em}S_{n}\hspace{0.2em}\)と言い、その任意の要素\(\hspace{0.2em}S_{i}\hspace{0.2em}\)に対して
<例3 Bell状態のStabilizer群> \(\hspace{0.2em}n=2\hspace{0.2em}\)の時のStabilizer群の一つとして、\(S = \\{I, XX,ZZ, -YY \\}\hspace{0.2em}\)を考えましょう。これがStabilizer群の定義(可換かつ\(\hspace{0.2em}-I\notin S\hspace{0.2em}\))を満たしていることは、\(XZ=-iY=-ZX\hspace{0.2em}\)や
5.4 Stabilizer空間
続いて、Stabilizer空間とその次元についてざっくり説明します。 Stabilizer群を決めたとき、対応するStabilizer状態全体のなすHilbert空間のことを、Stabilizer空間といいます。前節まででみたように、Stabilizer群に含まれる演算子(Stabilizer)の固有値は+1か-1のどちらかです。従って、Stabilizer群に新しく独立なStabilizer \(\hspace{-0.2em}\hspace{0.2em}\hat{S}\hspace{-0.2em}\hspace{0.2em}\) を一つ追加するたびに、対応するStabilizer空間は\(\hspace{0.2em}\hat{S}\hspace{0.2em}\)の固有値が+1の部分と-1の部分の二つに分割されていきます。(下図)
\(\hspace{0.2em}n\hspace{0.2em}\)個のQubitからなる系のHilbert空間の次元は\(\hspace{0.2em}2^n\hspace{0.2em}\)ですから、生成元(独立なStabilizer)を\(\hspace{0.2em}k\hspace{0.2em}\)個定義すると空間は\(\hspace{0.2em}2^k\hspace{0.2em}\)個に分割されて、Stabilizer空間の次元は\(\hspace{0.2em}2^{n-k}\hspace{0.2em}\)になります。
5.5 Logical Operator, Logical Qubit
続いて、Logical OperatorとLogical Qubitについて説明します。"Logical"というのは「事実上の」とか「概念上の」といったような読み替えをすれば大体OKだと思います。例えば、通常の古典コンピュータでも"0"という内容を伝える際には冗長性を持たせて"00000"などと符号化したりしますよね。このとき、実際に送っている符号は"00000"ですが、これは概念としては"0"を表しています。量子計算でも同様にして、「Logicalな」Pauli行列や「Logicalな」Qubitを考えることができます。具体例で見てみましょう。
<例4 5量子ビットコード> 5個のQubitからなる系に対して4個のStabilizer
5.6 Stabilizer形式における測定
続いて、Stabilizer形式における測定について説明します。ここでは、あるStabilizer群を指定し、対応するStabilizer状態に対してPauli群の演算子\(\hspace{0.2em}P\hspace{0.2em}\)の測定を考えます。1.量子力学で説明したように、「演算子\(\hspace{0.2em}P\hspace{0.2em}\)の測定を行う」とは、\(P\hspace{0.2em}\)の固有状態で張られた正規直交基底に状態を射影することでした。従って、一般には測定の前後で状態が変化するわけです。実際、\(P\hspace{0.2em}\)の固有値+1の固有空間への射影を行う演算子を\(\hspace{0.2em}\mathcal{P}_{+}\hspace{0.2em}\), -1の固有空間に対して射影を行う演算子を\(\hspace{0.2em}\mathcal{P}_{-}\hspace{0.2em}\)とすると、
まず、\(S_{i}\hspace{0.2em}\)と\(\hspace{0.2em}P\hspace{0.2em}\)が交換する場合を考えます。このとき、
<例5 Bell状態の測定とStabilizer群> 例3 Bell状態のStabilizer群で見たように、Bell状態のStabilizer群は\(\hspace{0.2em}XX, ZZ\hspace{0.2em}\)によって生成されます。ここで、\(ZI\hspace{0.2em}\)の測定を行いましょう。(物理的には1つ目のqubitのスピンの\(\hspace{0.2em}z\hspace{0.2em}\)成分を測定するということです。)\(\hspace{0.2em}ZZ, ZI\hspace{0.2em}\)は交換するので、測定後も\(\hspace{0.2em}ZZ\hspace{0.2em}\)はStabilizerです。一方、\(XX, ZI\hspace{0.2em}\)は反交換するので\(\hspace{0.2em}XX\hspace{0.2em}\)はStabilizer群から消え、測定結果が+1ならば\(\hspace{0.2em}ZI\hspace{0.2em}\)が、測定結果が−1ならば\(\hspace{0.2em}-ZI\hspace{0.2em}\)が代わりにStabilizerになります。
5.7 CNOTゲート再考
最後に、Stabilizer形式の精神に則って、CNOTゲートが演算子\(\hspace{0.2em}X,Z\hspace{0.2em}\)などに対してどのように作用するかを考えてみましょう。それには、\(\ket{00}, \ket{01}, \ket{10}, \ket{11}\hspace{0.2em}\)に対する作用を具体的に考えれば良いです。たとえば、
6. Toric CodeのLogical Qubit(基本編)
さて、だいぶ長い準備でしたが、話をToric codeに戻しましょう。量子計算を実現するにあたっては、何はともあれLogical Qubitを用意しないと話が始まりません。実はToric Codeの基底状態(最低エネルギー状態)の張る空間は4次元であり、(物理の言葉で言えば4重縮退)、これを使うと2つ分のLogical Qubitを用意することができます。(2自由度\(\hspace{0.2em}\times\hspace{0.2em}\)2で4次元)
まず初めに、Toric CodeをStabilizer形式の視点から眺め直してみましょう。Star演算子\(\hspace{0.2em}\hat{A}\hspace{0.2em}\)とPlaquette演算子\(\hspace{0.2em}\hat{B}\hspace{0.2em}\)は
よって\(\hspace{0.2em}XZ=-ZX\hspace{0.2em}\)から出てくる符号反転が2回生じ、\(\hat{A}\hspace{0.2em}\)と\(\hspace{0.2em}\hat{B}\hspace{0.2em}\)は結局交換することがわかります。それに、\(\hat{A}, \hat{B}\hspace{0.2em}\)は全てエルミートです。以上より、Star演算子とPlaquette演算子によって生成される群はStabilizer群となることがわかります。
また、対応するStabilizer状態は、ハミルトニアン
では、Stabilizer空間の次元はどうなっているでしょうか。トーラスの一周には\(\hspace{0.2em}N\hspace{0.2em}\)個のスピンが配置されていると考えると、ヒルベルト空間の次元は\(\hspace{0.2em}2^{2N^2}\hspace{0.2em}\)となります。(格子1つあたりのスピンの数は2つ)また、生成元はStar演算子とPlaquette演算子です。ただし、全てのPlaquette演算子をかけるとそれぞれのスピンのところで2回\(\hspace{0.2em}Z\hspace{0.2em}\)がかかり
そこで、この4次元のStabilizer空間をPauli群に含まれる何らかの演算子\(\hspace{0.2em}\hat{O}\hspace{0.2em}\)の固有値で分類して分割することができれば、それぞれの状態をLogical Qubitとして使えるのではないかと考えられます。そのような分類が可能になるためには\(\hspace{0.2em}\hat{O}\hspace{0.2em}\)が任意のStabilizerと同じ基底で対角化できなければなりません。線形代数で学んだように、それは\(\hspace{0.2em}\hat{O}\hspace{0.2em}\)が任意のStabilizerと交換することと同値です。ただし、\(\hat{O}\hspace{0.2em}\)自体がStabilizer群の元だとStabilizer状態\(\hspace{0.2em}\ket{\psi}\hspace{0.2em}\)に対して自明な作用しかしない(\(\hat{O}\ket{\psi}=\ket{\psi}\hspace{0.2em}\))ので、結局
全てのStabilizerと交換し、かつそれらと独立なPauli群の演算子(=Logical Operator)を見つける
ことがLogical Qubitを構成するために必要であるとわかります。(名前の由来は後で納得できるはずです)そこで、以下のように連続したスピンについて\(\hspace{0.2em}Z\hspace{0.2em}\)のテンソル積をとった\(\hspace{0.2em}Z\hspace{0.2em}\)Chainを考えてみましょう。
右側のように境界がある開いたChainでは、端の点(バツ印のところ)でStar演算子と反交換してしまうため、条件を満たしません。一方、左側のような閉じたChainはStar演算子と0または2個のスピンを共有するので、全てのStar演算子やPlaquette演算子と交換します。しかし、図のように境界の内側のPlaquette演算子同士の積を考えると、内側では\(\hspace{0.2em}Z\hspace{0.2em}\)が2回かかって打ち消し合うため、
特に、下図のように一ヶ所で交わる\(\hspace{0.2em}X\hspace{0.2em}\)chainの\(\hspace{0.2em}X_{L}\hspace{0.2em}\)と\(\hspace{0.2em}Z\hspace{0.2em}\)Chainの\(\hspace{0.2em}Z_{L}\hspace{0.2em}\)の組み合わせを考えると、それらは互いに反交換し、LogicalなPauli\(\hspace{0.2em}X, Z\hspace{0.2em}\)になっていることがわかります。
これで準備が整ったので、具体的に1bitのLogical Qubitを構成してみましょう。\(Z_L\hspace{0.2em}\)と独立なもう一方の\(\hspace{0.2em}Z\hspace{0.2em}\)chain、\(\tilde{Z}_{L}\hspace{0.2em}\)の固有値が+1となるStabilizer空間の部分集合\(\hspace{0.2em}\mathcal{H}_{0}\hspace{0.2em}\)を考えましょう。5.4 Stabilizer空間の次元の議論と同様にして、\(\mathcal{H}_{0}\hspace{0.2em}\)の次元は2となります。そこで、\(\mathcal{H}_{0}\hspace{0.2em}\)に属する状態のうち、\(Z_{L}\hspace{0.2em}\)固有値が+1の状態を\(\hspace{0.2em}\ket{0}_{L}\hspace{0.2em}\)とし、固有値が-1の状態を\(\hspace{0.2em}\ket{1}_{L}\hspace{0.2em}\)とすれば、\(X_{L}, Z_{L}\hspace{0.2em}\)は反交換するので、例4 5量子ビットコードでの議論と同様にして\(\hspace{0.2em}X_{L}\ket{0}_{L}=\ket{1}_{L}, \hspace{3mm} X_{L}\ket{1}_{L}=\ket{0}_{L}\hspace{0.2em}\)となり、確かに1bitのLogical Qubitが構成できたことがわかります。
また、わざわざ上記のように考えなくとも、Logicalな\(\hspace{0.2em}X,Z\hspace{0.2em}\)のペアが二つ構成できたので、Stabilizer空間は\(\hspace{0.2em}\ket{00}_{L}, \ket{01}_{L}, \ket{10}_{L}, \ket{11}_{L}\hspace{0.2em}\)で張られる、と直接的に考えることもできます。
7. Toric CodeのLogical Qubit(発展編)
前節でみたように、Stabilizer空間の自由度を使ってLogical Qubitを作るというのが基本的なアイデアなのですが、測定を利用した方法もあります。(Defect Pair Logical Qubit)
まず、スピン\(\hspace{0.2em}i\hspace{0.2em}\)を\(\hspace{0.2em}x\hspace{0.2em}\)基底で測定します。これは演算子\(\hspace{0.2em}X_{i}\otimes I\otimes I\cdots \otimes I\hspace{0.2em}\)の測定であり、Pauli群の元の測定です。従って5.6 Stabilizer形式での測定の議論が使えて、\(i\hspace{0.2em}\)と辺を共有するPlaquette演算子はStabilizer群から消えます。(\(X,Z\hspace{0.2em}\)は反交換)つまり、測定後は
続いて、隣のスピン\(\hspace{0.2em}j\hspace{0.2em}\)についても同様に\(\hspace{0.2em}x\hspace{0.2em}\)基底で測定します。すると、
これを見ると、Defectを囲む\(\hspace{0.2em}Z\hspace{0.2em}\)Chainが境界を持たず(すなわち全てのStabilizerと交換し)、かつStabilizer群とは独立な演算子になっていることがわかります。すなわち、Stabilizer空間をこの\(\hspace{0.2em}Z\hspace{0.2em}\)chainの固有値によって分割することができるので、これはLogical Operatorであるということになります。ただし、\(B_{1}B_{3}\hspace{0.2em}\)もStabilizerなので、二つの\(\hspace{0.2em}Z\hspace{0.2em}\)chainのループは、一方のみが独立なLogical Operatorとなります。また、Defect同士を繋ぐ\(\hspace{0.2em}X\hspace{0.2em}\)Chainもまた同様に境界を持たず、かつStabilizer群に含まれていないので、Logical Operatorとなります。また、\(X,Z\hspace{0.2em}\)chainのLogical Operatorをそれぞれ\(\hspace{0.2em}X_{L}, Z_{L}\hspace{0.2em}\)とすると、これらの演算子は1点で交わるので反交換します。よって\(\hspace{0.2em}X_{L}, Z_{L}\hspace{0.2em}\)はLogicalなPauli\(\hspace{0.2em}X,Z\hspace{0.2em}\)とみなせます。こうして、Defectの導入によって新たに1bitのLogical Qubitを作れました。8
8. Braiding
さて、ようやく準備が整ったので、Toric CodeでCNOTゲートがどのように実現されるかみていきましょう。前節の話で\(\hspace{0.2em}X,Z\hspace{0.2em}\)を入れ替えても全く同じ話ができることに注意すると、下図のようにDefectを二種類作ることができます。青のDefectは\(\hspace{0.2em}X\hspace{0.2em}\)基底で測定してPlaquette演算子をStabilizerから除外したもので、赤のDefectは\(\hspace{0.2em}X\hspace{0.2em}\)基底で測定してStar演算子をStabilizerから除外したものです。
ここで、赤のDefectを取り囲むように、右の青のDefectを動かします(Braiding)。Defectを移動させるには、前節の図のstep2, step3に対応する操作をすればよいです。
まず初めに、Braidingによって\(\hspace{0.2em}X_{L}\hspace{0.2em}\)がどう変化するかを考えます。\(X_{L}\hspace{0.2em}\)の端は常にDefectにつながっているので、Defectの移動と共に\(\hspace{0.2em}X_{L}\hspace{0.2em}\)もまた一緒に伸び縮みすることに注意します。
ここで、図のように\(\hspace{0.2em}X\hspace{0.2em}\)のループ演算子を作用させます。これはStar演算子の積となっていてStabilizer群に含まれるので、Stabilizer状態に対しては恒等演算子とみなせます。\(X_{L}\hspace{0.2em}\)とループ演算子と被ったところでは\(\hspace{0.2em}X\hspace{0.2em}\)が2回かかるのでその部分は消えます。
同じ要領で\(\hspace{0.2em}X\hspace{0.2em}\)のループ演算子を次々に作用させることで、結局下図のような演算子が残ることになります。
すなわち、
次に、もう一方のDefect Pair Logical Qubitの間の\(\hspace{0.2em}Z_{L}\hspace{0.2em}\)がBraidingによってどう変化するかを考えます。 Defectによって\(\hspace{0.2em}Z_{L}\hspace{0.2em}\)は下図のように「押しのけられ」て変形します。
この場合もDefectを取り囲まない自明な\(\hspace{0.2em}Z\hspace{0.2em}\)のループ演算子を次々に作用させることで経路を変形できることに注意します。
すなわち、
その結果、
ここで一連の手順を観察すると、Defectの周りを取り囲んで「絡みつく」ことでループが一点に縮むことができなくなるということがCNOTゲートを実現するために重要だとわかります。そして、2.CNOTゲートで述べたように、CNOTゲートは量子もつれを生成する上で鍵となる操作なのでした。以上のことを踏まえると、量子もつれの「もつれたる所以」がなんとなく腑に落ちたような気がしませんか?
9. おわりに
今回はToric CodeでのCNOTゲートの実現というテーマに絞って記事を書きました。量子力学の初歩からBraidingまで到達しようとしたのは、今思えば無茶だったかもしれません。「ちょっぴり」どころか「うんざりするほど」長い記事になってしまいました。もしこの記事を読んでくれた高校生や駒場生の方がいたとしたら、物理は眠いと勘違いしないことを祈っています。(実際は目が覚めるほど面白いですよ)
また、「大体OK」を多用してラフに書いたため、ガチプロの方々に激怒されないかも心配です。この記事は僕自身の勉強を兼ねて書いたものですし、自分の証明や見方も所々に含まれています。そして、他の人にチェックしてもらったわけではありません。したがって、内容自体の間違いがある可能性は大いにあります。「大体OK」ではないところがあればぜひ教えてください。
ガリ勉、変人、宇宙人と思われてしまうので普段は一般向けに今回のように長々と話をすることは絶対にありませんが、アドカレを見に来てくださる皆さんに対してであれば、こういう「全力!物理100%」な記事もありかもしれないと思って書きました。最後まで読んでくださった方はありがとうございました。9
参考文献
-
Kitaev, A.and Laumann, C. "Topological phases and quantum computation" https://doi.org/10.48550/arXiv.0904.2771
-
藤井啓介氏のYouTube:https://www.youtube.com/@user-ib9gg7xd4r
-
藤井啓介「量子計算超入門」 https://quantphys.org/keisukefujii/tokyotopological.pdf
その他
記事の長さの都合等で今回は触れることができませんでしたが、Toric Codeや関連する話題には他にも色々と面白い性質があります。例えば、励起状態にはフェルミオンともボソンとも異なる統計性をもつ準粒子、エニオンが出現します。また、Toric Codeでは誤り訂正を巧妙なスキームで実現することができます。
自分自身まだまだ勉強し始めたところですので、これから色々と深く学んで行けたら良いなと思います。先輩、後輩、同輩問わずプロの皆さんは、ぜひ色々と教えてください!
脚注
-
Hilbert空間とは\(\hspace{0.2em}\mathbb{C}\hspace{0.2em}\)上の完備な計量線型空間のこと。「良い性質を持った線型空間」と思えばそんなに間違っていません。 ↩
-
この記号はディラックのブラケット記号と呼ばれ、量子状態を表すのによく用いられます。あまり気にしなくて良いです。 ↩
-
一般には複素数です ↩
-
厳密にはこの場合\(\hspace{0.2em}\ket{0},\ket{1}\hspace{0.2em}\)は直交している必要があります。 ↩
-
今回の目的のためにはただの平面でも構いませんが、平面の端でのStar演算子やPlaquette演算子の定義が面倒なのでトーラスにしました。 ↩
-
部分集合であって、それ自身演算について閉じていて群をなすもの
$$ [S_{i}, S_ {j}] = S_{i}S_{j}-S_{j}S_{i} = 0\hspace{3mm} for\hspace{3mm} all \hspace{3mm} S_{i}, S_ {j}\in S_{n}, \hspace{3mm} -I\notin S_{n} $$↩ -
パウリ群の演算子はエルミートか反エルミートです。反エルミートな演算子\(\hspace{0.2em}\hat{O}\hspace{0.2em}\)の固有値は純虚数となり、特にPauli群に含まれるものに関しては固有値は\(\hspace{0.2em}\pm i\hspace{0.2em}\)となります。よって、\(\hat{O}^{2}=-I\in S_{n}\hspace{0.2em}\)となります。これは定義に反し矛盾となるので、結局エルミートな演算子しかStabilizer群の中には存在しないことがわかります。 ↩
-
一連の操作でStabilizer群の生成元の数が1つ減っているので、Stabilizer空間の次元はdefectを作る前の2倍になっていることに気がつきます。これはLogical Qubitの数が1つ増えたことに対応しています。 ↩
-
今回の記事に書かれている内容の大部分は大阪大学の藤井啓介先生のyoutubeチャンネルやPDFを参考にしました。参考文献にリンクが記されています。大変分かりやすく面白い内容になっていると思うので、興味のある方はぜひご覧ください。藤井先生、ありがとうございました。 ↩