2-opt算法c ++

时间:2015-08-23 18:09:50

标签: c++ traveling-salesman

我使用最近邻算法来解决旅行销售人员问题,但它提供了次优游览。我试图实现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() ;
    }

}

0 个答案:

没有答案