問題描述:
給定一個完全無向圖G=(V,E),其每一邊(u,v)∈E有一非負整數費用c(u,v)。要找出G的最小費用哈密頓回路。
旅行售貨員問題的一些特殊性質:
比如,費用函數c往往具有三角不等式性質,即對任意的3個頂點u,v,w∈V,有:c(u,w)≤c(u,v)+c(v,w)。當圖G中的頂點就是平面上的點,任意2頂點間的費用就是這2點間的歐氏距離時,費用函數c就具有三角不等式性質。
當費用函數c具有三角不等式性質時,可以設計出一個近似算法,其性能比為2.而對於一般情況下的旅行售貨員問題則不可能設計出具有常數性能比的近似算法,除非P=NP.
具有三角不等式性質的旅行售貨員問題
對於給定的無向圖G,可以利用找圖G的最小生成樹的算法設計找近似最優的旅行售貨員回路的算法。當費用函數滿足三角不等式時,算法找出的旅行售貨員回路的費用不會超過最優旅行售貨員回路費用的2倍。
void approxTSP (Graph g)
{
(1)選擇g的任一頂點r;
(2)用Prim算法找出帶權圖g的一棵以r為根的最小生成樹T;
(3)前序遍歷樹T得到的頂點表L;
(4)將r加到表L的末尾,按表L中頂點次序組成回路H,作為計 算結果返回;
}
下圖說明算法approxTSP運行情況:
(b)表示找到的最小生成樹T;(c)表示對T作前序遍歷的次序;(d)表示L產生的哈密頓回路H;(e)是G的一個最小費用旅行售貨員回路。
當費用函數滿足三角不等式時,該算法具有較好的性能比,即對於無向圖G,算法具有常數性能比2.以下參考屈老師課件。
對於一般貨郎問題,換句話說,若P≠NP,則對任意常數ρ>1,不存在性能比為ρ的解旅行售貨員問題的多項式時間近似算法。
參考:北大《算法設計與分析》公開課(https://www.bilibili.com/video/BV1e4411x7Qj?p=4)
王曉東《算法設計與分析》第二版