收藏 分享(赏)

第四次(贪心).ppt

上传人:hyngb9260 文档编号:8392038 上传时间:2019-06-24 格式:PPT 页数:58 大小:1.08MB
下载 相关 举报
第四次(贪心).ppt_第1页
第1页 / 共58页
第四次(贪心).ppt_第2页
第2页 / 共58页
第四次(贪心).ppt_第3页
第3页 / 共58页
第四次(贪心).ppt_第4页
第4页 / 共58页
第四次(贪心).ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、1,第一章 算法概述,第二章 递归与分治策略,第三章 动态规划,第四章 贪心算法,第五章 回朔法,第六章 分支限界法,第七章 概率算法,第八章 NP完全性理论简介,算法设计与分析 目录,2,4.1 最优化问题简介,4.2 贪心算法思路,4.3 任务安排问题,4.4 装载问题,4.5 背包问题,4.6 哈夫曼编码,4.7 最短路径,4.8 最小生成树,算法设计与分析 目录,4.9 多机调度问题,3,第四章.贪心算法(Greed method),用以求解最优化问题,算法设计与分析 贪心算法,4,4-1. 贪心算法基本思想,将问题的求解过程看作一系列选择(每次选择确定一个输入值),每次选择都是当前状

2、态下的最好选择(局部最优解).每作一次选择后,所求问题会简化为一个规模更小的子问题.从而通过每一步的最优解逐步达到整体最优解,算法设计方法 贪心算法,贪心算法的一般模式procedure greedy(A,n)solusionfor i 1 to n doxselese(A)if feasible(solusion,x)solusionunion(solusion,x)repeatreturn(solusion),/从A中选择一个当前最好输入,/判断X是否包含在当前解中.,/将X与解合并,修改目标函数,算法设计与分析 贪心算法,5,适用问题 具备贪心选择和最优子结构性质的最优化问题,算法优点

3、求解速度快,时间复杂性有较低的阶.,整体的最优解可通过一系列局部最优解达到.每次的选择可以依赖以前作出的选择,但不能依赖于后面的选择.,问题的整体最优解中 包含着它的子问题的 最优解.,算法缺点 需证明是最优解.,常见应用,背包问题,最小生成树,最短路径,作业调度等等,算法设计方法 贪心算法,算法设计与分析 贪心算法,6,例1 最小代价通讯网络: 在N个城市之间架设通讯线路,要求造价最低.,问题描述 输入: 任一连通图G (G的邻接矩阵)可行解: 图G的生成树优化函数: 生成树的权最优解: 使优化函数达到最小值的生成树.,问题可描述为有n个输入(x1,x2,.xn),一组约束条件和一个优化(目

4、标)函数。满足约束条件的输入称为可行解,使优化函数取得极值的可行解称为最优解.,算法设计与分析 贪心算法,4.2最优化问题 简介(optimization problem),城市间的通讯连接视作一个无向图G,G中每边的权值表示建成这段线路的代价. 问题转化为求一棵最小生成树.,e1(1),e2(6),e8(9),e6 (2),e9(4),e5(5),e4(7),e10(8),e11(3),e7(10),e3(11),1) 以G 中全部点为点作图,2) 将各边按权值递增排序, 3) 依次添加各边,若出现回路则忽略此边.,4) 加入n-1条边后就得到最小生成树.,1,2,5,3,7,图论 树与生成

5、树,求最小生成树(Kruscal),最优解: (e1, e6, e11, e5, e4),8,算法思路 1.将活动按结束时间排序,得到活动集E=e1,e2en; 2.先将e1选入结果集合A中,即A=e1; 3.依次扫描每一个活动 ei: 如果ei的si 最后一个选入A的活动ej的 fj , 则将ei选入A中 , 否则放弃ei,4.3.活动安排问题,问题陈述有n个活动E=1,2,n要使用同一资源,同一时间只允许一个活动使用该资源. 设活动i的起止时间区间si, fi ) ,如果选择活动i,则它在时间区间si, fi )内占用该资源;若区间 si, fi ) 与sJ, fJ )不相交, 则称活动i

