圆排列问题-Read.pptVIP

  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文档。上传文档
查看更多
圆排列问题-Read.ppt

* * 圆排列问题 ?问题描述: 给定n个大小不等的圆C1,C2,…,Cn ,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3 个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列,其最小长度为 ?编程任务: 对于给定的n个圆,设计一个优先队列式分支限界法,计算n个圆的最佳排列方案,使其长度达到最小。 算法思想 圆排列的解空间是一棵排列树,采用优先队列式分支限界法找出最小圆排列长度。 首先,用一个最小堆来表示活节点优先队列,其优先值定义为剩下未排列圆的所有半径和,或者定义为剩下未排列圆的相切距离和。如下图: 算法思想 其次,要解决镜像对称问题。例如有3个圆,半径分别为1,2,3。其排列1,2 ,3与3,2,1互为镜像排列,具有相同的圆排列长度,因此,只有计算一个就够。这样一来,可以减少一半的计算量。 1, 2 , 3 3, 2, 1 算法思想 解决方法:假设有n个圆排列:1,2,…,n。只要算出 n!/2种排列,具体排列如下: 1,…,2; 1,…,3; … 1 ,…,n; 2,…,3; 2,…,4; … 2 ,…,n; n-1 ,…,n; … 因此只要确定第一个和最后一个位置的数就可以,在排列时,可以从第二个位置到第n-1个位置之间排列。 算法思想 如果所给的n个圆中有k个圆有相同的半径,则这k个圆产生的k!个完全相同的圆排列,只计算一个就够,因此,相同半径的圆越多,剪去的节点就越多。 解决相同半径圆排列方法如下:如下图有3个相同半径的圆,当第一个圆与第二个圆要交换位置时,先判断它们的半径是否相同,若是,则剪枝,否则,可以交换。 第一个圆与第二个圆半径相同,交换后总长度也相同。 第一个圆与第二个圆半径不同,交换后总长度可能不相同。 算法思想 为了加快搜索节点,可以进一步加强下界约束条件。假设,有n个圆,其中前面m个圆已经确定完位置,还有 n-m 个没确定位置。那么,当搜索到第m+1个圆时,min_len(m)+2.0*sqrt(r[m]*r[m+1])+len_r(n-1-m)min 表示前面m个圆已排好,长度为min_len(m) 第m个圆 第m+1个圆 长度为2.0*sqrt(r[m]*r[m+1]) 算法思想 证明加上len_r(n-1-m)后, min_len(m)+2.0*sqrt(r[m]*r[m+1])+len_r(n-1-m)min总是成立。 因为len_r(n-1-m)=r[m+2]+r[m+3]+…+r[n]总比确定完位置后的圆排列的长度更小。 r[m+2] r[m+3] 算法思想 计算圆排列的长度:double low=0.0; double high=0.0; for( j=1;j=n;j++) { if(E.x[j]-E.r[j]low) low=E.x[j]-E.r[j]; //计算最左边 if(E.x[j]+E.r[j]high) high=E.x[j]+E.r[j];//计算最右边 } if((high-low)min) min=high-low; //更新min 圆心坐标虽然在最左边,但是该圆的边界不一定是最左边,最右边情况也一样。

文档评论(0)

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

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

1亿VIP精品文档

相关文档