算问题:将N个大小不等的矩形不重叠地拼在一个指定宽度不定长度的大矩形里,求使占用大矩形区域最小的拼法。

beargo 2009-02-18 07:46:18
加精
将N个大小不等的矩形(长或宽不大于大矩形的指定宽度)不重叠地拼在一个指定宽度不定长度的大矩形里,求使占用大矩形区域最小的拼法。
我的思路是先把N的N!种可全排列获取出来然后再去拼接算出总面积用快速排序法获取最小面积.但问题是N!的可能性太多了.当N>10时等待的时间就没办法忍受了.
大家都来出个主意拼个快速的算法.
...全文
7117 107 打赏 收藏 转发到动态 举报
写回复
用AI写文章
107 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonegunman 2012-06-08
  • 打赏
  • 举报
回复
人家是用在工业机器上的,一个GA跑下来黄花菜都凉了。。。动态规划应该可以,模拟退火可以控制收敛的时间
cudoshiyansaku 2012-03-10
  • 打赏
  • 举报
回复
动态规划。。貌似能得到解集当中的一个次优解。活着是最优解。
cudoshiyansaku 2012-03-10
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 swallow_pulm 的回复:]
有那么难的嘛,我觉得很简单的啊。
依据:正方形面积最小。

做法: 将N个大小不等的矩形拼成一个正方形(尽量正规是的正规的正方形),如果这个
正方形的边长小于 给定大矩形的宽度时,就用这种方法了。如果边长大于给定的矩形的宽度时,
就依给定矩形的宽度为边长,拼成一个等边长的矩形了。

当然,如果N个矩形拼凑时,尽量的使浪费的空间最小。
想法是这样,不过做的话嘛……
[/Quote]
一看你数学就没学好吧
cudoshiyansaku 2012-03-10
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 soilwork 的回复:]

http://www.blackpawn.com/texts/lightmaps/
[/Quote]一看你数据就没学好
beargo 2010-10-15
  • 打赏
  • 举报
回复
工作劳累,很久没来了。。。顶!!!
赵4老师 2010-06-28
  • 打赏
  • 举报
回复
N==3的话,穷举:(□表示不旋转,■表示旋转90°)
□      ■      □      ■      □      ■      □      ■
□ □ ■ ■ □ □ ■ ■
□ □ □ □ ■ ■ ■ ■

□□ ■□ □■ ■■ □□ ■□ □■ ■■
□ □ □ □ ■ ■ ■ ■

□□□ ■□□ □■□ ■■□ □□■ ■□■ □■■ ■■■


wanggenhu0 2009-07-28
  • 打赏
  • 举报
回复
看来结帖子吧
wanggenhu0 2009-07-25
  • 打赏
  • 举报
回复
再来顶一下
loocky 2009-07-22
  • 打赏
  • 举报
回复
使用遗传算法
Ray1010 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 85 楼 iamlazybone 的回复:]
最近看了一个人工生命的模拟程序:
给每个生命赋予简单的规则,并且声明有简单的遗传变异特性
但出来的效果却非常惊人:
包括组织的形成,包括优胜劣汰,包括对环境一些破坏的自我修复等等,包括对特殊环境的定向进化。

如果让我们用算法控制这些密密麻麻的生命体估计计算量相当大。而给出简单规则让其自行生长却可能得到很好的效果。

不知道和本题是否有联系,如果给每个矩形赋予[生命]和[生存规则]让其[自行生长],或许…
[/Quote]
想法很特别
wanggenhu0 2009-07-22
  • 打赏
  • 举报
回复
顶,
555555555555555 2009-07-22
  • 打赏
  • 举报
回复
本来不想登录的,看这个帖子回复之后上来聊聊。

这个问题确实是NP问题。原因大概解释一下。

一般来说,问题的时间复杂度,随着解的数量的增加,呈现指数化的增长和多项式(倍数化)的增长。

我这里卖个关子,我先不说P和NP的定义。各位可以去WIKI自己找一下就能找到一堆解释,不过尽量不要百度。

如果我们站在遗传算法Genetice Algorithm的角度看这个问题,合适方程大概就是“不重叠放置的情况下,占用大矩形的面积最小”。

(其他算法定义一个Fitness Function估计也是一样。。。)

首先从给定的N个大小不等的小矩形的集合空间中,找到一个能通过这个方程的解

然后你的每一个解,都由于大矩形的规格不确定,要不断的搜索第二个解的集合空间。

所以简单的来看一下,你每增加一个小矩形,大矩形都要多搜索一次整个的集合空间,以确定占用的面积最小。

这样把这个图画一下(直觉。。)就是一个比较急剧上升的,类似指数方程的一个图像。



这类问题,已经算是最简单的一类问题了。说实话甚至不用动用退火量子算法,也不用动用SVM,一个GA简单就搞定了。

不是做广告,我建了个q群30516633,就专门研究这类问题。同时我提供大量的英文原版PDF,欢迎一起讨论。
wanggenhu0 2009-07-22
  • 打赏
  • 举报
回复
没事再顶一下.
越过越咸 2009-07-22
  • 打赏
  • 举报
回复
192.168.1.101
batiraul 2009-07-21
  • 打赏
  • 举报
回复
这个得顶起来!
懒骨头 2009-07-21
  • 打赏
  • 举报
回复
最近看了一个人工生命的模拟程序
给每个生命赋予简单的规则,并且声明有简单的遗传变异特性
出来的效果却非常惊人
包括组织的形成,包括优胜劣汰,包括对环境一些破坏的自我修复等等,包括对特殊环境的定向进化。

如果让我们用算法控制这些密密麻麻的生命体估计计算量相当大。而给出简单规则让其自行生长却可能得到很好的效果。

不知道和本题是否有联系,如果给每个矩形赋予[生命]和[生存规则]让其[自行生长],或许他们会演变出最优的解来。

猜测罢了,且表达上有问题,我随便一说你们随便一看。
heguo 2009-07-21
  • 打赏
  • 举报
回复
类似的还有一个装箱问题.
一个固定长宽高的矩形集装箱如何才能装最多不同大小的小箱子?
java1109 2009-07-21
  • 打赏
  • 举报
回复
mark
wanggenhu0 2009-07-21
  • 打赏
  • 举报
回复
顶到底
yzhfl_1122 2009-07-21
  • 打赏
  • 举报
回复
帮顶
继续学习数学
加载更多回复(85)

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