6、与j是相容的. 要求在所给的活动集合中选出最大相容活动子集.,算法设计与分析 贪心算法,9,算法设计与分析 贪心算法,1 2 3 4 5 6 7 8 9 10 11,例,1 3 0 5 3 5 6 8 8 2 12,4 5 6 7 8 9 10 11 12 13 14,i,si,fi,设待排的11个活动起止时间按结束时间的非减序排列,最大相容活动子集(1, 4, 8, 11),也可表示为等长n元数组:(1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1),算法操作过程,算法设计与分析 贪心算法,活动安排问题贪心算法,Template void GreedySelector( int

7、 n, T s , T f , bool A ) A1 =true;int j =1;/从第二个活动开始检查是否与前一个相容for (int i=2; i= f j ) Ai = true;j=i;else A i = false; ,T(n)=O(nlogn) (未排序时),算法分析,T(n)=O(n) (排序时),各活动的起始时间和结束时间存储于数组s和f中且按结束时间的非减序排列,算法设计与分析 贪心算法,12,装载问题:一艘大船装载货物。所有待装货物都装在 n个大小一样的集装箱中,集装箱的重量各不相同。设第i个集装箱的重量为wi (1in). 船的最大 载重量为c,求装载方案使装船的箱

8、子数最多.,问题描述 输入:(x1, x2,xn ), xi=0:货箱i不装船; xi=1,货箱i装船 可行解: 满足约束条件 c 的输入 优化函数: 最优解: max,4.4 最优装载,13,问题描述 输入:(x1,x2,.xn), xi=0,货箱i不装船; xi=1,货箱i装船. 可行解: 满足约束条件 c 的输入优化函数: 最优解:使优化函数达到最大值的可行解.,算法设计与分析 贪心算法,设n=8,w1,w8=100, 200, 50, 90, 150, 50, 20, 80, c=400。所考察货箱次序为 :7, 3, 6, 8, 4, 1, 5, 2。 货箱7, 3, 6, 8, 4

9、, 1的总重量为390个单位且已被装载, 剩下的装载能力为10 ,小于任意货箱.所以得到解 : x1,.x8= 1, 0, 1, 1, 0, 1, 1, 1,算法思路 将装船过程化为多步选择,每步装一个货箱每次从剩下的货箱中选择重量最轻的货箱.如此下去直到所有货箱均装上船或船上不能再容纳其他任何一个货箱,最优装载的贪心算法,template void Loading(int x, T w, T c, int n ) int *t = new int n + 1; / w 的游标 Sort (w, t, n) ; /按货箱重量递增排序/for (int i = 1; i = n; i +)xi

10、= 0;for (int i = 1;i= n /调整剩余空间/,算法分析,排序为主要算法时间,所以 T(n)=O(nlogn),算法证明 该算法能得到最优解.,算法设计方法 贪心算法,X : 解向量 w : 货箱重量 c: 船的载重量 n: 货箱数量,算法设计与分析 贪心算法,15,最优化描述 输入:n元向量(x1,xn) 0 xi 1 约束条件: .,4-5 背包问题 (Knapsack Problem),问题描述设有n个物体和一个背包,物体i的重量为wi ,价值为vi ,背包的承载的重量为C.若将物体i的xi部分 (1in, 0xi1)装入背包,则具有价值为vi xi. 求解目标是找到一

11、个方案, 使放入背包的物体总价值最高.,算法设计与分析 贪心算法,其中 C, Wi, vi0 , 1 i n,目标函数:,16,例 n=3,c=20, (v1,v2,v3)=(25,24,15),(w1,w2,w3)=(18,15,10),x1,x2,x3, 0,2/3,1,0,1,1/2,.,1,2/15,0,20,20,20,28.2,31,31.5,.,.,算法设计与分析 贪心算法,算法思路 1).将各物体按单位价值由高到低排序. 2).取价值最高者放入背包. 3).计算背包剩余空间. 4).在剩余物体中取价值最高者放入背包.当背包剩余容量=0或物体全部装入背包为止,17,void Kn

12、apsack(int n,float M,float v ,float w ,float x ) Sort(n, v, w); /按单位价值排序/int i;for (i =1;i c) break;xi= 1;c-= wi; if(i= n) xi = c/wi; ,算法分析:,排序为主要算法时间,所以 T(n)=O(nlogn),背包问题的贪心算法,算法证明:该算法能得到在最优解,算法设计与分析 贪心算法,X : 解向量 w : 物体重量 V : 物体价值 M: 背包容量 n:物体数量,18,背包问题中的物体不能分拆,只能整个装入称为0-1 背包问题.用贪心算法能得到0-1背包的最优解吗?

