量子電路:量子邏輯閘的實踐

作者:
林昱誠(Yu-Cheng Lin)
閱讀時間:
10
分鐘
# 量子電路 就像經典電腦一樣,在了解位元與邏輯閘後,我們可以組成這些元素來構建邏輯電路進行數學計算。量子電腦也是如此,當我們了解了 qubit 和 quantum gate 後,也可以利用它們來組合電路(稱作量子電路),以解決各種問題。 ## 量子電路 量子電路的畫法與五線譜有些相似。閱讀量子電路時,要從上往下,由左而右閱讀:
Quantum circuit
量子電路的樣貌,閱讀時從上到下(量子位元),從左到右(量子閘)

從最左邊開始,由上往下,每一條水平線都代表一個 qubit,幾條線代表有幾個 qubits。當需要以 Bra-Ket 記號書寫 qubit 的狀態時,習慣由上到下讀取 qubit 的狀態,再由左而右書寫。以圖中為例,qubit 的初始狀態為 $|100\rangle$。 然後由左而右閱讀,線上每個 gate 代表對 qubit 進行的 gate 操作,從左邊開始,到右邊結束。
Quantum circuit
畫成流程圖就是長這樣

這種閱讀方式和我們在[數位邏輯電路](https://www.entangletech.tw/lesson/basic-algorithm-03)中學習的非常類似:
半加法器

由上往下看,這個電路有兩個位元,由左到右,這兩個位元同時經過 XOR 與 AND 閘

接下來,我們會通過幾個例子來練習如何解讀量子電路 ## 實例 ### 範例一
Quantum circuit

這個電路只有一個 qubit,初始狀態是 $|0\rangle$,先經過 X gate 操作,再進行測量。在解讀的過程中,我們通常在每經過一個 gate 時,就畫一條虛線,並標號當下 qubit 的狀態,像上圖。 接著我們由左而右解析 qubit 當下的狀態 \begin{split} \text{初始狀態: } |\psi_0\rangle&=|0\rangle \\ \text{X gate 操作: }\quad |\psi_1\rangle&=|1\rangle \\ \text{測量: }\quad |\psi_2\rangle&=|1\rangle \\ \end{split} 同樣的電路,擴展到 3 個 qubits:
Quantum circuit

\begin{split} \text{初始狀態: } |\psi_0\rangle&=|000\rangle \\ \text{X gate 操作: }\quad |\psi_1\rangle&=|010\rangle \\ \text{測量: }\quad |\psi_2\rangle&=|010\rangle \\ \end{split} ### 範例二 這次換你嘗試自己解讀這電路
Quantum circuit

\begin{split} \text{初始狀態: } |\psi_0\rangle&=|0\rangle \\ \text{H gate 操作: }\quad |\psi_1\rangle&=\frac{1}{\sqrt 2}(|0\rangle+|1\rangle) \end{split} 經過測量後有 50% 的機率得到 $|0\rangle$,50% 的機率是得到$|1\rangle$。 ### 範例三
Quantum circuit

\begin{split} |\psi_0\rangle&=|00\rangle \\ |\psi_1\rangle&=|01\rangle \\ |\psi_2\rangle&=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes \frac{1}{\sqrt{2}}(|0\rangle-|1\rangle) \\ |\psi_3\rangle&=|01\rangle \\ |\psi_4\rangle&=|01\rangle \\ \end{split} ### 範例四
Quantum circuit

\begin{split} |\psi_0\rangle&=|000\rangle \\ |\psi_1\rangle&=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle) \\ |\psi_2\rangle&=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes\{\text{0 or 1}\}\otimes \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle) \\ |\psi_3\rangle&=\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes\frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes |0\rangle \\ \end{split} 最後測量結果中,第一個和第二個 qubit 有可能是 $|0\rangle$ 或是 $|1\rangle$(出現機率各半),第三個 qubit 則一定是 $|0\rangle$。 ### Bell state 下圖這電路,用前面介紹的方法做逐步解讀
Bell circuit

\begin{split} |\psi_0\rangle&=|00\rangle \\ |\psi_1\rangle&= \frac{1}{\sqrt{2}}(|0\rangle+|1\rangle)\otimes |0\rangle\\ &=\frac{1}{\sqrt 2}(|00\rangle+|10\rangle)\\ |\psi_2\rangle&=\frac{1}{\sqrt 2}(|00\rangle+|11\rangle)=|\Phi^+\rangle\\ \end{split} 測量後,有 50% 的機率觀測到到 $|00\rangle$,另有 50% 的機率觀測到 $|01\rangle$ 再稍微複雜一點的電路:
Bell circuit

\begin{split} |\psi_0\rangle&=|00\rangle \\ |\psi_1\rangle&=|01\rangle \\ |\psi_2\rangle&=\frac{1}{\sqrt 2}(|0\rangle+|1\rangle)\otimes |1\rangle\\ &=\frac{1}{\sqrt 2}(|01\rangle+|11\rangle)\\ |\psi_3\rangle&=\frac{1}{\sqrt 2}(|01\rangle+|10\rangle)=|\Psi^+\rangle \end{split} 以上這兩個電路的輸出狀態都是 Bell state。現在輪到你來嘗試,建構電路,組合出以下的量子態: \begin{split} |\Phi^-\rangle=\frac{1}{\sqrt{2}}(|00\rangle-|11\rangle) \end{split}
Bell circuit

\begin{split} |\Psi^-\rangle=\frac{1}{\sqrt{2}}(|01\rangle-|10\rangle) \end{split}
Bell circuit

## 量子加法器 前面我們知道如何用數位邏輯閘建構一個簡單的加法器(半加法器):
半加法器

這個電路能做到這樣的計算 \begin{array}{|c|c|} \hline \text{Input} & \text{Output} \\ \hline A\quad B & C \quad S \\ \hline 0\quad 0 & 0\quad 0\\ \hline 0\quad 1 & 0\quad 1\\ \hline 1\quad 0 & 0\quad 1\\ \hline 1\quad 1 & 1\quad 0\\ \hline \end{array} 該如何用量子邏輯閘做到一樣的事情呢?不難看出這真值表與 CNOT gate 的運作方式是一模一樣:
CX gate

其中 controlled qubit 對應到數位電路的 A,target qubit 對應到 B,經過 CNOT 操作後,controlled qubit 輸出對應到 C,target qubit 則為 S。 ## 總結 恭喜你完成這 17 堂課,從經典電腦的位元和邏輯閘,到量子電腦的量子位元和量子邏輯閘,你已經學會了如何組合這些元素來構建量子電路。在下一個系列課程中,我們將帶著你用量子電路建構出複雜的演算法,稱作量子演算法,並利用量子演算法解決實際上我們遇到的問題,敬請期待!
課程目錄