【问题标题】:Java: Data structure for minimum spanning treeJava:最小生成树的数据结构
【发布时间】:2012-03-30 11:55:17
【问题描述】:

我的项目是使用java实现最小生成树。我的目标是使用 Prim 的算法来完成这项任务。

图的定义是 G = (V, E) 其中 V 是引脚集合,E 是引脚对之间可能互连的集合,对于 E 中的每条边 (u,v),我们有加权 w(u,v) 指定连接 u 和 v 的成本。

我的想法是使用两个哈希图。首先将 pin 作为键,将邻居列表作为值。第二个哈希图将边缘列表(u,v)作为键,值将是它的权重。

您认为存储图表的最佳方式是什么?

【问题讨论】:

    标签: java prims-algorithm


    【解决方案1】:

    图表通常(不考虑与这些图表一起使用的算法)存储为:

    • 邻接列表,
    • 邻接矩阵,
    • 事件列表,
    • 发病率矩阵。

    在内存使用和遍历它们所需的时间方面,它们各有优缺点。 Wikipedia 有一篇关于计算机图形表示的精彩文章。

    【讨论】:

    • 所以假设我使用邻接列表,使用第二个哈希图来包含每对的权重仍然可行吗?
    • 当然。 :) 只要你不要忘记更新那个额外的结构,你会没事的。
    【解决方案2】:

    看看wikipedia。您可以使用不同的数据结构以及继承的复杂性

    【讨论】:

      【解决方案3】:

      对于 Kruskal 和 Prim 的最小生成树算法,图的邻接表表示就足够了。它在内存使用方面比矩阵的方法更有效。所以在你的情况下这是一个不错的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        • 2023-04-02
        • 2017-04-18
        相关资源
        最近更新 更多