Кратчайший маршрут между двумя точками, который также проходит через одну из нескольких других предварительно определенных точек

Я изо всех сил пытаюсь найти точный ответ на мою проблему. У меня есть сетка 20 на 20. Я ищу пример кода PHP, формулу или правильное имя алгоритма, необходимого для выяснения следующего:

  • Кратчайший маршрут между двумя точками, который также проходит через одну из нескольких других предварительно определенных точек
  • Маршрут не должен возвращаться к источнику в конце
  • Маршруту разрешено проходить по диагонали между клетками
  • Начало и место назначения установлено

Скажем, моя сетка проходит от А до Т по горизонтали и от 1 до 20 по вертикали. Я рассчитываю рассчитать кратчайший маршрут от моего источника A5 до пункта назначения G12, в то же время проходя через C7, D9, E5 или J8, основываясь на кратчайшем общем маршруте.

Кроме того, было бы полезно узнать, как расширить это, чтобы оно не только проходило через одну точку, но, возможно, 2, на пути к месту назначения (G12).

Я искал 2 дня, и мой разум теперь кружится с Dijkstra, TSP, BFS и остальными!

Спасибо!

-2

Решение

Если вы можете перейти прямо к средним точкам, игнорируя всю сетку, то базовая геометрия предполагает, что кратчайший путь от точки S(терпкий), чтобы указать E(nd) через необходимую точку A это просто два отрезка SA + AE и вычисление его общего расстояния на самом деле довольно быстро (это просто стандартное евклидово расстояние). Так что, если у вас нет тысячи возможных средних точек, просто проверяющих все пути SA+AE, SB+BE… и сравнение расстояний будет довольно быстрым. Даже если есть две средние точки и размер пула составляет десяток, комбинаций будет всего несколько сотен, поэтому грубая сила все равно будет работать довольно быстро.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]