13、,算法设计与分析 贪心算法,n=3, c=25, (v1, v2, v3)=(35, 24, 15),(w1,w2,w3)=(18, 15, 10),例,分析: 单位价值 (v1/w1, v2/w2, v3/w3)= (35/18, 24/15, 15/10)= (1.94, 1.6, 1.5)装入顺序: (x1, x2, x3)贪心解:(1, 0, 0), 总价值 35,最优解:(0, 1, 1), 总价值 39,19,问题 设一个由N个城市v1,v2,vn组成的网络, ci,j 为 从vi 到vj的代价不妨设ci,j = cj,i ,且ci,i= .一推销员要从 某城市出发经过每城市一次且

14、仅一次后返回出发地 问如何选择路线使代价最小。,问题抽象将城市以及之间的道路抽象为一个无向图G, G中每边的权值表示这段线路的代价. 问题转化为求一条最佳周游路线:从一点出发,经过每点一次且仅一次并返回原点,且该路线的总代价最小.,算法设计与分析 贪心算法,*旅行商问题(货郎担问题),输入: 任一连通图G 可行解: 从v0v0的汉密顿回路优化函数: 回路各边的权之和最优解: 使优化函数达到最小值的回路.,20,5,1,4,3,1,7,3,4,2,2,v1,v5,v2,v4,v3,C=,算法设计与分析 贪心算法,*旅行商问题(货郎担问题),贪心解:,最优解:,12543 1, 路长10,1253

15、4 1 , 路长14,21,输入:城市的数目n,代价矩阵c=c(1n,1n). 输出: 最小代价路线 1. tour:=0; / tour 纪录路线/ 2. cost:=0; / cost 纪录到目前为止的花费/ 3. v:=N; / N为起点城市, v为当前出发城市/ 4. for k:=1 to N-1 do 5. tour:= tour+(v,w) /(v,w)为v到其余点代价最小边/ 6. cost:= cost+c(v,w) 7 v:=w 8 tour:= tour+(v,N) 9 cost:= cost+c(v,N) print tour, cost ,算法的最坏时间复杂性为O(n

16、2),*该算法不能求的最优解.,算法设计与分析 贪心算法,该问题为NP难问题.,旅行商问题贪心近似算法,22,算法设计与分析 贪心算法,上机作业: 1.编写一个完整的背包问题贪心算法程序. 2.找零钱 . 设集合1, 2, 5, 10, 50, 100 是货币单位。1)编写贪心算法,使买东西时找回的硬币数目最小.2)分析你的算法复杂性.3) 货币单位集满足何条件可确保贪心法获最优解?,23,算法设计与分析 贪心算法,贪心算法要点,将问题的求解过程看作一系列选择,每次选择一个输入,每次选择都是当前状态下的最好选择(局部最优解).每作一次选择后,所求问题会简化为一个规模更小的子问题.从而通过每一步

17、的最优解逐步达到整体最优解.,一.最优化问题,1.输入(或问题的解):可表为n元向量(x1,x2,.xn). 2. 约束条件:满足约束条件的向量为可行解. 3. 优化函数: 是与可行解分量相关的函数. 4. 最优解: 使优化函数达到极限值的可行解.,二.算法思路,24,算法设计与分析 贪心算法,三.算法模式,for i 1 to n do xselese(A)if feasible(solusion,x)solusionunion(solusion,x)retur n(solusion),/从A中选择一个当前最好输入,/判断X是否包含在当前解中.,/ 将X与解合并,同 时修改目标函数.,四.适

18、用问题,具备贪心选择和最优子结构性质的最优化问题,25,问题通讯过程中需将传输的信息转换为二进制码.由于英文字母使用频率不同,若频率高的字母对应短的编码,频率低的字母对应长的编码,传输的数据总量就会降低.要求找到一个编码方案,使传输的数 据量最少(最佳编码).,算法设计与分析 贪心算法,找最佳前缀编码问题可化为求一棵,为能正确译码,编码需采用前缀码. 前缀码和二叉树一一对应.,最优二叉树,是编码的集合.其任一编码不能是另一编码的前缀.,4.6 哈夫曼编码,最优二叉树,树的权:在叶带权二叉树中,若带权为wi的叶,其通路长度为L(wi), 则称 为该叶带权二叉树的权.,最优二叉树:在所有叶带权为w

