#algorithm
#алгоритм
Вопрос:
У меня проблема с алгоритмом обнаружения точек, которые находятся на дороге между точками источника и назначения.
Для этого есть несколько предположений:
- Начиная с p0 (начальной точки) Я хочу переместиться в pk (пункт назначения)
- У меня есть ограничения по времени и расстоянию
- Все ключевые точки (p1, p2, p3, …, pn) имеют соответствующий им вес (прибыль) (w1, w2, w3, …, wn)
Вопрос в том, как определить, какие точки являются наиболее прибыльными? Когда я выбираю некоторые точки, я хотел бы спросить Google navigation API, выполняются ли ограничения, но запросы стоят дорого, поэтому для меня было бы лучше не выполнять многие из них.
Знаете ли вы какой-либо алгоритм, предназначенный для решения такой проблемы?
— ПРАВКА 1—
Если я хорошо вас понял, я должен преобразовать свою проблему в график.
Тем не менее, я не знаю алгоритма, который позволяет мне решить эту проблему.
Это двусторонний график (исключая подключение к точкам p0 и pk). Я хотел бы максимизировать прибыль и сохранить ограничения по расстоянию. Знаете ли вы какой-либо формальный алгоритм, который мог бы мне в этом помочь?
Примерами путей могут быть:
p0->3->2->1-> pk
p0->1->pk
Комментарии:
1. Есть ли какая-либо причина, по которой Дейкстра здесь не сработал бы?
2. Если вы можете приблизить время и расстояние, используя координаты точки (что должно быть достаточно дешево), вы можете рассчитать предварительный путь максимизации прибыли с учетом ваших ограничений. Затем найдите реальные расстояния и время для ребер на вашем пути и обновите. Повторяйте, пока не получите путь с реальными расстояниями и временем.
3. Дейкстра работает для graph. Вот ситуация, когда у меня есть реальная дорога. Я знаю только расстояния по прямой между точками, но не реальные. Чтобы узнать реальное расстояние, я должен отправить запрос в Google, но я бы хотел избежать этого, запрашивая все дороги.
4. @NicoSchertler Есть ли у вас какие-либо предложения, как приблизить реальное расстояние между двумя координатами? Важно то, что расстояние между точками может быть очень маленьким (0,5 км)
5. Просто прямое расстояние, измеренное по воздуху.