一個簡單的例子解釋什麼是量子計算機
大家好!
前幾天,我訪問了加拿大溫哥華的D-Wave Systems。這是一家制造尖端量子計算機的公司。
我在那裡學到了很多關於量子計算機的知識,所以我想在這篇文章中與你們分享我在那裡學到的一些東西。
本文的目的是通過一個簡單的例子讓您準確地瞭解量子計算機是什麼。
對於理解本文,無需具備量子物理或電腦科學的知識。
好,我們開始吧。
什麼是量子計算機?
以下是量子計算機的一個總結:
量子計算機是一種使用量子力學原理來進行計算的計算機,它能比普通計算機更有效地執行特定型別的計算。
這句話中有很多東西需要解釋,我用一個簡單的例子來說明它到底是什麼。
為了解釋什麼是量子計算機,首先需要解釋一下常規(非量子)計算機。
普通計算機是如何儲存資訊的
一臺普通的計算機以0和1的序列儲存資訊。
不同型別的資訊,如數字、文字和影象都可以用這種方式表示。
這個由0和1組成的序列中的每個單元都被稱為位元位。所以,位元位可以設定為0或1。
那麼量子計算機呢?
量子計算機不使用位元來儲存資訊。相反,它使用一種叫量子位的東西。
每個量子位不僅可以設定為1 或 0,還可以設定為1 和 0。那這到底意味著什麼呢?
用一個簡單的例子來解釋這個問題。這是一個人為的例子。但它仍然有助於理解量子計算機是如何工作的。
一個理解量子計算機如何工作的簡單例子
現在,假設你在經營一家旅行社,你需要把一群人從一個地方搬到另一個地方。
為了簡單起見,假設你現在只需要移動3個人——Alice, Becky和Chris。
假設你為此預定了兩輛計程車,你想知道誰上了哪輛計程車。
另外,假設你得到了關於誰和誰是朋友,誰和誰是敵人的資訊。
這裡我們假設:
- Alice和Becky是朋友
- Alice和Chris是敵人
- Becky和Chris是敵人
假設你的目標是把這3個人分成兩組並實現以下兩個目標:
- 最大限度地增加共享同一輛車的朋友對的數量
- 最大限度地減少共享同一輛車的敵人對的數量
這是這個問題的基本前提。我們首先考慮如何用普通計算機解決這個問題。
用普通計算機解決這個問題
要用普通的非量子計算機解決這個問題,首先需要弄清楚如何用位元儲存相關資訊。
我們把這兩個計程車標記為計程車1號和計程車0號。
然後,你可以用3個位元位表示誰進入哪輛車。
例如,我們可以通過將這3位設為0,0,和1來表示:
- Alice在0號計程車
- Becky在0號計程車
- Chris在1號計程車
因為每個人有兩種選擇,所以有2x2x2 = 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都乘坐計程車1號。用三個位元表示為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個人呢?我們需要遍歷2x2x2x2 = 16個配置。
對於n個人,我們需要通過遍歷2的n次方個配置來找到最佳解。
所以,如果有100個人,我們需要遍歷:
- 2¹⁰⁰ ~= 10³⁰個配置
這是用普通計算機根本無法解決的問題。
用量子計算機解決這個問題
我們如何用量子計算機來解決這個問題?
讓我們回到把3個人分到兩輛計程車的例子。
正如我們前面看到的,這個問題有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個人需要分到兩輛車上時,我們需要在量子計算機上執行的運算元是1。這是因為量子計算機同時計算所有情況的分數。
當有4個人的時候,操作的次數仍然是1。
當有100人的時候,操作的次數仍然是1。僅僅一次操作,量子計算機就能同時計算出2¹⁰⁰~ = 10³⁰種情況的分數。
正如我之前提到的,在實踐中,最好是執行量子計算機幾十次或幾百次,然後從得到的結果中選出最好的結果。
然而,它仍然比在普通計算機上運行同樣的問題,並且必須重複同樣型別的計算3.75億次要好得多。
總結
特別感謝D-Wave Systems的每個人耐心地向我解釋這一切。
D-Wave最近推出了一個與量子計算機互動的雲環境。
如果你是一名開發人員,並且想嘗試使用量子計算機,這可能是最簡單的方法。
它叫Leap,訪問地址為https://cloud.dwavesys.com/leap。你可以免費使用它來解決成千上萬的問題,而且一旦你註冊了,還會提供了易於學習的量子計算機教程。
補充
- 在本文中,我使用術語“常規計算機”來指代非量子計算機。然而,在量子計算行業中,非量子計算機通常被稱為經典計算機。