2017-07-07 58 views
-7

假设我有几点:-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)或其他,最终线可以经过所有这些点,但是哪条路可以达到最短的线?

如何让它作为代码,就像我们在眼睛中看到的那样?

+0

可能重复的[获得最接近点的线](https://stackoverflow.com/questions/3120357/get-closest-point-to-a-line) – maccettura

+0

@maccettura nope这不是同一个问题,但感谢您的尝试。 –

+0

“如何将它作为代码,就像我们在眼睛中看到的那样?”简单:C#包含大量的数学库函数,...您可以使用其中一些。 – Rob

回答

-1

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

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

+0

是的,这正是问题所在!至少现在我知道它的名字。 好吧我会寻找它,非常感谢你的建议。 –

+0

谢谢凯文,我想我已经得到了问题的答案,非常感谢它接受了你的答案。在我做完之后,我可能会在未来添加代码。 –