1 知识回顾
我们已经讲过最小生成树问题的基础知识,我们现在想要利用贪心算法解决该问题。我们再来回顾一下最小生成树问题和贪心算法的基础知识。
最小生成树问题就是从某个图中找出总权重最小的生成树。
贪心算法是一种算法设计范式,每一步都选择当下最优的,希望通过每一步最优的选择达到全局最优的解决方案。
2 贪心算法设计
接下来我们来设计一个最简单的贪心算法,并尝试分析一下算法复杂度和空间复杂度,进而说明怎样的算法才是好的算法。
(1)首先将各边按照权重排序,并假设最小生成树的边的集合为T,T先空集。
(2)将排序的各边放进T,并判断是否会形成圈。如果不会形成圈,则继续迭代,如果会形成圈,则当前边不放入T,并寻找下一条边。
(3)判断T的元素数量是否等于顶点数量-1。如果等于,则当前集合为最小生成树,如果不等于,则继续迭代。
例题如图所示;
3 后续
(1)补充代码;
(2)分析算法复杂度和空间复杂度;