本篇文章之資訊主要來源、翻譯自 : Quantum computing in a nutshell
量子計算 in a nutshell
- 量子計算的潛力很大,有可能可以作到古典電腦在時間內無法作到的質因數分解、量子模擬、搜尋演算法、量子機器學習
- 量子計算的兩大基石為:
- 干涉 (interference) : 對應到 波 的性質
- 量子糾纏 (entanglement) :對應到 粒子 的性質
干涉 interference
- 古典電腦的每個 bit 可以是0 或 1,量子電腦的bit(或叫qubit)可以同時是0 和 1,一個 qubit 可以是 0 和 1 的疊加態(superposition states) (!請參考布洛赫球面)
- 在古典的類比電路中,以雜訊消除 (noise cancellation) 為例,我們可以創造一個波,這個波具有和雜訊一樣的強度,但是相位差了 180 度,見下圖的 Cancellation tone,讓這個 Cancellation tone 與原來的雜訊 疊加,我們就可以得到一個比較乾淨的波,下圖的 Cancelled noise
- 在量子電路中,與上面的干涉情形很像。一開始,我們準備所有量子計算態(computation states)的疊加態,並把他作為輸入送到量子電路(quantum circuit)中,量子電路會根據我們設計的演算法做出對應的干涉,經過一連串干涉完的結果就是我們要的答案
量子糾纏 Entanglement
- 多個 qubit 所組成的糾纏態比個別獨立的 qubit 帶有更多的資訊
- 舉例來說,量子糾纏態可以用來做量子隱形傳輸(量子遙傳,quantum teleporatation),兩個糾纏在一起的 qubits,可以藉由操縱其中一個 qubit 就遠距離傳送資訊給對方
- 另一個例子是,可以用高度糾纏的量子態來產生隨機的數字 (真正的隨機在古典上是很難達到的) (參考 : Qiskit RNG)
量子電路 Quantum Circuit
- 使用到量子特性的演算法(量子演算法)可以使用 量子電路 (quantum circuit) 來實現。量子電路定義了一整套施加在 quantum quibts 的操作(operation)。每一條橫線代表一個 qubit ,左邊那端代表一開始的量子態,或者說是量子電路的輸入;右邊那端代表 qubit 經過量子電路一整套的操作後的量子太,或者說是量子電路的輸出。
- 每一條橫線代表一個 qubit
- 每個 Operation (量子閘等等)可以放在每條線上,定義了每個 qubit 的量子態會怎樣演化
量子電腦 Quantum Computer
量子電腦的實現,可以由任何能實現量子位元和量子閘的技術來搭建量子電路組合而成。舉例來說,目前有嘗試基於以下技術來搭建量子電腦:
- superconducting circuits 超導電路
- trapped ion 離子井
- semiconducting quantum-dots 半導體量子點
- photons 光子
- neutral atoms 中性原子
安裝 IBM Qiskit
- 用 Conda 創立一個 Python 的虛擬環境
$ conda create -n quantum python=3
- 啟用虛擬環境
$ conda activate quantum
- 安裝 qiskit
$ pip install qiskit
- 安裝 qiskit 視覺化套件
$ pip install qiskit[visualization]
下一篇文章,我們將使用 IBM Qiskit 來實做量子電路