最新圆排列问题PPT课件.ppt





《最新圆排列问题PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新圆排列问题PPT课件.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、问题描述: 给定n个大小不等的圆 C1,C2,Cn,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。 例如,当n=3,且所给的3 个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。其最小长度为2+42 贪心求近似最优解无效 剪枝策略 脑海里出现多个圆 贪心求近似最优解无效 剪枝策略 由刚才的例子,明显看出贪心无效,但是却让我想到一种剪枝策略. 若在某个圆排列中有三个挨着的圆是按降序或升序排列,则此圆排列一定不是最小长度的圆排列. 先看特例:(26.9176)(266.182)(309.719) 贪心求近似最
2、优解无效 剪枝策略 求证:任何含有三个挨着的按升序或降序排列的圆的圆排列一定不是最小长度的圆排列。 证明: 用反证法。假设结论不成立,则其否命题为:存在一个含有三个挨着的按升序或降序排列的圆的圆排列是最小长度的圆排列。 (转不妨设文档)剪枝策略的效率分析 剪枝策略的效率分析:(看比较示例) 假设每个圆的半径都不相同,则剪掉的排列有:C(n,3)P(n-2) = (n(n-1)(n-2)/6)(n-2)! 又在每个当前圆处,都要进行O(2n)次计算 所以当n较大时,可以节省很多时间,即使到了离叶结点很近的地方 正确的求圆排列长度的方法 3.脑海里出现多个特殊圆 正确的求圆排列长度的方法 正确的求
3、圆排列长度的方法 1求圆心坐标时,不能直接从倒数第二个圆开始,必须从第一个开始,依次算过去 求当前圆排列的长度时,也是要从第一个圆开始,依次算过去 所以,每个圆结点必须记录到该圆时的圆排列,还得记录它的儿子们正确的求圆排列长度的方法 /求圆心坐标 void CircleNode:Center() double temp=0;for(int i=1;itemp) temp=valuex;xend=temp; 正确的求圆排列长度的方法 /求圆排列的长度 void CircleNode:Compute() double low=0,high=0;for(int i=1;i=end;i+)if(xi-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 排列 问题 PPT 课件

限制150内