Algorithm 从一组点生成图的算法

Algorithm 从一组点生成图的算法,algorithm,graph,language-agnostic,filtering,Algorithm,Graph,Language Agnostic,Filtering,我需要一些关于解决以下问题的信息: 给定一组无序(X,Y)点,我需要减少/简化这些点,并以连通图表示结束 下图显示了一个实际数据集的示例和相应的所需输出(由我在MSPaint中手工绘制,很抱歉绘制得很糟糕,但基本思想应该足够清晰) 其他一些事情: 输入大小将在1000-20000点之间 该算法将由用户运行,用户可以直观地查看输入/输出、调整输入参数等。因此,自动找到解决方案不是一项要求,但用户应该能够在相当有限的重试次数(和参数调整)内实现。这也意味着结果图上节点之间的距离可以是一个参数,不

我需要一些关于解决以下问题的信息:

给定一组无序(X,Y)点,我需要减少/简化这些点,并以连通图表示结束

下图显示了一个实际数据集的示例和相应的所需输出(由我在MSPaint中手工绘制,很抱歉绘制得很糟糕,但基本思想应该足够清晰)

其他一些事情:

  • 输入大小将在1000-20000点之间
  • 该算法将由用户运行,用户可以直观地查看输入/输出、调整输入参数等。因此,自动找到解决方案不是一项要求,但用户应该能够在相当有限的重试次数(和参数调整)内实现。这也意味着结果图上节点之间的距离可以是一个参数,不需要从数据中导出
  • 算法的时间/空间复杂度并不重要,但在实践中,应该可以在标准桌面计算机上在几秒钟内完成运行
我认为这归结为两个截然不同的问题:

1) 运行过滤过程,减少点数(包括一些噪声过滤,以去除杂散点)

2) 后来出现了某种连接点图的问题。在示例数据的底部/中心部分可以看到一个非常有问题的区域。很容易连接到图形的错误部分

有人能给我指出解决这个问题的正确方向吗?干杯。

  • (或者更准确地说,西格玛邻域)可能是一个很好的起点。如果你在严格的欧几里德空间中工作,你可以通过指定一些L2距离阈值来实现90%的目标,超过这个阈值的点是没有连接的
  • 下一步可能是使用某种光谱算法以及距离度量定义点之间的边。这将为用户提供更多关于图形连通性的旋钮
这两种方法都应该能够处理异常值,例如“嘈杂”的点,这些点根本不会连接到其他任何东西。也就是说,您可以将它们结合起来以获得最佳性能(因为光谱聚类在没有1点聚类的情况下性能更好):运行基本KNN以识别和删除异常值,然后进行光谱分析以更可靠地建立边缘。

  • (或者更准确地说,西格玛邻域)可能是一个很好的起点。如果你在严格的欧几里德空间中工作,你可以通过指定一些L2距离阈值来实现90%的目标,超过这个阈值的点是没有连接的
  • 下一步可能是使用某种光谱算法以及距离度量定义点之间的边。这将为用户提供更多关于图形连通性的旋钮

这两种方法都应该能够处理异常值,例如“嘈杂”的点,这些点根本不会连接到其他任何东西。也就是说,您可以将它们结合起来以获得最佳性能(因为光谱聚类在没有1点聚类的情况下性能更好):运行基本KNN以识别和删除异常值,然后进行光谱分析以更可靠地建立边缘。

因此,上图中的点是噪声,粗线是重要的部分吗?@John是的,没错。这些点(大部分)集中在某些线条周围,我需要将其转化为一个图表。因此,上图中的点是噪声,粗线条是重要的部分?@John Yeah,没错。这些点(大部分)集中在某些线条周围,我需要将其转换成一个图形。