java - 什么算法可用于以最佳方式在 A1 尺寸的纸张上包装规则形状
问题描述
什么算法可用于以最佳方式在 A1 尺寸的纸张上包装规则形状?
解决方案
假设您的意思是不规则形状的包装(如图所示),最佳算法几乎完全不可行。但是,确实存在有效的近似值。这个问题有无数个重要的解决方案,不幸的是我不知道有什么方法可以找到最佳解决方案。
我需要指出,这与经过充分研究的矩形包装问题(当然是可以解决的)非常不同,因为不规则形状的侧面很少对齐,并且还必须考虑旋转。
最好的近似方法是贪婪地从最大的形状开始,以最小的形状结束,将每个形状尽可能地移动到左下角,然后再将下一个形状添加到画布上。
本文描述了一些近似解决此问题的算法: https ://pdfs.semanticscholar.org/84b0/6942a8986c6214fc88c000265c7fe7f78f52.pdf
您可能还对解决更简单的矩形打包问题的方法感兴趣: https ://codeincomplete.com/posts/bin-packing/
由于您的问题被标记为 Java,您可以使用 Area 类轻松检查不规则的交叉点。
推荐阅读
- c# - EFCore 急切加载问题
- python - 将目录中的文件列表转换为列表,以便可以迭代-python
- excel - 在Excel中为整列RTrim空格
- flutter - 火种卡滑块颤动
- python - 安装 Python 3.8.6 后找不到模块 numpy 错误
- ffmpeg - 使用 ffmpeg 进行流式传输时,仅当源文件/流没有音频时才插入音频
- c# - 仅在有值时才获取属性名称和值
- typescript - How can I pass an enum, with keys of another string enum, into a function that accepts a string?
- javascript - 来自 Flask 后端的 Prop 未传递给组件“TypeError:未定义不是对象(正在评估 'undefined.props')”
- java - 结合两个map java 8列表