Path 水平和垂直遍历点的算法

Path 水平和垂直遍历点的算法,path,algorithm,shortest,Path,Algorithm,Shortest,二维平面中有n个点。一个机器人想要访问所有这些机器人,但只能水平或垂直移动。它应该如何访问所有这些点,以使其覆盖的总距离最小?这是指每对点之间的距离为| y2-y1 |+| x2-x1 |(称为直线距离或直线距离)。这基本上意味着没有已知的有效解决方案 在维基百科上 最简单的算法是朴素的蛮力搜索,计算每个可能的点排列的距离并找到最小值。它的运行时间为O(n!)。这将适用于大约10个点,但对于较大数量的点,速度会很快变得太慢。您确定这对点之间的距离为| y2-y1 |+| x2-x1 |?我很确定

二维平面中有n个点。一个机器人想要访问所有这些机器人,但只能水平或垂直移动。它应该如何访问所有这些点,以使其覆盖的总距离最小?

这是指每对点之间的距离为| y2-y1 |+| x2-x1 |(称为直线距离或直线距离)。这基本上意味着没有已知的有效解决方案

在维基百科上


最简单的算法是朴素的蛮力搜索,计算每个可能的点排列的距离并找到最小值。它的运行时间为O(n!)。这将适用于大约10个点,但对于较大数量的点,速度会很快变得太慢。

您确定这对点之间的距离为| y2-y1 |+| x2-x1 |?我很确定它是:sqrt((y2-y1)^2+(x2-x1)^2),也就是说,如果你想要一个非常好的解决方案,但不一定是绝对最优的,那么维基百科页面也有一些好的建议。@Sbm007显然,机器人不能在对角线上移动,所以马克是正确的。我投票赞成你的答案,但我想看到一个更好的NP难定义。很明显,它的内容远不止你所发布的内容。@San Jacinto:好的,我把“NP难”链接到维基百科上了。那里的描述比我自己能做的还要好。