量子邏輯閘(中):多個量子位元的操作

作者:
林昱誠(Yu-Cheng Lin)
閱讀時間:
10
分鐘
# 量子邏輯閘:多 Qubits 操作 本節將介紹在量子計算中常見的多 qubits 量子邏輯閘,這些邏輯閘可以同時操作多個 qubits。
two qubit quantum gate
第一條橫線代表第一個 qubit(通常標記為 q0),第二條橫線代表第二個 qubit(通常標記為 q1),經過中間 gate 操作後,兩個 qubit 的狀態可能會改變

在介紹量子邏輯閘之前,讓我們先複習如何用一個矩陣表示兩個 qubits 的量子態: \begin{split} |00\rangle= \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}\quad |01\rangle= \begin{bmatrix} 0 \\ 1 \\ 0 \\ 0 \end{bmatrix}\quad |10\rangle= \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix} \quad |11\rangle= \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix} \end{split} ## Controlled-U gate Controlled-U gate (CU gate)的標準架構如下圖所示,圓圈黑點所在的 qubit 稱為 "controlled qubit",另一個標示為 U 的 qubit 稱為 "target qubit"。
CU gate
CU gate 的符號

當 controlled qubit 為 $|0\rangle$ 時,什麼操作都不做;當為 $|1\rangle$ 時,對 target qubit 執行 U 操作。這邊的 U 可以是 X, Y, Z, RX, RY, 或 RZ gate。 CU gate 的矩陣都會長成這樣的形式: \begin{split} CU= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & a & b \\ 0 & 0 & c & d \\ \end{bmatrix} \qquad \text{其中} \quad U = \begin{bmatrix} a & b \\ c & d \end{bmatrix} \end{split} 例如: CX gate 是一種常見的 CU gate,我們知道 X gate 的矩陣是 \begin{split} X = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \end{split} 那麼, CX gate 的矩陣就是: \begin{split} CX= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ \end{bmatrix} \end{split} 只有當 controlled qubit 為 $|1\rangle$ 時,CX 才會對 targe qubit 執行 X gate 操作。以下我們介紹幾種常見的 CU gate: ### CNOT gate 又稱作 controlled-NOT gate,是最常見的 CU gate 之一,就是上面舉例的 CX gate。
CX gate
CNOT (CX) gate 的符號

CNOT 對 qubit 的操作如下表格所示,A 代表第一個 qubit(controlled qubit),B 代表第二個 qubit(target qubit): \begin{array}{|c|c|} \hline \text{Input} & \text{Output} \\ \hline A\quad B & A \quad B \\ \hline 0\quad 0 & 0\quad 0 \\ \hline 0\quad 1 & 0\quad 1 \\ \hline 1\quad 0 & 1\quad 1\\ \hline 1\quad 1 & 1\quad 0\\ \hline \end{array} 從表格中可以看出,只有當 A 為 $|1\rangle$ 時,CNOT 才會對 B 執行 X gate 操作。 以古典邏輯閘做比擬,CNOT 就是量子版的 XOR gate,即:
classic AND
用經典邏輯閘構建如 CNOT gate 的電路

如果今天 CNOT 施加在兩個處於疊加態的 qubits: \begin{split} \text{CNOT}|Q_0Q_1\rangle&=\text{CNOT} (c_0|00\rangle+c_1|01\rangle+c_2|10\rangle+c_3|11\rangle) \\ &=c_0\text{CNOT}|00\rangle + c_1 \text{CNOT}|01\rangle+c_2 \text{CNOT}|10\rangle +c_3\text{CNOT}|11\rangle \\ &=c_0|00\rangle+c_1|01\rangle+c_2|11\rangle+c_3|10\rangle \\ &=c_0|00\rangle+c_1|01\rangle+c_3|10\rangle+c_2|11\rangle \end{split} 可以看到 $|01\rangle$ 與 $|11\rangle$ 的機率幅交換了。以矩陣表示 CNOT gate 的話: \begin{split} CNOT= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ \end{bmatrix} \end{split} 來算算看 CNOT 施加在量子態 $|11\rangle$ 上 \begin{split} \text{CNOT}|11\rangle= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \end{bmatrix}= \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix}= |10\rangle \end{split} CNOT gate 也可以這樣表達
classic AND

圖中右邊這張圖,稱作電路,會在本系列最後一篇文章中介紹如何解讀電路圖。電路同的看法是從左邊開始,所以在這圖中,兩個 qubit 先做 H gate,再做 CNOT,最後再做 H gate 操作
### CZ gate CZ gate 是 Controlled-Z gate,當 controlled qubit 是 $|1\rangle$ 時,對 target qubit 執行 Z gate 操作。
CZ gate
CZ gate 的符號,最常見的符號是左邊的

