一种线性时间算法,用于检查生成树是否可以使用最多一些数量的边缘?

时间:2015-12-30 19:32:20

标签: algorithm time-complexity minimum-spanning-tree kruskals-algorithm prims-algorithm

enter image description here

这里的问题是我需要找到具有线性时间的算法,我能想到的只有Kruksal算法或Prim的算法,但这已经是O(| E | log | E |)。

2 个答案:

答案 0 :(得分:1)

作为提示,请考虑如果您专注于图表中权重小于或等于b的边缘会发生什么。如果

,您可以对图表中的MST说些什么呢?
  • 这些边缘给出的图是否已连接?
  • 这些边缘给出的图表没有连接?

作为一个提示,想想如果你在图上运行Kruskal的算法会发生什么。你不需要实际运行Kruskal的算法 - 这还不够快 - 但是要考虑一下如何运行它。

答案 1 :(得分:0)

我可以想到这样的算法:

1. go through each edge e in the graph (O(E)):
  if w(e) > b:
     remove e from the graph

2. if e with removed edges is disconnected (can be done in O(E)):
  return false

return true

这个程序应该回答这个问题,但我并不是100%肯定。欢迎提出任何意见和建议。