各位看官们,大家好,上一回中咱们说的是使用普里姆算法生成最小生成树的例子,这一回咱们继续说最小生成树。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前几个章回中介绍了最小生成树的概念,以及告诉大家如何使用克鲁斯卡尔算法和普里姆算法生成最小生成树。这时有看官在问:我们是不是知道一种算法就可以了,因为两种算法的运行结果都是相同的。我建议大家两种算法都掌握,因为它们的性能不同。
克鲁斯卡尔算法在生成最小生成树时,是以图中的边为中心,依次查找所有边上的权值。如果图中的边非常多,它查找的次数也会增多,这时候就会影响算法的性能。
普里姆算法生成最小生成树时,是以图中的顶点为中心,依次查找所有顶点之间的权值。如果图中的顶点非常多,它查找的次数也会增多,这时候就会影响算法的性能。
看官们,通过上面的对比,大家现在可以明白了我刚才的建议了吧。我还有一些建议分享给大家:在实际的工作中生成最小生成树时,如果图中的顶点数多于边数,那么使用克鲁斯卡尔算法的性能会好一些,反之使用普里姆算法的效果会好一些。其实,这两种算法的性能都是平方级的,如果图中的边数和顶点数差别不大,这两种算法的性能也不会相差很大。当然了,如果图中的边数顶点数相差比较大,那么还是按归照我的建议去选择算法。
各位看官,关于最小生成树的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。