如何在图中找到非最小生成树(如果可能的话)
Kruskal算法找到最小生成树,按权重对所有边进行排序,从最轻到最重进行选择,只有在它们不形成循环的情况下才将它们添加到解决方案中。当边的数量等于顶点的数量减去一时,就得到了最小生成树。
要获得一个非最小的生成树,您可以应用相同的算法,而无需对边的列表进行预排序,也无需在开始前随机打乱列表。
如果你的目标是找到任何任意的生成树,无论它是最小的,你总是可以使用普通的DFS或BFS来搜索图,通过在新发现的节点上添加边来构建生成树。这在图的大小上是时间线性的,在实践中速度很快,而且代码简单。
如果你的目标是找到一个特别不是MST的生成树,你可以考虑只运行一个常规的MST算法,但在比较边上的权重时,总是颠倒比较的结果。这最终找到了一个最大生成树,除非图中的每个生成树恰好是最小的,否则它不会是最小生成树。这需要与运行常规MST算法相同的时间,因此您可以选择要使用的算法。