【问题标题】:Kruskal worst case time scenario [closed]克鲁斯卡尔最坏情况时间情景[关闭]
【发布时间】:2017-04-17 19:52:14
【问题描述】:

我想制作一个图表,将 kruskal 算法强制为最坏情况。 所以,假设我们不关心边排序时间或其他操作,但我们只关心我们如何制作边,以便算法在取它们时进行最多的联合操作。

也许是这样的。你能给我一个更多节点的例子,或者如何制作图表的想法吗?

【问题讨论】:

  • 我不完全确定您为什么添加 c++ 标签,因为您是从纯理论的角度编写问题的。如果您尝试在 C++ 中实现这一点,请在您的问题中澄清这一点。如果您只是想生成一个更大的示例,请考虑改为在 cs.stackexchange.com 上提问。
  • 我正在尝试在 C++ 中实现强制使用 Kruskal 算法的图形。
  • 为什么同一个问题要问两次? stackoverflow.com/questions/43443006/…

标签: algorithm language-agnostic graph-algorithm kruskals-algorithm


【解决方案1】:

我的想法是,取任何具有更多节点且循环数较少的图。例如,取一个包含 20 个节点且一个循环长度为 3 的图。在这种情况下,我们可以在 MST 中避免的边数只是那个贡献周期。如果图不包含更多的循环,我们显然需要许多联合操作,因为大多数顶点属于不同的集合。

【讨论】:

  • 好主意。但最好像猴子超音速所说的那样,画一个完全没有周期的图表……对吧?
  • 是的。那么输入本身就是一个MST。 :) .. 即使我们应用 Kruskal,也不会改变任何事情。为了确保 kruskal 在最坏的演员阵容中工作,我举了这个例子。树的例子也很好。
  • 我想的最后一个问题......它是什么树有关系吗?我的意思是边缘的成本或树的方案会影响速度?
  • 没关系。
【解决方案2】:

如果您想拥有尽可能多的联合操作,为什么不考虑将树作为输入而不是一般图?很简单,因为在树中,(通常)每条边都需要添加到结果集中,所以如果一条边有 n 个节点,您将有 n - 1 个联合。

边缘权重不再重要。

【讨论】:

  • 例如二叉树呢?
  • 如果您认为答案可以改进,请在投反对票之前发表评论!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多