Java中的邻居加入算法

Posted

技术标签:

【中文标题】Java中的邻居加入算法【英文标题】:Neighbor Joining Algorithm in Java 【发布时间】:2015-01-01 05:07:52 【问题描述】:

我正在尝试实现一个邻居加入算法来创建一个系统发育树。该算法在此处进行了描述,我一直将其用作参考:

http://en.wikipedia.org/wiki/Neighbor_joining

我已经到了需要开始合并节点的地步,在示例中他们将 a 和 b 合并到 u 中。我在如何在java中实现它时遇到了麻烦。我有一个这样的距离矩阵:

double[][] distanceMatrix = new double[][]
    0, 7,11,14,
    7, 0,6,9,
    11,6,0,7,
    14,9,7,0
;

我创建一个 Q 矩阵没问题,并确定最小值以及因此需要合并哪些节点。但是当涉及到实际编码时,我很难过。我需要创建一个新的相似矩阵,将 A 和 B 替换为 U,所以我假设我需要创建一个比我开始时更小的新矩阵,所以我需要创建一个大小为 -1 的全新矩阵?我还需要跟踪索引,因为它们对应于特定的序列。每次合并时,它们都需要向下移动,所以我想我需要一些列表来跟踪序列的去向?

谁能告诉我如何开始?

【问题讨论】:

【参考方案1】:

如果您不想重建矩阵,可以将列标记为“死”。

为每一列保留一个包含聚合(合并)内容的列表。

对我来说,这听起来很像经典的层次凝聚聚类 (HAC);应该有很多关于如何在矩阵上实现它的例子。

【讨论】:

以上是关于Java中的邻居加入算法的主要内容,如果未能解决你的问题,请参考以下文章

邻居有情。欢迎加入微信药品互助

邻居有情。欢迎加入微信药品互助

如何使用java在weka中获取最近的邻居

OSPF路由协议的工作原理是啥?

点的第 k 个最近邻居的空间查询

邻居数 KNN 算法