为什么不相交集的运行时间是根据运算次数而不是输入的大小来计算的?

时间:2017-09-13 16:45:38

标签: algorithm time-complexity disjoint-sets

CLRS说“我们将根据两个参数分析不相交集的运行时间:

  1. n,MAKE-SET操作次数
  2. m,MAKE-SET,UNION和FIND-SET操作的总数“​​
  3. 为什么这与其他算法的大多数分析不同,其他算法的复杂性是根据输入大小计算的?

1 个答案:

答案 0 :(得分:1)

使用Disjoint-Set数据结构的任何算法都将使用这3个操作。我们需要根据输入大小分析所有这些操作的运行时间。

典型地,

  1. 我们首先使用-'n'MAKE-SET操作创建n个集合(输入中的每个项目为1个)。
  2. 我们将根据需要进行MAKE-SET,UNION和FIND-SET操作。让我们以最大数量的操作为界 - 比如'm'(包括最初的n初始化操作)。
  3. 这些是CLRS中描述的2个数字n,m。让我重新说一下

    • n - 实际输入大小(用于创建初始集的MAKE-SET)
    • m - 根据算法的操作次数(MAKE-SET,UNION和FIND-SET)。

    每个定理21.14:

    执行'm'操作, 使用联合按排名和路径压缩实现的不相交森林,你将遇到 O(m *α(n))

    的最坏情况运行时

    希望它有所帮助!