19、1,w2,wt的二叉树T中 w(T)最小者称之.,图论 根树及其应用,w(T)= wi L(wi),1,2,3,4,5,1,2,4,5,3,3,4,5,2,1,w(T)为33,w(T)为39,w(T)为50,27,算法设计与分析 贪心算法,输入(x1,xn):叶权 (各字符出现的频率) 约束条件:叶带权二叉树(前缀码) 最优解:树权 最小的二叉树(最佳编码),抽象描述,w(T),28,设在1000个字母的文章中各字母出现的频率为:a:83, b:14, c:28, d:38, e:131, f:29, g:20, h:53,14 20 28 29 38 53 83 131,34 28 29 3

20、8 53 83 131,34 57 38 53 83 131,57 72 53 83 131,72 110 83 131,110 155 131,155 241,396,最佳编码: a:10 ; b:1111; c:0101; d:110; e:00; f:0100; g:1110; h:011,1)将权从小到大排序 2)每次选取最小权合并,例 题,算法设计与分析 贪心算法 哈夫曼编码,29,算法设计与分析 贪心算法,1)以n个字母为结点构成n棵仅含一个点的二叉树集合,字母的频率即为结点的权 2)每次从二叉树集合中找出两个权最小者合并为一棵二叉树:增加一个根结点将这两棵树作为左右子树.新树的权

21、为两棵子树的权之和. 3) 反复进行步骤2)直到只剩一棵树为止.,算法思路,30,算法设计与分析 贪心算法 哈夫曼编码,31,templateBinaryTree HuffmanTree (T f, int n) /根据权 f 1:n构造霍夫曼树/创建一个单节点树的数组Huffman *W=newHuffman n+1;BinaryTree z,zero;for(int i=1;iQ(1);Q.Initialize(w,n,n);/将堆中的树不断合并Huffman x, yfor(i=1;in;i+),Q.DeleteMin(x);Q.DeleteMin(y);z.MakeTree(0, x.

22、tree, y.tree);x.weight+=y.weight;x.tree=z;Q.Insert(x); Q. DeleteMin(x);/最后的树Q. Deactivate();delete w;return x.tree;,霍夫曼树算法,算法分析 n个字符的哈夫 曼算法的计算时间为O(nlogn),最优子结构: 设T为带权w1w2. wt的最优树,若将以带权w1和w2的树叶为儿子的分枝点改为带权w1+w2的树叶,得到一棵新树T, 则T也是最优树。,贪心选择性 : 设T为带权w1w2. wt的最优树, a).带权w1和w2的树叶vw1和vw2是兄弟. b).以vw1和vw2为儿子的分枝点

23、,其通路长度最长.,算法证明,算法设计与分析 贪心算法 哈夫曼编码,33,问题 给定带权有向图G=(V,E), 要求找出从V的一点v0 (源点)到其他任意顶点的最短路径.,算法设计与分析 贪心算法,算法思路(Dijkstra) : 设最短路长已知的终点集合为S, 初始时v0S, 其最短路长为0. 然后用贪心选择逐步扩充S : 每次在V-S中,选择长度最短的一条最短路径的终点加入S,例 题,求路长最短的最短路径:只需求出v0到V-S中各点的当前最短路长并取最小者的终点u加入S即可.,例 题,计算v0到V-S中各点的当前最短路长:该长度或者是弧(v0,u), 或者是从v0出发,中途只经过S中的顶点

24、到达u的路径长.,4.7 单源最短路径,34,算法设计与分析 贪心算法,例如: v1到其他各点的最短路,35,算法设计与分析 贪心算法,算法描述(1) 用代价矩阵c来表示带权有向图, cij表示弧上的权值. 若 E,则置cij为设S为已知最短路径的终点的集合,初值为空.从源点v到图上其余各点vi的当前最短路径长度为Di,其初值为 Di=cvi viV(2) 选择vj, 使得Dj=Min Di | viV-S vj就是长度最短的最短路径的终点。令S=S j(3) 修改从v到集合V-S上任一顶点vk的当前最短路径长度:如果Dj+cjk Dk , 则修改 DK= Dj+cjk (4) 重复操作(2)

