Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > [REQUEST] Алгоритмы для поиска длиннейшего пути |
Автор: Нурик Сакура 9.7.2012, 15:49 | ||
Доброго времени суток, уважаемые Винградовцы =^_^= Возникла у меня небольшая проблема. Пытаюсь решить задачку поиска длиннейшего пути, но что-то пока не преуспел. Точнее, если пойти тупым перебором, то оно, конечно, решится. В теории. Но как-то я не очень люблю такие методы. Потому решил обратиться к вам, авось кто-то натолкнет на здравые мысли или хотя бы укажет направление, в котором нужно копать. Итак...
Да, несомненно, прежде чем писать сюда, я воспользовался гуглом и кое-какими залежами памяти о теории графов и поисках пути, но большая часть того, что мне удалось найти, в основном, ориентирована на поиск кратчайшего пути из точки А в точку Б. Мне не нужна мега-скорость решения задачи, то есть, даже метод перебора мне подойдет, но хотелось бы что-то более оптимальное и разумное. P.S.: я не прошу решить задачу за меня, мне нужна подсказка, куда двигать мысли. Но буду признателен (и дам плюс в репу) за любой рабочий код по теме ![]() |
Автор: mrgloom 10.7.2012, 13:10 |
http://en.wikipedia.org/wiki/Longest_path_problem http://stackoverflow.com/questions/2529130/graph-longest-path NP-hard |
Автор: baldina 10.7.2012, 14:44 |
Нурик Сакура, Вы ищете точное решение, или подойдет приближенное? |
Автор: Нурик Сакура 10.7.2012, 16:39 |
Хм, интересно, а в чем может быть приближение? Задача, как мне кажется, предельно проста - есть точка А, есть карта всех точек, куда можно/нельзя идти. Найти путь, проходящий через максимальное количество точек, с минимальными суммарными затратами. Обычный перебор будет решать долго, но, в конечном итоге, выдаст одно или несколько решений. Точных решений. Так в чем "приближение"? |
Автор: baldina 10.7.2012, 17:18 |
поиск приближенное решения - один из традиционных подходов к решению NP-сложных задач. иначе - полный перебор. если Вы удовлетворитесь приближением, можно было рекомендовать алгоритм Дейкстры, в котором в качестве критерия выступает не минимальный путь, а максимальный путь+вес хода. Кстати, баланс между длиной пути и весами переходов у вас не определен. |
Автор: baldina 10.7.2012, 19:01 | ||
т.е. затраты на переходы работают только при равенстве путей? тогда ясно |
Автор: Нурик Сакура 10.7.2012, 19:10 |
Хм... А вы меня на одну мысль натолкнули. Если найдется путь, который будет, например, сплошь по диагонали и он будет самым длинным, но при этом и очень "дорогим". В то же время, может существовать путь на несколько точек короче, но максимально дешевый. В идеале, "сыграть" должен он. Тогда, получается, в задаче смещается приоритет с "самый длинный" на "самый дешевый длинный". Короче говоря, я так думаю, нужно избавляться от диагональных ходов. То есть оставить только четыре варианта "сдвига" - вверх, вниз, влево и вправо. Это существенно уменьшит количество возможных ходов и, соответственно, поиск самого длинного. |