【问题标题】:proof of time complexity of union find with path compression使用路径压缩证明联合查找的时间复杂度
【发布时间】:2020-04-03 06:41:21
【问题描述】:

维基百科页面:wikipedia page 声明

如果对 n 个元素应用 m 个操作,Union 或 Find,则总运行时间为 O(m log*n)。

得出这个结果的详细分析是:

我的问题是:

  1. 总和不应该是(m+n)log*n 而不是mlog*n
  2. 1000 次 Find 操作的平均时间复杂度是否与每个 Find 操作的时间复杂度相同?

【问题讨论】:

    标签: disjoint-sets union-find


    【解决方案1】:

    免责声明:我仍在尝试自己理解这些证明,所以不要声称自己是专家!不过我想我可能有一些见解。

    1) 我认为他们假设 m = O(n),从而使 O((m + n)lg*(n)) 变为 O(mlg*(n))。在 Tarjan 的原始证明(逆阿克曼函数界)(可在此处找到:https://dl.acm.org/doi/pdf/10.1145/321879.321884?download=true)中,他假设 FIND 操作的数量 m 超过 n。在算法简介(CLRS - ch.21)中,他们证明的界限是 m 操作,其中 n 是 MAKE-SET。人们似乎在假设 m 将渐近大于或等于 n。

    2) 他们证明了每次操作的摊销成本。这是一种分析技术,它将一系列操作所花费的时间限制在一个常数因子内,您可以从中轻松计算每个操作的平均时间。有几种不同的方法可以解决它(我相信这是聚合分析的一个例子?)。值得研究!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 2019-03-07
      • 1970-01-01
      相关资源
      最近更新 更多