25、,(3)共n-1次.,36,算法设计与分析 贪心算法 单源最短路径,例 题,1) v1 v2: 10,2) v1 v3: 50,3) v1 v4: 30,4) v1 v5: 60,37,算法设计与分析 贪心算法,void Dijkstra(int n, int v,T d, int prev, Type *c) bool smaxint;for (int i=1;i=n; i+)di=cvi;si=false;if(di= =maxint) previ=0;else previ=v ; dv=0;sv=true; for (int i=1;in;i+) int temp=maxint;int

26、u= v; for (int j = 1;j=n;j+),if (!sj) ,单源最短路径问题的Dijkstra算法,38,算法设计与分析 贪心算法,算法分析 用带权邻接矩阵表示有n个顶点和e条边的带权有向图,主循环体需要O(n)时间,循环需要执行n-1次,所以完成循环需要O(n2).,39,算法设计与分析 贪心算法 最小生成树,问题陈述设G(V,E)是一个无向连通带权图。E中每条边(v, w)的权为cvw,若G的一个子图G是一棵包含G的所有顶点的树,则称G为G的生成树。生成树各边权的总和称为该生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小生成树.,抽象描述 输入:任一连通图

27、(该图的边集合)可行解:图的生成树, 优化函数:生成树的各边权值之和最优解:使优化函数达到最小的生成树.,4.8 最小生成树,例 题,e1(1),e2(6),e8(9),e6 (2),e9(4),e5(5),e4(7),e10(8),e11(3),e7(10),e3(11),1) 以G 中全部点为点作图,2) 将各边按权值递增排序, 3) 依次添加各边,若出现回路则忽略此边.,4) 加入n-1条边后就得到最小生成树.,1,2,5,3,7,图论 树与生成树,求最小生成树(Kruscal),最优解: (e1, e6, e11, e5, e4),41,算法思路将G的n个顶点看成n个孤立的连通分支,

