Создать еще один случайный путь через полный график


Это нужно генерировать случайные путь из города, чтобы позже вычислить длину вновь образующихся тур городов, ТСП.

Я пытаюсь выяснить, если есть более эффективный способ, чтобы написать этот алгоритм. Я пробовал с помощью std::shuffle и std::random_shuffle но не заметил никаких улучшений во время работы. Любые другие ресурсы, я должен попробовать взглянуть на?

std::vector<City> GetRandomPath(std::vector<City> oldPath)
{
    std::vector<City> newPath;

    newPath = oldPath;

    int randPoint = rand() % (oldPath.size()-1);
    int randPoint2 = rand() % (oldPath.size()-1 - randPoint) + randPoint;

    int k=1;
    for(int i =0; i < randPoint; i++)
    {
        newPath.push_back(oldPath.at(i));
    }
    for(int i=randPoint; i < randPoint2; i++)
    {

        newPath.push_back(oldPath.at(randPoint2-k));
        k++;
    }
    for(int i=randPoint2; i < oldPath.size(); i++)
    {
        newPath.push_back(oldPath.at(i));
    }

    return newPath;
}


113
4
задан 13 марта 2018 в 05:03 Источник Поделиться
Комментарии