跳到主要內容區塊

計資中心電子報C&INC E-paper

技術論壇

【量子系列】量子科技簡介_ 量子電路簡介及設計(一)
  • 卷期:v0064
  • 出版日期:2023-03-20

作者:張晏瑞 / 臺灣大學IBM量子電腦中心研究助理


量子理論描述了微觀世界行為,量子計算是一個當紅研究領域,採用量子疊加和糾纏特性來執行計算任務,專注於創建基於量子理論概念的運算技術。針對特定複雜問題效率遠高於傳統計算任務。這些技術可能看起來難以想像或遙遠,但將會是我們未來日常生活的不可或缺的部分。量子電腦的發現代表了計算能力的重大進步,對於特定的應用案例具有巨大的性能優勢,量子計算都可以介入以加速耗時、乏味、複雜關鍵的過程,可以帶來無與倫比的速度和非凡的算法能力。本文將以淺顯易懂的方式,從頭介紹量子計算的底層原理,以建立之後學習的基礎。

量子電腦簡介(一)

Q:量子電腦有什麼問題,我們古典電腦有什麼不同?

古典與量子電腦在科技的表現不同,但基礎觀念是相通的,要理解認識量子電腦要先從本質上認清兩者的異同。

  1. 古典位元VS量子位元

我們古典電腦的基本操作,基於馮紐曼架構(Von Neumann architecture),將資訊以二進位表示,藉由 0 或 1 狀態表示儲存在古典位元(bit)中,運用一資訊位元只可以處於兩種狀態,要不是 0 就是 1,可以表達開關,也可以表達 2 個數字,若取兩個位元可以 4 個數字 (00:”0”、01:”1”、10:”2”、11:“3“),有就是 n 個位元可以表達 2n 個數字。也可利用多個位元豐富文字或是相關的控制指令,是現代電腦設計的基本原則。但在任何給定時刻裡古典電腦一次只能處理一個輸入。由於這種限制,量子電腦正在計算競賽中扮演遊戲規則改變者的角色在量子領域,事物的行為方式與我們習慣的可預測方式大不相同。在量子電腦裡計算所使用的基本資訊單位稱為量子位元(qubit),您可以將量子位元視為古典位元的類比物,同樣也使用 0 和 1 的二進制系統對其進行測量。但瘋狂的是他們可以有量子疊加特性,同時表示 0 和 1的狀態。這多麽令人驚奇,不是嗎?圖1為用一個簡單的球面來說明古典位元與量子位元的不同,該球被稱為布洛赫球面(Bloch Sphere)。若用一顆北極、南極、經緯軸的球體來定義,古典位元只存在南北極兩點,在同一時間存在 南極1 或北極0 的其中一個狀態。而量子位元的狀態,可在整個球面的任何一點,點上不同經緯度則會對應到不同比例的 0 與 1 的狀態的機率。為了表示 0 與 1的組合,量子位元為一單位向量,習慣上採用狄拉克符號來表達量子位元的狀態,\(\left.\ |{\psi}\right\rangle\)為量子位元的狀態。在北極 0 與南極 1 分別表示成\(\left.\ |1\right\rangle\) 與 \(\left.\ |0\right\rangle\),代表在量子位元中對應古典 0 或 1 的狀態,\(\left.\ |{\psi}\right\rangle\)則為表示任意量子位元狀態在\(\left.\ |1\right\rangle\) 與 \(\left.\ |0\right\rangle\)的二維向量組合 \((|\left.\ 0\right\rangle=\left[\begin{matrix}1\\0\\\end{matrix}\right]\),\(|\left.\ 1\right\rangle=\left[\begin{matrix}0\\1\\\end{matrix}\right])\) , \({\alpha}\ 與 β\)分別為在\(\left.\ |1\right\rangle\) 與 \(\left.\ |0\right\rangle\)的分量,也稱為機率振幅。\(\left|\mathbf{\alpha}\right|^\mathbf{2}\) 為在 \(\left.\ |{\psi}\right\rangle\)的狀態下出現\(\left.\ |0\right\rangle\)的機率, \(\left|\mathbf{\beta}\right|^\mathbf{2}\)為出現 \(\left.\ |1\right\rangle\)的機率,兩者機率和為1。

\(\left.\ |{\psi}\right\rangle=\left.\ \alpha|0\right\rangle+\ \left.\ \beta|1\right\rangle \ =\ \left[\begin{matrix}\alpha\\\beta\\\end{matrix}\right]\)

