# 量子計算概覽:當電腦遇上量子世界
量子電腦的發展至今已超過半個世紀。隨著科技進步,量子計算的入門門檻逐漸降低,如今只需具備基本的線性代數和計算機概論,就能開始探索量子電腦。然而,目前市面上的資源與教材多以英文為主,中文資源則多半偏向科普或艱深,缺乏對初學者友善的中間銜接(雖然也有不錯的中文資源。將在[下一篇](https://www.entangletech.tw/lesson/basic-algorithm-01)做介紹)。本系列「[量子計算入門](https://www.entangletech.tw/courses/quantum-algorithm)」旨在填補這一空缺,幫助你從[科普文章系列](https://www.entangletech.tw/courses/quantum-computer-basics)與[數學入門系列](https://www.entangletech.tw/courses/linear-algebra)順利過渡到更深入的量子計算,並輕易銜接國外資源與教材。
## 量子計算模型
在進入課程內容之前,讓我們先了解不同的量子計算模型,為你提供一個全面的認識,並說明本系列課程將著重的方向。
量子電腦可分成**通用型**(universal)與**非通用型**(non-universal)兩大類。通用型電腦,如同你日常使用的電腦與手機,能夠執行多樣化任務,只需改變程式碼或下達指令就能執行任何你要電腦做的事情,不需要改變電腦的硬體設計;而非通用型電腦,像是有些晶片是專門為了做深度學習,這類電腦在執行深度學習會比你的電腦更高效,然而這類電腦就只能做這件事,其他事情做不了,如果要它能做其他事情,就得改變硬體設計。
在這系列中,專有名詞第一次出現都會標注中文,爾後都用英文呈現,雖然這會讓你在閱讀上造成很多不便與不適感,但我們這系列的目的是幫助你銜接國外教材,敬請見諒
量子電腦也是,僅需寫程式就能讓量子電腦做任何事情,無需更改電腦的硬體設備,這就是通用型量子電腦;而有些量子電腦針對特定問題做設計,只能計算特定問題,如果要它能計算其他問題,就得把電腦拆開,更改他的硬體設備,這就是非通用型量子電腦。
根據計算的方法不同,通用型與非通用型量子電腦還可以再細分。通用型量子電腦裡包括 gate-based, adiabatic, 與 one-way quantum computing(QC);非通用型量子電腦則涵蓋量子模擬器(quantum simulators)與特定目的型量子機器(special-purpose quantum machines)。以下,我們將針對這些模型做概括介紹
量子計算設備的種類與方法。這篇文章並沒有特別介紹 variational QC,簡單地說 variational QC 就是結合量子電腦與經典電腦一起做優化問題
### Gate based quantum computing(閘式量子計算)
在入門系列文章[電腦怎麼做計算](https://www.entangletech.tw/lesson/popular-02)中,我們介紹了(經典)電腦會使用邏輯閘控制燈泡(位元)的亮暗:
電腦中所有的計算過程都能用邏輯閘做表示,像是 AND 閘,只有在左邊輸入兩端都為 "1" 時,輸出才會是 "1",否則為 "0"
在我們還沒介紹量子位元(Qubit)的概念前,先套用科普系列文章中提及的量子燈泡替代之
類似的,量子電腦使用量子邏輯閘控制量子燈泡(量子位元)的亮暗,這種使用邏輯閘執行計算功能的方法稱作 gate-based QC。你目前在科普文章、影視作品與業界與學界成果看到的量子電腦多數屬於此類,本系列教學也著重在此類量子計算。
這就是以後你會常看到的電路圖,這就是屬於 gate-based QC
如果你對其他量子計算方法沒興趣,就讀到這裡就可以,直接跳到下方課程大綱(Gate-based QC)
### One-way quantum computing
又稱為 measurement based quantum computing(MBQC)。Gate-based QC 雖然普及,但在同時操作多個量子燈泡時面臨挑戰。MBQC 提供了另一種方法:先準備互相[糾纏](https://www.entangletech.tw/lesson/popular-05)的量子燈泡,然後逐步測量每個燈泡的狀態,並根據燈泡的狀態決定要對其他燈泡執行什麼邏輯閘。
由左至右,一開始有四個量子位元,彼此糾纏(圖中以藍線代表),接著逐步測量每個量子位元,被測量的量子位元就會失去糾纏態(藍線消失),最後四個量子位元的測量結果就是這次計算的答案
Picture come from Alan Stonebraker
### Adiabatic quantum computing(絕熱量子計算)
這種方法首先將欲解的問題寫成一條方程式(稱為 Hamiltonian),這方程式的最低點(稱作基態)就是這問題的答案,計算過程中,夠過緩慢改變環境條件(像是溫度或磁場),保持系統始終處於最低能量狀態,這過程可以讓量子電腦“滑向”答案。
目前尚未有基於 adiabatic QC 的量子電腦,但如果說最接近的就是 D-Wave 的量子退火機,不過 D-Wave 的電腦只能解特定問題,屬於非通用型。
以上三個方法都屬於通用型量子電腦,這三個方法雖然計算原理與硬體設計都不同,但理論上是等價的。這意味著可以將在某種方法下執行的演算法轉換成其他方法可以執行的。
### Quantum simulators(量子模擬器)
量子模擬器專注於模擬物理或化學系統,例如化學分子的基態能量和其最低能量下的結構。
中間是量子模擬器示意圖,每一個帶有箭頭的球就是一個量子位元,可以是超導電路、原子、離子或是光子,利用這些量子位元去模擬物理系統或是化學分子
Picture come from doi:10.1103/RevModPhys.86.153
以模擬苯分子為例,量子模擬器就是拿多個相同的原子(即量子燈泡)模擬實際的苯分子,相當於拿原子模擬原子,就像是你直接在量子電腦裡面構建一個苯分子,然後再觀測他會長什麼樣子,理應會與實際實驗的數據一樣,非常準確。
### 特定目的量子機器
這類量子電腦就類似目前當紅的 FPGA,只能處理特定問題,例如, D-Wave 的量子退火是專門解一個數學問題稱作 QUBO,你要用它的電腦解決某個問題時,得先把問題用 QUBO 的形式表達,還有中國九章專門計算 Boson 取樣問題。
加拿大新創公司 D-Wave 的量子退火機
Picture come from Quantum Insider
## 本系列重點:Gate-based QC
正如前面所述,本系列將以 gated-based QC 為核心。我們將沿著[科普文章系列](https://www.entangletech.tw/courses/quantum-computer-basics)的脈絡,從你最熟悉的電腦計算原理出法,結合你在[數學入門系列](https://www.entangletech.tw/courses/linear-algebra)中學到到的數學工具,全面理解量子計算。
前五篇文章都在講述現在電腦怎麼做計算,如同科普文章系列,會從[二進位](https://www.entangletech.tw/lesson/basic-algorithm-02)開始介紹,接著深入說明各種[邏輯閘](https://www.entangletech.tw/lesson/basic-algorithm-03),以及如何用邏輯閘做簡單的加法運算,接著說明[演算法複雜度](https://www.entangletech.tw/lesson/basic-algorithm-05),這將在下個系列中會用到,透過複雜度分析才能感受到經典電腦與量子電腦在解決同個問題上的巨大差異。
緊接著為了讓讀者能輕易地過渡到量子計算,我們會用你學過的線性代數[重新描述經典電腦的運算](https://www.entangletech.tw/lesson/basic-algorithm-06),幫助你熟悉線性代數的使用,才深入介紹量子燈泡,即[量子位元](https://www.entangletech.tw/lesson/basic-algorithm-07)(Qubit)和可以控制量子位元的[量子邏輯閘](https://www.entangletech.tw/lesson/basic-algorithm-08),最後如何用量子位元和量子邏輯閘組合出一個[電路](https://www.entangletech.tw/lesson/basic-algorithm-16),接著這系列的上半部就結束,在下半部會承襲你在上半部所學,利用量子電路組合出可以解決問題的演算法,並從中體會量子電腦的巨大潛力。祝你學習愉快!