LINUX.ORG.RU

Путь, проходящий через все точки

 


0

1

Есть множество рандомных точек на плоскости в заданном диапазоне. Одна из наиболее близких к краю выбирается в качестве конечной. После этого нужно создать список вершин, отображающий путь в обратном порядке, чтобы в него входили все точки. Наверняка есть какой-то стандартный алгоритм для этого, но пока придумал так: из ещё не выбранных вершин берётся ближайшая (если таких несколько, случайная из подходящих) и назначается следующей. Попробовал дважды на бумажке наставить точек и начертить путь таким способом - вроде бы не остаётся невыбранных. Но, м.б., просто повезло и есть какой-то более правильный алгоритм?

★★★★

Ответ на: комментарий от anonymous

Чтобы не проходил по 2 точкам дважды и заканчивался в одной из наиболее близких к краю карты

wingear ★★★★
() автор топика
Ответ на: комментарий от Waterlaz

Построить путь, не проходящий дважды через одну и ту же точку от выбранной начальной

wingear ★★★★
() автор топика

отображающий путь в обратном порядке

может ли путь самопересекаться?

должен ли путь быть кратчайшим или может быть рандомным?

Но, м.б., просто повезло

при условии того, что путь может самопересекаться, нет, очевидно же: вы берёте точку из списка, она становится ближайшей, вы её отмечаете и убираете из списка, рано или поздно список опустеет. но путь кратчайшим, в общем случае, не будет.

next_time ★★★★★
()
Ответ на: комментарий от wingear

Чтобы не проходил по 2 точкам дважды и заканчивался в одной из наиболее близких к краю карты

Тогда вообще не понимаю в чем вопрос. Берешь список оставшихся точек, выбираешь рандомную. Если рандомная — конечная, выбираешь еще раз, пока она не останется последней. конец.

morse ★★★★★
()

Похоже, тебе нужен Гамильтонов путь из теории графов.

Shadow1251
()

1. Вытащить из исходного списка точек ту, которая была назначена «ближайшей к краю». 2. Поместить её в конец списка. 3. Задача решена.

kvap
()
Ответ на: комментарий от morse

ну... ТС зачем-то взялся искать ближайший путь

но пока придумал так: из ещё не выбранных вершин берётся ближайшая

ежели я неправильно сванговал его мысли, то тогда действительно неясно: решение же очевидно.

next_time ★★★★★
()

пилять, технари не умеют линейное программирование... Иди матан учи. Все точки в матрицу и оптимизировать.

Shadow ★★★★★
()
Ответ на: комментарий от wingear

Из любой перестановки множества точек удаляешь конечную и севупле.

nanoolinux ★★★★
()

Разве это не «задача коммивояжера»? Объехать всех клиентов (точки) кратчайшим путем (расстояние и/или время)

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.