凡是現實的都是合乎理性的,凡是合乎理性的都是現實的。
——黑格爾命題
我們知道,當一串神奇的“量子比特流”被進行數據處理時,因為量子疊加的關系,實際上我們同時處理了所有的可能輸入。比方說,3個量子比特代表了從000到111全部8個可能的數據。根據計算波函數的強度,這8種可能性都有它出現的概率。當量子計算機處理這個運算的時候,你可以把它想象成分身有術的妖精——同時干著8臺傳統計算機在干的活,而這8臺計算機以一種奇妙的方式疊加在波函數的層層云霧中。或者根據多宇宙的解釋,你也可以想象成我們的宇宙突然間同時分出了8個不同的分支,而在每個分支宇宙中都有一臺計算機在運算。這8個宇宙中處理的數據便是3個量子比特所包含的全部可能性,而它們疊加在一起才構成了一個完整的量子信息。
這種事情聽起來太匪夷所思了。如果說量子計算機是在那么多個不同的宇宙中同時進行運算的話,那我們最后又如何把這些不同宇宙中的計算匯總到一起,得到一個有意義的數據呢?也許最大的問題是,既然它同時進行著疊加的多重運算,那最后是不是也必然得到一個疊加的多重結果呢?我們又該如何確定究竟哪一個結果才是自己想要的呢?這就牽涉到最后如何使量子計算“退相干”的問題。
為了更好地說明它,我們舉一個姚明投籃得分的例子。姚明跳起投籃,球進籃筐。你可能以為籃球只有一條前進的軌跡,也就是從他出手到進筐的那條拋物線。但從量子論的角度來看,籃球實際上經歷了每一條可能經歷的軌跡:在某個宇宙中,它可能繞地球一周然后才進網;在另一個宇宙中,它可能飛到了銀河系盡頭然后又飛回來命中籃筐;甚至它可以退回到恐龍時代,在某個白堊紀的湖泊里飄上一天,然后才跨越時空飛回球館來算上兩分……這并不是我們在說笑,量子論假設事情就是這樣發生的:一切只要可能存在的事情都會在某個量子宇宙中存在,所以籃球在進入籃筐之前,遍歷了時間和空間中所有可能經歷的軌跡。
盡管這種理論看上去很瘋狂,但如果我們按照波函數來計算一下這些軌跡的可能性時,我們會驚奇地發現,除了那條傳統的拋物線軌跡之外,其他一切匪夷所思的軌跡都在概率上被抵消了。為什么會如此?這個問題要用數學公式表述起來會非常復雜難懂,我們還是做一個簡單易懂的說明吧:
那些匪夷所思的軌跡雖然在現實中難得發生一次,但這并不是因為它們(姑且叫做事件A)一點都不可能發生,而是當事件A發生的同時,事件-A正以同樣的概率發生著。事件-A是一個在物質、方向、時間上都與事件A相反的事件,我們不妨把它想象成一個“負籃球”(或者想象為一個正好可以吃下一個籃球的空洞)在同樣的地方飛過。當事件A和事件-A同時發生的時候,造成的效果就相當簡單——什么都沒有發生,結果為0。也就是說,籃球之所以在現實中只存在一條軌跡,并不是因為它只有這一種可能性。恰恰相反,它存在著無窮多的可能性,只不過其中只有這一種沒有被其他的可能性互相抵消而已。
在量子計算中我們要干的也是同樣的事情:對疊加的量子比特處理后,其結果的確是疊加的,但我們可以通過仔細地選擇“退相干”,使得那些我們所不需要的結果被互相干涉抵消掉,最后只留下我們所需要的結果。
一個人用它得花上600年才能挖通這堵墻。
——電影《肖申克的救贖》臺詞
我們來看一個實際的例子。正如前一篇文章所指出的那樣,傳統計算機在處理如何把一個極大的數字分解為它的質因數這個問題上,遇到了計算量的大麻煩。哪怕花去超過宇宙年齡的時間,它們都無法處理如此龐大的計算工作,而運用量子計算機的并行處理,我們也許能在幾秒鐘之內輕而易舉地解決這個問題。顯然用這個例子來做量子計算的說明是再好不過的了。
我們的任務是把任意給定的N表示為P×Q的形式,以一個簡單的數為例,比方說N=15,大家都知道15=3×5,但如果我們沒有背過乘法口訣的話,那又該怎么辦呢?如果有一臺傳統計算機,它可能會這么做:先用最小的質數2去除它,結果發現無法整除。然后再試試次小的質數3,嘿,這次正好除盡,于是得到15=3×5。
這種依次嘗試的做法對于小數字還行,但一旦碰到非常龐大的數字時,我們所耗費的時間就無法想象了。從數學的角度上看,我們必須想出一些更有效的方法。幸好,這是一個從18世紀開始就被歐拉等大數學家所關注過的問題。我們仍以15為例,隨便取一個比它小但和它互質的數字a,比方說a=2,現在我們依次計算2的冪次:
21=2,22=4,23=8,24=16,25=32,
26=64,27=128,28=256 ……
這樣你還看不出什么,現在我們進行關鍵的一步,計算用15依次去除這些數所得到的余數。比方說2除以15得0余2,余數是2,這可以用數學符號記做21 mod 15=2。又比如214=16384除以15得1092余4,余數是4,記做214 mod 15=4……依此類推,我們得到這樣的數列:
21 mod 15=2
22 mod 15=4
23 mod 15=8
24 mod 15=1
25 mod 15=2
26 mod 15=4
27 mod 15=8
28 mod 15=1
……
這時我們發現了一個規律:2的冪次去除以15,所得到的結果是循環的。每隔4個數,2、4、8、1的序列就重復出現一次。我們用r來表示這個循環的間隔,在這里r=4。事實上我們可以證明,假設N可以表達為P×Q的形式,而用N去除a的冪次得到的循環數為r的話,那很有可能a■-1和a■+1 兩個數就與N有著大于1的最大公約數,甚至這兩個數本身就能夠整除N。在上面的例子里,N=15,a=2,我們算出r=4,那么2■-1=3是15的一個質因子,2■+1=5是另一個。
但是,記住我們說的是“很有可能”,這種方法并不是每次都奏效。比方說當我們計算N=33并且仍然采用a=2時,我們發現r=10,25=32,這時候它就不管用了。不過也不必灰心,因為解決的方法很簡單,只要多試幾個不同的a即可。例如我們不用2,而令a=23,馬上可以發現這次r=2,因此很容易找出22和24兩個數,它們與33的最大公約數分別是11和3,而這正是我們所要找的答案!
總而言之,找出f(x)=axmodN這個循環函數的間隔r,對于分解大數N有著至關重要的幫助。可惜的是,就傳統計算機而言,這種小技巧也許沒有太大的作用,因為在很多情況下,這個循環的間隔r是如此之長,以至于試圖找出r和分解N本身的難度幾乎沒有太大的分別。不要沮喪,因為這時候我們的量子計算機便隆重登場了,讓我們看看它是如何干的吧。如果分解的還是15這個數,它用二進制表示是1111,也就是說我們需要4個比特位來表示它。不同的是,這一次我們設置的不是4個傳統比特,而是4個量子比特。將它初始化之后,我們的量子寄存器便處于量子疊加態之中,同時代表了0000-1111的16種狀態,每一種的概率都是平均分布的。我們處理這段量子信息,便相當于同時處理了16個不同的狀態。設計一個電路使得它對應于f(x)=axmodN這個函數,并把輸出存放到另一個4位的量子寄存器中,于是我們得到:
顯然量子輸出也是保持在疊加狀態下的,如果還是令a=2,那么其輸出必然是一串2、4、8、1的疊加,每隔4個數重復一次,這也就形成了它的內在頻率。我們如何將這個疊加態的內在頻率方便地找出來呢?這里要用到一種比較復雜的變換,也就是所謂的“傅立葉變換”。想要不用深奧的數學就把它表達清楚無疑是一件難事,不過我們也許可以這樣來理解:
想象你繞著操場跑道,以一個固定的速率跑步,比方說每3分鐘繞一圈(也就是我們要求的r),但你自己沒有秒表,無法確切地知道究竟需要多久才跑完一圈。幸好,你找到了一大堆跑步速率不同的人,有的人1分鐘可以跑一圈,有的人5分鐘才能跑一圈,當然也有的人正好3分鐘跑一圈……總之,他們以任何可能的固定頻率運動。現在你和這無數個速率各不相同的人在同一條跑道上跑步(并不需要同時起跑),想象一下會發生什么?顯然,你會不時地發現有的人超過了你,有的人則被你超過。假設每當你超過一個人或被一個人超過時,都順便在他身上作一個記號,就這樣你跑了近乎無限長的時間,最后停下來數數。啊哈,你發現,每個人身上的記號數目各不相同,有的多,有的少,但是只有一個人的身上連一個記號都沒有!我們可以斷言,他是和你的頻率完全相同的那個人,你可以從他的速率推出自己的速率。
“傅立葉變換”用的正是類似的手法,它把一個函數映射到整個可能的頻段譜中去,并求出這些頻段譜的強度。這就相當于引入了無數個頻率不同的跑步者,但只有和你最接近的那個有著最大的幅度,別的都干涉掉了!在使用了傅立葉變換之后,我們將得到一個有很大概率是正確的答案。這里要注意,我們說的仍然是“很大概率”正確,而并不能保證它一定是正確答案。觀測造成的“退相干”始終帶有隨機性,正如我們以前說過的那樣,它終究是測不準的。如果不對的話,只要重復進行幾次觀測,最終總會得到正確的答案。而多求得幾個r之后,顯然也不難找出N真正的質因數來。
以上就是量子計算機如何來分解大數的過程,確切地說,它是1994年由美國的計算機科學家彼得·肖爾所提出的一種著名量子算法,即“肖爾算法”。你可能覺得它太復雜了,居然如此興師動眾地去解決一個“怎樣找出15=3×5”的簡單問題。但如果N是一個有幾千幾萬位的超級大數時,情況就變得非常不同了。傳統計算機可能需要漫長的時間來執行這樣一個不可能完成的任務,而量子計算機卻能夠把它控制在可容忍的時間之內,甚至只要幾秒鐘。
對于現代信息社會而言,只有量子計算機才是“可持續發展”的。假設某天你造出一臺超級傳統計算機,它的計算速度如此之快,以致在分解一個10萬位數字的時候居然能夠做到和量子計算機一樣快(現實中這似乎不大可能,我們假設如此好了)。可這也不能保證它能夠從容地面對未來的發展,因為一旦10萬位的數字不保險了,加密者完全可以把密碼換成20萬位的數字。我們已經算過,每增加一位數,對于傳統計算機來說,執行任務的時間就增加了約3倍。相比傳統計算與密碼長度呈一種指數型增長關系來說,量子計算所需的時間是和密碼長度成正比的(嚴格地講,是和密碼長度的某個多項式成正比)。這就是說,如果你把一個10萬位的密碼加長到20萬位,對于量子計算機來說,它執行任務的時間可能也只是從1秒增加到2秒而已。但對于傳統計算機來說那就大難臨頭了,因為它所花的時間可能要增加3100000倍(這大大超過了宇宙自誕生至今的時間)。
顯而易見,假如有了這樣一臺量子計算機,你對于破解任何大數字都會充滿信心。你可以隨心所欲地在網上馳騁了,因為目前流行的加密系統(其中最著名的一種叫做RSA)大都是建立在大數字的保密上的。當然,這只是量子計算機能夠做的許多事情之一。通過設計不同的量子算法,我們能夠利用量子計算機完成更多的任務。就目前所知,它在搜索數據庫,實現各種模擬,預報天氣,開發藥物,推算市場等方面都有著傳統計算機無法比擬的絕對優勢,更多的研究必然會進一步地向我們展示它的力量。
(這臺量子電腦)并沒有標志著傳統計算完結階段的開始,但它的確標志著量子計算開始階段的完結。
——D-Wave公司總裁赫布·馬丁的發言
那么,究竟如何來建造一臺真正的量子計算機呢?
我們已經看到,量子計算中最關鍵的部分就是如何使寄存器在運算中保持量子疊加態,并在適當的時候進行觀測使它退相干。在現實世界里,量子態可以通過電子自旋、離子陷阱、量子點、分子磁場、超導、量子光學等等不同的物理方法來實現,而最大的問題在于,如何讓它始終保持這種量子疊加態。
量子世界的疊加就像是最最脆弱的沙雕,只要稍微擾動一下就立刻灰飛煙滅。為什么我們在現實世界中從來也沒有見到過又死又活的貓?因為貓太大了,它和環境無可避免地發生互相干涉的作用,完全沒有辦法保持在疊加態中。在進行量子計算的同時,我們必須十二萬分小心地不讓我們的量子信息受到任何干擾,否則就前功盡棄了。換句話說,我們要絞盡腦汁讓我們的量子疊加“與世隔絕”起來,直到我們需要它時才讓它與環境有所交流,發生退相干,而這絕不是一件容易的事。想想看,你如何把數毫米甚至數厘米長的芯片保護起來,不讓它和任何事物發生任何作用?
這確實是一個天大的難題,有人曾經悲觀地認為我們永遠也造不出一臺真正實用的量子計算機——因為它造不大!別的困難也不少,比如由于量子的不確定性,我們始終無法保證數據的完全準確,這就需要一種強有力的糾錯機制來保證計算的正確運行。還有,為了減低錯誤率,我們可能需要量子電路以一種極快的速度來執行——比退相干本身所用的時間還少上許多。這些技術在未來也許會得到解決,也許真的如悲觀者所說的那樣永遠無法實現,我們現在還不能知道。
不管怎樣,人們仍然在這條道路上展開探索,因為它的前景確實誘人。1998年,在牛津大學里,科學家利用核磁共振技術展示了一種只有2個量子比特的計算機。2000年,德國科學家造出了5個量子比特的計算機,而美國洛斯阿拉莫斯實驗室把記錄改寫為7個量子比特。2001年,IBM用一臺量子計算機做了件了不起的事情:像我們在上面已經做過的那樣,把15分解為3×5。為了做到這一點,他們用了7個量子比特、超過1018個分子來執行這次計算。2005年,包含了8個量子比特的第一個“量子字節”出現了。同年,人們成功地把一段量子信息“拷貝”到另一個內存中再“拷”回來。到2006年,量子比特數進一步增長到12個。
今年2月,發生了一件轟動全球的事情。大批的記者、科學家和企業家蜂擁而至,擠在硅谷的一個房間里,目瞪口呆地看著一臺神奇的計算機解決了一個“數獨”游戲,安排了一些座位,并且從許多分子模型中挑出了一種藥物分子。這臺計算機名叫“獵戶座”(Orion),被稱為有史以來第一臺真正具有商業用途的量子計算機,能夠同時操作16個量子比特,而造出這臺計算機的D-Wave公司也在一夜之間成為了全球矚目的焦點。由于這臺計算機本身是放在另一個房間里,在超低溫的環境下運行的,所以大家都沒有真正目睹它究竟如何運作,只是看到了運行結果而已。雖然有美國國家航空航天局(NASA)出面證實,但在科學家中間還是引起了不少疑問。當然,這個新聞無疑將大大地刺激“量子計算”這個早已被炒得火熱的概念,將吸引更多的頂尖公司參與到它的研究和開發中去。或許,我們真的已站在“量子計算時代”到來的曙光之中。
還要等多少年,一臺真正實用的量子計算機才能問世呢?一般的看法是,如果它真的想要執行一些有意義的操作的話,至少需要200個以上的量子比特。而幾百個比特的疊加究竟能否實現,這是所有人心中都沒有底的事情。但至少,量子計算在物理學理論上已經是完備的,剩下的只不過是一個工程問題,樂觀的估計是它也許會在20年內開花結果。
退一萬步來說,就算最后證明這是一條走不通的死路,我們也沒有什么大的損失。至少我們對計算科學與自然本身的理解會有進一步的深入,與此伴隨的各種技術將得到完善和創新,而從中得到的有關知識也能夠促進另一些領域的發展,例如量子信息和量子通訊等。
不管怎樣,我們仍然擁有這樣一個夢想:在幾秒鐘內處理遠超過我們過去文明史總和的信息量,在最小的空間內計算出整個宇宙的博大與輝煌。
編后語:“揭秘量子世界”系列到此將告一段落,為了照顧盡可能多的讀者,我們講的內容并不深奧。如果你對這一領域產生了興趣,又有扎實的理科基礎,不妨利用假期的時間找些更專業的書籍來看。量子世界依然是神秘的,祝愿你能成為那個揭開它那神秘面紗的人。
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”