贪心算法-最优合并问题

贪心算法-最优合并问题

ID:47522081

大小:65.40 KB

页数:3页

时间:2020-01-13

贪心算法-最优合并问题_第1页
贪心算法-最优合并问题_第2页
贪心算法-最优合并问题_第3页
资源描述:

《贪心算法-最优合并问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、上机04实验名称一、问题11、问题描述一、最优合并问题给定k个有序序列s1,s2,...,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少,编程实现该算法并证明算法的正确性。2、算法设计思想贪心算法3、算法过程描述原问题S={S1,S2,S3,S4..Sn},(合并顺序)设最优解为Ck(最少合并次数)设Si,Sj为最短的两个序列反证法证明贪心选择性质:设有另一个最优解Ck

2、1(没有使用贪心选择性质,即没有先合并Si,Sj)构造一课二叉合并树SiSk为任意序列,Sk>si,sjSjSkSSkSiSj由图可知,Ck-Ck1=(Sk+Sj-1)+(Si+Sj+si-1)-(Si+sj-1)+(Si+Sj+Sk-1)=Sk-Si>0因此Ck1不是最优解,因此具有贪心选择性质最优子结构证明:S={S1,S2,S3,S4….Sn}记Si和Sj的合并为(Si,Sj)->Si+jS=S-{S1,S2}∪Si+j∴Ck=Ck`+(Si+Sj-1)4、算法实现及运行结果#include

3、>#includeusingnamespacestd;//计算最优值intminSum(int*a,intm){intb[m];intsum=0;for(inti=0;i1){sort(b,b+m);b[0]=b[1]+b[0];sum+=b[0]-1;for(inti=1;i

4、",&n);inta[n+1];printf("请输入各个序列长度:");for(inti=0;i

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

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

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