\(\left|\mathbf{\alpha}\right|^\mathbf{2}+\left|\mathbf{\beta}\right|^\mathbf{2}=1\)  

舉例來說,若量子位元狀態為 \(\left. \ \mathbf{|\psi} \right\rangle\mathbf{=}\mathbf{0.6}\left. \ \mathbf{|0} \right\rangle\mathbf{+}\mathbf{0.8}\left. \ \mathbf{|1} \right\rangle\)

\(\left. \ |0 \right\rangle\) 的機率為 \(\left| \mathbf{\alpha} \right|^{\mathbf{2}}\mathbf{=}\left| \mathbf{0.6} \right|^{\mathbf{2}}\mathbf{= 0.36}\)

\(\left. \ |1 \right\rangle\)的機率為 \(\left| \mathbf{\beta} \right|^{\mathbf{2}}\mathbf{=}\left| \mathbf{0.8} \right|^{\mathbf{2}}\mathbf{= 0.64}\)
 

,此為只能表達0與1的古典位元無法想像的。

20230320_006408_01

Figure 1 Bloch 球體 (from qiskit)

 

所以想像一下,1個量子位元同時具有\(\left. \ \mathbf{|0} \right\rangle 與\left. \ \mathbf{|1} \right\rangle\)兩種狀態,2個量子位元,每個量子位元個別同時具有\(\left. \ \mathbf{|0} \right\rangle 與\left. \ \mathbf{|1} \right\rangle\)的狀態,整體來看則會同時具備\(\left. \ \mathbf{|00} \right\rangle\mathbf{、}\left. \ \mathbf{|01} \right\rangle\mathbf{、}\left. \ \mathbf{|10} \right\rangle 與\left. \ \mathbf{|11} \right\rangle\)四種狀態的組合,可表示成由\(\left. \ \mathbf{|\psi} \right\rangle\mathbf{=}\mathbf{a}\left. \ \mathbf{|00} \right\rangle\mathbf{+}\mathbf{\beta}\left. \ \mathbf{|01} \right\rangle\mathbf{+ \gamma}\left. \ \mathbf{|10} \right\rangle\mathbf{+}\mathbf{\delta}\left. \ \mathbf{|11} \right\rangle\),且\(\left| \mathbf{\alpha} \right|^{\mathbf{2}}\mathbf{+}\left| \mathbf{\beta} \right|^{\mathbf{2}}\mathbf{+}\left| \mathbf{\gamma} \right|^{\mathbf{2}}\mathbf{+}\left| \mathbf{\delta} \right|^{\mathbf{2}}\mathbf{= 1}\)。若有N個量子位元,量子態則表示成2N種狀態的組合。由於疊加特性,讓量子電腦具備天然強大的平行計算能力。加上利用量子糾纏特性,進一步提升計算能力以指數級增長。
 

20230320_006408_02

Figure 2 雙位元量子態機率示意圖

 

  1. 古典VS 量子邏輯閘

在古典電腦中,資訊的運算與與操作,可以透過邏輯閘(Logical Gate)的運作來完成。常見古典邏輯閘運算有反閘(Not Gate)、及閘(AND Gate)、或閘(OR Gate)、互斥或閘(XOR Gate),另外也衍伸出反及閘(NAND Gate)、反或閘(NOR Gate)、互斥反或閘(NXOR Gate)等,這些通常為不可逆運算。

在量子電腦中使用可同時存在0和1疊加態的量子位元,與只能為0或1的古典位元大大不同。有如此強大的運算位元,需要量子邏輯閘來實現執行強大的量子計算。前段說明布洛赫球面上一向量可視為量子位元狀態,因此量子邏輯閘操作,可以表示為矩陣並表示為圍繞布洛赫球體的旋轉。最常見的量子邏輯閘在一個或兩個量子位元的上執行,這意味著量子邏輯閘可視為具有可逆性的 2 x 2 或 4 x 4 矩陣來描述。

