優化的起點:算圖

作者:
林昱誠(Yu-Cheng Lin)
閱讀時間:
5
分鐘
# Max-Cut 問題 為了讓讀者體會量子電腦如何應用在優化問題上,我們將統一用很常見的優化問題來貫穿全文:圖論中的 Maximum Cuts 問題。 ## Graphs 與 Cuts 在圖論中,一個圖 graph $G$ 會有兩個元素:頂點(vertices)$V$ 與邊長(edges)$E$:
Max cut 1
其中一種 graph

Max-Cut 問題是想找到一條線貫穿 graph 中的 edges,把 vertices 分成兩類(sets,集合),且被貫穿的 edges 數量越大越好。以此 graph 為例,你可以找到一條曲線貫穿五個 edges,把頂點分成兩類,你找不到其他可以貫穿更多個邊的曲線。
Max cut 2
一條曲線貫穿 graph 的五個邊,並將五個頂點分成藍色與綠色兩類

## 轉成數學式 要讓電腦能解這問題,我們得把圖像轉成數學方程式,電腦才看得懂。首先,對於有 $n-1$ 個頂點的 graph,我們給每個頂點一個記號 $z_i$,$i=0, 1, \cdots, n-1$。當我們畫個曲線把頂點分成兩類,其中一類頂點 $z_i$ 取值 $+1$,另一類則為 $-1$:
Max cut 3
藍色點取值 -1,綠色點取值 +1

可以發現,如果兩個頂點之間有曲線通過,那這兩個頂點的乘積會是 $-1$,沒有則為 $+1$。我們現在的問題就是找到一種組合方式,可以讓所有頂點乘積加總起來會是最小: \begin{align} \text{Minimize} \qquad &\sum_{(i, j)\in E} z_iz_j \\ \text{subject} \qquad &z_i\in\{-1,1\}, i=0,\cdots, n-1 \end{align} 以上圖為例,我們要求的是以下方程式的最小值 \begin{align} z_0z_1+z_0z_2+z_1z_2+z_1z_3+z_2z_4+z_3z_4 \end{align} 當然這圖論問題可以再複雜,我們為每個邊賦予權重 $w_{ij}$,那問題就變成: \begin{align} \text{Minimize} \qquad &\sum_{(i, j)\in E} w_{ij}z_iz_j \\ \text{subject} \qquad &z_i\in\{-1,1\}, i=0,\cdots, n-1 \end{align} 以以下這個 graph 為例就會是: \begin{align} w_{01}z_0z_1+w_{02}z_0z_2+w_{12}z_1z_2+w_{13}z_1z_3+w_{24}z_2z_4+w_{34}z_3z_4 \end{align}
TSP
每個邊長都賦予一個權重,要找到一條曲線貫穿越多的邊且加起來的權重最少

到這邊看起來 Max-Cut 問題挺容易的,但那是因為我們舉的範例很簡單,實際上,Max-Cut 是屬於 NP 問題,說明目前還沒有古典演算法能有效率地解決這類問題。
課程目錄