TSP的一個確定性多項式時間近似算法(環覆蓋,圖匹配,最小生成樹,概率統計分析)

問題描述

給定一個圖,求出一個不重複遍歷所有點的環路,使環路的邊權之和最小

TSP(旅行商問題)是一個著名的NP-Hard問題,無法在任意情況下使用多項式時間算法精確求解

根據給定圖的性質,我們可以對問題做一些細分類

  • 圖是有向圖還是無向圖

  • 圖是否爲完全圖(實際上,非完全圖可以通過將不存在邊的邊權視爲INF,轉化爲完全圖)

  • 圖的邊權是否滿足度量性質(metric)
    或稱是否滿足三角不等式,\(\forall x, d(u,v)\le d(u,x)+d(x,v)\)
    TSP在實際應用背景下,許多情況都滿足此性質
    比如點在幾何空間中,所有邊權爲兩點距離
    又比如點在地圖上,所有邊權爲兩點之間最短路(儘管路徑上可能有別的點)

    • 研究指出,對於metric情況,存在常數級多項式時間近似算法(即該算法所求結果與最優解比值小於某個常數)
      比如求出圖的最小生成樹,將其的一個dfs序作爲環,可以證明得到近似比小於\(2\)的解
      比如Christofides算法的近似比爲\(\frac32\)
    • 研究也指出,對於non-metric情況,不存在普遍的常數級多項式時間近似算法

算法概述

通過求解圖的最小環覆蓋,再將所有環以一定的方式合併成一個環,即得到一個解

最小環覆蓋(vertex cycle cover)

在給定圖中,選出任意個環路,使它們互不相交且正好覆蓋所有點,最小化邊權總和

顯然對於同一個圖,最小環覆蓋的答案一定不大於TSP問題的答案,因爲TSP所求的一個環路也是合法的環覆蓋

那麼最終的近似程度就很大程度取決於合併所有環帶來的代價

至於如何求解,我們對有向圖和無向圖分別討論

有向圖

每個點都恰好有一條出邊和一條入邊,這是構成不相交環的充要條件

於是問題轉化爲二分圖最小權完美匹配問題

二分圖兩邊各\(n\)個點,對於原圖中的每條邊\((u,v,w)\),在二分圖中把左邊的\(u\)和右邊的\(v\)連起來

使用KM算法,複雜度\(O(n^3)\)

無向圖

不好套用有向圖的做法,因爲允許了\(u\to v\to u\)這樣的二元環存在

主要後果並不是違反了無向圖環的定義,而是大大提高了合併環的代價

試想一個圖中的那些權值特別小的邊,很傾向於形成二元環,那麼最終最小環覆蓋環的個數就會爆炸

怎麼辦呢?來點概念

  • d-regular, spanning subgraphs (d-factors)
    正則生成子圖,指的是某圖的一個包含原圖所有點的子圖,滿足每個點的度數均爲\(d\)
    比如完美匹配等價於1-factor,環覆蓋等價於2-factor

  • Tutte's Reduction
    由Tutte提出,將d-factor求解轉化爲圖匹配求解
    對於原圖每個點\(u\),新建點\(u_1,...,u_d\)
    對於原圖每條邊\(e:(u,v,w)\),新建點\(e_u,e_v\),新建邊\((e_u,e_v,w)\)
    並且\(\forall i\in[1,d]\),新建邊\((u_i,e_u,0),(v_i,e_v,0)\)
    求出該圖的最大權完美匹配
    對於新圖的\((e_u,e_v,w)\)型邊,它在匹配邊中當且僅當對應原圖邊\(e\)未被選入最小環覆蓋
    對於新圖的\((u_i,e_u,0)\)型邊,它在匹配邊中當且僅當對應原圖邊\(e\)被選入最小環覆蓋

爲什麼這樣是對的呢?顯然新圖存在完美匹配,那麼既然新圖的\(u_i,e_u\)已經匹配,\(e_v\)就肯定會和\(v_j\)匹配,不會自相矛盾

那麼最大化匹配邊的權值和,就是最小化d-factor的權值和

例如對於三個點的最小環覆蓋,建新圖

