实验时间 | 11 月 10 日星期3 第1 节 |
实验目的 | 1. 熟悉C++语言的运行环境的使用。 2. 掌握贪心算法的基本思想以及用贪心算法解决问题的一般技巧。 3. 掌握贪心算法的实现方式。 4. 掌握贪心算法时间复杂度分析的方法和步骤。 |
实验环境 | 博思平台 |
实验内容(步骤、方法、算法、程序) | 一、 (1)题目要求:对于给定图G=(V,E,W), V={1,2,…,n},使用Prim算法求解最小生成树,输出最小生成树的边信息,格式参考输出结果。 (2)问题分析: prim算法设计思想: 初始 S = {1}, 选择 连 接 S 与 V-S 集 合 的 最 短 边 e ={ i, j },其中 iÎS, j Î V-S. 将 e 加入树T,j 加入 S. 继续执行上述过程,直到 S=V 为止. (3)算法设计: 伪代码如下(仅供参考): ![]() (4)实验结果: 例如 给定如下的图G ![]() 则输出如下: 最小生成树的边构成为: 3-------1 6-------3 4-------6 2-------3 5-------2 二、 (1)题目要求:给定给定带权有向网络 G=(V,E,W),每条边 e=<i,j>的权 w(e)为非负实数,表示从 i 到 j 的距离. 源点 sÎV,借助Dijkstra算法求解从s出发到达其它结点的最短路径,并输出到各个结点的最短距离,输出格式参照输出结果。 (2)问题分析:Dijkstra算法设计思想如下 ![]() (3)算法设计:伪代码如下(仅供参考): ![]() (4)实验结果: 例如:假设给定的有向网络图如下 ![]() 则输出结果为: 从顶点1到顶点2的最短距离为:5 从顶点1到顶点3的最短距离为:12 从顶点1到顶点4的最短距离为:9 从顶点1到顶点5的最短距离为:4 从顶点1到顶点6的最短距离为:3 |
部分源程序代码/实验配置 | |
实验结果与结论 | |
算法的时间复杂度分析(描述算法的时间复杂度,及其推导过程和结果) |
在最小堆中查找和更新每个相邻顶点的权重为O(log(V))+ O(1)或O(log(V))。 3.因此,从上面的步骤1和步骤2开始,更新顶点的所有相邻顶点的时间复杂度为E *(logV)。或E*logV。 4.因此,所有V个顶点的时间复杂度为V *(E * logV)即O(VElogV)。 |
指导教师 评议 | 成绩评定: 指导教师签名: |
算法设计实验——贪心算法
最新推荐文章于 2024-01-23 21:29:32 发布