动态规划法解决TSP问题(C++)

/*旅行商问题(Traveling Saleman Problem,TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。字面上的理解是:有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的具有最短路程的环路。
解决TSP问题的思想有回溯法、贪心法、动态规划法等。
如果动态规划法解决TSP问题,可以参考程序代码:
*/
#include  
#include  
using namespace std ; 

typedef list LISTINT; 

LISTINT listAnother; 
LISTINT list_result; 

int d[4][4]={{-1,3,6,7},{2,-1,8,6},{7,3,-1,5,},{7,3,7,-1}}; //路径权值
int matrix_length=4; 

int getPath(int n,LISTINT list_org) 
{ 

LISTINT::iterator i; 

int minValue; 
if(n==1)
 { 
  i=list_org.begin(); 
  minValue= d[*i-1][0]; 
  if(list_org.size()==matrix_length-1)
   { 
    list_result=list_org; 
   } 
 } 
else
 { 
   int temp; 
   i=list_org.begin(); 
   temp=*i; 
   list_org.erase(i); 
   i=list_org.begin(); 
   minValue=d[temp-1][*(i)-1]+getPath(n-1,list_org); 
   if(list_org.size()==matrix_length-1)
      { 
         list_result=list_org; 
      } 

   for(int j=2;j:"; 
for (h = list_result.begin(); h != list_result.end(); ++h) 

cout << *h << " "; 


cout << endl; 
int i; 
cin>>i; 
return 0; 
}

 

你可能感兴趣的:(算法)