貨郎擔問題(tsp)。有n個城市,兩兩之間均有路直接連線,求一條經過每個城市一次且僅一次,最後返回起點的最短路線。
這是劉汝佳書上的一道題,他給出了思路,我實現了一下。
用動態規劃解決,可以假設從0點出發,然後回到0點。那麼用 f(i,s)表示現在處在i點,要去訪問剩餘的在集合s中的點,集合s可以用二進位制數st。
那麼狀態轉移方程就是:f(i,s)=min)+dist(i,j)|j屬於s}
**:#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f;
int dis[12][12],f[1<<12][12],pos[1<<12][12];
//f[st][i]表示處在i點,還要訪問集合st的點各一次後返回0點的最短路
int main()
{ int n;
// freopen("f.txt","r",stdin);
while(~scanf("%d",&n)){
for(int i=0;i
動態規劃解決TSP問題
題目描述 某推銷員要從城市 v1 出發,訪問其它城市v2,v3,v6 各一次且僅一次,最後返回v1。d為各城市間的距離矩陣。問 該推銷員應如何選擇路線,才能使總的行程最短?int d node number node number 每個點之間距離的矩陣 int path 6 6 行表示走到第幾步,列...
TSP問題的動態規劃解法(c 實現)
之前演算法課的作業 某推銷員要從城市 v1 出發,訪問其它城市 v2,v3,v6 各一次且僅一次,最後返回 v1。d 為各城市間的距離矩陣。問 該推銷員應如何選擇路線,才能使總的行程最短?using system using system.collections.generic using syst...
TSP問題,動態規劃法
tsp問題是指旅行家要旅行n個城市,要求各個城市經歷且僅經歷一次然後回到出發城市,並要求所走的路程最短。各個城市間的距離可以用代價矩陣來表示。假設從頂點i出發,令d i,v 表示從頂點i出發經過v 中各個頂點一次且僅一次,最後回到出發點i的最短路徑長度,開始時,v v 於是,tsp問題的動態規劃函式...