哪幾類問題才算難
電腦做的大多數事情,它都做得很好。整理你的照片、播放影片、跑一張試算表——古典機器把這些處理得漂漂亮亮,而量子電腦在這些任務上反而會更糟。所以在談量子之前,不妨先留意一點:只有*一小撮、很具體*的一類問題,才是古典電腦真正啃不動、而且在這裡值得關注的難題。
有兩個例子反覆出現。第一個是大數分解:給你一個 600 位的數,它是兩個大質數的乘積,要找出這兩個質數,古典電腦花的時間可能比宇宙的年齡還長。今天網際網路安全(RSA)的很大一部分,靠的正是這個難度。第二個是模擬量子系統——分子、材料、化學反應。自然界在微觀尺度上遵循量子規則,而要追蹤一個並不算大的分子的行為,所需的古典記帳量增長得飛快,連最大的超級電腦都會卡死。
量子電腦是什麼(又不是什麼)
古典位元要麼是 0,要麼是 1。而一個 量子位元 可以處於兩者的 疊加態——但請仔細讀這句話,因為炒作正是從這裡開始的。疊加並不意味著量子位元偷偷地同時是 0 和 1,也不意味著它悄悄地把每一種可能都試了一遍。一個量子位元的狀態由兩個被稱為*振幅*的數來描述,一個掛在 0 上,一個掛在 1 上,而這些振幅可以是正數、負數,或者複數。
|psi> = a|0> + b|1>, with |a|^2 + |b|^2 = 1
最後這一點,才是誠實的玄機所在。無論你把振幅安排得多麼巧妙,當你測量時,你得到的是一個單一的古典答案——一串 0 和 1——疊加態隨之消失。你沒法把所有可能性都讀出來。所以量子電腦並不是一台握著一百萬個答案、再把最好的那個遞給你的機器。它是一台能把振幅安排好的機器,好讓你測量的那一刻,你想要的那個答案,正是最可能蹦出來的那個。
加速到底從哪兒來
真正的引擎是干涉。因為振幅可以是負數(或複數),通往錯誤答案的那些路徑可以相互抵消,而通往正確答案的那些路徑則會累加起來。一個量子演算法,本質上是一段精心編排的舞步:你先搭起一個疊加態,再用各種操作輕推振幅,讓錯誤的結果發生相消干涉,然後你測量——指望倖存下來的那個振幅,正好指向答案。
這也正是為什麼誠實的加速有*不同的量級*,以及為什麼單憑「量子」這兩個字幾乎說明不了任何事情。Grover 搜尋 帶來的是平方級加速:在一個無結構的 N 項空間裡搜尋,它需要大約 √N 步,而不是 N 步。這很實在、很有用——但如果一次古典搜尋要花一兆步,量子大約要花一百萬步,而不是一步。那種搶眼的指數級加速則要稀罕得多,而且需要有*結構*可供利用:Shor 分解演算法 之所以管用,是因為分解暗中藏著一個重複的模式(一個週期),量子電腦能把它檢測出來,從而把一個宇宙年齡量級的問題變成一個可以應付的問題。
一段簡短而誠實的歷史
這個想法比大多數人以為的要古老。1981 年,物理學家理查·費曼指出,在古典電腦上模擬量子系統看起來希望渺茫——並提出:如果你想模擬本質上是量子的自然界,也許你需要一台它本身就是量子的電腦。這一下子重新定義了目標:要的不是一台更快的計算機,而是一台會說自然母語的機器。
1994 年,彼得·秀爾把一種潛力變成了一種壓力。他證明了:一台足夠大的量子電腦能夠高效地分解大數——這直接威脅到 RSA,以及保護著大半個網際網路的公鑰密碼學。一夜之間,這不再只是物理學上的一個好奇心;它關乎現實世界的利害,於是大筆的資金和精力隨之而來。
這條學習線會教什麼(又不會教什麼)
在接下來的幾篇指南裡,這條學習線會從最基礎處一步步搭起你的直覺:量子位元到底是什麼,疊加和測量實際上是怎麼表現的,簡單的操作(閘)如何重塑振幅,以及干涉是如何被駕馭進演算法裡的。我們會反覆回到同一個誠實的問題上——*優勢究竟從哪兒來,又有多大?*——這樣你就能讀懂任何一條量子新聞標題,並且自己來判斷它。
這條學習線不會做的,是塞給你炒作或者硬核數學。你不需要線性代數或物理基礎就能上手;我們以圖示和大白話開路,並且總會告訴你:某樣東西到底還只是一個研究上的承諾,還是一個已經能用的成品。到最後,你不會真的去操作一台量子電腦——但你會明白它能做什麼、不能做什麼,而這一點,比聽起來要稀罕、也更有價值。