量子コンピューティングでのディラック表記
ディラック表記 は、量子状態と演算を記述するための簡潔で強力な方法です。 これは、1930年代に表記を開発した物理学者ポール・ディラックにちなんだ名前です。 ディラック表記は、量子状態、量子演算、および量子測定を記述するために、量子コンピューティングで使用されます。
この記事では、Dirac 表記について説明し、それを使用して量子の状態と演算を記述する方法について説明します。
ディラック表記のベクトル
Dirac 表記には、行ベクトルに対応する bra ベクターと、列ベクトルに対応する ket ベクターの 2 種類があります。 そのため、ディラック表記はブラケット 表記とも呼ばれます。
$\psi$ が列ベクトルの場合は、$\ket{\psi}$として Dirac 表記で記述できます。ここで、$\ket{\cdot}$ は、それが ket ベクターであることを示します。
同様に、行ベクトル $\psi^\dagger$ は、$\bra{\psi}$として表され、これは ブラ ベクトルである。 つまり、$\psi^\dagger$ は、$\psi$ の転置の要素に対して入力方向の複素共役を適用することによって取得されます。 bra-ket 記法は、$\braket{\psi|\psi}$ がベクトル $\psi$ とそれ自体の内積であることを直接意味し、これは定義上 $1$ になります。
一般的には、$\psi$ と $\phi$ が量子状態ベクトルである場合、それらの内積は $\braket{\phi|\psi}$ です。 この内積は、状態 $\ket{\psi}$ の測定が $\ket{\phi}$ になる確率が $|\braket{\phi|\psi}|^2$ であることを意味します。
計算基準の状態 $0$ と $1$ はそれぞれ、$\begin{bmatrix} 1 \ 0 \end{bmatrix}=\ket{{0}$ と $\begin{bmatrix} 0 \ 1 \end{bmatrix}=\ket{1}$として表されます。
例: ディラックの記法を使用してアダマール演算を表す
Drac 表記を使用して、H$$Hadmard ゲートを量子状態 $\ket{0}$$\ket{1}$ に適用してみましょう。
$$\frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 1 \end{bmatrix}=H\ket{{0}=\ket{+}$$
$$\frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ -1 \end{bmatrix}=H\ket{{1}=\ket{-}$$
結果として得られる状態は、ブロッホ球上の $+x$ 方向と $-x$ 方向の単位ベクトルに対応します。 これらの状態は、ディラックの記法を使用して、$\ket{0}$ と $\ket{1}$ の合計として拡張することもできます。
$$\ket{+}=\frac{{1}{\sqrt{2}}(\ket{0} + \ket{1}) $$
$$\ket{-}=\frac{1}{\sqrt{{2}}(\ket{0} - \ket{1}) $$
計算基底ベクトル
すべての量子状態は常に計算基底ベクトルの合計として表現でき、そのような合計はディラック表記を使用して簡単に表現できます。 その逆も成り立ち、状態 $\ket{+}$ と $\ket{-}$ も量子状態の基底を形成します。 これは次の事実から確認できます。
$$\ket{0}=\frac{1}{\sqrt{2}}(\ket{+} + \ket{-}) $$
$$\ket{1}=\frac{1}{\sqrt{2}}(\ket{+} - \ket{-}) $$
ディラックの記法の例として、braket $\braket{0 | 1}$ を考えます。これは、$0$ と $1$ の間の内積です。 これは次のように記述できます。
$$\braket{0 | 1}=\begin{bmatrix} 1 &0 \end{bmatrix}\begin{bmatrix}0\\ 1\end{bmatrix}=0。 $$
この例では、$\ket{{0}$ と $\ket{{1}$ は直交ベクトルであり、$\braket{0 | 1}=\braket{1 | 0}=0$ を意味します。 また、定義により $\braket{0 | 0}=\braket{1 | 1}=1$ です。これは、2 つの計算基底ベクトルは "正規直交" と呼ぶこともできることを意味します。
これらの正規体プロパティは、次の例で使用します。 $\ket{\psi}={\frac{3}{5}}\ket{{1} + {\frac{{4}{5}}\ket{0}$ という状態がある場合、$\braket{1 | 0}=0$ であるため、測定が $1$ になる確率は次のようになります
$$\big|\braket{1 |\psi}\big|^2=\left|\frac{{3}{5}\braket{1 | 1} +\frac{{4}{5}\braket{1 | 0}\right|^2=\frac{{9}{{25}. $$
テンソル積の表記
ディラック表記は、テンソル製品を表現するのに非常に便利です。 2 つの相関のない量子レジスタによって記述される状態ベクトルは、2 つの状態ベクトルのテンソル積であるため、テンソル積は量子コンピューティングで重要です。
$\phi$ と $\psi$ の 2 つの量子状態ベクトルのテンソル積 $\psi\otimes\phi$ は、$\ket{\psi}\otimes\ket{\phi}$としてディラック表記で記述されます。 慣例により、テンソル製品を $\ket{\psi}\ket{\phi}=\ket{\psi\phi}$として記述することもできます。
たとえば、2 つの量子ビットがゼロ状態に初期化された状態は $\ket{{0}\otimes\ket{0}=\ket{0}\ket{0}=\ket{00}$。
例: ディラックの記法で重ね合わせを記述する
Dirac 表記を使用して量子状態を記述する方法のもう 1 つの例として、長さ n のすべての可能なビット文字列に対して$仮定である量子状態を書き込む次の同等の方法を検討してください。$
$$ H^{\otimes n}\ket{0}=\frac{1}{2^{n/2}}\sum_{j=0}^{2^n-1}\ket{j}=\ket{+}^{\otimes n}. $$
ここでは、$n$ ビットについて $0{ から }2^$n$-1$ まで合計するのはなぜか、不思議に思うかもしれません。 まず、$n{ ビットによって表現できる異なる構成が }$2^$n$ 個であることに注意してください。 これは、1 ビットでは $2$ つの値を表現でき、2 ビットでは $4$ つの値を表現できることに注意すればわかるはずです。 一般に、これは可能性のある異なるビット文字列は $2^n$ 個ですが、それらのいずれかでエンコードされる最大値は $1\cdots 1=2^n-1$ であるため、それが合計の上限になることを意味します。 ちなみに、この例では、$\ket{}^{\otimes n}=\ket{}$$\ket{{0} に似ている {\otimes+}^= n\ket{+{0}$ は使用しませんでした。 この表記規則は、すべての量子ビットがゼロに初期化された計算基準の状態用に予約されています。 この場合、このような規則は賢明ですが、量子コンピューティングの文献では採用されていません。
ディラックの記法を使用して線形性を表現する
ディラックの記法のもう 1 つの特徴は、それが線形であるということです。 たとえば、2 つの複素数 $\alpha$ と $\beta$ について、次のように記述できます
$$\ket{\psi}\otimes ( \alpha\ket{\phi} + \beta\ket{\chi})=\alpha\ket{\psi}\ket{\phi} + \beta\ket{\psi}\ket{\chi}.$$
つまり、状態ベクトルの間でのテンソル積の計算が通常の乗算と同じに見えるように、ディラックの記法にテンソル積の表記を分散させることができます。
bra ベクトルは、ket ベクトルと同様の規則に従います。 たとえば、ベクトル $\bra{\psi}\bra{\phi}$ は、状態ベクトル $\psi^\dagger\otimes\phi^\dagger=(\psi\otimes\phi)^\dagger$ と同等です。 ket ベクトル $\ket{\psi}$ が $\alpha\ket{0} + \beta\ket{1}$ である場合、ベクトルの bra ベクトル バージョンは $\bra{\psi}=\ket{\psi}^\dagger= (\bra{{0}\alpha^* +\bra{1}\beta^*)$ となります。
たとえば、状態 $\ket{\psi}=\frac{3}{5}\ket{{1} + \frac{4}{5}\ket{0}$ の測定の確率を、状態を $\ket{+}$ または $\ket{{-}$ として測定する量子プログラムを使用して計算したいとします。 この場合、状態は $\ket{-}$ であるとデバイスが出力する確率は、次のようになります
$$|\braket{- |\psi}|^2=\left|\frac{{1}{\sqrt{{2}}(\bra{0} - \bra{{1})(\frac{3}{5}\ket{{1} + \frac{{4}{5}\ket{0}) \right|^2=\left|-\frac{3}{5\sqrt{{2}} + \frac{{4}{5\sqrt{2}}\right|^2=\frac{{1}{{50}.$$
確率の計算にマイナスの符号が出現するのは量子干渉の結果であり、これは古典的コンピューティングより量子コンピューティングが優れているメカニズムの 1 つです。
ketbra または外積
ディラックの記法に関して説明する最後の項目は、ketbra または外積です。 外側の積は、ディラック表記内で $\ket{\psi}\bra{\phi}$として表されます。 量子状態ベクトル $\ket{\psi} と \bra{\phi} の外積は、行列乗算では =\psi\phi\dagger$$\psi$^$\phi$ と定義されます。 この表記の最も単純で、おそらく最も一般的な例は、次にようなものです。
$$\ket{0}\bra{{0}=\begin{bmatrix}1\\ 0 \end{bmatrix}\begin{bmatrix}1&0 \end{bmatrix}=\begin{bmatrix}1 &0\\ 0 &0\end{bmatrix}\qquad\ket{1}\bra{1}=\begin{bmatrix}0\\ 1 \end{bmatrix}\begin{bmatrix}0&1 \end{bmatrix}=\begin{bmatrix}0 &0\\ 0 &1\end{bmatrix}。 $$
ketbra は、量子状態を固定値に射影するため、プロジェクターと呼ばれることがよくあります。 これらの演算は単位的ではないため (ベクトルのノルムさえ維持されません)、量子コンピューターでプロジェクターを決定論的に適用できません。 しかし、測定による量子状態へのアクションの記述では、プロジェクターは素晴らしい仕事をします。 たとえば、状態 $\ket{\psi}$ が $0$ と測定される場合、測定の結果として状態で行われる変換は次のようになります
$$\ket{\psi}\rightarrow \frac{(\ket{{0}\bra{{0})\ket{\psi}}{|\braket{0 |\psi}|}=\ket{{0},$$
あなたは状態を測定し、それが $\ket{0}$であることが判明した場合は予想通り。 繰り返しますが、このようなプロジェクターを量子コンピューターの状態に決定論的に適用することはできません。 代わりに、せいぜい、何らかの固定の確率で結果 $\ket{0}$ を示すようにランダムに適用できるだけです。 このような測定成功の確率は、その状態における量子プロジェクターの期待値として記述できます
$$\bra{\psi} (\ket{0}\bra{0})\ket{\psi}=|\braket{\psi| 0}|^2, $$
これは、測定プロセスを表現する新しい方法がプロジェクターによって提供されることを示しています。
代わりに、複数量子ビット状態の最初の量子ビットを $1$ として測定する場合は、プロジェクターとディラックの記法を使用して、このプロセスを次のように簡単に記述することもできます。
$$ P(\text{最初の量子ビット = 1})=\bra{\psi}\left(\ket{{1}\bra{{1}\otimes \mathbf{\mathbf{1}^{\otimes n-1}\right) \ket{\psi}。 $$
ここで、ID 行列はディラックの記法で簡単に次のように記述できます。
$$\mathbb{I}=\ket{{0}\bra{0}+\ket{{1}\bra{1}=\begin{bmatrix}1&0\\ 0&1 \end{bmatrix}。 $$
2 量子ビットの場合は、次のようにプロジェクターを拡張できます。
$$\ket{1}\bra{1}\otimes\mathbb{I}=\ket{{1}\bra{1}\otimes (\ket{0}\bra{0}+ \ket{1}\bra{{1})=\ket{10}\bra{{10} + \ket{{11}\bra{{11}。 $$
これは、列ベクトル表記を使用する複数量子ビットの確率の測定値についての説明と一致します。
$$ P(\text{first qubit = 1})=\psi^\dagger (e_{10}e_{10}^\dagger + e_{{11}e_{{11}^\dagger)\psi=|e_{{10}^\dagger\psi|^2 + |e_{11}^\dagger\psi|^2, $$
これは、複数量子ビットの測定に関する議論と一致します。 ただし、この結果を複数量子ビットのケースに一般化することは、列ベクトル表記よりディラックの記法を使用する方が少し簡単であり、前の処理とまったく同じです。
密度演算子
ディラックの記法を使用して表すもう 1 つの便利な演算子は、"密度演算子" です。これは、"状態演算子" とも呼ばれます。 量子状態ベクトルとして、密度演算子はシステムの量子状態を表します。 量子状態ベクトルは pure 状態のみを表すことができますが密度演算子は 混在状態を表すこともできます。
一般的に、次の条件が満たされた場合、特定のマトリックス $\rho$ は有効な密度演算子です。
- $\rho$ は、複素数の行列です。
- $\rho = \rho^{\dagger}$ (つまり、$\rho$ はエルミートです)
- $\rho$のすべての固有値$p$は負ではない
- $\rho$ のすべての固有値の合計は 1 になります
これらの条件によって、$\rho$ が固有値として見なされることが保証されます。 量子状態ベクトル $\ket{\psi}$ の密度演算子は、$\rho =\sum_i p_i \ket{\psi_i}\bra{\psi_i}$ の形式を取り、$\rho$ の固有値分解です。$\rho$ は、アンサンブル $\rho ={\ket{\psi_i}\text{with probability} p_i }$ を記述します。
純粋な量子状態は、1 つの ket ベクトルまたは波動関数によって特徴付けられたものであり、他の量子状態の統計的混合状態 (または "凸結合") として記述することはできません。 混合量子状態は、純粋な状態の統計集合です。
ブロッホ球では、純粋な状態は球の表面上の点で表され、混合状態は内部点で表されます。 1 つの量子ビットの混合状態は、球の中心によって対称性によって表されます。 状態の純度は、球の表面に近い度合いとして視覚化できます。
状態をベクトルではなく行列として表すというこの概念は、確率計算を表す便利な方法を提供し、同じ形式内で統計的な不確実性と量子の不確実性の両方を記述できるため、しばしば便利です。
密度演算子 $\rho$ は、次の場合にのみ、純粋な状態を表します。
- $\rho$ は、状態ベクトルの外積 $\rho=\ket{\psi}\bra{\psi}$ として記述できます。
- $\rho =\rho^2$
- $tr(\rho^2)=1$
指定された密度演算子 $\rho$ が純粋にどれだけ近いかを確認するために、$\rho^2$ のトレース (対角線要素の合計) を見ることができます。 密度演算子は、$tr(\rho ^{2})=1$ の場合に限り、純粋な状態を表します。
量子状態に相当する Q# ゲート シーケンス
量子表記と Q# プログラミング言語についての最後のポイント: このドキュメントの冒頭で、量子状態は量子コンピューティングにおける情報の基本的なオブジェクトであることを説明しました。 Q# には量子状態の概念がないということに驚かれるかもしれません。 代わりに、すべての状態は、それらを準備するために使用される操作によってのみ記述されます。 前の例は、このことをよく示しています。 レジスタ内のすべての量子ビット文字列に対して均一の重ね合わせを表現するのではなく、結果を $H^{\otimes n}\ket{0}$ として表すことができます。 この指数関数的に短い状態の記述は、従来からそれについて考えられていた利点があるだけでなく、アルゴリズムを実装するためにソフトウェア スタックを通じて伝達される必要がある操作を簡潔に定義することもできます。 このため、Q# は、量子状態ではなくゲート シーケンスを生成するように設計されています。ただし、理論レベルでは 2 つのパースペクティブは同等のものです。