首先我們先介紹常見的單量子邏輯閘。我們將在這裡看到包立矩陣(Pauli matrix)可以表示一些非常常用的單量子邏輯閘。

  1. X閘 由Pauli-X 矩陣表 \(X=\left[\begin{matrix}0&1\\1&1\\\end{matrix}\right]\)
    我們可以通過將其狀態向量乘上X閘矩陣來改變量子位元的狀態,顯示 X-gate 切換了狀態 \(|\left. \ 0 \right\rangle\) 和 \(|\left. \ 1 \right\rangle\)的狀態:
    \[{X|\left. \ 0 \right\rangle = \begin{bmatrix}
    0 & 1 \\
    1 & 1 \\
    \end{bmatrix}\begin{bmatrix}
    1 \\
    0 \\
    \end{bmatrix} = \begin{bmatrix}
    0 \\
    1 \\
    \end{bmatrix} = |\left. \ 1 \right\rangle
    }\]
    \[{X|\left. \ 1 \right\rangle = \begin{bmatrix}
    0 & 1 \\
    1 & 1 \\
    \end{bmatrix}\begin{bmatrix}
    0 \\
    1 \\
    \end{bmatrix} = \begin{bmatrix}
    1 \\
    0 \\
    \end{bmatrix} = |\left. \ 0 \right\rangle
    }\]
    也可以將其視為圍繞Bloch 球體的x 旋轉180度。與反閘的類似,X 閘將狀態從 \(|\left. \ 0 \right\rangle\) 更改為 \(|\left. \ 1 \right\rangle\)(反之亦然),這就是它通常也被稱為反閘的原因。

    20230320_006408_03_120230320_006408_03_2

    Figure 3 X閘 及Z閘 Bloch 球體示意圖
     

  2. Z閘 由Pauli-Z 矩陣表示:\(Z=\left[\begin{matrix}1&0\\0&-1\\\end{matrix}\right]\)
    我們可以通過將其狀態向量乘上Z閘矩陣來改變量子位元的狀態,顯示 Z-gate 切換了狀態 \(|\left. \ 0 \right\rangle\) 和 \(|\left. \ 1 \right\rangle\) 的狀態:
    \[{Z|\left. \ 0 \right\rangle = \begin{bmatrix}
    1 & 0 \\
    0 & - 1 \\
    \end{bmatrix}\begin{bmatrix}
    1 \\
    0 \\
    \end{bmatrix} = \begin{bmatrix}
    1 \\
    0 \\
    \end{bmatrix} = |\left. \ 0 \right\rangle
    }\]
    \[{Z|\left. \ 1 \right\rangle = \begin{bmatrix}
    1 & 0 \\
    0 & - 1 \\
    \end{bmatrix}\begin{bmatrix}
    0 \\
    1 \\
    \end{bmatrix} = - \begin{bmatrix}
    0 \\
    1 \\
    \end{bmatrix} = - |\left. \ 1 \right\rangle}\]
    在Bloch球體中表示繞z軸旋轉180度
  3. 阿德瑪閘(Hadamard gate)是基本量子邏輯閘之一,它的矩陣形式:\(H=\frac{1}{\sqrt2}\left[\begin{matrix}1&1\\1&-1\\\end{matrix}\right]\) ,我們可以看到經過執行運算後,
    \[{H|\left. \ 0 \right\rangle = \frac{1}{\sqrt{2}}\begin{bmatrix}
    1 & 1 \\
    1 & - 1 \\
    \end{bmatrix}\begin{bmatrix}
    1 \\
    0 \\
    \end{bmatrix} = \frac{1}{\sqrt{2}}\begin{bmatrix}
    1 \\
    1 \\
    \end{bmatrix} = \frac{1}{\sqrt{2}}(|\left. \ 0 \right\rangle + \left| \left. \ 1 \right\rangle \right)
    }\]
    \[{H|\left. \ 1 \right\rangle = \frac{1}{\sqrt{2}}\begin{bmatrix}
    1 & 1 \\
    1 & - 1 \\
    \end{bmatrix}\begin{bmatrix}
    0 \\
    1 \\
    \end{bmatrix} = \frac{1}{\sqrt{2}}\begin{bmatrix}
    1 \\
     - 1 \\
    \end{bmatrix} = \frac{1}{\sqrt{2}}(|\left. \ 0 \right\rangle - \left| \left. \ 1 \right\rangle \right)}\]

    創建量子疊加態(阿德瑪閘示意圖
  4. 通用量子邏輯閘(Universal gate), U-gate 是所有單量子位元邏輯閘最通用的形式。它的矩陣形式可表示成:
      \(U(\theta,\varphi,\lambda) = \begin{pmatrix}
      cos(\frac{\theta}{2}) & - e^{\text{iλ}}sin(\frac{\theta}{2}) \\
      e^{\text{iλ}}sin(\frac{\theta}{2}) & e^{i(\varphi + \lambda)}cos(\frac{\theta}{2}) \\
      \end{pmatrix}\)
    ,所有單量子邏輯閘都可以用這來表示,但在實用上很少看到這點,因為閱讀起來有點困難。我們可以看到U-gate經過一些設定後分別等效於X 和 H

    \[U\left( \pi,\pi,\frac{\pi}{2} \right) = \begin{pmatrix}
    0 & 1 \\
     - 1 & 0 \\
    \end{pmatrix} = X\]

    \[U\left( \frac{\pi}{2},0,\pi\  \right) = \frac{1}{\sqrt{2}}\begin{pmatrix}
    1 & 1 \\
    1 & - 1 \\
    \end{pmatrix} = H\]

    前面已經看到了單量子位和單量子邏輯閘的一些有趣效果,但量子計算的真正威力是通過量子位之間的相互作用實現的。之後將介紹常用多量子邏輯閘並探索其有趣的行為。

 

  1. CNOT 閘
    為雙量子邏輯閘,有輸入與輸出,其中輸入的位元分別稱作控制位元(control qubit)及目標位元(target qubit)。若控制位元為 則目標位元進行反閘(X閘)運算, 反之則目標位元不做任何運算。
    20230320_006408_04 “\(\bullet\) ” 控制位元“\(\bigoplus\) ” 目標位元
     

    Figure 4 CNOT 閘表示



    CNOT矩陣
    \[CNOT = \begin{bmatrix}
    1 & 0 & \begin{matrix}
    0 & 0 \\
    \end{matrix} \\
    0 & 1 & \begin{matrix}
    0 & 0 \\
    \end{matrix} \\
    \begin{matrix}
    0 \\
    0 \\
    \end{matrix} & \begin{matrix}
    0 \\
    0 \\
    \end{matrix} & \begin{matrix}
    \begin{matrix}
    0 & 1 \\
    \end{matrix} \\
    \begin{matrix}
    1 & 0 \\
    \end{matrix} \\
    \end{matrix} \\
    \end{bmatrix}\]

    舉例來說:CNOT運算: \(CNOT|\left. \ q_{1}q_{0} \right\rangle\)

    輸入為\(\left| \left. \ 00 \right\rangle \Rightarrow CNOT \right|\left. \ 00 \right\rangle = |\left. \ 00 \right\rangle\)

    輸入為\(\left| \left. \ 01 \right\rangle \Rightarrow CNOT \right|\left. \ 01 \right\rangle = |\left. \ 11 \right\rangle\)

    輸入為\(\left| \left. \ 10 \right\rangle \Rightarrow CNOT \right|\left. \ 10 \right\rangle = |\left. \ 10 \right\rangle\)

    輸入為\(\left| \left. \ 11 \right\rangle \Rightarrow CNOT \right|\left. \ 11 \right\rangle = |\left. \ 01 \right\rangle\)
     

  2.  CZ 閘
    控制Z閘 (CZ Gate)為雙量子邏輯閘,當控制位元為1時則目標位元進行Z閘操作,運作方式:

    \(\alpha\left. \ |00 \right\rangle + \beta\left. \ |01 \right\rangle + \gamma\left. \ |10 \right\rangle + \delta\left. \ |11 \right\rangle\)
    \(\overset{\text{cz}}{\rightarrow}\alpha\left. \ |00 \right\rangle + \beta\left. \ |01 \right\rangle + \gamma\left. \ |10 \right\rangle - \delta\left. \ |11 \right\rangle\)

    20230320_006408_05

    Figure 5 CZ閘表示

  3. Toffoli閘(或稱CCNOT閘)
    為三量子位元閘,有兩個控制位元與一個目標位元。目標位元是否進行運算須由兩個控制位元一起決定,兩控制位元皆為1則目標位元進行運算;反之則無。其他常用量子邏輯閘礙於篇幅關係,只能先整理列表,請大家參考。

20230320_006408_06
Figure 6 量子邏輯閘整理Ref.2

  1. 小結:

    量子世界深不可測,但了解每個量子算法的每個基本模塊,是探索量子世界的基礎。本篇從基本的量子位元性質介紹,到如何利用利用量子邏輯閘進行運算,一步步從根基學起,希望大家對於量子計算有基礎的了解。下一篇將會帶領大家利用本次學習的概念,建立量子電路。

參考資訊

  1. Open-Source Quantum Development, https://qiskit.org/
  2. Quantum Algorithm Implementations for Beginners, https://arxiv.org/pdf/1804.03719.pdf