# 量子計算簡介 ## 背景 自從量子物理在1900至1925年代的發展以來,一直是化學、凝態物理學、從電腦晶片到 LED 照明等技術所仰賴的基石。雖然有這些成功的應用案例,但即使是某些最簡單的系統,使用傳統的電腦,似乎都很難利用量子力學來人為建立模型。這是因為即使模擬的是只有幾十個互相作用的粒子所形成的系統,所需的運算能力也比傳統電腦運作數千年才能提供的運算能力還要多!於是,在 1980 年代,Richard Feynman 等人提出了量子電腦的概念:**使用量子來模擬量子**。 在量子層級,物質會處於許多可能的**狀態**(稱為**量子態**)。和傳統機率論不同的是,這些眾多的量子態可能會**彼此干擾**(稱為**干涉**),就和潮汐池中的波浪一樣。此干擾讓我們無法使用統計抽樣來取得量子態。如果我們想要了解量子演化,就必須追蹤量子系統**可能身處的每個狀態**。再加上,這些狀態是隨時間變化的,這讓我們更難以用傳統的電腦去模擬量子系統。 如果量子動力學是如此難以模擬,那麼當我們的硬體本身就是量子的,會發生什麼情況?我們是否可以利用完全相同的定律來模擬這些量子系統?我們是否可以發現自然界完全不存在、但遵循量子力學定律的現象?這些問題讓量子運算應運而生。 但在這邊我們要注意一點,量子電腦不是超級電腦,並不能在所有的問題上都表現得比傳統電腦好,也沒辦法解開所有傳統電腦解不開的問題。所以如果有人跟你吹噓量子電腦可以做出什麼神奇的事情,他有八成的機率在騙你,剩下的兩成在是在誇飾某些量子演算法(例如 [Shor 演算法](https://zh.wikipedia.org/wiki/%E7%A7%80%E7%88%BE%E6%BC%94%E7%AE%97%E6%B3%95))的功用。 ## Qubit 傳統的電腦處理的是**位元**(bit),可以取值為 0 或 1;**量子位元**(qubit)就不一樣了,一個 qubit 的**狀態**(state)可以是 $|0\rangle$、$|1\rangle$,或任何 $|0\rangle$ 和 $|1\rangle$ 的**疊加**(superposition): $$ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle $$  其中 $\alpha$ 跟 $\beta$ 是任意的[複數(complex number)](https://zh.wikipedia.org/zh-tw/%E5%A4%8D%E6%95%B0_(%E6%95%B0%E5%AD%A6))。這邊 $\alpha$ 跟 $\beta$ 必須滿足所謂的**歸一化條件**(normalization condition):它們的絕對值平方相加要等於1。也就是說: $$ |\alpha|^2 + |\beta|^2 = 1 $$ 奇妙的事在這邊:如果你今天想對「這個qubit是0還是1」進行測量,則你得到0的機率是$|\alpha|^2$,得到1的機率是$|\beta|^2$。但是你測量之後,qubit的狀態就不再是疊加了,它會**塌陷**(collapse)成你測量到的那個狀態! ## 量子糾纏  那麼,現在如果有兩個 qubit,會發生什麼事呢?**古典**(相對於**量子**而言)的兩個bit可以取值為 $\{00,01,10,11\}$ 這四種可能性的其中一個,難道量子的狀況可以是這四種可能性的疊加嗎?沒錯!事實上,一個兩個qubit的系統狀態可以表示成 $\{|00\rangle,|01\rangle,|10\rangle,|11\rangle\}$ 這組**基底**(basis)的任意線性組合(也就是疊加): $$ |\psi\rangle = \alpha_1 |00\rangle + \alpha_2|01\rangle + \alpha_3|10\rangle+\alpha_4|11\rangle $$其中$\alpha_1、\alpha_2、\alpha_3$ 和 $\alpha_4$ 這些係數一樣要滿足歸一化條件: $$ |\alpha_1|^2 + |\alpha_2|^2 + |\alpha_3|^2 + |\alpha_4|^2 = 1 $$ 現在我們考慮以下這個state(這是四個 Bell state 的其中一個): $$ |\Psi ^+ \rangle = \frac{1}{\sqrt{2}}\left( |01\rangle + |10\rangle\right) $$只看第一個qubit的部分的話,我們知道,有一半的機率可以測到0,一半的機率測到1。這時候,第二個qubit會發生什麼事呢?奇妙的事情發生了!當你測量第一個qubit,舉例來說,測得0的時候,整個兩個qubit的系統就會塌陷到 $|01\rangle$ 這個state。也就是說,你不用去測量第二顆qubit,就知道他的state百分之百會是1! 但是在測量之前,沒有辦法知道在第一個qubit上測到0還是1,所以沒有辦法用來直接做通訊。真可惜!  很幸運的是,有人發明了量子遠距傳輸(quantum teleportation),透過分享一對處於糾纏狀態的qubit,再加上一些古典的通訊(例如電話),就可以傳送量子態了! ## 量子電路 下圖是一個用來進行量子遠距傳輸的量子電路圖:  在這邊我們先不深入解釋量子遠距傳輸的原理,只關心上面的元件代表的意義。這個量子電路有四個主要組成部分: * 初始化 我們需要有材料(準備好的量子態),才能開始進行量子計算。 * 量子邏輯閘 接著我們把準備好的量子態接上一系列的量子邏輯閘(quantum gate)。這邊用了一個單qubit的Hadamard ($H$)閘和兩個雙qubit的CNOT閘門。 * 測量 我們測量三個qubit中的兩個。古典的電腦將每個qubit的測量值解釋為古典的結果(0 或 1),並將它們存儲在兩個古典bit中。 * 由古典條件控制的量子邏輯閘 接著我們接上了一個Pauli X-gate和一個 Pauli Z-gate。要不要在使用這些 gate,取決於存儲在兩個古典 bit 中的測量結果。 下面是一些常見的量子邏輯閘:  ## 如何實作qubit? 講了這麼多,我們到底要怎麼實作出qubit呢?[這篇文章](https://kelispinor.medium.com/%E9%87%8F%E5%AD%90%E9%9B%BB%E8%85%A6%E6%A5%B5%E7%B0%A1%E4%BB%8B-short-introduction-to-quantum-computer-a7b159861786)列舉了幾種可能的方式,總結如下:  ## 參考資料 * [量子物理史](http://cpanel-199-19.nctu.edu.tw/~wfgore/qu1.html) * [Microsoft 量子計算文件](https://learn.microsoft.com/zh-tw/azure/quantum/concepts-overview) * [IBMQ Qiskit](https://qiskit.org/textbook/ch-algorithms/defining-quantum-circuits.html)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up