
图论 -- 最小生成树
Object_S
Java C++
展开
-
P3366 【模板】最小生成树-Prim
算法原理:在kruskal算法正确性的基础上,考虑进行优化. 由于kruskal的复杂度为O(mlogm),在稠密图中表现可能不太好,思考能否利用最短这一性质对复杂度上界进行优化. 联想到dijkstra的性质,可以发现最小生成树在局部也满足这一性质(最小生成树的每一个子树都是一个最小生成树). 由于任意一点都必然会在最小生成树中,可以从任意一点开始"探索"(类似文明VI中探索地图)....原创 2019-08-21 07:19:01 · 415 阅读 · 0 评论 -
关于kruskal算法正确性的证明
证明过程:首先,假设我们已经对所有边进行了排序,并且当前遍历到的边是连接点1和点2的边 因为这条边是最小的边,而点1和点2在最小生成树中一定会直接或间接的相连,因此任何从点1到点2的路径都不小于这条边。如图,如果不走这条边就只能走1→3→2(而如果这样走显然会使得1→2的距离过大,而我们当前只讨论1→2的最优选项)。或者,我们可以假设一种情况:点1和点2之间有两条权值为0.5的边,间接的...原创 2018-11-04 12:45:22 · 4158 阅读 · 1 评论