【发布时间】:2016-02-28 17:41:39
【问题描述】:
我在二维坐标系中有几个有序点(少于 10 个)。 我有一个代理在系统中移动,我想按照它们的顺序找到这些点之间的最短路径。 作为背景,可以给代理一个推力去的位置,我的目标是绘制最快的路线,因为代理具有最大推力和最大角速度。 经过一番研究,我意识到我可能正在寻找一种曲线拟合算法,但我不知道底层函数,因为这些点是随机分布在坐标系中的。 请帮我找到解决这个问题的方法。 我愿意接受任何建议,我最喜欢的编程语言是 C++。
【问题讨论】:
-
Google 是您的朋友:C++/Boost 有多项式拟合库可供您使用。在拟合方面,点的随机性无关紧要。您对最短时间、最大推力和角速度的限制是更困难的问题。我建议您将问题分解成碎片并以这种方式解决。放松一些约束,找到解决方案,然后重新添加约束。当我听到“最短时间”时,我会通过图表想到 Dijkstra 的算法。也许您需要评估所有可能的图表并选择最小的一个。
-
@duffymo 谢谢,你能详细说明 Boost 中的多项式拟合吗?老实说,我在拟合方面迷失了方向;我的程序员朋友也谈到了 Djikstra,但我不确定如何将此算法与我的问题联系起来
-
@JensHöpken 问题是:我的代理必须遵循点之间的确定顺序
-
那么就更简单了:你知道路径。要检查的就更少了。您的措辞不正确:您不想要最短路径,您想要最短时间遍历已知路径。每个 NASCAR 赛车手都知道,“砰砰”的控制让您以最快的速度到达那里:油门全开,刹车全开。