【发布时间】:2016-05-02 14:34:11
【问题描述】:
如何在图中找到不是最小值的生成树(如果可能)
【问题讨论】:
标签: data-structures graph minimum-spanning-tree spanning-tree
如何在图中找到不是最小值的生成树(如果可能)
【问题讨论】:
标签: data-structures graph minimum-spanning-tree spanning-tree
Kruskal algorithm 找到按权重对所有边排序的最小生成树,从最轻到最重的顺序选择它们,并且仅当它们不形成循环时才将它们添加到解决方案中。当你达到的边数等于顶点数减一时,你就有了最小生成树。
要获得不是最小的生成树,您只需应用相同的算法即可,无需预先排序边列表,或在开始前随机打乱列表。
【讨论】:
如果您的目标是找到任意生成树,无论它是否最小,您始终可以使用普通的 DFS 或 BFS 来搜索图,通过向新发现的节点添加边来构建生成树.这在时间上与图的大小呈线性关系,在实践中速度很快,并且易于编码。
如果您的目标是找到特别不是 MST 的生成树,您可以考虑只运行常规 MST 算法,但在比较边上的权重时,请始终反转比较结果。这最终会找到一个最大生成树,除非图中的每个生成树都恰好是最小值,否则它不会是最小生成树。这与运行常规 MST 算法所花费的时间相同,因此您可以选择要使用的算法。
【讨论】: