在《算法(第四版)》 1.5 节对“加权 quick-union 算法”进行分析中,有这样一段话(中文 P147 ,英文 P230 ):
加权 quick-union 算法处理 N 个触点和 M 条连接时最多访问数组 cMlgN 次,其中 c 为常数。这个结果和 quick-find 算法(以及某些情况下的 quick-union 算法)需要访问数组至少 MN 次形成了鲜明的对比。
我不明白为什么“加权 quick-union 算法”最多访问数组 cMlgN 次,“quick-find 算法”至少访问数组 MN 次:
因为,最后剩下 M 条连接至少需要调用 union 函数 (N-M) 次,对于“quick-find 算法”,union 操作至少访问 (N+3) 次数组(中文 P141 ),所以总共至少访问数组 (N-M)(N+3) 次。类似地,因为“加权 quick-union 算法”的 union 函数最多访问数组 lgN 次(中文 P147 ),所以最多访问数组 (N-M)lgN 次。
是哪里理解错了吗?谢谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.