Im ищет алгоритм, который будет использоваться в гоночной игре Im making. Карта/уровень/дорожка генерируются случайным образом, поэтому мне нужно найти два местоположения, начало и цель, которые используют большую часть карты.
- Алгоритм должен работать внутри двумерного пространства
- От каждой точки можно перейти только к следующей точке в четырех направлениях; вверх, вниз, влево, вправо
- Баллы могут быть либо заблокированы, либо неблокированы, могут быть пройдены только неблокированные точки.
Что касается расчета расстояния, это не должно быть "дорожкой птиц" из-за отсутствия лучшего слова. Путь между A и B должен быть длиннее, если между ними есть стена (или другая блокирующая область).
Не уверен, с чего начать, комментарии очень приветствуются, и предлагаемые решения предпочтительнее в псевдокоде.
Изменить: Вправо. Просмотрев код gs, я дал ему еще один снимок. Вместо python я на этот раз написал его на С++. Но все же, даже после чтения на алгоритма Дейкстраса, floodfill и Hosam Alys, я не вижу существенных различий. Мой код по-прежнему работает, но не так быстро, как вы, кажется, заставляете работать. Полный источник находится на pastie. Единственные интересные строки (я думаю) - это вариант Дейкстры на линиях 78-118.
Но скорость здесь не является основной проблемой. Я был бы очень благодарен за помощь, если бы кто-то был достаточно любезен, чтобы указать на различия в алгоритмах.
- В алгоритме Hosam Alys, это единственное отличие, которое он сканирует из границ вместо каждого node?
- В Dijkstras вы отслеживаете и перезаписываете пройденное расстояние, но не наводнение, но об этом?