譯者:王亮
作者:YK Sugi
原文:http://t.cn/EZAElk0
Hi,大家好!
不久前,我參觀了加拿大溫哥華的D-Wave Systems公司,這是一家制造前沿量子計算機的公司。
我在那里學到了很多關於量子計算機的知識,所以我寫這篇文章來和大家分享我在那里所學到的一些知識。
本文的目的是通過一個簡單的例子讓你清楚地了解什么是量子計算機。
本文所講的內容很容易理解,不要求你具備量子物理或計算機科學的知識。
好了,我們開始吧。
什么是量子計算機?
下面用一句話來概括什么是量子計算機:
量子計算機是一種使用量子力學的計算機,它能比普通計算機更高效地執行某些特定的計算。
這句話有很多東西需要解釋,所以讓我用一個簡單的例子來告訴你它到底是什么。
為了解釋什么是量子計算機,我首先需要解釋一下普通(非量子)計算機。
普通計算機如何存儲信息
目前一台普通的計算機是用一系列的0和1來存儲信息的。
不同類型的信息,比如數字、文本和圖像都可能用這種方式來表示。
0和1系列中的每個單位被稱為比特(bit,中文也叫位),因此一比特可以被設置為0或1。
那么量子計算機呢?
量子計算機並不是用比特來存儲信息的,而是用一種叫量子比特(qubit,quantum bit的簡寫,中文也叫量子位)的東西。
每個量子比特不僅能設置為1或0,還可以設置為1和0。但,這究竟是什么意思呢?
讓我來用一個簡單的例子來解釋一下。這是一個擬人的例子,但它依然可以幫助理解量子機算機如何工作。
一個用來理解量子計算機的例子
現在,假設你現在經營一家旅行社,你需要把一群人從一個地方運送到另一個地方。
為了簡單起見,不妨假設你現在需要運送的只有3人——Alice,Becky和Chris。
並且假設你為此預定了2輛出租車,你得分清楚誰乘坐哪一輛出租車。
另外,你知道誰和誰是朋友關系,誰和誰是敵人關系。
這里,我們認為她們的關系是這樣的:
◇ Alice和Becky是朋友
◇ Alice和Chris是敵人
◇ Becky和Chris是敵人
現在你要將這3個人分配到2輛出租車,並要達到下面的目標:
◇ 最大化共用一輛車的朋友對數
◇ 最小化共用一輛車的敵人對數
譯注:朋友/敵人的對數,這里的“對”是單位,不是指數學中的對數。比如“一對”就是兩人的意思。
好了,這是這個問題的基本前提。讓我們先來思考一下如何用普通計算機解決這個問題。
用普通計算機解決這個問題
為了用普通的非量子計算機來解決這個問題,你首先需要弄清楚如何用比特存儲相關的信息。
我們先標識這兩輛出租車為出租車#1和出租車#0。
然后,你可以用3個比特表示誰進入哪輛車。
例如,我們可用0和1來表示:
◇ Alice乘坐出租車#0
◇ Becky乘坐出租車#0
◇ Chris乘坐出租車#1
由於每個人都有兩個選擇,因此有2*2*2=8種組合來把她們分配給兩輛車。下面是所有可能的組合:
A | B | C
0 | 0 | 0
0 | 0 | 1
0 | 1 | 0
0 | 1 | 1
1 | 0 | 0
1 | 0 | 1
1 | 1 | 0
1 | 1 | 1
你可以用3個比特來表示這些組合中的任意一個。
計算每個組合的分數
現在,用普通計算機我們如何來判斷哪一個組合是最佳組合呢?為此,讓我們來定義如何計算每個組合的得分。這個得分將代表每個組合達到前面提到的兩個目標的程度:
◇ 最大化共用一輛車的朋友對數
◇ 最小化共用一輛車的敵人對數
讓我們簡單地這樣定義我們的分數:
(給定組合的得分)=(#共用一輛車的朋友對數)-(#共用一輛車的敵人對數)
例如,假設Alice,Becky和Chris都乘坐出租車#0,可以用3個比特表示為111。
在這種情況下,只有一對朋友共用一輛車——Alice和Becky。
然而,有兩對敵人共用一輛車——Alice和Chris,Becky和Chris。
所以,這個組合的總分是1-2 = -1。
解決這個問題
有了所有這些預設,我們終於可以着手解決這個問題了。
對於一台普通的計算機,要找到最好的組合,你基本上需要遍歷所有的組合,看看哪個得分最高。
你可以構建這樣一個表格:
A | B | C | Score
0 | 0 | 0 | -1
0 | 0 | 1 | 1 <- 最佳組合之一
0 | 1 | 0 | -1
0 | 1 | 1 | -1
1 | 0 | 0 | -1
1 | 0 | 1 | -1
1 | 1 | 0 | 1 <- 最佳組合之一
1 | 1 | 1 | -1
如你所見,這里有兩個正確的組合——001和110,都達到了1分。
這是個相當簡單的問題。然而隨着越來越多的人參與到這個問題中來,用一台普通計算機就很難解決這個問題。
我們看到,3個人需要遍歷8種可能的組合。
如果有4個人呢?在這種情況下,我們需要遍歷2*2*2*2 = 16個組合。
對於n個人,我們需要通過2的n次方個組合來找到最佳組合。
所以,如果有100個人,我們需要遍歷:
2¹⁰⁰ ~= 10³⁰ = 一百萬百萬百萬百萬百萬個組合。
要遍歷這么多的組合,對普通計算機來說是不現實的。
用量子計算機解決這個問題
我們如何用量子計算機來解決這個問題呢?
讓我們回到把3個人分配給2輛出租車的例子。
正如我們前面看到的,這個問題有8種可能的組合:
A | B | C
0 | 0 | 0
0 | 0 | 1
0 | 1 | 0
0 | 1 | 1
1 | 0 | 0
1 | 0 | 1
1 | 1 | 0
1 | 1 | 1
用一台普通計算機,用3個比特,我們一次只能表示其中一個組合——例如001。
然而,使用量子計算機,3個量子比特可以同時表示所有8個組合。
關於量子比特這個詞的確切含義存在爭議,但我的看法是這樣的。
首先,檢查這3個量子比特中的第一個量子比特。當你同時將它設置為0和1時,就像是創建了兩個平行世界。(是的,很奇怪,但隨我看下去。)
譯注:一個世界相當於一個普通計算機,理解這點很重要。
在平行世界中,其中一個的量子比特被設置為0,另一個的量子比特被設置為1。
現在,如果你把第二個量子比特也設為0和1呢?然后,這就有點像創造了4個平行世界了。
在第一世界中,兩個量子比特被設置為00,第二個是01,第三個是10,第四個是11。
類似地,如果你將這三個量子比特都設置為0和1,你就創建了8個平行世界——000,001,010,011,100,101,110和111。
這是一種奇怪的思考方式,但它是解釋量子比特在現實世界中的行為的正確方式之一。
現在,當你對這三個量子比特進行某種計算時,你實際上是在同時對這8個平行世界進行同樣的計算。
因此,我們可以同時計算所有組合的分數,而不是按順序遍歷所有這些可能的組合。
有了這個特殊的例子,理論上,你的量子計算機可以在幾毫秒內找到最好的組合, 即我們之前看到的001或110:
A | B | C | Score
0 | 0 | 0 | -1
0 | 0 | 1 | 1 <- 最佳組合之一
0 | 1 | 0 | -1
0 | 1 | 1 | -1
1 | 0 | 0 | -1
1 | 0 | 1 | -1
1 | 1 | 0 | 1 <- 最佳組合之一
1 | 1 | 1 | -1
實際上,要解決這個問題,你需要讓你的量子計算機做兩件事情:
◇ 所有可能的組合都用量子比特表示。
◇ 將每個可能的組合轉換成分數的函數。在本例中,這個函數計算共用一輛車的朋友對數和敵人對數。
能做這兩件事,你的量子計算機將在幾毫秒內得出最好的組合。在本例中,最好的組合是分數為1的001或110。
現在,從理論上講,量子計算機每次運行都能找到最好的解。
然而,實際上,在運行量子計算機時會存在錯誤。所以,它可能會找到次優解,第三優解,等等。
隨着問題變得越來越復雜,這些錯誤會變得越來越突出。
因此,在實踐中,你可能希望在量子計算機上數十次甚至數百次地運行相同的操作,然后從你得到的結果中選出最好的。
量子計算機的計算規模如何
即使有我提到的錯誤,量子計算機也沒有和普通計算機那樣的計算規模問題。
當有3個人需要分配給2輛車時,我們需要在量子計算機上執行的操作次數是1。這是因為量子計算機會同時計算所有組合的分數。
當有4個人的時候,操作次數仍然是1。
當有100人的時候,操作次數仍然是1。量子計算機在同一時間計算所有2¹⁰⁰ ~= 10³⁰ = 一百萬百萬百萬百萬百萬個組合的分數只需一次操作。
正如我之前提到的,在實踐中,最好是運行量子計算機幾十次或幾百次,然后從得到的結果中選出最好的結果。
然而,它仍然比在普通計算機上運行同樣的問題並且必須重復同樣類型的計算一百萬百萬百萬百萬百萬次要好得多。
最后
特別感謝D-Wave Systems公司的每個人耐心地向我解釋這一切。
D-Wave最近推出了一個與量子計算機交互的雲環境。
如果你是一名開發人員,並且想嘗試使用量子計算機,使用雲環境可能是最簡單的方法。
它叫Leap,網址是:
https://cloud.dwavesys.com/leap
你可以免費用它來解決成千上萬的問題,而且一旦你注冊了量子計算機,他們還提供了手把手的教程。
補充說明:
在本文中,我使用術語“普通計算機”來指代非量子計算機。然而,在量子計算領域,非量子計算機通常被稱為經典計算機。