同理,我們從前面章節得知 Z gate 的矩陣是 \begin{split} Z= \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} \end{split} 因此 CZ gate 的矩陣是 \begin{split} CZ= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} \end{split} 有趣的是,下面這兩種 gate 是等價的
CZ gate
這兩種 gate 對 qubit 的狀態改變是一樣的

讓我們做證明,左邊的 CZ,controlled 是第一個 qubit,target 是第二個 qubit,所以我們記做 $CZ_{01}$ \begin{split} CZ_{01}|Q_0Q_1\rangle&=CZ(c_0|00\rangle+c_1|01\rangle+c_2|10\rangle+c_3|11\rangle) \\ &=c_0|00\rangle+c_1|01\rangle+c_2|10\rangle-c_3|11\rangle \end{split} 右邊的 CZ gate,同理,記做 $CZ_{10}$ \begin{split} CZ_{10}|Q_0Q_1\rangle&=CZ(c_0|00\rangle+c_1|01\rangle+c_2|10\rangle+c_3|11\rangle) \\ &=c_0|00\rangle+c_1|01\rangle+c_2|10\rangle-c_3|10\rangle \end{split} 兩個的結果是一樣。 ### Toffoli gate 又稱為 CCNOT gate。CCNOT 是同時操作 3 個 qubits 的 gate,有兩個 controlled qubit 和一個 target qubit。只有在兩個 controlled qubit 都是 $|1\rangle$ 時,才會對 target gate 執行 X gate。
CCNOT gate
Toffoli (CCNOT) gate 的符號

因為涉及 3 個 qubits,Toffoli 需要用 $8\times8$ 的矩陣做表達 \begin{split} CCNOT= \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ \end{bmatrix} \end{split} Toffoli gate 相當於量子版的 AND gate,因為 \begin{split} \text{CCNOT}&|110\rangle=|111\rangle \\ \text{CCNOT}&|111\rangle=|110\rangle \\ \text{CCNOT}&|ABC\rangle=|AB\rangle|A\oplus B\rangle \end{split} ### Fredlin gate 又稱作 CSWAP,一樣涉及到 3 個 qubits,有一個 controlled 與兩個 target qubit。當 controlled qubit 是 $|1\rangle$ 時,對兩個 target qubit 執行 SWAP gate(我們會在下面說明何謂 SWAP gate)。
CSWAP gate
Fredlin (CSWAP) gate 的符號

CSWAP gate 的矩陣表示如下: \begin{split} SWAP= \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ \end{bmatrix} \end{split} CSWAP gate 可以用三個 Toffoli gate 組合出來:
CSWAP gate
可以用三個 CCNOT 組合出 Toffoli gate

## SWAP gate
SWAP gate
SWAP gate 的符號

SWAP gate 的作用是交換兩個 qubits 的量子態,即: \begin{split} \text{SWAP}|00\rangle=|00\rangle \\ \text{SWAP}|01\rangle=|10\rangle \\ \text{SWAP}|10\rangle=|01\rangle \\ \text{SWAP}|11\rangle=|11\rangle \end{split} 其矩陣表示為: \begin{split} SWAP= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \end{split} SWAP gate 可以用三個 CNOT gate 組合出來
SWAP gate
SWAP gate 可以用三個 CNOT gate 組合出來。為了後面解釋方便,

可以用矩陣相成來證明 \begin{split} CNOT_{10}CNOT_{01}CNOT_{10}&= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \\ &= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}\\ &=SWAP \end{split}
假設電路圖上,由左至右,qubit 做了 A, B, 與 C gate 操作,寫成矩陣相乘時要寫成 CBA,B 與 A 先相乘,再與 C 相乘
## 其他量子邏輯閘組合 前面提及如何使用 tensor product 將多個 qubits 的量子態表示為一個矩陣,同樣地,我們也能用 tensor product 將多個 quantum gate 以一個矩陣表示。以下是一些範例:
HI gate