顯然完美匹配中\((e_u,e_v,w)\)型邊一個都不能選,原圖也只有唯一環覆蓋

可是這是個一般圖呀,最大權完美匹配怎麼做?

OI中相對普及的是二分圖最大權完美匹配的KM算法、一般圖最大匹配的帶花樹算法

一般圖最大權完美匹配算法(Maximum Weight Perfect Matching)由Edmonds提出,實際上就是上述兩種思想的結合

但其理解和實現的難度就不是兩個算法的簡單相加了TAT

需要學習的大佬可以參考洛谷P6699 【模板】一般圖最大權匹配UOJ#81. 一般圖最大權匹配

注意最大權匹配和最大權完美匹配是不一樣的

目前普遍的\(O(n^3)\)實現方法,代碼量基本都是7k左右

廣爲流傳的Min_25大佬的\(O(nm\log n)\)實現,代碼量已經到了20多k!!!

對於最小環覆蓋,兩種實現的複雜度分別爲\(O(m^3),O(m^2\log n)\)\(n,m\)爲原圖點數,邊數)

環的合併

每次挑兩個環出來,枚舉斷開的位置和接的方向,合成一個環

至於挑環的順序,又可以搞好多方法出來

大環優先法

蒟蒻的想法,每次把次大的環往最大的環上合

這樣做是爲了讓最小的環能在其合併時枚舉到儘可能多連接的方式(小環長度×大環長度×2)

假如兩個小環合併,連接方式很少,最優方式的代價期望就會提大大高

類MST kruscal法

也是蒟蒻的想法,每次選擇所有環對中的一個最優方式進行合併

我們把環看成一個超級點,把合併看成兩個超級點連邊,就類比到了MST上

這是靠幾何直覺大致表明這種方法在metric情況下makes sense

而且這樣做也大概率比大環優先法優秀,這個貪心只是忽略了先合併的環有兩條邊被刪掉的輕微後效性

逐次縮環法

論文算法(Cycle Shrinking Algorithm),但是需要允許構造經過某些點多次的路徑,適合貼近現實的metric情況

每次求出最小環覆蓋後,若環數爲1,停止

否則從每個環中選擇一個代表點,構造新圖,新圖中兩點之間邊權爲原圖中兩點最短路

再求新圖的最小環覆蓋,如此循環

因爲每次建新圖,點數比原來至少少一半,所以最多執行\(O(\log n)\)次最小環覆蓋

又因爲每次最小環覆蓋長度不超過TSP的答案,所以該算法被證明有\(O(\log n)\)的近似比

部分情況下該算法的近似程度分析以及改進探討

有向完全圖,所有邊權隨機

這裏每一條邊都是i.i.d.的連續型隨機變量

運行算法,我們得到一個匹配,可以視爲一個全錯位的置換\(\pi\),左邊點\(u\)匹配到右邊點\(\pi(u)\)

我們關心環的個數的期望,也就是\(\pi\)中循環的個數的期望

有一個結論:得到所有合法置換的概率是相等的,因爲所有邊是i.i.d.的,得到任意兩個置換的概率都可以通過點、邊的映射相互轉化,用對稱性證明它們相等

因此我們直接求等概率隨機一個長度爲\(n\)全錯位排列的循環個數期望\(L_n\)

  • A008306\(T(n,k)\)\(n\)元素劃分成\(k\)個長度至少爲\(2\)的圓排列的方案數,又稱連帶第一類Stirling數
  • A000166\(D_n\)爲全錯位排列數
  • A162973\(\sum_{k=1}^{n/2}kT(n,k)\)

\[P(L_n=k)=\frac{T(n,k)}{D_n} \]

\[E(L_n)=\frac{\sum_{k=1}^{n/2}kT(n,k)}{D_n}\sim \ln n+\gamma-1 \]

它是\(\log n\)級別的!也就是說,合併環所帶來的長度增加是非常有限的,近似解和最優解的絕對誤差大概率在一個合理的範圍內

無向完全圖,所有邊權隨機

A038205\(n\)元素劃分成個長度至少爲\(3\)的圓排列的方案數

然並卵,不能像有向圖中那樣用對稱性了,只能說明同構的環覆蓋概率相等,於是蒟蒻不會算期望了/kk

