数据结构与算法分析C语言描述 总结笔记 第八章

begin: 20170613
version: 20170724

第八章 不相交集ADT

1.等价关系

  • 自反性
  • 对称性
  • 传递性

2. 动态等价性问题

  • 保存每个元素所属的等价类i,等价类更新时更新每个元素的相应值,单次 Union运行时间O(N),连续N-1次运行时间大Omiga(N^2),Find时间O(1);
  • 改进:添加关系时修改元素相对少的类中元素的等价类值,N-1次Union时间O(NlogN),任意M次Find和N-1次Union用时O(M+NlogN)。

3. 更优方法的基本数据结构

构建等价类森林,它们非显式地存储在一个数组P中,P[i]值代表节点i父节点位置索引,等价类树根节点指向0(0位置不存储有效元素):

  • Find:向上找到根节点位置,O(N),M次连续操作O(MN);
  • Union:将其中一个节点所在树根节点指向另一个节点所在树根节点,平均时间分析依赖于模型。

4. 灵巧求并算法

  • 按大小求并:
  • Find:最坏(logN),M次连续操作O(MlogN);
  • Union:M次连续操作平均时间O(M)。
  • 按高度求并:
    对按大小求并的简单修改。

5. 路径压缩

连续M次操作最坏O(MlogN)

6. 按秩求并和路径压缩的最坏时间

M次Find和Union操作的最坏时间O(Mlog*N),加强结论是O(Mα(M,N)),说明其几乎是线性的。

你可能感兴趣的:(数据结构与算法分析C语言描述 总结笔记 第八章)