第一個 qubit 做 H gate 操作,第二個 qubit 什麼都不動,如果要用一個矩陣描述,就得用 tensor product 將 H gate 與 I gate 併在一起 \begin{split} H\otimes I=\frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1\\ 1 & -1 \end{bmatrix} \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & -1 & 0 \\ 0 & 1 & 0 & -1 \\ \end{bmatrix} \end{split}
同一條線上的 quantum gate 可透過矩陣相乘來組合成一個矩陣;對於不同線上的量子閘,則必須使用 tensor product 組合成一個矩陣。以前面提及用 H gate 和 CNOT 結合成 CNOT gate 的範例圖為例,最初和最後的兩個 H gate 因在不同的線上,所以它們的矩陣需透過張量積組合成一個我們先稱作 HH 的單一矩陣,接著 HH、CNOT 和最後的 HH 都是 two qubit gate,因此可以透過矩陣相乘將它們組合成單一矩陣。
做個簡單的驗證,假設這兩個 qubits 的初始狀態都是 $|0\rangle$,那麼: \begin{split} (H\otimes I)|00\rangle &=\frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 0 & -1 & 0 \\ 0 & 1 & 0 & -1 \\ \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}=\frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 0 \\ 1 \\ 0 \end{bmatrix} \\ &=\frac{1}{\sqrt{2}} ( \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} + \begin{bmatrix} 0 \\ 0 \\ 1 \\ 0 \end{bmatrix} ) \\ &=\frac{1}{\sqrt{2}} (|00\rangle+|10\rangle) \\ &=\frac{1}{\sqrt{2}} (|0\rangle+|1\rangle)|0\rangle \end{split} 與實際結果相同。 ### 多個 H gate 組合 同樣地,當有 2 個 qubits 都執行 H gate 操作時
HH gate

我們也可以用 tensor product 將兩個 H gate 矩陣以一個矩陣做表示,即 \begin{split} H\otimes H=H^{\otimes 2}&= \frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1\\ 1 & -1 & 1 & -1\\ 1 & 1 & -1 & -1\\ 1 & -1 & -1 & 1 \end{bmatrix} \end{split} 如果兩個 qubits 的初始狀態都是 $|0\rangle$,則為 \begin{split} H^{\otimes 2}|00\rangle&=H|0\rangle\otimes H|0\rangle \\ &=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle) \\ &=\frac{1}{2}(|00\rangle+|01\rangle+|10\rangle+|11\rangle) \end{split} 當有 3 個 qubits 都執行 H gate 操作時,可以進一步使用 tensor product 將 $H^{\otimes 2}$ 與 $H$ 組合;然而,當 qubits 數越來越大,勢必這矩陣會越來越大,越來越難在紙上算出來,有沒有什麼通式呢?這就要用到之前提到 H gate 的 Dirac 表示法: \begin{split} H=\frac{1}{\sqrt 2} \sum_{x,y\in \left\{ 0,1 \right\}} (-1)^{x\cdot y}|x\rangle\langle y| \end{split}
這裡的 $x$ 和 $y$ 都是 0 與 1
今天有 $n$ 個 qubits 都做 H gate 操作,就要把 $n$ 個上式做 tensor product,即: \begin{split} H^{\otimes n}&= \frac{1}{\sqrt 2} \sum_{x_1,y_1} (-1)^{x_1\cdot y_1}|x_1\rangle\langle y_1| \otimes \frac{1}{\sqrt 2} \sum_{x_2,y_2} (-1)^{x_2\cdot y_2}|x_2\rangle\langle y_2|\otimes... \otimes \frac{1}{\sqrt 2} \sum_{x_n,y_n} (-1)^{x_n\cdot y_n}|x_n\rangle\langle y_n| \\ &=\frac{1}{\sqrt{2^n}} \sum_{x,y} (-1)^{x\cdot y}|x\rangle\langle y| \end{split} 最後一行的 $x=[x_1,x_2,...x_n]$,$y$ 也是,都是 0 或 1 這兩個數字,以 2 個 qubits ($n=2$)都做 H gate 操作為例: \begin{split} H^{\otimes 2}=\frac{1}{\sqrt{2^2}}[ &|00\rangle\langle 00|+|01\rangle\langle 00|+|00\rangle\langle 01|-|01\rangle\langle 01|+ \\ &|10\rangle\langle 00|+|11\rangle\langle 00|+|10\rangle\langle 01|-|11\rangle\langle 01|+\\ &|00\rangle\langle 10|+|01\rangle\langle 10|+|00\rangle\langle 11|-|01\rangle\langle 11|-\\ &|10\rangle\langle 10|-|11\rangle\langle 10|-|10\rangle\langle 11|+|11\rangle\langle 11|]\\ &=\frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1\\ 1 & -1 & 1 & -1\\ 1 & 1 & -1 & -1\\ 1 & -1 & -1 & 1 \end{bmatrix} \end{split} 如果上式看了很頭痛,其實有更簡單的表示方法: \begin{split} H^{\otimes n}=\frac{1}{\sqrt{2}} \begin{bmatrix} H^{\otimes n-1} & H^{\otimes n-1} \\ H^{\otimes n-1} & -H^{\otimes n-1} \end{bmatrix} \end{split} 以 $H^{\otimes 2}$ 為例,即: \begin{split} H^{\otimes 2}=\frac{1}{\sqrt{2}} \begin{bmatrix} H & H \\ H & -H \end{bmatrix} \end{split}
課程目錄