借助開源軟件開發(fā)包嘗試量子計算編程
經(jīng)典計算機是基于二進(jìn)制數(shù)的,二進(jìn)制數(shù)有 0 和 1 兩種形式。這并不是由于二進(jìn)制邏輯系統(tǒng)比有更多基本狀態(tài)的邏輯系統(tǒng)(甚至包括模擬計算機)有內(nèi)在優(yōu)勢。而是,對電路元件的開關(guān)操作很容易實現(xiàn),而且借助先進(jìn)的半導(dǎo)體技術(shù),可以制造出體積小且價格低廉的計算機。
但它們并非沒有局限性。經(jīng)典計算機求解某些問題的效率并不高,主要是那些時間或內(nèi)存成本隨著問題的規(guī)模(O)呈指數(shù)級增長的問題。我們把這種問題稱為 O(2n)(??大 O 表示法??)。
大部分現(xiàn)代加密方法甚至依賴這一特性。把兩個大素數(shù)相乘,耗費的成本低(O(n2)),但進(jìn)行反向操作就非常耗時。所以只要使用的數(shù)字足夠大,對它分解質(zhì)因數(shù)就非常困難。
進(jìn)入量子世界
量子計算的基礎(chǔ)數(shù)學(xué)和力學(xué)知識不在本文的探討范圍內(nèi)。然而,還是有一些基礎(chǔ)知識需要預(yù)先說明。
量子計算機以 ??量子比特?? 代替了二進(jìn)制比特 —— 量子比特是體現(xiàn)量子屬性的可控計算單元。構(gòu)成量子比特的通常是超導(dǎo)元件,或自然界中存在的量子實物(例如電子)。量子比特可以以“疊加superposition”狀態(tài)存在,疊加態(tài)是 0 和 1 以某種方式組合起來的復(fù)雜狀態(tài)。你可能聽說過,量子比特既為 1 又為 0,這種說法并不準(zhǔn)確。真實情況是,如果進(jìn)行測量,量子比特的狀態(tài)會坍縮為 0 或 1。在數(shù)學(xué)上,量子比特未測量的狀態(tài)可以看作 ??布洛赫球面??Bloch sphere
盡管對習(xí)慣使用經(jīng)典計算機的任何人來說,疊加態(tài)是一個全新的概念,但一個量子比特本身并沒有什么趣味性。量子計算的第二個概念是“干涉interference”。真正的量子計算機本質(zhì)上是統(tǒng)計性質(zhì)的。量子算法對干涉圖案進(jìn)行編碼,增加了可以測量編碼方案的狀態(tài)的概率。
疊加和干涉的概念雖然新穎,但在物理世界中也有對應(yīng)的現(xiàn)象。而量子力學(xué)中的“糾纏entanglement”卻沒有,但它是實現(xiàn)指數(shù)級量子加速的真正關(guān)鍵。借助量子糾纏,對一個微觀粒子的測量可以影響后續(xù)對其他被糾纏的粒子的測量結(jié)果 —— 即使是那些物理上沒有關(guān)聯(lián)的粒子。
量子計算能做什么?
今天的量子計算機就其包含的量子比特的數(shù)量而言是相當(dāng)小的,只有幾十到幾百個。因此,雖然人們不斷開發(fā)新的算法,但比同級別經(jīng)典計算機運行得快的硬件還未問世。
但是在很多領(lǐng)域,量子計算機能帶來很大好處。例如,它能提供較好的方法來模擬自然界的量子系統(tǒng),例如分子,其復(fù)雜程度超過了經(jīng)典計算機的建模能力。量子計算也跟線性代數(shù)有關(guān),它是機器學(xué)習(xí)和很多其他現(xiàn)代優(yōu)化問題的基礎(chǔ)。因此,我們有理由認(rèn)為量子計算也可以很好地適用于此。
在量子算法相對于普通算法的優(yōu)勢方面,??Shor 算法?? 是經(jīng)常被提及的例子,它在較早時候就用于分解質(zhì)因數(shù)。它由 MIT 的數(shù)學(xué)家 Peter Shor 于 1994 年發(fā)明,量子計算機目前還不能在較大的問題上運行該算法。但它已經(jīng)被證明可以在 O(n3) 時間內(nèi)完成工作,而不像經(jīng)典算法那樣需要指數(shù)級的時間。
從使用 Qiskit 開始
你可能在想:“我身邊沒有量子計算機,但我很想嘗試一下。能做到嗎?”
我們來了解一下名稱為 ??Qiskit?? 的開源項目(采用 Apache 2.0 許可證)。它是一個軟件開發(fā)包(SDK),用于訪問 IBM 量子實驗室的量子計算模擬器和物理硬件(免費)。你只需要注冊獲得一個 API 密鑰。
當(dāng)然,如果要深入研究 Qiskit,需要很多其他方面的知識,線性代數(shù)只是其中一部分,這些都遠(yuǎn)遠(yuǎn)超出了本文的范圍。如果你需要深入學(xué)習(xí),網(wǎng)上有很多免費資源,其中也不乏完整的教科書。然而,體驗一下也很簡單,只需要一些 Python 和 Jupyter notebook 的基礎(chǔ)知識即可。
為了增加趣味性,我們?nèi)淌褂?nbsp;??Qiskit 教程?? 的 “Hello, World!” 程序:
首先,安裝教程的相關(guān)工具和部件:
下一步,進(jìn)行軟件包的導(dǎo)入:
??Aer?
? 是本地模擬器。Qiskit 包括四個組件:??Aer?
?、基礎(chǔ)組件 ??Terra?
?、用于實際的量子系統(tǒng)上的噪音和錯誤處理的 ??Ignis?
?,以及用于算法開發(fā)的 ??Aqua?
?。
雖然底層數(shù)學(xué)原理還涉及到矩陣乘法,量子計算機中 X 門也可以認(rèn)為類似于經(jīng)典計算機中的非門。(事實上,它經(jīng)常被稱為 "非門")。
現(xiàn)在,運行并測量它。結(jié)果跟你預(yù)期的一樣,因為量子比特的初始狀態(tài)是 ??|0>?
?,接著反轉(zhuǎn),然后被測量。(使用 ??|0>?
? 和 ??|1>?
? 與經(jīng)典計算機中的比特區(qū)分開來。)
布洛赫球體顯示了預(yù)期的運行結(jié)果
結(jié)論
在某些方面,你可以把量子計算看作用于經(jīng)典計算機的一種獨特的協(xié)處理器,跟 GPU 和 FPGA 一樣。不同的是,在可預(yù)見的未來,量子計算機可以被用戶像網(wǎng)絡(luò)資源一樣訪問到。另一個差異是,它們的工作有本質(zhì)的不同,所以不像很多其他你熟悉的加速器那樣。因此,人們對算法開發(fā)如此感興趣,并投入大量資源來研究量子在何時何地的性能最好。了解一下這些東西也無妨。