1.**:
#include #include #define noedge 10002.輸出結果struct minheapnode
;int n; //圖g的頂點數
int **a; //圖g的鄰接矩陣
//int noedge; //圖g的無邊標記
int cc; //當前費用
int bestc; //當前最小費用
minheapnode* head = 0; /*堆頭*/
minheapnode* lq = 0; /*堆第乙個元素*/
minheapnode* fq = 0; /*堆最後乙個元素*/
int deletemin(minheapnode*&e)
int insert(minheapnode* hn)
else
else
tmp = tmp->next;
}} if(tmp == null)
}return 0;
}int bbtsp(int v)
minheapnode *e = 0;
e = (minheapnode*)malloc(sizeof(minheapnode));
e->x = new int[n];
// e.x=new int[n];
for(int i = 0; i < n; i++)
e->x[i] = i + 1;
e->s = 0;
e->cc = 0;
e->rcost = minsum;
e->next = 0; //初始化當前擴充套件節點
int bestc = noedge; /*記錄當前最小值*/
//搜尋排列空間樹
while(e->s < n - 1)
else
free(e->x);//該頁節點不滿足條件捨棄擴充套件結點
}else
}free(e->x);
}//完成結點擴充套件
deletemin(e);//取下一擴充套件結點
if(e == null)
break; //堆已空
} if(bestc == noedge)
return noedge;//無迴路
for(int i = 0; i < n; i++)
v[i + 1] = e->x[i];//將最優解複製到v[1:n]
while(true)
return bestc;
}int main()
//fscanf(in, "%d", &n);
n=5;
a = (int**)malloc(sizeof(int*) * (n + 1));
for(i = 1; i <= n; i++)
// for(i = 1; i <= n; i++)
// for(int j = 1; j <= n; j++)
// //fscanf(in, "%d", &a[i][j]);
// a[i][j]=1;
a[1][1]=0;
a[1][2]=5;
a[1][3]=8;
a[1][4]=5;
a[1][5]=4;
a[2][1]=5;
a[2][2]=0;
a[2][3]=5;
a[2][4]=6;
a[2][5]=3;
a[3][1]=8;
a[3][2]=5;
a[3][3]=0;
a[3][4]=5;
a[3][5]=4;
a[4][1]=5;
a[4][2]=6;
a[4][3]=6;
a[4][4]=0;
a[4][5]=3;
a[5][1]=4;
a[5][2]=3;
a[5][3]=4;
a[5][4]=3;
a[5][5]=0;
// prev = (int*)malloc(sizeof(int)*(n+1)) ;
int*v = (int*)malloc(sizeof(int) * (n + 1));// maxloading(w , c , n) ;
for(i = 1; i <= n; i++)
v[i] = 0;
bestc = bbtsp(v);
printf("\n");
for(i = 1; i <= n; i++)
fprintf(stdout, "%d\t", v[i]);
fprintf(stdout, "\n");
fprintf(stdout, "%d\n", bestc);
return 0;
}
1->2->5->3->4->1距離:22
分支界限演算法 旅行商問題2
假期 2020.01 22見回溯演算法 旅行商問題1 此篇採用分支界限演算法解決該問題,相比較前一篇的回溯演算法 旅行商問題1,此處使用bfs搜尋加優先佇列的方式。注 優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有乙個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照...
回溯法 分支限界法解決旅行商TSP問題
分支限界法解tsp問題 廣度優先 結果分析 旅行商從駐地出發,經過每個需要訪問的城市一次且只有一次,並最終返回出發點。如何安排路線,使旅行總路程最短?即求解最短哈密頓迴路。以深度優先的方式,從根節點開始,依次擴充套件樹節點,直到達到葉節點 搜尋過程中動態產生解空間 最優路徑 int x num 1 ...
旅行商問題 tsp 之分支定界法
做了乙個晚上的題,真是弱爆了.其實就是深搜最短路,不過加了乙個upper bound用來剪枝,因為資料比較小可以過!深搜還是要熟悉啊!1 include 2 3using namespace std 45 double graph 25 25 6 int vis 25 7 double a 25 8...