2015-02-12 4 views
1

У меня есть множество путей, которые начинаются с одной и той же точки, но перемещаются в другом направлении. У меня есть другой путь, называемый исходным путем, который также начинается с той же точки. Все эти пути находятся в 2-D, то есть имеют значения (x, y). Мне нужно узнать ближайший путь (среди множества путей) к исходному пути. Как я могу это сделать?Найдите ближайший путь друг к другу?

ответ

0

Если вы знаете длину путей, вы можете использовать алгоритм A *. Вы не упомянули ни о каком языке программирования, ни о каком-либо соответствующем коде. Таким образом, я мог бы дать вам более подробный ответ.

Edit:

Я думаю, что решение упростить задачу так:

Что делать, если вы получили класс Square с помощью метода, который возвращает истину, если точка находится внутри этого квадрата (это довольно легко программировать и работать эффективно). Вы помещаете 3 довольно больших из этих квадратов на orignial путь. Затем вы повторяете все точки выбранных путей и проверяете, попадают ли все квадраты по этому пути. если они вы добавите их в другой список для следующей рекурсии. если все пути повторяются через вас, проверьте, попадает ли только один путь на все квадраты (это решение), вы возвращаете его. если более 1 пути попадают во все квадраты, вы вводите следующую рекурсию с 2ce квадратами и половиной длины. если ни один из путей не попадает на все квадраты, вы увеличиваете длину боковой линии на 25% для следующей рекурсии, а затем переместите все пути этой рекурсии в следующую. Поскольку все меньше и меньше путей нужно проверять, это должно иметь довольно хорошую производительность.

+0

Язык программирования - C++ Все пути сохраняются в массиве, каждый из которых содержит 50 точек. – omkar1707

+0

Вы посмотрели на A *? Searchnode может быть только ссылкой на patharray с индексом. расширение узла означает, что вы продвигаете индекс на единицу. эвристика будет расстоянием от цели + дистанции, уже пройденной. –

+0

Если есть пересечения между путями, вы можете разделить пути на пути, имеющие идеальный граф для A *, конечно, расширение узла означает, что в этом случае у вас более одного узла. –

Смежные вопросы