小貼士:百度量子 (量脈項目) 招聘實習(xí)生和工程師啦暑脆,點擊了解詳情 >>
Quantum Approximate Optimization Algorithm (QAOA) 即量子近似優(yōu)化算法,是一種經(jīng)典和量子的混合算法,用于解決組合優(yōu)化問題,最為典型的案例即為最大切割 (MaxCut) 問題。在這篇學(xué)習(xí)匯報中痢士,將主要介紹使用QAOA解決MaxCut 問題的基本策略。
參考文獻
[1] Farhi, E., Goldstone, J., & Gutmann, S. (2014). A quantum approximate optimization algorithm. arXiv preprint arXiv:1411.4028.
[2] https://learn-quantum.com/EDU/originQuantumBook.html
[3] Edward Farhi, Jeffrey Goldstone, Sam Gutmann, Michael Sipser. Quantum computation by adiabatic evolution, 2000. arXiv:quant-ph/0001106.
[4] 段乾恒.絕熱量子計算理論研究[D].湖南:國防科學(xué)技術(shù)大學(xué),2014. DOI:10.7666/d.D01107876.
MaxCut 問題
首先了解一下 MaxCut 問題蘸嘶,它非常便于描述良瞧。考慮如下的一個又節(jié)點和連線組成的系統(tǒng)训唱,我們需要把所有點分成兩部分,檢查這兩部分之間連線的個數(shù)挚冤,而目標(biāo)是找到連線個數(shù)最多的分組方案况增。
這是一種典型的組合問題,最簡單的方法則是枚舉法训挡,這也是唯一一種能找到全局最優(yōu)解(無近似)的方法澳骤,但這種方法的復(fù)雜度較高,特別對于頂點個數(shù)較大的情況澜薄,由于MaxCut僅將頂點分為兩組为肮,因此總共有 種分法,顯然這是一個 NP-Hard 問題肤京。
MaxCut 問題的量子描述
對于這樣的高復(fù)雜度的問題颊艳,經(jīng)典的算法顯得有點力不從心,因而我們使用量子算法即QAOA進行優(yōu)化忘分。我們首先需要考慮的問題棋枕,就是如何將這樣的問題使用量子計算的語言進行描述。恰好妒峦,使用二能級系統(tǒng)構(gòu)造的量子體系(qubit)就可以很好地表達這個問題重斑。
一個量子比特,其兩種基態(tài)分別為 肯骇,正好可以用來表示兩種分組情況: 表示分到組0窥浪, 表示分到組1。因而多個量子比特就可以表示復(fù)雜系統(tǒng)的分組情況了笛丙。兩個量子比特的情況如上圖所示漾脂,四種切割方式中,只有 和 有連接線被切割若债,因為A和B被分到了不同的組符相,并且之間有連接線。
我們來看一種更復(fù)雜的情況,即有四個點并以如下圖的方式連接:
對于這樣的鏈接啊终,則有 種切割方式镜豹,如下圖所示,
現(xiàn)在蓝牲,我們找到了使用量子比特來表示各節(jié)點的分組的方法趟脂,但是,似乎我們一樓了一個問題:我們應(yīng)該使用何種方法表示各節(jié)點的鏈接方式例衍?答案是使用哈密頓量昔期。以前面提到過最簡單的情況為例:
我們現(xiàn)在需要的效果是:如果A和B分到同一組則返回0,如果在不同組則返回1佛玄。如果能構(gòu)造出滿足上述效果的哈密頓量硼一,那實際上就指定了連線的方式。現(xiàn)在我們來一步步推導(dǎo)這個過程梦抢。首先般贼,我們可以構(gòu)造一個經(jīng)典函數(shù):
這里解釋一下,其中和分別為A和B的泡利算符的特征值奥吩,可分別取哼蛆。我們看出當(dāng)A和B被分到同一組后,其乘積總為正霞赫,因此,? 而被分到不同組后腮介,其乘積總為負, 因此端衰。則總的最大切割問題可以表達為求最大的:
但是我們現(xiàn)在構(gòu)造的只是一個經(jīng)典函數(shù)叠洗,還不是哈密頓量,我們需要使用更進一步的推導(dǎo)來得到哈密頓量的方法靴迫。對于上面兩節(jié)點的例子惕味,共有四種切割方式:
其后面的表示能量本征值,在這里即表示切割邊數(shù)玉锌。因此其對應(yīng)的哈密頓量可以用密度矩陣表示為名挥,即:
我們可以看出,對于這樣一個兩節(jié)點的系統(tǒng)的MaxCut問題主守,其實本質(zhì)上就是一個問題異或操作:在同一組等于0禀倔,不在同一組等于1。
我們現(xiàn)在考慮使用泡利算符來表示異或操作参淫。
首先我們來看看泡利算符與布爾變量的關(guān)系救湖。對于一個泡利Z算符,它表示了一個二能級系統(tǒng)涎才,這個系統(tǒng)可以處在兩種能級態(tài)上鞋既,其本征態(tài)和本征值的表達式如下所示:
如果我們定義為布爾值的真力九,而為布爾值的假,我們可以得到如下量子態(tài)與布爾變量的對應(yīng)關(guān)系:
注意邑闺,跌前。介紹了這么多關(guān)于布爾變量與泡利算符的關(guān)系,我們來舉個例子看看應(yīng)該如何應(yīng)用陡舅,我們這里就以邏輯與為例抵乓,使用量子態(tài)的語言就是如果節(jié)點A和B都為,則此時哈密頓量的能量本征值為1靶衍,否則都為0灾炭,則哈密頓量為
我們需要兩個節(jié)點都為,用哈密頓量表示即為颅眶,則兩個粒子都為的情況即為蜈出,即等于上面的四階矩陣√涡铮回到我們最初的問題掏缎,那就是異或,我們現(xiàn)在來考慮如何使用哈密頓量來表示異或操作煤杀。我們可以使用邏輯表達式來表示異或即,這寫成哈密頓量的形式也非常簡單:
即得到異或的矩陣:
我們之前已經(jīng)分析了沪哺,對于一個簡單的兩粒子系統(tǒng)沈自,其切割的操作等價于上面得到的這個哈密頓量,那么對于一個較為復(fù)雜的系統(tǒng)情況又是如何呢辜妓?其實是非常簡單的枯途,即很多個二粒子的哈密頓量相加即可:
這里在一般的文獻中更喜歡使用符號 來表示一條邊。這里還需要注意的是上述哈密頓量的含義籍滴,每一個兩粒子哈密頓量表示這兩個粒子在異或操作下的能量本征態(tài)和本征值酪夷,而 表示的所有兩個粒子分組問題(即異或操作)的總和(整個系統(tǒng))的能量本征值和本征態(tài)。因此我們可以看出孽惰,這個哈密頓量 實際上存儲了一個連接圖的結(jié)構(gòu)晚岭。
量子絕熱算法(QAA)基本概念
我們先來看看傳統(tǒng)的量子絕熱定理表達了怎樣的內(nèi)容:
對于一個哈密頓量隨時間變化的量子系統(tǒng),如果這個量子體系在時刻處于的第個本征態(tài)上勋功。而在系統(tǒng)演化過程中坦报,演化速度足夠緩慢,并且能級不發(fā)生交叉狂鞋,則在演化結(jié)束時刻片择,系統(tǒng)將相應(yīng)地處于的第個本征態(tài)上,外加一個相位因子骚揍。
如何來理解這個定理呢字管?首先我們用一個演化算子來表示系統(tǒng)演化:
其中,并且表示當(dāng)前時間, 因而是一個表示時間的歸一化因子嘲叔。
對于一個系統(tǒng)演化亡呵,若其開始時刻和結(jié)束時刻的哈密頓量固定,則演化時間越長借跪,其演化的速度就越慢政己,因而就約滿足量子絕熱定理,而當(dāng)趨于無窮大時掏愁,系統(tǒng)一定滿足量子絕熱定理歇由,此時有:
其中表示的是第個本征態(tài),而對應(yīng)的特征值是一個相位果港,其中為相位因子沦泌。這個公式說明了什么問題?也就是說在時刻辛掠,演化算符對初始哈密頓量的第個本征態(tài)的操作的效果谢谦,是增加了一個相位,并依然對應(yīng)了現(xiàn)在的哈密頓量第個本征態(tài)萝衩。
那么這有什么意義呢回挽?在量子計算上有什么作用?
對于一些不容易直接制備的基態(tài)的目標(biāo)哈密頓量猩谊,我們可以先制備一個較為容易制備的初始哈密頓量千劈,再通過控制參數(shù),絕熱地將初始哈密頓量調(diào)為目標(biāo)哈密頓量牌捷。
舉個例子墙牌,前面說的MaxCut問題,我們將這個問題的解編碼在了哈密頓量上暗甥。這個哈密頓量或許非常難以制備喜滨,因此我們需要通過制備一個簡單的初始哈密頓量,然后通過絕熱演化讓這個初始哈密頓量不斷地逼近撤防。這實際上也是一種分解的思路嘛虽风,只是這是從時間上進行分解〖赐耄考慮與時間相關(guān)的哈密頓量焰情,其中是方便制備的初始哈密頓量,而是目標(biāo)哈密頓量剥懒。這就是一個絕熱演化過程内舟,類似于線性插值。
在后面的章節(jié)中我們來看看如何利用QAOA絕熱量子算法來解決MaxCut問題初橘。
量子近似優(yōu)化算法(QAOA)
這里的內(nèi)容验游,實質(zhì)上是MaxCut的推廣充岛。
前面我們介紹了MaxCut問題,我們可以對其進行一些簡單的抽象耕蝉。簡單來說一個量子基態(tài)例如 ? 對應(yīng)了一種分組的方法崔梗,即前三個粒子在組0,第四個粒子在組1垒在。我們可以吧這個基態(tài)看成一個比特傳0001蒜魄,并且其對應(yīng)了一個能量本征值,這里我們用表示场躯,這樣谈为,問題就抽象成了字符串到能量的映射函數(shù):
我們的目標(biāo)就是要找到使得能量最大的那一組。而這個問題本身是NP-hard問題踢关,因為我們考慮使用量子算法來近似求解伞鲫,“近似”意味著不一定能找到精確解,但是能找到一個近似的解签舞,即滿足:
其中秕脓,表示真實的最優(yōu)解。
前面我已經(jīng)介紹過了如何使用哈密頓量來表示 MaxCut 問題儒搭,在這個抽象的模型中我們也需要使用哈密頓量吧這個映射用哈密頓量來表示吠架,而MaxCut問題的哈密頓量我們已經(jīng)在前面給出了,即搂鲫,這里給出其一般形式:
QAOA的過程到底是如何诵肛?
我們先不問為什么,總之過程很簡單:
首先我們需要制備一個初態(tài)默穴,即一個均勻分布的量子疊加態(tài):
然后我們要在這個態(tài)上執(zhí)行和 $H_C$ 操作并得到量子:
這里一共執(zhí)行了$p$ 次變換,區(qū)別在于這里的每次的參數(shù)不一樣褪秀,分別為:
隨后蓄诽,我們對量子態(tài)進行測量,得到在上的平均值:
這里我們仔細來看看這個平均值表達了什么含義媒吗。從基本的量子力學(xué)的只是可以看出仑氛,算符在量子態(tài)的平均值的定義是:
即算符的特征值的概率加權(quán)平均值,因此當(dāng)本征值越大的本征態(tài)出現(xiàn)的概率越高時闸英,則平均值越大锯岖。對應(yīng)到我們的QAOA算法中的表述就是,能量本征值越高的那個本征態(tài)出現(xiàn)的概率越高時甫何,則平均值越大出吹;而如果當(dāng)我們制備出的正好等于 能量本征值越高的那個本征態(tài)時,則平均值達到最大辙喂。
那QAOA算法整個過程的本質(zhì)應(yīng)當(dāng)如何理解呢捶牢?
這個算法通過次操作鸠珠,將初始態(tài)制備為了一個能讓盡可能最大化的量子態(tài)使得參數(shù)我們可以制備出這樣的量子態(tài),而關(guān)鍵在于找到參數(shù)使得參數(shù)我們可以制備出這樣的量子態(tài):
其過程如下圖所示:
現(xiàn)在我們對其思路也有了一定的了解秋麸,剩下的問題就是如何優(yōu)化參數(shù)了渐排。但是在學(xué)習(xí)參數(shù)優(yōu)化之前,我們還有一個問題需要解決灸蟆,那就是我們前面介紹了那么久的量子絕熱算法QAA和QAOA到底有什么關(guān)系驯耻?
QAA和QAOA的關(guān)系
事實上,我們可以使用QAA來實現(xiàn)QAOA炒考,還記得我們前面說的初始態(tài)嗎可缚?之前我們說這個初始態(tài)是一個均勻分布的疊加態(tài),而若使用絕熱量子算法票腰,我們將設(shè)定為初始哈密頓量能量本征值最高的本征態(tài)城看,而根據(jù)前面所說的絕熱原理,經(jīng)過足夠長時間的演化杏慰,將演變?yōu)?img src="https://math.jianshu.com/math?formula=H_C" alt="H_C" mathimg="1">的能量最高的本征態(tài)测柠。而我們這里所說的足夠長的時間,即指的足夠大缘滥。