首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回溯的另一种选择

回溯的另一种选择
EN

Stack Overflow用户
提问于 2013-10-29 08:16:51
回答 2查看 1.6K关注 0票数 0

我正在开发一个空间优化软件。它应该能够以最优的方式在较大的空间中安排小体积。有一些限制,比如一个体积不能移动,或者应该“躺”在另一个体积的内面上,或者它不能被另一个体积覆盖,等等。

每个体积都表示为一个3d轴对齐的边界框,或一组较小的3d AABB (它们组装成一个更复杂的体积)。

我一直在考虑使用回溯来解决这个问题(特别是分支定界技术),但它在速度和内存方面都变得过于贪婪(即使是过于简单的使用)。

有没有人知道解决这个问题的替代技术?

我没主意了..。但我确信这类软件是存在的,所以有一种方法(我不知道)。

感谢您的帮助,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-10-29 08:40:09

是的,这个问题是有“解决方案”的,而且它们是大-大业务。解决好这个问题可以让你赚很多钱,因为它是NP难的,而且非常有用。http://en.wikipedia.org/wiki/Bin_packing_problem

我的第一个想法是用离散线性规划的方式重新表述问题,这已经完成了,如果你有访问权限,请参阅下面的参考。

Mhand,Imed Kacem,Stephane Negre,Lei Wu (2010)“三维装箱问题的线性规划方法”,离散数学电子笔记,36,993-1000

票数 1
EN

Stack Overflow用户

发布于 2013-10-29 08:31:47

如果你还没有看过的话,我建议你看看动态编程的方法。你的问题听起来类似于“裁布”问题,这是一个典型的动态规划问题。下面是裁剪布料的问题:

裁剪布料。您将看到一块尺寸为X、Y的长方形布料,其中X和Y是正整数,以及可以使用该布料制作的n种产品的列表。对于每个产品i,1,1;n,你知道需要一块尺寸为ai,bi的长方形布料,产品的最终售价是ci。假设ai、bi和ci都是正整数。你有一台机器,它可以把任何一块长方形的布料水平或垂直地分成两块。设计一种算法来确定X,Y块布料的最佳回报,也就是说,裁剪布料的策略是由生成的布料制成的产品提供最大的销售价格总和。您可以随意复制给定产品的任意多个副本,如果需要,也可以不复制。

以下是我将如何将裁剪布料问题划分为子问题:

代码语言:javascript
复制
V( i,j) = max { V(i - ai, j- bi ) + ci,
                V(i - bi, j - ai ) + ci
              }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19647459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档