高效盒子折叠算法解析
1. 案例研究引入
我们对一组特定的九连方进行了算法的案例研究。此前,有人先计算出能折叠成尺寸为 1 × 1 × 7 和 1 × 3 × 3 两种盒子的 1080 个多连方,接着在这些多连方上解决了尺寸为 √5×√5×√5 特殊盒子的折叠问题,最终找到了能折叠成三种不同盒子的九个多连方。我们将算法应用于这组九个多连方时,意外发现了另一个特殊的多连方,它能以四种不同的折叠方式折成三种不同的盒子。
2. 预备知识
- 盒子折叠问题定义
- 输入 :多边形 P = (p0, p1, …, pn−1, p0)
- 输出 :能从 P 折叠而成的盒子集合 S = {Q0, Q1, …, Qk},S 可能为空集。
假设每个点 pi 的 x 坐标 x(pi) 和 y 坐标 y(pi) 都是有理数,设 qmin 是它们的最小公分母。通过将其按 qmin 进行缩放,盒子折叠问题可转化为处理多边形 P ′ = (p′0, p′1, …, p′n−1, p′0),其中 P ′ 中每个点的坐标 x(p′i) 和 y(p′i) 是 [0, pmaxqmin] 内的整数,pmax 是最大分子。因此,不失一般性,我们假设每个坐标 x(pi) 和 y(pi) 是非负整数。
- 多边形直径与几何参数
多边形 P 的直径 D 定义为 maxi,j |pi − pj| = maxi,j √((x(pi) − x(pj
超级会员免费看
订阅专栏 解锁全文
276

被折叠的 条评论
为什么被折叠?