28、1).将所有的边按权从小到大排序. 2).从第一条边开始, 依边权递增的顺序依次查看每一边( v,w):如果端点u和w分别是当前两个不同的连通分支T1, T2中的顶点时,就用边(u,w)将TI和T2连接成一个连通分支. 3).查看第k+1条边. 4).直到只剩下一个连通分支为止。,Kruskal算法,G=(V, E), V= 1, 2, , n, c=(c i j)为代价矩阵,例 题,算法设计与分析 贪心算法 最小生成树,42,算法设计与分析 贪心算法 最小生成树,例 题,43,template bool Kruskal( int n, int e, EdgeNode E , EdgeNode

29、 t )MinHeap H(1);H. Initialize(E, e, e);UnionFind U(n);iht k = 0;while (e ,e-; int a = U.Find(x.u);int b = U.Eind(x.v);if (a! = b) tk + = x;U. Union(a, b);H. Deactivate( ) renturn (k = = n-1),Kruska算法,算法设计与分析 贪心算法 最小生成树,44,当图的边数为e时,将其组成优先队列需O(e)时间while循环中, DeleteMin需要O(loge)时间.故优先队列所需时间O(eloge)。 实现U

30、nionFind所需时间为O(eloge) 所以Kruska的时间是O(eloge). 适合求边数较少的最小生成树。,算法设计与分析 贪心算法 最小生成树,算法分析,45,算法思路 1.置S=1, T= .2.若SV, 选取边(i, j): iS, jV-S,且cij最小.3. 将顶点j添加到S中, 边(i, j)添加到T中.4.直到S=V时为止. T中的所有边构成G的一棵最小生成树。,void Prim(int n, Type * * c) T= ;S =1;while (S!= V) (i, j) = i S且 jV- S的最小权边;T=TU (i, j) ;S= S U j ; ,算法描

31、述,Prim算法,设G=(V,E)是连通带权图, v=l, 2, , n. c=(cij)为代价矩阵,算法设计与分析 贪心算法 最小生成树,46,例 题,算法设计与分析 贪心算法 最小生成树,47,template void Prim(int n, Type * * c) Type lowcostmaxint;int closest maxim;bool smaxint;s1 = true;for(int i = 2;i= n; i+)lowcosti = cli;closest i = 1;si= false; for (int i = 1; i n; i+),Prim算法,算法分析: O(

32、n2).,算法设计与分析 贪心算法 最小生成树,Type min = inf;int j = 1;for (int k = 2;k= n; k+)if (lowcostk min) ,48,算法设计与分析 贪心算法,4.9 多机调度问题,问题描述要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成.作业i所需时间为ti. 约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断, 作业不能拆分成更小的子作业。,该问题是NP完全问题,到目前为止还没有有效的解法。用贪心选择策略有时可设计出较好的近似算法。,贪心近似算法 采用最长处理时间作业优先的贪心策略.当n

33、m时, 只要将机器i的0, ti时间区间分配给作业i即可;当nm时, 将n个作业依其所需的处理时间从 大到小排序,然后依次将作业分配给空闲的处理机。,49,算法设计与分析 贪心算法,例题,设7个独立作业1, 2, 3, 4, 5, 6, 7由3台机器M1,M2和M3加工处理。各作业所需的处理时间分别为: 2, 14, 4, 16, 6, 5, 3 。,按算法greedy产生的作业调度如下图所示:,所需的加工时间为17,50,算法设计与分析 贪心算法,class JobNode friend void Greedy(JobNode * , int, int);friend void main(v

34、oid);public:operator int () const return time; private:int ID,time; ; class MachineNode friend void Greedy(JobNode *, int, int);public:operator int( ) const return avail; private:int ID,avail; ,多机调度问题的贪心近似算法,51,template void Greedy(Type a,int n,int m) if (nH(m); MachineNode x; for(int:i=1;i=1;i-)HDe

35、leteMin(x);cout”将机器”xID“从” xavail“到”(xavail十aitime)”的时间段分配给作业”ai. IDendl;xavail+=aitime;Hinsert(x);,52,4.10 真分数分解问题,如:2/3=1/2+1/6,但不允许2/3=1/3+1/3, 对分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的时,最小的分数越大越好。如: 19/45=1/3 + 1/12 + 1/180 19/45=1/3 + 1/15 + 1/45 19/45=1/3 + 1/18 + 1/30, 19/45=1/4 + 1/6

36、 + 1/180 19/45=1/5 + 1/6 + 1/18.,例子:设计一个程序,把一个真分数表示为埃及分数之和。 埃及分数:是指分子为1的形式.如:7/8=1/2+1/3+1/24。,53,算法设计与分析 贪心算法,基本思想:菲波那契提出的贪心算法 用变量A表示分子,变量B表示分母; (1)把B除以A的商的整数部分加1后的值作为埃及分 数的某一个分母C; (2)将A乘以C减去B作为新的A; (3)将B乘以C作为新的B; (4) 输出1/C; (5)如果A大于1且能整除B,则最后一个分母为B/A(6)如果A1,则最后一个分母为B; (7)否则转步骤(2)。,54,伪代码,用变量A表示分子,

37、变量B表示分母; C=BA+1 A=A*C-B,B=B*C 打印1/C 若A1且B/A=BA,则C=B/A 若A1,则C=B,打印1/C 转步骤(2)。,55,程序清单: CLS DOINPUT “a,b=“; a, b LOOP UNTIL a 1 THEN PRINT “+“; LOOP WHILE a 1 PRINT “+1“; b END,56,算法设计与分析 贪心算法,作业,3、 一辆汽车加满油后可行驶n公里,途中设有若干加油站,若要使沿途加油次数最少,设计一个有效算法,给出应该在那些加油站加油.,57,算法设计与分析 贪心算法,本上机实验是算法设计与分析课程的重要组成部分,是该课程

38、的重要实践环节。通过上机编程,使学生加深理解、验证、巩固课堂教学内容。本上机实验的主要任务是:,1加深对所学算法设计方法的理解,掌握算法设计方法和技巧; 2掌握算法复杂性分析的方法, 学会分析算法的实际执行效率。 3运用所学算法设计方法解决简单的实际应用问题.,上机目的,58,算法设计与分析 贪心算法,实验报告要求,算法上机实验报告 学号 姓名 班级 1. 实验名称 2. 实验目的 3. 问题描述: 4. 算法描述:可用伪码描述,也可用流程图. 5. 源代码:要求可读性(有注释),交互性(有输入提示) 结构化程序设计风格 (分层缩进) 6. 实验数据和结果: 要求用运行画面给出(抓图). 7. 算法时间复杂性分析:最坏时间复杂性的阶.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报