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