在 Java Kruskal 算法的实现中,我们究竟应该在哪里执行路径压缩?
In Java implementation of Kruskal's algorithm where exactly should we perform Path Compression?
在 Java 中使用不相交集实现 Kruskal 算法时,我们应该将路径压缩称为单独的函数还是应该作为 find() 函数的组成部分?
只要您在不相交集的森林上调用 find
操作,就应该应用路径压缩和其他优化(如按等级合并)。
一种理解方式:从 Kruskal 算法的角度来看,您只需要能够调用 find
和 union
并让它们正常工作。您无需担心 如何 使 find
和 union
正常工作的细节,只要它们确实如此。不相交集森林负责确保一切都快速运行,因此对 find
的调用是压缩发生的地方。
在 Java 中使用不相交集实现 Kruskal 算法时,我们应该将路径压缩称为单独的函数还是应该作为 find() 函数的组成部分?
只要您在不相交集的森林上调用 find
操作,就应该应用路径压缩和其他优化(如按等级合并)。
一种理解方式:从 Kruskal 算法的角度来看,您只需要能够调用 find
和 union
并让它们正常工作。您无需担心 如何 使 find
和 union
正常工作的细节,只要它们确实如此。不相交集森林负责确保一切都快速运行,因此对 find
的调用是压缩发生的地方。