狀壓dp求解TSP問題

2021-09-25 19:43:47 字數 727 閱讀 7018

嘗試過用貪心演算法求解tsp問題,但是並不好用,所以就用上了dp演算法。

首先tsp問題滿足最優化原理:對先前決策所形成的狀態而言,其以後的所有決策都構成最優策略。通俗理解就是路徑abcdefg是最短路徑,則bcdefg必是最短路徑。所以可以判斷具有最優子結構和重疊子問題時,該問題可以用動態規劃求解。

問題描述:

小明目前在做乙份畢業旅行的規劃。打算從北京出發,分別去若干個城市,然後再回到北京,每個城市之間均乘坐高鐵,且每個城市只去一次。由於經費有限,希望能夠通過合理的路線安排盡可能的省一些路上的花銷。給定一組城市和每對城市之間的火車票的價錢,找到每個城市只訪問一次並返回起點的最小車費花銷。

問題是乙個經典的tsp問題,下面分析問題並給出建模:

設每個城市的編號為0,1,…,n;

令s表示城市集合,d(k,s)表示從城市k出發經過s中各城市僅一次,最後回到出發城市0的最少花銷;

令c(i,j)表示城市i到城市j的距離,這裡每兩個城市之間都是互通的。

所以現在的任務就是計算出d(0,g)的值,其中g=。

我們先分析一般情況,假設s是城市集合,下面給出d(k,s)的計算分解:

d(k,s) = min) + c(k,i1),d(i2,s-) + c(k,i2),…,d(im,s-) + c(k,im) }

從上式可以看出,d(k,s)的計算離不開d(i,s-),同樣d(i,s-)的計算離不開d(j,s-)。所以上式就是本問題的狀態轉移函式。

poj3311 TSP問題 狀壓DP

題意 從0走遍1 n最後再返回到0,乙個點可以走多次,求經過的最短距離。分析 由於乙個點可以走多次,所以需要求出任意兩點間的最短距離,就要用到floyd演算法,同時接下來可以搜尋做複雜度是o n 而狀態壓縮的時間效率就高了,關於dp自己有時候狀態轉移方程知道了,卻不知道如何去實現,迴圈時哪層放在外面...

狀壓dp 玉公尺田 狀壓dp

相關 強相關 327.玉公尺田 狀壓dp 小國王 狀壓dp 是井字形,本題是十字形。思路 狀態計算 時間複雜度 n 2 n 2n o n 22n 12 2 24n 2 n 2 n o n2 12 2 n 2n 2 n o n22n 12 224 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...

20個問題(狀壓dp)

有n 128 個物體,m 11 個特徵。每個物體用乙個m位01串表示,表示每個特徵是具備還是不具備。我在心裡想乙個物體,由你來猜。你每次可以詢問乙個特徵,然後我會告訴你 我心裡的物體是否具備這個特徵。當你確定答案之後,就把答案告訴我。如果你採用最優策略,最少需要詢問幾次就能保證猜到?設s表示已經詢問...