从一组点构建图的算法

时间:2013-05-31 18:55:12

标签: algorithm graph language-agnostic filtering

我需要一些解决以下问题的建议:

给定一组无序(X,Y)点,我需要减少/简化点,最后得到连接图表。

下图显示了一个实际数据集的示例和相应的所需输出(由我在MSPaint中手绘,对不起绘图,但基本想法应该足够清楚)。

Example input and output

其他一些事情:

  • 输入大小介于1000-20000点之间
  • 算法将由用户运行,用户可以直观地看到输入/输出,调整输入参数等。因此,自动查找解决方案不是必需的,但用户应该能够在相当有限的范围内实现重试次数(和参数调整)。这也意味着结果图上节点之间的距离可以是参数,不需要从数据中导出。
  • 算法的时间/空间复杂性并不重要,但实际上应该可以在几秒钟内在标准台式机上完成运行。

我认为这归结为两个截然不同的问题:

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

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

有人能指出我正确的方向来解决这个问题吗?欢呼声。

1 个答案:

答案 0 :(得分:1)

  • K-nearest neighbors(或者更准确地说,是一个西格玛社区)可能是一个很好的起点。如果你在严格的欧几里德空间工作,你可以通过指定一些L2距离阈值来达到所需要的90%,超过这个阈值就没有连接点。
  • 下一步可能是某种spectral graph analysis,除了距离度量之外,您还可以使用某种谱方法定义点之间的边。这将为用户提供更多关于图形连接性的旋钮。

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