2015-06-29 2 views
0

Я разрабатываю систему для поиска кратчайшего маршрута, охватывающего наименьшее количество ячеек. Предположим, что плоскость разделена на прямоугольные ячейки. Какой будет наиболее подходящий алгоритм для этого. Я просто ищу начальный старт, а не правильный код или реализацию.Алгоритм поиска кратчайшего расстояния, охватывающего наименьшее количество ячеек

+1

https://en.wikipedia.org/wiki/A*_search_algorithm – Skarlinski

+0

(: Добавить звезду в URL-адрес – Skarlinski

+1

Самый короткий маршрут, охватывающий наименьшее возможное количество ячеек, - это «остановка при запуске» - он охватывает ровно один ячейка. – CiaPan

ответ

2

Вы имеете дело с shortest path problem, в невзвешенном графике (вершины ячейки в сетке, а ребра возможные ходы от одной клетки к другой)

  • Самый простой подход является простым BFS - что находит самый короткий путь от источника ко всем целям (в невзвешенных графах).
    Этот алгоритм довольно прост и итеративно «обнаруживает» ближайшие узлы, все узлы расстояния 1, затем расстояния 2, ...
  • Оптимизация использует bi-directional search. Здесь вы можете использовать единый источник и единую цель, выполняя BFS с обеих сторон, эффективно уменьшая количество узлов, которые вам нужно разрабатывать.
  • Еще одна оптимизация может заключаться в использовании A* Search Algorithm с допустимой эвристической функцией manhattan distances.
    В A * Search вы можете воспользоваться тем, что график не является произвольным графом, а сеткой, и вы можете оценить расстояние от одного узла до другого, основываясь на своих местоположениях в сетке. Алгоритм будет использовать эти оценки, чтобы быстрее найти оптимальный путь.

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

+0

Вы знаете, как работают сайты с гиперлокальной доставкой, поэтому я думаю, что это нормально, если сайты занимают несколько минут, чтобы найти кратчайшие маршруты –

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