旅行商問題演算法
A. 想用動態規劃演算法解決旅行商(TSP)問題,麻煩指點下方法和思路,詳細點,謝謝1
http://hi..com/__%D2%E5__/blog/item/d6326f1fcbdb4eff1ad576d8.html
http://liouwei20051000285.blog.163.com/blog/static/25236742009112242726527/
以上都是動態規劃解決TSP問題的,但是個人覺得不是太好,建議你去了解一下遺傳演算法,很容易懂,網上有很詳細的講解。希望你學到知識
B. TSP問題的演算法
你是說有10個點,想選4個點么,找4個點+起點的周遊最小值?
點比較少,枚舉4個點,C(10,4) = 210 種情況,然後找所有情況的最小值。那麼最後這4個點就是你要的4個點。
C. 跪求用dijkstra演算法解決TSP多旅行商問題的MATLAB程序!
dijkstra演算法是用來求任意兩點間的最短路徑。他求出的路徑並不是歐拉迴路,不滿足TSP的要求
D. 用粒子群演算法求解旅行商問題的模擬實驗怎麼做呀誰有求解旅行商問題的粒子群演算法的源程序
這個問題你可以搜索PSO+TSP即可,代碼很多。
一般TSP問題都有個已知的最優解,有個數值表示耗費的最短路,你可以將你搜索出來的最優解的最短路徑與之比較。
E. 一段關於旅行商問題的代碼,可否解釋下演算法思想,及 swap 函數的作用
=151456456847
F. 對於非完全圖的旅行商問題,用什麼演算法就是有些節點之間是沒有路的
漢密爾頓迴路問題是NP的
但是如果圖滿足一定條件(可以不是完全圖),也可以構造出解(不同的條件有不同的構造法,具體網路吧)
但沒有一般解法
所以,如果一定說,一般方法的話,只能是搜索。
G. 求模擬退火演算法解旅行商問題的C++代碼
我自己寫的:
#include<stdlib.h>
#include<cmath>
#include<algorithm>
using namespace std;
static double Tmax = 10, Tmin = 0.1, r = 0.999999;
static int k = 100;
inline void random_sele(int &fl, int &fp, int arr[], int n)
{
do
{
fl = rand() % n;
fp = rand() % n;
} while (fl == arr[fp] || arr[fl] == arr[fp]);
};
inline bool accept(double r1, double r2, double T)
{
const unsigned int MASK((1 << 30) - 1);
double p = 1.0 / (1.0 + exp((r2 - r1) / T));
unsigned int temp1=((rand()<<20)^(rand()<<10)^rand())&MASK;
unsigned int temp2=((rand()<<20)^(rand()<<10)^rand())&MASK;
double res=(1.0*temp1+1.0*temp2/MASK);
return res < p*MASK;
}
void set_SA()
{
printf(" Tmax Tmin r k\n");
printf(" %.8f %.8f %.8f %d \n",Tmax,Tmin,r,k);
printf("Input Tmax,Tmin,r,k:\n");
scanf("%lf%lf%lf%d",&Tmax,&Tmin,&r,&k);
}
void TSP_SA(int arr[], double &evl, int n, double map[][2000])
{
double r1, r2, T = Tmax;
int i, fl, sl, fp, sp;
int show_s=0;
srand(11827);
while (T >= Tmin)
{
for (i = 0; i < k; i++)
{
random_sele(fl, fp, arr, n);
sl = arr[fl], sp = arr[fp];
r1 = map[fl][sl] + map[fp][sp] + map[sp][arr[sp]];
r2 = map[fl][sp] + map[sp][sl] + map[fp][arr[sp]];
if (accept(r1, r2, T))
{
arr[fp] = arr[sp];
arr[fl] = sp;
arr[sp] = sl;
sl = sp;
evl = evl + r2 - r1;
}
}
if(++show_s==1000000/k)
{
printf("T=%f evl=%f\n",T,evl);
show_s=0;
}
T *= r;
}
}
H. 計算機演算法設計之 旅行商問題
你是要什麼語言的...
告訴你思路...
用動態規劃做..設狀態變數是gk(i,S)..表示從0出發經過k個城市到達i的最短距離..S為包含k個城市的可能集合..動態規劃的遞推關系為:
gk(i,S)=min[gk-1(j,S\{j})+dji]
j屬於S..dji表示j-i的距離
當然也可以用回朔法和分支限界法..
I. 用動態規劃求旅行商問題是不是一個有效的演算法為什麼
實際工程中動態規劃往往很難實現,但是求解能得到全局最優。 但是貪心演算法雖然較易陷入局部最優,但是求解效率極高。 若是決策量前後之間影響不是很大,且較大規模問題貪心法較好。
J. 哪些演算法可以用來求解旅行商問題
額,TSP問題可以用很多智能演算法,我再給你找找相關文獻吧,作為回報 迄今為止,這類問題中沒有一個找到有效演算法。
傾向於接受NP完全問題(NP-Complet或NPC)和NP難題(NP-Hard或NPH)不存在有效演算法這一猜想,認為這類問題的大型實例不能用精確算。