《d森林问题》word版

《d森林问题》word版

ID:25850175

大小:77.56 KB

页数:3页

时间:2018-11-23

《d森林问题》word版_第1页
《d森林问题》word版_第2页
《d森林问题》word版_第3页
资源描述:

《《d森林问题》word版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、算法设计与分析课程设计题目:d森林问题姓名:班级:学号:日期:一、算法问题描述设T是一棵带权树,树的每一条边带一个正权。又设S是T的顶点集,T/S是从树T中将S中顶点删去后得到的森林。如果T/S中所有树的从根到叶的路长都不超过d,则称T/S是一个d森林。(1)设计一个算法求T的最小顶点集S,使T/S是d森林。(提示:从叶向根移动)(2)分析算法的正确性和计算复杂性。(3)设T中有n个顶点,则算法的计算时间复杂性应为O(n)。二、算法问题形式化表示三、期望输入与输出输入:第一行有1个正整数n,表示给定的带权树有n个顶点,编

2、号为1,2,…,n。编号为1的顶点是树根。接下来的n行中,第i+1行描述与i个顶点相关联的边的信息。每行的第一个正整数k表示与该顶点相关联的边数。其后2k个数中,每2个数表示1条边。第一个数是与该顶点相关联的另一个顶点的编号,第二个数是边权值。当k=0时表示相应的结点是叶结点。文件的最后一行是正整数d,表示森林中所有树的从根到叶的路长都不超过d。输出:将编程计算出的最小分离集S的顶点数输出,如果无法得到所要求的d森林则输出“NoSolution!”。四、算法分析与步骤描述1.用父亲数组parent表示树;leaf存储叶结

3、点编号,readin读入初始数据publicstaticvoidreadin(){ReadStreamkeyBoard=newReadStream();for(inti=1;i<=n;i++){deg[i]=keyboard.readInt();for(intj=0;j

4、移动,从根结点的路长超过d时,将该子树分离publicstaticintcount(){inttotal=0;for(inti=1;i<=leaf[0];i++){if(cut[par]<1&&dist[leaf[i]]+plen>p){total++;cut[par]=1;par=parent[par];}elseif(cut[par]<1&&dist[par]

5、[0]]=par;}}returntotal;}五、问题实例及算法运算步骤1.用父亲数组parent表示树;leaf存储叶结点编号,readin读入初始数据中位数2.从叶子结点向根结点移动,从根结点的路长超过d时,将该子树分离六、算法运行截图七、算法复杂度分析算法的时间复杂度为:O(n)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。