昨天和几个准备考研的同学聊到了MST ,于是决定回去后重温一下经典之作:“Algorithms in C++ Part 5: Graph Algorithms ”。无奈看到Kruskal 堆实现时间复杂度分析时,居然卡巴司机了。我怎么也觉得应该是E+XlgE 而不是书上的E+XlgV 。不过回过头来一想,Sedgewick 大牛不会犯这种错误吧,而且我在书上也没有相关批注,说明以前在看到这里时是没有问题的。难道由于长期没碰算法变傻B 了?
于是去answers.com 上搜“Kruskal's algorithm “,得如下解释:
看完后顿时囧得一塌糊涂:“这样也行。。。”
不过这真的就是我想要的答案吗?我想未必。在我记忆中,书上其余所有地方该是lgE 的都明确写的是lgE ,而不是lgV ,作者总不会在这里就突然变成lgV 吧。就算是突然变成lgV ,至少也会在文中说明一下吧。不过,在找到更好的解释之前,就暂时接受上面这个囧人的解释吧。