计算机折纸是计算机科学长期研究的一个问题,MIT的新论文提出一种新的通用折纸算法,能在保证最小的折缝数量的情况下折出几乎任何东西,包括1000种简单的纸鹤。
曾有人说,折1000只纸鹤,内心深处的愿望便可以实现。我曾试过一次,那时我还是一名孤独的大学生,最后以患上结膜炎结束。然而,麻省理工学院最新的一篇论文描述了一种可以用一张纸折出1000种花样的方法,这一独特的技艺得益于一种新的折纸算法(origami algorithm)。
计算机科学界长期以来一直在计算机折纸问题上努力。1999 年,18 岁的滑铁卢大学博士生 Erik Demaine 发表了一篇论文,描述了一种算法判断如何将纸折叠到任何想象到的 3D 形状。它是计算折纸领域的一篇里程碑意义的论文,但算法并没有产生出多少实用的折纸模式。因为它需要非常长的纸条,折叠许多次后就不那么牢固了。
现在,身为 MIT 电气工程和计算机科学教授的 Demaine 将与东京大学的 Tomohiro Tachi 在 7 月举行的计算几何学研讨会上发表一篇新论文,给出一个通用的折纸算法,能保证最小的折缝数量。
从技术上将,保证折缝数量最少意味着要保留原始纸张的“边界”。例如,假设你有一张圆形的纸,你想把它折成一个杯子。在纸张的中央留一个较小的圆圈,就可以用打褶的方式将侧面束起来;实际上,有些冷却杯是这样设计的。
在这种情况下,杯子的边界——即它的边缘——与展开的圆的边界相同。但Demaine早期的算法做出的折纸不是这样,杯子还会包括一个薄的纸条绕在圆上,因此可能不能盛得住水。
“新的算法能够得出更好、更逼真的折纸。” Demaine说,“我们不知道如何在数学上量化,但它在实践中似乎表现更好。但是我们确实发现一个数学属性能很好地区分这两种方法。新方法将原始纸张的边界保留在你想要折出的表面的边界上。我们称这是‘水密性’(watertightness)。”
该算法将被添加到折纸软件中以改进系统,这意味着你可以使用足够大的纸张折叠出几乎任何东西(包括1000种简单的纸鹤)。
“之前的方法要么是‘作弊’性质的,用薄的纸带绕成一个多面体,要么不能保证成功,”数学教授Joseph O'Rourke说:“他们的新算法确实能产生折纸形状,不是作弊,多面体的每一面都被纸‘无缝’覆盖,并且纸的边界映射到多面体的边界——即他们说的‘水密性’。最后,实现折纸的额外‘flash’结构隐藏在内部,因此看不见。”