不過既然環長至少爲\(3\)了,那麼環數期望肯定不超過有向圖的情況\(O(\log n)\)

通過重複隨機採樣,能說明

  • 得到更大環長、更少環數的環覆蓋的概率更高
  • 環數期望似乎與概率分佈也有關?

算法變種

我們另一個關心的是\(O(m^2\log n)\)的複雜度,在跑上百個點的完全圖的時候就開始喫力了

不過既然不是確定出正解的算法了,想怎麼亂來都行,能降一點複雜度,快點跑出來就好

通過觀察,我們發現,實際上在點很多、圖很密集的情況下,那些邊權稍微大一點的邊都基本上用不上了

假如我們知道最大的能被用上的邊的邊權\(W\),我們只留下邊權不超過\(W\)的邊(條數爲\(c\))建新圖跑MWPM,新圖的點數和邊數就會減少到\(O(n+c)\)

比如,\(n=100,d(u,v)\sim\operatorname{Unif(0,1)}\)時,把大於\(0.1\)的邊都刪掉,能變快將近一百倍

  • 蒟蒻找到了論文中的一個定理,給了這個胡搞一定的理論依據

    假設常數\(K>16,p\ge\frac{K\log n}{n}\),那麼在\(n\)個點的完全圖中讓每條邊以概率\(p\)出現,\(1-p\)不出現,
    這個圖存在Hamilton迴路是高概率事件(\(n\to\infty,P(·)\to1\))

    那也就是說,我們需要在原圖留下\(\Omega(n\log n)\)的邊來保障我們高概率找到一個環覆蓋
    基於這個依據還需要一個猜測,那就是加入邊權更大的邊對最小環覆蓋的改善很微小
    假設這些都是對的,那令\(c=O(n\log n)\),我們用\(O((n+c)^2\log n)=O(n^2\log^3 n)\)的時間能高概率找到一個很小的環覆蓋

關鍵是不知道\(W\)是多少

一種方法是自己生成幾組數據多試試,再把\(W\)定下來

另一種方法是交給算法把它試出來,採用倍增試探法

  1. \(c=n\)
  2. 留下前\(c\)小的邊,建新圖跑一般圖完美匹配(甚至能上隨機算法,跑得快並且大概率對就行)
  3. 如果成功找到完美匹配,令\(W=\)\(c\)小邊的邊權,結束;否則\(c=2c\),轉步驟2.

無向圖,metric,二維平面點

這裏僅與Christofides算法作對比

通過重複隨機採樣(在矩形區域中隨機選擇整數點),該算法有80%的概率優於Christofides算法

以下的兩個例子,能夠很好的說明問題

例子一

Christofides更優秀,該算法形成的解被已形成的幾個小環大大限制住了,陷入了局部最優

目測來看,可以基於對解進行點交換、部分環交換等局部調整的方法,應用貪心或者模擬退火的算法,將當前情況大大改善

另一方面,找到更可靠的環合併算法也是非常有希望的研究方向

例子二

該算法更優秀,Christofides的解出現了許多交叉的地方

這是因爲最小環覆蓋在二維平面下的性質:不存在兩個環相交

比如這種情況,顯然把兩個交叉的地方打開,重新分配環\((a_1,b_2,b_3,a_4),(b_1,a_2,a_3,b_4)\)一定更優

然而合併環後仍有極小概率出現交叉,問題還是陷入局部最優,比如下面,左邊是該算法,右邊是真正最優解

解決最終解交叉的方法,就是直接枚舉檢查每兩條邊是否相交,相交了就打開,一定有一種調整方式使得調整後仍然是Hamilton迴路

這樣一來Christofides的解也能大大改善,也就不能說該算法大概率比Christofides好了

總結

該算法非常適合non-metric,邊權獨立隨機,圖點數中等的情況

該算法在metric情況下適用性不高,因爲解的近似性不如Christofides穩定,時間複雜度高(Christofides爲\(O(n^3)\)

這也是在意料之中的,因爲metric情況下,形成局部小環的概率提高,環數期望增加,也沒有完全利用三角不等式的性質

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章