algorithm - 物体定位算法

标签 algorithm object partitioning

我想知道这个问题是否有“最佳”解决方案:

我有一个 n x m(像素)大小的空间,上面有 p 个预先存在的矩形 - 各种大小的对象。现在我想在这个空间中放置 q 个(相同大小的)新对象,没有任何重叠。

我想出的算法:

  1. 创建数组 A[][],大小为 [(n)/(size_of_object_from_q)]x[(n)/(size_of_object_from_q)]
  2. 迭代 p 中的所有元素,并为每个元素:

    将 A[][] 中的所有字段标记为已占用,元素“位于”的位置

  3. 将q中的所有元素放在A[][]中字段未标记的相应位置

(天哪,我希望我能让大家理解...)

有没有更好的方法来做到这一点?非常感谢任何帮助!

最佳答案

从互联网上的简短搜索来看,最佳矩形包装似乎是 NP-hard问题。 我猜想学术界的聪明人为此找到了一些近似算法,所以它是谷歌搜索的一个选项。

但我会先尝试让简单的方法起作用:

  1. 根据对象的宽度将对象分成大小
  2. 尝试将它们从大到小逐行放置。

我的猜测是,在许多情况下,这种天真的解决方案会奏效。

关于algorithm - 物体定位算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799662/

相关文章:

c++ - 寻找 8x8(或 nxn)离散余弦变换 (DCT)/IDCT 伪代码

javascript - "(.....);"和 "{......}"在 react 中有什么区别?

java - 如何在Java Struts2中接收模型中的所有请求参数?

MySQL分区注意事项

python - Bentley-Ottman 与纯叉积交集的性能非常密集的 2D 段分布

c - 机器人寻路算法

algorithm - 最优子结构和贪心选择

Java - 从对象属性获取方法

sql - 带有连接表的 PostgreSQL 分区 - 查询计划中未使用分区约束

c - 使用分区和交换按字母顺序排序