请教大家一个算法,脑子烧糊了。。。

2016-12-03 18:26:28 +08:00
 suspended
题目:

已知一个矩形容器[(0,0), (W,H)],其中已经容纳(摆放)了 m 个小矩形,
这些矩形均满足以下条件:
1. 当然都比容器小,且摆放位置未超出容器范围;
2. 所有小矩形的边均与容器的某一边平行或者重叠;
3. 所有小矩形不重叠;
4. 所有小矩形至少有两条相邻边与容器或者其他小矩形的边重叠(其实就是指
小矩形向某角落挤紧,在保持不重叠的情况下只有 0 个或 1 一个自由度可滑动)

问题算法:
取另一个小矩形 (w,h)摆放到容器中,使其满足所有上述 1~4 的条件,
求所有可能的摆法。


想了很久没有思路。请教诸位了。
3309 次点击
所在节点    问与答
27 条回复
binux
2016-12-03 21:36:49 +08:00
@suspended 你需求只有添加 1 个,不能再多个矩形吗?如果不是,你怎么保证局部最优就是全局最优?
suspended
2016-12-03 21:46:11 +08:00
@binux 添一个能搞定之后,添多个不就是一个一个添喽。:D

局部最优当然不保证全局最优。全局最优根本不可能实现,因为是个 N-P 问题啦。全局较优是外围算法来负责的,我这个问题里的算法只是全局算法里的一个步骤而已。因为论文里面这个步骤的算法没有交代,自己琢磨了几个小时也只有穷举的办法,所以才拿上来请教一下诸位同仁。
suspended
2016-12-03 21:52:34 +08:00
@SCaffrey 哎呀,漏掉了这位仁兄,不好意思。 m 最大在 1000 这个量级,谢谢。
yangyaofei
2016-12-03 23:10:32 +08:00
这个……是为了更省料的切割方法?
suspended
2016-12-03 23:24:17 +08:00
@yangyaofei 是滴是滴,除了省料,还要好切
SCaffrey
2016-12-03 23:51:21 +08:00
既然 1000 那么枚举放的位置不就是很妙了吗 XD
如果每次查询的小矩形规格是定值的话似乎可以预处理一波吧
suspended
2016-12-04 11:26:26 +08:00
@SCaffrey 规格肯定有若干,每个规格的矩形有若干。所以不想穷举的说。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/325061

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX