区域划分算法

时间:2011-11-07 20:10:34

标签: algorithm

是否有任何算法可以在n个子区域中找到区域分布,其中每个子区域可能具有不同的区域。

正式提出问题陈述:假设你有一个矩形图。你将如何将区域划分为n个矩形。这些子矩形的面积之和将等于原始矩形图(因此矩形之间不会有任何重叠) 并且这些较小的n个矩形中的每一个的区域都是预先给出的。 限制是在每个子矩形的宽度上。 该细分必须显示在可以是分成像素的计算机屏幕上。因此,我不希望任何区域的任何尺寸小于像素(或者可能是10),这可能没有用这样显示。

我在看a rectangle packing algorithm here,但这似乎是在浪费我不想要的空间。是否存在解决此问题的算法。

在这种情况下,回溯似乎不是一个好的解决方案,因为只指定了子矩形区域,而不是尺寸,还是它?

示例1: enter image description here

示例2: enter image description here

1 个答案:

答案 0 :(得分:0)

函数的integral是由限制,函数曲线和x轴约束的区域。将矩形的一侧定义为x轴,然后找到其他边界。您选择的语言中有许多数字集成库。

编辑:尝试用文字说明有些困难......

至少假设包含的矩形的面积大于子区域的面积之和;并且不要求某种遏制顺序:

  1. 首先包含轴上边缘的最大子区域。
  2. 选择下一个较小的子区域。
  3. 创建函数(积分)以计算从每个轴看到的自由区域。
  4. 如果窗口/限制等于子区域两侧(面向轴)的长度,请沿轴远离原点滑动这些窗口。
  5. 创建用于查找由窗口沿轴线滑动时由窗口形成的十字架外臂限定的自由空间的功能。在自由空间极小(差异化)的地区可以找到利用空间的效率。
  6. 将子区域旋转90度,然后从步骤3开始重复。
  7. 将子区域放置在最有效的方向和位置。
  8. 重复步骤2.滑动窗口时停止报告否定
  9. 整个域的可用空间(分配的空间与窗口占位符重叠)。

    理论上,这将系统地试图挤入子区域。如果时间允许,可以使用草图和伪代码。