我使用最近邻算法来解决旅行销售人员问题,但它提供了次优游览。我试图实现2-opt算法,但我迷路了,我希望有人可以帮助实现该算法。这是我实现的最近邻居算法
void matrix::algo()
{
deque <float> temp ;
vector <float> v ;
for (int i=1 ; i<n ; i++)
{
v.push_back(i) ;
}
int u=0 ;
int k=0 ;
temp.push_back(u) ;
while (!v.empty())
{
float minm=5000000 ;
for (int i=0 ; i<n ; i++)
{
if(find(temp.begin(), temp.end(), i)==temp.end())
{
if (mat[u][i]<=minm)
{
minm=mat[u][i] ;
k=i ;
}
}
}
temp.push_back(k);
u=k ;
v.erase(remove(v.begin(), v.end(), u), v.end());
}
temp.push_back(0) ;
while (! temp.empty())
{
cout<<temp.front()<<"->" ;
temp.pop_front() ;
}
}