Marijn Heule,某机构的学者兼卡内基梅隆大学计算机科学教授,与柏林工业大学的同事Manfred Scheucher共同解决了一个近100年前由匈牙利-澳大利亚数学家Esther Szekeres提出的几何问题。
这位传奇匈牙利数学家Paul Erdős将其称为“幸福结局问题”,因为对该问题的研究促成了Esther Klein与Erdős长期合作者George Szekeres的婚姻。该问题要求找出平面上至少需要多少个点(任意三点不共线),才能保证其中n个点构成不包含其他点的凸多边形。
Esther Szekeres在1930年代解决了n=4的情况。近50年后,Heiko Harborth确定需要10个点才能保证存在空五边形。大约在同一时期,Joseph Horton证明对于七边或更多边的多边形,该问题无解。但剩下的情况——空六边形问题——仍然悬而未决。这就是Heule和Scheucher解决的问题。他们证明30个点足以保证存在不包含其他点的凸六边形。
为了证明这一结果,Heule和Scheucher使用了SAT求解器,这是一种自动推理工具,用于确定长链逻辑约束是否可满足。SAT求解器生成证明,表明特定的变量赋值被约束所禁止。验证证明的正确性需要另一个自动推理工具——证明检查器。
然而,证明可能高达数百TB,在证明检查过程中仅管理输入输出和数据检索就非常耗时。Heule表示:“检查成本可能是原始求解时间的100%到200%。”
Heule作为某机构云服务自动推理组的成员,与其同事合作开发了新的流式证明检查方法的基础设施,其中专用服务器核心在证明生成时进行检查。这将证明检查开销从100%-200%降低到约10%。
这一创新将有助于自动推理组未来在软件安全、可证明正确软件和硬件验证等方面的工作。当然,这些应用仍然需要开发人员创建他们正在验证系统的严格形式化模型。但在证明检查阶段,“如果我们可以用10%的开销而不是150%来完成工作,这显然是一个胜利,”Heule说。
几何约束
SAT问题是NP完全的,这意味着可以设计出在全球所有计算机的宇宙寿命内都无法解决的SAT问题。但这并不意味着所有SAT问题,甚至具有大量变量的SAT问题都不可解,自动推理研究者的部分艺术在于以SAT求解器能够解决问题的方式表述问题。
“Marijn在将复杂问题映射到求解器方面是世界一流的,”某机构云服务自动推理组的高级首席应用科学家Robert Jones表示。
简化问题
解决空六边形问题的自然方法是将六边形分解为三角形,并推理每个三角形内部是否包含点。先前将该问题映射到SAT表达式的尝试采用了一般方法,指定了一组可应用于集合中任何三角形和包含该三角形的所有六边形的逻辑约束。Heule表示,得到的表达式易于表述但难以推理。
Heule建议他与Scheucher采取相反的方法,明确标记每个六边形的所有可能配置,使用这些标签指定各个三角形,并检查每个命名三角形是否包含内部点。
优化求解
SAT求解器减少所处理问题复杂性的一种方法是寻找逻辑冗余并移除它们。在最初对空六边形问题的表述中,Heule将点集中的每个六边形分成四个三角形,并检查每个三角形是否包含内部点。
然而,他注意到SAT求解器将此步骤减少为仅检查每个六边形中的一个三角形。经过思考,Heule和Scheucher意识到在每个六边形中,存在一个单独的三角形——称为内三角形——它与六边形的其他三个三角形(称为外三角形)共享所有边。如果该内三角形为空,则可以从点集中的点推断出空六边形的存在。
假设一个外三角形包含一个点。那么可以绘制一个新的三角形,包含该点并与内三角形共享一边。根据需要重复此过程保证会产生一个内部没有点的凸六边形。
一旦Heule和Scheucher理解了求解器告诉他们的内容,他们就能够设计出更实用的SAT问题表述。求解器能够推理30点集的所有可能性,并证明在该集合中必须存在至少一个六边形,其内三角形不包含其他点。
这仍然是一个极长的证明,但Heule与其同事的新证明检查机制能够相对快速地确认其有效性。
“这里的问题之一是这些工具的许多用户不知道如何最大限度地利用它们,”Heule说。“这不仅适用于这个特定问题,也适用于许多其他问题。在某机构内部,有许多应用可以使用SAT求解器验证开发人员的工作或找到更好的解决方案。我可以通过编写有效的编码来提供帮助,但理想情况下,一切都应自动完成。我很希望看到自己从这个等式中被移除。”