这只是我自己想出的东西,但它看起来像一个有趣的问题,它让我难倒了。加速点最快的路径
您在二维空间中有一组点,一个点指定为“开始”和一个“结束”。每个点都有坐标(距离原点的米),还有一个“加速度数”(以米/秒为单位)。在达到一个点(包括开始点)后,您可以在任何方向上加速到该点的加速度数。边缘成本取决于您当前的速度,但您也必须朝正确的方向移动。
是否有一种有效的算法来查找到达终点的最快路径?我还没有想出比“尝试每条路径并检查结果”更好的东西。 Djikstra和其他简单算法不起作用,因为如果他们以不同的初始速度到达,您不能轻易说到中间点的一条路径比另一条路径更好或更差。
如果这太容易了,如果您添加了必须停止在终点的要求会怎么样? (即当你到达最后时,你必须小于加速度值。)
编辑:为了清楚,方向很重要。您在遍历图时维护速度矢量,加速度表示向其添加矢量,其大小限制在该点的加速度数上。这意味着在某些情况下,建立巨大的速度是有害的,因为你将太快以至于不能“转向”其他有价值的点/目的地。
你将不得不提供更多细节。你的“加速”概念如何工作?它是否通过“加速度数”减少沿路径的所有边缘成本?如果你将“加速数”积累得远远超过了边缘成本?引入像“加速度”这样的概念表明,最好引入相应的摩擦/拖曳概念,否则可能会导致“未检查的速度”。到目前为止,我认为你的问题不足以让我们制定出适当的解决方案,但是我认为这很有趣。 – lightalchemist
我怀疑有这个问题的分析解决方案。我首先解决一个更简单的问题:以给定顺序获得点的最快路线。 (这个搜索空间的维数等于中间点的数量,我看不到比退火更好的方法。)一旦你有了这个方法,你就可以创建一个修改后的Dijkstra。 – Beta
@lightalchemist“加速度”,我的意思是“速度变化”。 (所以,边缘成本=欧几里德距离/速度,但只有当你在正确的方向行驶时才允许...所以)未检查的速度是好的(这是一个数学难题,而不是一个模拟...虽然我做了最初设想它是用来拾取燃料缓冲器的太空船,所以摩擦仍然不会成为现实。) –