【问题标题】:Kruskals Algorithm - Sort an adjacency matrix in ascending orderKruskal 算法 - 按升序对邻接矩阵进行排序
【发布时间】:2015-10-13 15:35:22
【问题描述】:

所以我在我的 kruskals 算法实现中使用了邻接矩阵,但我不确定如何对这个矩阵进行排序。

同时还记得加权边属于哪两个顶点。我正在考虑迭代矩阵并将最低权重边缘添加到新矩阵并继续此过程,直到所有值都按升序并添加到该新矩阵。

但是我最终不知道这些边缘值属于哪两个顶点。所以我想问我如何才能按升序排列我的值,同时记住每个值属于哪一行和哪一列。

有具体的方法吗?任何帮助都会很棒,谢谢。

【问题讨论】:

  • 创建一个类Edge,它代表一条边并存储边的权重、源和目标。按重量比较 Edge 元素
  • 具有邻接矩阵的 Kruskal 不是一个好选择 -- 具有琐碎优先级队列的 Prim 只需 O(n^2) 时间。

标签: java algorithm sorting matrix


【解决方案1】:

您将无法按原样对矩阵进行排序 - 使用参考矩阵单元格的替代容器来存储边缘并对其进行排序。一个示例结构如下所示:

class Edge implements Comparable {
  int weight;
  int i; // x coordinate in the matrix
  int j; // y coordinate in the matrix
  int compareTo(Edge rhs) {
    return weight - rhs.weight;
  }
}

【讨论】:

  • 谢谢,我试试这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多