量子計算的hello world——Deutsch演算法程序演示(僅需線性代數基礎)

量子計算的hello world——Deutsch演算法程序演示(僅需線性代數基礎)

來自專欄希爾伯特空間魁比特郡4 人贊了文章

1. 引子

量子計算好神秘哦!學IT的人該如何理解?為啥量子計算這麼牛?能否寫個量子計算版的hello world程序來耍耍感受一下?這些問題是身邊的同事經常問我的問題。雖然知乎上或者其他網站都有好些量子計算的科普,可惜對外行仍是有很多理解上的障礙,也往往沒有法子從程序運行來直觀感受。

現在這個帖子不是去過多地重複量子計算原理,只是從一個hello world程序來牽引我們對量子計算的理解。所幸的是,目前有好幾家單位都提供了量子計算的雲服務,比如IBM、清華大學、微軟、阿里等,方便大家試用,在上面做實驗,比如接下來的hello world程序。

首先定義我們這個hello world要做啥。僅僅列印一句「hello world」應該不能滿足大家的胃口,至少我們得找個例子來演示量子計算相對經典計算的優越性吧。當然,這個例子越簡單越好哈。早在1985年,也就是Feynman同學提出「量子計算」概念的第二年,Deutsch同學就設想了這麼個例子,我們直接借鑒就好。下面的介紹只需具備線性代數的基礎即可(flag先立在這裡,我儘力哈)

2. 問題定義:最簡單的量子計算——Deutsch問題

這個問題具體是這樣的:考慮自變數和因變數取值均為0或1的函數 f: {0, 1}
ightarrow {0, 1} ,比如 f_1(x)=0, f_2(x) = 1, f_3(x) = x,  f_4(x) = 1 - x , xin{0,1} 。可以看出,前兩個函數 f_1(x), f_2(x) 屬於「常量函數」(在原文里稱為constant函數),即 f(0) = f(1) ;而後兩個函數 f_3(x), f_4(x) 屬於「平衡函數」(在原文里稱為balanced函數),即如果 x 的取0或1的幾率相等的話,函數值f(x) = 0f(x)=1 的幾率也是相等的。問題是,把某個函數 f(x) 看成黑盒子,你只能通過輸入一系列的值來測試,那麼需要輸入多少次,能夠確認這個函數是屬於「常量函數」還是「平衡函數」

我們先看看經典計算機的解法。很明顯,我們只需要分別輸入0和1,運行 f(x) 兩次,就可以確認答案。比如先輸入 x=0 ,假設我們運行黑盒子發現 f(x) = 1 ,那麼 f 可能是 f_2 或者是 f_4 。接著輸入 x=1 就可以確定具體是哪個。

而利用量子計算機,我們只需要運行 f(x) 一次,就能確認答案,具體做法稍後詳解。也許你會說這並不是很明顯的優勢,但是當把輸入變成多元函數,就不一樣了。對於經典計算機,演算法複雜度是指數級的。而量子演算法可以始終保持只需運行一次即可。換言之,在這個問題上,量子計算帶來了指數級的收益。

是不是很神奇?在具體解釋原理之前,我們先看看演算法的量子線路和運行結果是啥樣子的。

3. Deutsch演算法的量子線路和運行結果示例

我們這裡考慮3元函數, f(x) = x_1oplus x_2 x_3oplus 為異或運算,即兩個邏輯變數相異,輸出才為1),很明顯它是一個「平衡函數」,因為不管 x_2, x_3 取值如何,只要 x_1 取值改變,函數 f(x) 的取值也跟著改變。

在阿里量子計算雲(網址:quantumcomputer.ac.cn,也可以嘗試其他平台哈),我們搭建量子線路如下:

我知道這可能看上去不明所以然,容我稍後分解,這裡只指出,第2列的Z門和CZ門(即那個太陽鏡哈)就實現了上面說的 f(x) (不妨作為一個練習)。先看運行結果:

這個結果應該這樣解讀,對於第一個變數 x_1 ,它由量子比特 Q_1 承載,輸入為0(量子線路上所有量子比特 Q_1, Q_2, Q_3 均初始化為0),輸出為1(通過幾率分布來體現),因此它是「平衡函數」(反之,輸出若為0,則它是「常量函數」)。這和我們一開始對函數的定義 f(x) = x_1oplus x_2 x_3 是一致的。至於為什麼需要這樣解讀,就是演算法設計的緣故了。

4. Deutsch演算法原理

為了理解Deutsch演算法,我們先看看干涉實驗。它體現的概率相加相減,後續會結合我們要考察的函數,最終匯總起來,得到函數的分類。在量子力學裡(或者你們喜歡的薛定諤貓身上),粒子(貓)具有波動性,在通過雙縫後,在探測器上會出現明暗條:

稍微把上述實驗推廣一下。設想有 2^n 個探測器,從源到每個探測器有 2^n 條可能的路徑。

(未完待更新哈)

推薦閱讀:

雲平台的發展和五大安全挑戰
智慧農業:農業大數據中心——智慧農業雲平台
Cloud Foundry部署記錄
【宏和網路資訊】雲計算、大數據和物聯網三者之間有哪些區別和聯繫?

TAG:量子計算 | 雲平台 |