《算法4》 1.5 并查集 算法分析
关于《算法4》1.5 并查集这边,涉及3个算法分别是:
- quick-find
- quick-union
- 加权quick-union
书中给出3种算法分析效率是:
- quick-find:
在quick-find 算法中,每次 find() 调用只需要访问数组一次,而归并两个分量的union()操作访问数组的次数在 (N+3) 到 (2N+1) 之间。 证明。由代码马上可以知道, 每次connected()调用都会检查id[]数组中的两个元素是否相等, 即会调用两次find()方法。归并两个分量的union()操作会调用两次 find(),检查 id[]数组中的全部 N 个元素并改变它们中 1 到 N-1 个元素的值。
- quick-union 算法
在最好的情况下,find()只需要访问数组一次就能够得到一个触点所在的分量的标识符;而在最坏情况下,这需要 2N+1 次数组访问
- 加权 quick-union 算法
对于N个触点,加权 quick-union 算法构造的森林中的任意节点的深度最多为lgN。 加权 quick-union 算法处理 N 个触点和 M 条连接时最多访问数组 cMlgN 次,其中 c 为常数。
问题是,这三个算法,"N+3","2N+1","2N+1","lgN","cMlgN"都是怎么推出来的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)