量子計算機真的不只存在在科幻小說里嗎?它和普通計算機有何區別?和咱普通程序員又有何關系。本篇文章專治不明覺厲,希望帶你一探量子計算機的究竟!
2001年的時候,IBM發表文章說“在未來的幾十年里,量子計算機很可能會走出科幻小說與科研實驗室(主要在IBM)進入實際應用。”
現在這句話已經成為了現實,并且只用了十幾年的時間。在本周三,IBM的科學家首次將該公司的量子計算機接入云端服務向大眾公開。科技的發展總是令人震驚不已。并且IBM希望幾年之內就能開發出可用于量子計算機的實驗芯片。目前,IBM還沒有正式公開量子計算服務,但是有興趣的朋友可以登錄IBM Quantum申請試用。
IBM正在研發的是基于超導效應的量子邏輯門架構的通用量子計算機。對于量子計算機,國內媒體報道轉載的很多,不過大多基本停留在翻譯英文媒體的水平。而且互相轉發,鮮有原創或者類似電子產品的試用評測。本文作者者恰好做過量子加密的研究和實驗,對于量子計算也有興趣,而且作者的專業之一光子學(Photonics)恰好也是量子加密/量子計算的物理實現途徑之一。
所以我們特約了一篇從淺入深,老少咸宜的科普介紹,來給大家解說量子計算機的原理,和普通計算機的區別,與咱們程序員有什么關系,并且作者還利用IBM的開放服務做了一些評測。希望沒有任何專業背景的讀者能從本文管窺全豹,同時對于擁有相關背景知識(主要是大學物理、量子力學和數字電路/模擬電路)的讀者也能有所收獲。
量子計算機的發明歷史
史蒂芬·威斯納在1969年最早提出“基于量子力學的計算設備”。1980年代一系列的研究使得量子計算機的理論變得豐富起來。在1981年五月的MIT物理學和計算機技術的一次會議上,1918年出生的美國物理學家理查德·費曼,作了一個“Simulating Physics With Computers”的報告,揭開了研究發展量子計算機的新篇章。
費曼在報告中提出:經典的圖靈計算機可以用來模擬量子物理嗎?答案是否定的,用傳統計算機來模擬量子力學,計算量將隨著系統(微觀粒子數)的增大而指數增加。費曼認為微觀世界的本質是量子的,想要模擬它,就得用和自然界的工作原理一樣的方式,也就是量子的方式才行。費曼首先將物理學和計算機理論聯系到一起,他在MIT會上精彩的演講,使得計算機科學家開始關注物理學的進展,關注量子力學。
1994年,貝爾實驗室的專家彼得·秀爾(Peter Shor)證明量子計算機能做出離散對數運算,而且速度遠勝傳統電腦。
2011年5月11日,加拿大的D-Wave 系統公司發布了一款號稱“全球第一款商用型量子計算機”的計算設備“D-Wave One”。
2013年5月,谷歌和NASA在加利福尼亞的量子人工智能實驗室發布D-Wave Two。
什么是量子計算
量子計算是一門理論科學。它是研究如何直接應用量子力學現象(例如量子疊加態和量子糾纏態)對數據進行操作的計算系統的科學。在最終的運算結果上,量子計算機和現有計算機沒有任何不同(否則一定是有一方算錯了,那算錯的一方也就沒有什么實用價值了)。它們最大的不同之處在于運算的過程有著天壤之別,后文將會詳細解釋。
量子計算模型,主要有3種:
量子電路模型單向量子計算模型絕熱量子計算模型量子電路模型量子電路模型(Quantum circuit model)是把量子計算過程化成像經典計算一樣有不同的“邏輯門”(當然是quantum operation)作用在量子態上,最后得到所期待的量子態。
單向量子計算模型單向量子計算模型 (one-way quantum computation model) 是把量子計算,化成通過傳輸(teleportatio)和測量二維簇態(two dimensional cluster state),使得我們可以得到我們想要的量子門操作(quantum gates)。
絕熱量子計算模型絕熱量子計算模型(adiabatic quantum computation model)是通過先把問題劃歸成復雜的漢密爾頓量的基態(Hamiltonian ground state)的問題(即找到基態就可以找到最終結果),然后開始與一個簡單的漢密爾頓量,通過絕熱過程最后得到所需要的基態。
量子計算機比傳統計算機優越在哪里?
量子計算機造出來了,依然需要優秀的算法。就像我們日常所用的電子計算機中的排序問題,寫得好的算法基本可以做到O(n*log(n))的時間復雜度,而差的算法很可能就是O(n^2)了。
舉一個非常實用的例子:快速傅立葉變換(FFT)在信號處理和圖像處理中是十分常見也非常有用的函數。它的時間復雜度是O(n*long(n))。借助量子計算機,FFT 的復雜度可以降低到 O((log(n))^2),甚至連讀一遍數據的 O(n) 時間都不用,因為只要 log(n) 個量子比特就可以描述 n 維向量了。利用高性能的 FFT,因子分解的復雜度可以達到亞指數時間(sub-exponential time)。
目前量子計算機已經以可擴展的方式,使用 Shor's Algorithm 完成了對15的素數分解。有人表示:用 Shor 算法實現素數分解這一件事情,可以與經典計算機中的 "Hello World!" 相提并論。 除了贊嘆它的開創性地位之外,也從一個側面說明目前量子計算還處在起步階段。
量子算法與我們有什么關系?
量子算法的時間復雜度與大數據的關系:
有了上面的介紹,有心的讀者應該已經了然于胸了:數據量越大,量子算法在時間復雜度上的優勢就越明顯:n=1000時,O(n^2)的傳統算法需要運算一百萬步,而O(n*log(n))稍好,也得幾千步。而量子計算只需要幾步就完成整個運算拿到最終結果了。
在大數據時代,n=10000000是家常便飯,那么上邊的對比就成了10^12 vs 10^6 vs 10^2,在耗時上的差距是幾個數量級。
上面僅僅是以FFT為例子,實際上一旦找到實用的算法可以實現O(n)甚至O(1)的效率,那在大數據領域里就可以給常規電子計算機畫上句號了。
懂得量子算法的程序員,就會和目前熟悉深度學習算法以及大數據架構的程序員一樣,變得格外搶手。
所以現在投入必要的時間精力學習一點量子計算的知識,是自我提高的一個不錯的選擇。而IBM量子體驗的網站,正好也提供了這個平臺和機會。
量子算法的時間復雜度與云計算的關系:
量子算法對云存儲行業,則多少會有些打擊。目前各個有能力的大國政府都在靜悄悄的研究量子計算以便即時破解重要的加密文件。而只要這個技術成熟可用,那么任何存儲在第三方的云數據都變得不安全了。因為哪怕是加密存儲,也可以在轉眼間被破解。
有了量子計算的威脅,用戶會更加保守的將敏感數據保存在只有自己能接觸到的物理環境,而不再會大大咧咧的加密上傳到第三方云存儲服務商。當然,量子計算一定能同時帶動加密技術的發展。但是目前來看這對矛與盾的較量,在政府大機構的影響下,應該是解密技術占上風且更容易流入民用。量子加密技術則主要還是有政府機構掌握。所以從一點來看,量子計算的出現,對提供云存儲服務行業并不是一個利好消息。當然,作為程序員,如果能理解甚至設計可靠的量子加密算法,也許很快就會成為IT業內的搶手當紅辣子雞,甚至被政府特工追殺也不是沒有可能。
量子計算的終極實現會是什么樣?
量子計算研究的終極目標之一是制造并應用通用量子計算機(Universal Quantum computer)。以當前的設計構想,至少要能夠處理上百量子比特位(qubit)才有意義,目前IBM開放的5-qubit計算服務離這一目標還差得很遠。通用量子計算機的具體指標可以參考《The Physical Implementation of Quantum Computation》(http://arxiv.org/abs/quant-ph?0002077 )
而硬件上的具體物理實現有很多,比如通過:
光子學核磁共振QED腔量子點Redberg atomion trapJosephson junction等等來實現。
較之D-wave量子計算機,IBM牛在哪里?
比較出名的D-wave 1代和2代使用的都是Josephson junction 。
NASA、CIA、Google都購買了D-wave進行相關研究。牛津大學則和洛克馬丁、諾基亞合建了一個基于D-wave模型的量子人工智能的研究中心。D-Wave受到質疑的地方在于其應用場景受限,目前的設計并不是通用量子計算機。
而IBM正在研發的是基于量子邏輯門的通用型量子計算機,所以通用性沒有問題,所有的量子算法都能運行。
此外,IBM還完成了兩個很重要的突破。
一是同時檢測兩種量子誤差(quantum errors):1. bit-flip, 2. phase-flip。從而大大增強量了子計算機的穩定性。
最簡單的單個量子比特的狄拉克表示: |Psi>=a|0>+b|1> ,其中a,b是兩個基態的系數。其他量子比特基態對還有|+>和|->, |spin+>和|spin->等。所以也可記為|Psi>=a|+>+b|->或者|Psi>=a|spin+>+b|spin->,采用何種正交基主要取決于量子系統的物理實現,例如光子的偏振態、粒子的自旋等等,這里就不再深入。
一個量子比特是兩個標準正交比特0和1的任意疊加。a和b滿足歸一化條件即可,所以a和b之間有一個相位自由度。如果相位在量子計算過程中被干擾,這個flip就是就是phase-flip。 bit-flip就是運算操作過程中0意外變成1,或者1意外變成0了。理想情況下,量子計算不會有誤差。 但實際上由于環境噪音(主要是熱和電磁輻射),量子系統會受到環境干擾。只有在零場強和絕對零度的環境里,才能有理想狀態下的量子計算。D-wave是在20mk(零下273.13度)工作的,IBM用的也是超導芯片,工作溫度是15mk(零下273.135度,僅比絕對零度-273.15度高0.015度)。
之前的研究只能測量兩個error中的一個,也就無法做到EC(error correction)。如今IBM解決了這個問題(http://spectrum.ieee.org/tech-talk/computing/hardware/ibm-shows-first-full-error-detection-for-quantum-computers)。
二是IBM提供了有史以來最好的可擴展性。當然落實在實際硬件開發應該還會有新的
問題。IBM接下來的目標應該是把量子比特加到50至100。再往后就需要更多的研發資源了。
在這里附帶澄清一下很多媒體對量子比特的普遍誤解,以及連帶到對量子計算的誤解:對于量子計算的優勢,媒體上常見的解釋是,相比較我們常用的電子計算機采用的0,1二進制值,量子計算機每一個量子位都能存儲0到1之間的信息。這是一個想當然的解釋,這根本不是量子計算機的本質優勢:
因為很明顯我們用電阻電容組成的模擬電路一樣可以表征0到1之間的任何連續值。所以說本質區別不是比特位所攜帶數值的無窮可能性,而是比特信息的量子疊加態特性。對于多比特位的運算,量子計算機的優勢才得以明顯體現:所有的比特位可以同時完成邏輯運算,這一點是傳統電子計算機根本做不到的。
對于多比特位的量子系統,整個系統的量子比特位狀態是可定量預測的,而單個量子比特位是不能確定的。
舉一個簡單的例子來說明這種量子態的疊加關聯性——在IBM量子計算服務的教程里也用到的十分常見的Hadamard Gate:
Hadamard Gate的功能就是將輸入 α0|0〉+α1|1〉,轉換成輸出 2^{-1/2}(α0+α1)|0〉+2^{-1/2}(α0-α1)|1〉 。換言之,Hadamard Gate 就是把經典的狀態 |0〉 和 |1〉 轉換成 |0〉 和 |1〉 的“halfway" 狀態。
關鍵之處在于:這個操作,即使是僅對 n 個量子比特中的第一位進行Hadamard gate 運算,所有的 2^{n} 個系數都會改變。這里的“并行”運算是量子力學的物理本質確保的,而不是很多媒體中不明就里的多核多設備的”并行/多線程“。
必須“冷酷”的量子計算機
回到IBM 量子計算的實驗室硬件,下面放了兩張從官方網站視頻中的截圖:
圖一是開放式稀釋冰箱( open dilution refrigerator)。冰箱底部的溫度最低,低到僅比絕對零度高15mK,以便維持芯片中超導材料的超導狀態,用來處理量子信息 。
圖二 是冰箱的氣體處理系統。面板顯示的是閥門以及泵的開關情況。冰箱里使用的氣體是氦的同位素氦氣-3(Helium-3) 。
IBM開放的服務是什么?
看完這么多高大上高冷貴的東西,再來看看IBM為愛好者提供了什么試用服務。
下圖是申請到的試用帳號,下面按照他們的教程(User Guide)嘗試的幾個實驗。
IBM量子在線體驗含七個部分
第一部分(The IBM Quantum Experience)是面向所有人介紹世界上第一個基于云端的量子計算服務。
第二部分(The Weird and Wonderful World of the Qubit)是介紹基本的量子比特常識
第三部分(Multiple Qubits, Gates, and Entangled States)通過四個小課程演示多量子比特的復雜性和精巧之處。
第四部分(Quantum Algorithms)更深入的介紹量子世界的奇妙之處,介紹可用于編程的量子算法。
第五部分(Quantum Error Correction)介紹如何利用量子糾纏態糾錯
第六部分(FAQ)就是常見問題的回答。
頁面右下端還有一個小蟲子的圖標,方便用戶反饋各種bu
IBM服務示例
IBM官方介紹視頻里用的是Grover's Search算法做例子,這里我就以Deutsch-Jozsa 算法再舉一個例子。畢竟這個例子的物理模型可以對應于光學中雙縫干涉,看上去格外親切。
Deutsch-Jozsa Algorithm簡介
Deutsch-Jozsa 量子算法是第一個證明量子算法能繞過經典算法困境的例子。這個算法演示允許量子振幅取正值和負值,而不像傳統的概率必須總是非負的。
Deutsch-Jozsa量子問題定義如下。考慮一個函數f(x)對輸入的n比特位x返回0或1。
假設我們確保f(x)或者是一個常數函數,它的返回值是常數c,對所有輸入x有c∈{0,1},或者f(x)是平衡函數,對任何0,1輸入他都取半值。我們的目標是通過盡可能少的嘗試來確定f(x)到底是常數函數還是平衡函數。傳統算法在最壞情況下需要進行2^(n-1) + 1次計算。而使用Deutsch-Jozsa量子算法,這個問題可以只用一次運算來解答。
要了解Deutsch-Jozsa量子算法是如何工作的,讓我們先考慮一個典型的干涉實驗:其行為類似波的粒子,如光子,可以從源頭上檢測器陣列通過兩個或多個路徑行進。觀察到粒子出現概率大的區域是入射波在到達時具有相同的相位的區域。
設想我們可以建立一個干擾實驗,具有2^n個探測器和從源到每個探測器的2^n個可能的路徑。我們將其分別標記為n比特輸入x和n比特探測器y。進一步假設x與探測器y沿路徑累積的相位等于C(-1)^(f(x)+x+y),其中
x y=Σi= xiyi
是二進制的內積(點乘),C是歸一化系數。觀察檢測器y中的粒子出現的概率可以通過累加所有路徑的幅值x到達y時的絕對值平方來計算:
PR(y)= |CΣx(-1)^(f(x)+x y)| ^2
歸一化條件ΣyPr(y)= 1,則使C = 2^(-n)。接下來計算檢測器Y = 0^N觀察粒子的概率譜(Y = 0^n)(全零字符串)。我們有Pr(Y = 0^n)= | 2^(-n)Σ(-1)f(x)|^ 2
如果函數f(x)= c是常數函數,我們將得到譜Pr(Yy= 0^n)= |(-1)^c |^ 2 = 1。而當f(x)是一個平衡函數時,我們會得到Pr(y = 0^n)= 0,因為所有的總和超過x的項彼此抵消。
因此,我們可以只用一次實驗判斷是否f(x)是常數還是平衡函數。
當然,以光學手段進行這個實驗不太實際,因為它需要一個非常大的光學平臺!但是,我們可以用量子計算機模擬這個實驗,僅用n量子比特和訪問Oracle電路Uf就能實現。
事實上,考慮下面的算法:
第1步:初始化n的全零狀態量子比特| 0,...,0>。
第2步 應用Hagamard門H至每個量子位。
第3步. 應用Oracle電路Uf。
第4步:重復步驟2。
第5步:測量每個量子位。設y =(y1,...,yn)是測量結果的列表。
如果f是一個常數函數,那么將會觀測到y是全零字符串。Hagamard門將輸入|0>映射到均勻疊加的|0>和|1>。 第二步之后系統的狀態是2^(-n/2)Σ|x>。
接著Oracle電路將此狀態映射到2^(-n /2)Σ(-1)^f(x)|x>。第4步再次應用Hadamards門,它將基態|x>映射到一個疊加態2^(-n/2)Σ(-1)^(xy)|y>。第4步完成后系統的狀態是|ψ>=Σψ(y)|y>,其中ψ(y)= 2^(-n)Σ(-1)^(f(x)+x y)。
這正是我們需要的干擾實驗。
在步驟5的測量起著檢測粒子的作用。如上結果表明,如果概率y=0^n值為1,則f是一個常數函數。為零,則f是一個平衡函數。因此,我們只通過一次運算就解決了Deutsch-Jozsa量子問題的確切解答。
量子線路設計
拉拉雜雜扯這么多,沒有量子力學基礎的讀者可能有點暈。那么下面就是實際量子線路的設計:
一 n=3,函數為常數函數時的模擬:
結果跟理論分析預測的是一樣的,即輸出為1
二 n=3,函數為平衡函數時的模擬:
輸出跟理論分析預測的是一樣的,即輸出為0
牛人對IBM量子計算的評價
從外界的評價來看:“……IBM所做的是對的。該服務的界面易于使用,“任何對量子計算機有所了解的學生都知道如何與這個設備交互。”
Cory周末對IBM這個新服務進行了試用,讓他吃驚的是:這個系統相當穩定——每一次測試它幾乎都得到了相同的結果。這在傳統計算機中是個尋常的現象,但在基本都是圍繞捕獲概率展開的量子計算機世界中,結果的穩定一致就意味著標志性的進步。 ”
IBM的確用他的量子計算平臺證明了他的突破之一:對雙誤差同時測量來大大提高系統的穩定性。此外能對公眾開放5qubit的平臺,也給大家留下了想象的空間——IBM到底能在短期內將qubit推進到多少位?
總結:
IBM提供的這個平臺,看上去是為自己的研發成果和企業品牌打廣告,事實也的確起到了廣而告之的作用。
但是如果你真的認為就只有這么點兒信息,那說明你還沒有親自嘗試網頁上的各種量子計算和算法。
如果你稍有嘗試,應該不難發現,IBM提供的其實是一個雙向學習的平臺:嘗試用戶可以從中學習了解量子計算的各項基本知識和常見算法,IBM則可以從中統計用戶的大致認知水平。
既然每個用戶都是用郵箱注冊,又在平臺上擺弄了一番。IBM的研究團隊也會從試用用戶中發現具備相關背景知識、能熟練實用的“高級用戶”,說不定這些用戶在不久就能從注冊郵箱收到IBM的招聘挖人郵件呢——這只是yy而已,不過既然人家免費提供了這個學習平臺,為什么不利用閑暇時間了解學習一下,提高一下作為程序員的未來職業素養呢。