【问题标题】:Neighbor Joining Algorithm in JavaJava中的邻居加入算法
【发布时间】: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 的全新矩阵?我还需要跟踪索引,因为它们对应于特定的序列。每次合并时,它们都需要向下移动,所以我想我需要一些列表来跟踪序列的去向?

谁能告诉我如何开始?

【问题讨论】:

    标签: java algorithm tree cluster-analysis


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-21
      • 2012-04-27
      • 2015-09-14
      • 2020-08-12
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多