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中的邻居加入算法的主要内容,如果未能解决你的问题,请参考以下文章