查找具有多个连接组件的邻接矩阵的最小生成树

时间:2011-05-04 15:04:16

标签: java minimum-spanning-tree adjacency-matrix

我为我的一个项目构建了一个邻接矩阵,我需要能够从该矩阵构造一个最小生成树。从阅读开始,看起来Prim的算法最适合这种情况,但是我们不能假设图是一个大的连通组件,因为我知道至少有一个我们必须处理的图表有几千个连通组件。 Prim的算法在这里是否仍然可行,如果是,我还需要做些什么吗?

我在这里使用Java进行编码,我可以很好地构建邻接矩阵,只是因为我被困在这一部分。

2 个答案:

答案 0 :(得分:0)

所以你的意思是有可能没有生成树?在这种情况下,prims很好,你只需要添加一个检查,确认所选列中有可能的路径。在没有生成树的情况下,尝试使用它做任何事都会很复杂,但是你必须删除你添加到树中的所有顶点并将余数视为新图。

编辑:如果您在矩阵上手动执行prims(谷歌'D1 prims矩阵'),那么很容易想象我所说的选定列中没有弧的含义。

答案 1 :(得分:0)

除非图表已连接,否则不会出现最小生成树。

所以你可能想要做两件事之一:构建所有连接组件的最小生成林;或者通过添加边连接组件来为整个图构建MST。其中哪一项取决于您的问题域。

或者你可能只是想检测到图表没有连接并且表明它不可能?这很容易做到。