通过不同点的最短路径



假设我有几个点:-5,-4,-3,-2,-1,0,1,2,3,4,5

我在点 0,我需要创建一条贯穿 1,2,3,4,5,-1,-2... 等点的线。

该线将从 0 开始,并在以最短结束的任何点结束。

这个例子的答案是,它会像这样 0->1->2->3->4->5->-1->-2->-3->-4->-5,或者它会先到 -1 并一直到减号到正号,相同的结果(5*4=20 长度(。

例如,如果我们采用 0->1->-1->2->-2...它将以从点到点的最长线结束(1+2+3+4+5+6+7+8+9+10=10*11/2=55 长度(

问题是如何在代码中编写它?

这些点也可能由 2 维或 3 维点组成,其中起点是 (0,0,0,0( 或其他什么,最终线可以穿过所有这些点,但哪种方式将实现最短的线?

如何使它成为代码,正如我们在眼睛中看到的那样?

我认为这基本上是旅行推销员的问题。 你有 N 个目的地,每对目的地之间都有一个具体的长度,你试图找出访问所有目的地的最短旅行时间。

你有两个不同的方向来追求这一点,我可以看到。 首先,是阅读旅行推销员问题和为它提出的各种算法(这是一个非常著名的算法问题(,然后尝试在 C# 中实现一个 - 尽管只是为了警告你,你应该非常精通数学,因为这不是一个简单的问题。 或者,或者,您可以查找其他人的现有实现,然后在不了解理论基础的情况下使用它。

最新更新