Algorithm 点是否连接和闭合?

Algorithm 点是否连接和闭合?,algorithm,point,Algorithm,Point,我有一组2D点,我需要知道它们是连接的(即[0,0]和[1,1]是连接的,但[0,0]和[0,2]不是),我需要知道它们是否形成闭合形状(圆形、矩形、任何多边形) 找到点是否连接是很容易的,实际上我有一个算法,可以找到由多个相邻点组成的所有“结构” 问题是我不知道如何确定点是否形成闭合形状 这是点阵列的示例: 请注意,虽然这些点形成两个封闭的形状,但我正在寻找可能的最大封闭路线 我读了一些关于凸包和Graham扫描方法的书,但我不确定如何修改该算法,使其仅适用于相邻的点…如何连接(0,0)和(

我有一组2D点,我需要知道它们是连接的(即[0,0]和[1,1]是连接的,但[0,0]和[0,2]不是),我需要知道它们是否形成闭合形状(圆形、矩形、任何多边形)

找到点是否连接是很容易的,实际上我有一个算法,可以找到由多个相邻点组成的所有“结构”

问题是我不知道如何确定点是否形成闭合形状

这是点阵列的示例:

请注意,虽然这些点形成两个封闭的形状,但我正在寻找可能的最大封闭路线


我读了一些关于凸包和Graham扫描方法的书,但我不确定如何修改该算法,使其仅适用于相邻的点…

如何连接(0,0)和(1,1)?这些点不是形成3个闭合形状吗?如果你能找到邻居,那么你可以简单地使用bfs/dfs方法收集邻居,直到你再次到达起始节点。然后比较找到的所有形状的面积,选择最大的一个。你可以从中寻找灵感的东西:1。在围棋中,你可能会寻找得分最高的连接点/石头集。2.电路板的连通性。如果给电路板的每个连接部分上色,区域的边界应该是闭合路径(我认为)3。查找图中最大循环的算法,这些算法可能会很慢,但它们可能适用于小数据集,并且您可能会找到针对您的问题优化它们的方法。我的直觉是,如果一个图是闭合的,您应该能够找到至少一个圆。根据这一点,我认为您可以结合SCC来定位圆,并使用union find来跟踪它。顺便问一下,如何定义一些边缘情况?例如,直线是否闭合?一条曲线要变得多弯?