Я разрабатываю программное обеспечение, которое соединяет объекты с проводами. Эта проводка имеет правило, что эти провода не могут проходить на других объектах, и диагональное перемещение не принимается.
Все алгоритмы кратчайшего пути, которые я знаю (A *, dijkstra и т.д.), обнаруживают этот тип путей:
Мне не нужны лишние зигзаги во втором скриншоте. Как достичь этой цели?
Примечание. Любой, кто хочет попробовать алгоритмы, может использовать это приложение.
Другое примечание: это точная ситуация, в которой я не хочу. Он находит путь зигзага вместо того, чтобы "идти вправо, пока вы не достигнете позиции х цели, идите вверх, пока не достигнете позиции y цели", которая имеет одинаковую стоимость с зигзагообразным.