1

我需要一些输入来解决以下问题:

给定一组无序 (X,Y) 点,我需要减少/简化这些点并最终得到一个连通图表示。

下图显示了一个实际数据集的示例和相应的所需输出(我在 MSPaint 中手绘,对于糟糕的绘图感到抱歉,但基本思想应该足够清楚)。

示例输入和输出

其他一些事情:

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

我认为这归结为两个明显的问题:

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

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

谁能指出我解决这个问题的正确方向?干杯。

4

1 回答 1

1
  • K 近邻(或者更准确地说,是 sigma 邻域)可能是一个很好的起点。如果您在严格的欧几里得空间中工作,您可以通过指定一些 L2 距离阈值来实现您正在寻找的 90%,超过该阈值的点不连接。
  • 下一步可能是某种光谱图分析,除了距离度量之外,您还可以使用某种光谱算法定义点之间的边缘。这将为用户提供更多关于图形连接性的旋钮。

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

于 2013-05-31T19:02:40.613 回答