這幾年在物理研究領域中,量子計算可以算是最熱門的主題之一。由於量子電腦的發展還在非常初期,現階段主要的研發人員都是物理背景的為主,主要任務就是讓可以執行量子計算的硬體更加穩定。除了物理背景以外,純數學理論背景的研究人員也在研究新的利用量子計算特性的演算法來解決過去傳統電腦上無法有效解決的問題。而電機資訊背景的研究人員則是致力於借鏡過去傳統電腦的發展過程,以此來加速我們開發量子計算所需的軟體、硬體、編譯器以及量子計算機架構,希望能透過計算機架構的研究成果來拉近執行量子程式所需的硬體需求和我們實際所擁有的量子電腦之間的距離。另外,其他如化學、金融、海洋、氣象、天文等學門的研究人員也都紛紛在發展各自領域新的量子應用。量子電腦的發展現在正全面在跨領域中加速蓬勃發展中。
量子計算的原理
量子計算是利用量子物理中的量子疊加態(Quantum Superposition)以及量子糾纏(Quantum Entanglement)的特性進行運算的方法。傳統計算機使用0或1來代表一個Bit的值,而在量子計算機中,我們稱一個運算基本單元為Quantum Bit又稱為Qubit,它在運算過程可以同時是1和0。
量子疊加態 Quantum Superposition
由於一個Qubit在運算過程中會處於疊加態,應該經常使用布洛赫球面 (Bloch Sphere)來表示一個Qubit的狀態。我們可以把這個Qubit的狀態想像成分布在這球體表面積上的向量。而這個空間是由|0>和|1>兩個向量所組成的。此Qubit的狀態可表示成一個向量 , 其中 , 而且 。這也意味著,在運算過程中,這個Qubit可能是0也可能是1。 與 分別代表當我們觀測這個Qubit時,我們分別得到0或1的結果的機率。
如果一個系統有2個Qubit,我們就會有00, 01, 10, 11這4種可能。也就是我們在進行運算時,我們是同時把4種狀況同時進行運算。我們每在系統中增加一個Qubit,我們所運算的空間就會增加一倍。當我們有N個Qubit的時候,我們實際是在計算 種可能結果個別的機率。這就是量子疊加態的威力。
量子糾纏
當N個Qubit彼此量子糾纏後,他們之間的值就會相互作用而產生影響。例如我們可以造出Qubit A = Qubit B的糾纏態。如此一來,當我們觀測Qubit A發現是1的時候,Qubit B也一定會是1。反之,如果Qubit A是0,則Qubit B也一定是0。
我們能用傳統電腦來模擬量子電腦嗎?
了解了量子計算的原理後,我們可以使用傳統電腦來模擬量子計算的過程,藉此來模擬量子電腦。可以利用MPI來使用超級電腦進行模擬。由於在量子物理中,每一個向量的係數或是稱為Amplitude是一個複數,因此需要有實部和虛部來描述一個Amplitude,如果我們每個浮點數使用8個Byte來描述(Double Precision ),也就是需要使用16Bytes來描述1個Amplitude,而1個Qubit有|0>和|1>兩個Basis,所以共會需要2個Amplitude才能描述1個Qubit的狀態。則我們共需要16*2 = 32Bytes來描述1個Qubit的狀態。
假設今天我們有N個Qubit,就會有個Amplitude來描述此量子狀態,而每個Amplitude需要16Bytes,因此我們需要Bytes來描述這個N-Qubit的狀態。也就是說1MB的記憶體容量可以模擬16 Qubits,1GB的記憶體容量可以模擬26Qubits,1TB可以模擬36Qubits,1PB 可以模擬46Qubits。這也是為什麼一般認為,超過50 Qubits的量子電腦就可以展現所謂的量子霸權,因為現在世界上最強大的傳統電腦所擁有的記憶體容量約在2PB左右。當然還有其他利用時間來換取空間的模擬量子電腦的方式,如Tensor Network Contraction或是Feynman Path Integral等。但無論是速度或是容量都還是無法與真正超過50Qubits的量子電腦比較。
量子邏輯閘 Quantum Gate
量子計算的本質可以說是由線性代數所組成。每一個Gate都有一個對應的Matrix作為其運算子。這些Gate有的只有作用在單一Qubit上,有的則是會作用在多個Qubit上。我們常用Single Qubit Gate和Two-Qubit Gate來表達一個量子程式(Quantum Program)。而我們可以使用Single-qubit gates與two-qubit gates來完成一個Universal Gate Set. 也就是只需要用這些Gate就可以組成所有需要的程式。常用的Gates我想可以參考wiki. 除了Single-qubit gates與Two-qubit gates外,也有許多Multi-Qubit Gates的研究,這可以大量減少所需Quantum Gate的總數,如此一來可以縮短量子程式的長度已達到更有效率且更高的準確度。然而,要打造一個完美的Multi-Qubit Gate是非常困難的,因此目前在實際的量子電腦上所運行的多半最多還是只有Two-qubit gates。
什麼是量子電路(Quantum Circuit)
一個Quantum Program也常稱為量子電路(Quantum Circuit),因為把這一個個的Gate排在一起,這種表達方式就跟一個電路類似。所以當大家看到Quantum Circuit的時候,就是指Quantum Program。而通常我們所講的電路深度(Circuit Depth)指的就是這個電路的長度。由於現今的Qubit Lifetime都非常短,因此當這個Depth越長時,我們所得到的結果就會越不準確。因此現今有很大一部分的量子計算研究都在探討如何更有效率的設計Quantum Circuit來降低Circuit Depth。
總結
量子計算是依據量子物理的規則,依照線性代數的內容在運算。設計量子計算程式的原則就是讓正確的答案被觀測到的機率提升。由於一切計算過程都是機率,因此實務上會需要跑同一個程式上千次甚至上百萬次來取得一個統計結果分析正確答案。