您好,欢迎访问三七文档
第四章贪心算法一、课本+作业DIJKSTRA的主要思想算法的思想是把中心定在起始顶点,向外层结点扩展,最终在目标顶点结束,停止扩展。设顶点集合为S,通过贪心选择,逐步扩充这个集合。一开始,集合S中所包含顶点仅为源点。设u为图G的某一结点,把从开始顶点到结点u,且中间经过的顶点均在集合S内的线路称为从源点到u的特殊路径。创建一个数组SD,用于储存每个顶点所对应的最短特殊路径的长度。算法每次从u∈V-S中取出具有最短特殊路长度的顶点u,将u添加到集合S中,与此同时,修改数组SD。当S包含了所有V中顶点时,SD就记录了从源到所有其它顶点之间的最短路径长度。Dijkstra算法的时间复杂度为O(n2),空间复杂度随着选择的存储方式不同而有所变化,若存储方式为邻接矩阵时为O(n2)。在求解单源最短路径问题时,Dijkstra算法可以得到最优解,但由于它需要遍历众多结点,所以效率低。历年试题1.(2011年)试用Prim算法求解下面无向赋权图的最小生成树,指出最小生成树及该树中各边被选中的先后次序;写出算法的基本步骤。26315478201611127131315141110188252.(2010)1.分析Kruskal算法的时间复杂度;2.试用下面的例子说明用Kruskal算法求解最优生成树问题,并总结出算法的基本步骤:3.(2009)(原理习题有)4.(2006)设nppp,,,21是准备存放到长为L的磁带上的n个程序,程序ip需要的带长为ia。设Lanii1,要求选取一个能放在带上的程序的最大子集合(即其中含有最多个数的程序)Q。构造Q的一种贪心策略是按ia的非降次序将程序计入集合。1).证明这一策略总能找到最大子集Q,使得QpiiLa。2631547830162018658015121425102).设Q是使用上述贪心算法得到的子集合,磁带的利用率QpiiLa/可以小到何种程度?3).试说明1)中提到的设计策略不一定得到使QpiiLa/取最大值的子集合(习题)4.(2009)
本文标题:第四章贪心算法
链接地址:https://www.777doc.com/doc-2170803 .html