package demo1;
public class Bttsp {
public int n;//图G的顶点数
public int[] x;//当前解
public int[] bestx;//当前最优解
public float bestc;//当前最优值
public float cc;//当前费用
public float[][] a;//图G的邻接矩阵
public Bttsp(float[][] aa,int nn){
n=nn;
x=new int[n+1];
for(int i=1;i<=n;i++){
x[i]=i;
}
bestc=10000;
bestx=new int[n+1];
cc=0;
a=aa;
backtrack(2);
}
public void swap(int[] x,int i,int j){//交换函数
int temp=x[i];
x[i]=x[j];
x[j]=temp;
}
public void backtrack(int i){
if(i==n){
if(a[x[n-1]][x[n]]<10000&&a[x[n]][1]<10000&&(bestc==10000)||cc+a[x[n-1]][x[n]]+a[x[n]][1]<bestc){
for(int j=1;j<=n;j++){
bestx[j]=x[j];
}
bestc=cc+a[x[n-1]][x[n]]+a[x[n]][1];
}
}else{
for(int j=i;j<=n;j++){
if(a[x[i-1]][x[j]]<
旅行售货员问题 回溯法(算法设计与分析)Java
最新推荐文章于 2024-07-27 13:31:57 发布