具有不同小矩形或正方形的算法设计问题矩形封面

时间:2019-07-01 09:20:03

标签: algorithm

此问题可以描述如下;

给定一个矩形,其宽度和高度可以随机地取大;并给出一些较小的矩形或正方形,表示基本元素,例如6*6, 8*4, 4*4, 6*4, 4*4, 2*2, 1*1;有一些算法可以有效地覆盖给定的矩形吗?有两个约束,

  1. 最好使用相同的基本元素;
  2. 首先发现更大的基本元素。

例如,给一个8*8方块;可以分为一个6*6,然后分成七个2*2;另一个选项是四个4*4;另一个选项是两个8*4;另一个选择是八个1*1;并且还有其他一些选择来获得8*8平方。使用给定的两个约束,将选择两个8*4作为最佳结果。

有解决这个问题的好算法吗?

1 个答案:

答案 0 :(得分:1)

您的问题是著名的knapsack problem的变体,因此可以朝这个方向进行一些研究。 这是NP困难的。

困扰您的一件事是您的评分功能尚未明确。因此,矩形没有任何价值,也不会因为引入另一种类型的图块而受到任何惩罚,因此您可以明确地说,对于覆盖10*10区域,解决方案1 x 6*6, 1 x 4*6, 1 x 6*4, 1 x 4*4(元素可以转向吗?)更好或更比25 x 2*2更糟。哪个约束权重更大:具有更少的不同部分,或具有更大的组成部分。

基于这个遗漏的规范,我会说最简单的方法是使用最大的可用块,这些边是要填充的矩形的分隔线。因此该解决方案始终为n x i*j,因为这是一种无脑的解决方案,并且始终有效且不需要任何复杂的算法,并且适合第一个(最高优先级?!)约束。

小笔记:

您的问题还出现在工业生产的许多领域,例如在设计电路板时的电气工程领域。添加另一个不同的组件不仅增加了组件价格,还增加了成本。
因此,希望使材料清单(BOM)保持简短,并尝试替换其他组件仅使用一次的组件。例如。在电路板上。如果设计中已经有很多100Ohm的电阻,那么不放置单个200Ohm的电阻而是在其中放置2个100Ohm的电阻可能会更便宜。因此可以避免购买其他物品,需要存储,可能要进行测试以及在生产线中进行设置。...