R中的R树和图形分区库

时间:2012-06-09 05:59:04

标签: r cluster-analysis graph-theory knn r-tree

我需要进行有效的d维点搜索,并且还需要在d维中对点进行有效的k-NN查询。因此我需要一个R-Tree库。我需要一个可以构建R-Tree结构的库,我可以在需要时用它进行查询。

此外,我需要有一些类似于METIShMETIS的库,尽管我的应用程序不涉及超图。我的要求是找到一个图形的最小割集,它将图形划分为大致两个相等大小的图形。

问题是我需要在R中支持这些的库。

我找到了一个库RANN,它有基于kd-tree的k-NN查询,但问题是要么我必须立即进行所有k-NN查询并将结果存储在一个巨大的数组,或者每次需要时都需要调用函数(nnnn2),这会使O(n lg n)检索时间增长失效。

有人可以告诉我R中是否有这样的库吗?

注意:我需要R-Tree库来有效地实现聚类算法,并且需要图分区库来实现CHAMELEON聚类算法。

2 个答案:

答案 0 :(得分:3)

在对R及其库进行一些研究之后,我认为最好是获得所需的库或用C或C ++编写自己的代码,然后通过.C().Call() R到C使用它语言界面。

答案 1 :(得分:0)

<块引用>

我还需要一些像 METIS 或 hMETIS 这样的库,尽管我的应用程序不涉及超图。我的要求是找到一个图的最小割集,该图将图分成大致相同大小的两个图。

尽管这是一个老问题,但我最近写了这样的东西。也就是说,

  1. 类似 Kernighan-Lin 的算法。
  2. 一种使用 Chlebíková (1996) 建议的方法找到近似连通平衡分区的算法。
  3. 一种算法,该算法采用 2. 中的方法找到的解决方案,并尝试使用类 Kernighan-Lin 算法最小化降价,同时仍要求分区中的两个集合是连接的。

从我正在使用的图形来看,3. 似乎经常为更大的图形找到一个很好的解决方案(比如约 1-4 百万条边和约 100 万个顶点)。这需要几秒钟或几分钟。实现位于 https://github.com/boennecd/pedmod 的 pedmod 包中。调用以下命令来安装软件包并查找包含更多详细信息的小插图:

remotes::install_github("boennecd/pedmod", build_vignettes = TRUE)
vignette("pedigree_partitioning", package = "pedmod")

我不确定我的实现在分区速度和质量方面与其他软件相比如何。

参考文献

Chlebíková,Janka。 1996. “近似图中的最大平衡连接分区问题。”信息处理快报 60 (5):225–30。

Kernighan、B. W. 和 S. Lin。 1970 年。“用于划分图的有效启发式程序”。贝尔系统技术杂志 49 (2): 291–307