Это просто то, что я придумал сам по себе, но это похоже на забавную проблему, и это меня озадачило.
У вас есть набор точек в двумерном пространстве с одной точкой, обозначенной как "Пуск" и "Конец". Каждая точка имеет координаты (в метрах от начала координат), но также и "номер ускорения" (в метрах/секунду дельта-V). По достижении точки (включая старт) вы можете ускоряться до этого номера ускорения в любом направлении. Стоимость края зависит от вашей текущей скорости, но вы также должны двигаться в правильном направлении.
Есть ли эффективный алгоритм для нахождения самого быстрого пути до конечной точки? Я не придумал ничего лучше, чем "Попробовать каждый путь и проверить результаты". Djikstra и другие простые алгоритмы не работают, потому что вы не можете легко сказать, что один путь к промежуточной точке лучше или хуже другого, если они приходят с разными начальными скоростями.
Если это слишком просто, что, если вы добавите требование, которое вы должны остановить в конечной точке? (т.е. вы должны иметь меньше, чем его значение ускорения, когда вы достигаете конца.)
РЕДАКТИРОВАТЬ: Чтобы быть ясным, важно направление. Вы поддерживаете вектор скорости при прохождении графика, а ускорение означает добавление к нему вектора, величина которого ограничена номером ускорения этой точки. Это означает, что есть ситуации, когда создание огромной скорости является пагубным, так как вы будете слишком быстры, чтобы "направить" к другим ценным пунктам/месту назначения.