第十五章近似算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十五章近似算法

第十五章 近似算法 输入数据本身就是近似的 很多问题的最优解,允许有一定程度的近似 采用近似算法可以在很短的时间内得到问题的解(特别是与指数时间相比较) 15.1 近似算法的性能 一、近似算法的基本要求 对于规模为的问题, 1. 算法能以的多项式时间内完成; 2. 算法的近似解满足一定的精度。 二、近似比率 1、近似算法的近似比率 是最小化问题,是的一个实例,是解的一个近似算法, 是用算法对的实例求解时得到的近似值;是解的最优算法, 是算法对的实例求解时所得到准确值。则近似算法的近似比率为: 如果是最大化问题,则为: 2、与近似比率相关的问题 1)对最小化问题,有:; 对最大化问题,有:。 2)近似算法的近似比率总大于或等于1。 3)近似算法的近似比率越小,则算法的性能越好。 三、相对误差 1、相对误差的定义 相对误差表示近似算法的精确度,相对误差定义为: 2、相对误差的界 若对输入规模为的问题,存在函数,使得: 称函数为近似算法的相对误差的界。 3、相对误差与近似比率的关系 。 四、优化问题的近似方案(approximation scheme) 1、很多难解的问题,可以增加近似算法的计算量,来改善近似算法的性能。 2、优化问题的近似方案 把满足的一类近似算法,称为优化问题的近似方案 算法的性能比率会聚于1。 3、多项式近似方案(polynomial approximation scheme PAS) 近似方案中的每一个算法,以输入实例的规模的多项式时间运行,称该近似方案为多项式近似方案。 算法的计算时间,不随的减少而增长太快。 4、完全多项式近似方案(fully polynomial approximation scheme FPAS) 减少常数倍,近似方案中算法的计算时间的增长不超过个常数倍。 近似方案中算法的计算时间是和的多项式 15.2 装箱问题 一、装箱问题(BIN PACKING) 给定个物体,体积分别为,容量为的箱子,满足,。要求物体不能分割,把所有物体装进箱子,使所装入的箱子尽可能少。 二、装箱问题的四种算法 1、 First Fit(首次适宜FF)算法: 把箱子按下标标记,所有的箱子初始化为空; 按物体顺序装入箱子。 装入过程如下: 把第一个物体装入第一个箱子, 如果还容纳得下第二个物体,继续把第二个物体装入; 否则,把装入。 一般地,为了装入物体,先找出能容纳得下的下标最小的箱子, 再把物体装入箱子, 重复这些步骤,直到把所有物体装入箱子为止。 2、Best Fit(最适宜BF)算法: 与FF算法类似, 不同点:为了装入物体,首先检索能容纳得下、剩余容量最小的箱子, 再把物体装入箱子, 重复这些步骤,直到把所有物体装入箱子为止。 3、First Fit Decreasing(首次适宜降序FFD)算法: 首先把物体按体积大小递减的顺序排序, 然后用FF算法装入物体。 4、Best Fit Decreasing(最适宜降序BFD)算法: 首先把物体按体积大小递减的顺序排序, 然后用BF算法装入物体。 15.2.1 首次适宜算法 一、FF算法的描述: 算法15.1 装箱问题的首次适宜算法 输入:n个物体的体积s[],箱子的容量C 输出:装入箱子的个数k,每个箱子中装入的物体累计体积b[] 1. void first_fit(float s[],int n,float C,float b[],int k) 2. { 3. int i,j; 4. k = 0; /* 装入物体的箱子下标 */ 5. for (i=0;in;i++) /* 箱子初始化为空 */ 6. b[i] = 0; 7. for (i=0;in;i++) { /* 按物体顺序装入 */ 8. j = 0; 9. while ((C-b[j])s[i])) /* 检索能容纳物体i的下标最小的箱子j */ 10. j++; 11. b[j] += s[i]; 12. k = max(k,j); /* 已装入物体的箱子最大下标 */ 13. } 14. k++; /* 箱子的最大下标转换为箱子的个数 */ 15. } 二、FF算法的分析 1、时间复杂性: 时间。 2、算法性能估计: 假定,为一个单位体积,,。 令表示在实例下,使用算法FF装入物体时,所使用的箱子数目; 令为最优装入时所使用的箱子数目。 至多有一个非空的箱子所装的物体体积小于。 否则,如果有两个以上的箱子所装的物体体积小于, 假设这两个箱

文档评论(0)

kaiss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档