连接点的最小行数

时间:2013-10-24 21:07:41

标签: algorithm graph-algorithm

在2D空间中给出一组点。所有点的X坐标都是唯一的。

这些点必须由斜率在-1到+1之间的线连接。现在如果两条或更多条这样的线相互连接,如果整条线没有“转向”,它将被计为一条线。

连接(0,0)(1,1)和(0,2)的线在(1,1)处“转向”。在这种情况下,线连接(0,0)& (1,1)和(1,1)& (0,2)是两个单独的行,不能算作一个。

如何确定此类“整体”线的全局最小数量(或至少是其近似解决方案)?这是一些已知的算法吗?

所有最终的“整体”线数不需要相互接触或相交。

例如,如果我有点{(1,1)(3,3)(5,5)},答案是1

如果我有分{(1,1)(2,5)(3,3)(4,6)(5,1)},答案是2.一行连接(2,5)&( 4,6)和其他加入其他点。

感谢。

编辑:关于“周转”。

“整线”由线段组成,每个线段的斜率在-1和+1之间。每个这样的“整体线”必须是这样的,即不存在一条线x = const,它在多个地方切割“整体线”。

目标是找到这种“总体线”的最小数量。

2 个答案:

答案 0 :(得分:1)

让我们考虑给定的点集作为定向图,其中点是顶点,并且如果它们可以与斜率在-1和1之间的段连接,则在两个点之间存在边。为了处理没有转弯,每个边缘将向上定向(这将限制向下移动并因此转向转弯)。很明显,您的条件中的一行对应于此图中的路径。

所以有了这样的图表,你的问题就会变成一个着名的问题。任务是用最少的方式覆盖一个有向的非循环图。您可以通过互联网找到关于此主题的大量材料,例如看一下:

修改 最初我错误地认识到转向条件,我正在考虑y=const行。实际上,边必须朝向右(x1 x2)。

答案 1 :(得分:0)

可以生成许多可能性,并且无法全部测试! 我首先想到的是遗传算法。

不确定如何实施,但我认为它可以很方便。