When both Grounding and not Grounding are Bad -- A Partially Grounded Encoding of Planning into SAT (Extended Version)

该论文提出了一种介于完全升维与完全实例化之间的规划 SAT 编码方法,通过保持动作升维并部分实例化谓词,实现了与规划长度成线性关系的扩展性,从而在难以实例化的领域中长程最优规划任务上超越了现有技术。

João Filipe, Gregor Behnke

发布于 2026-03-23
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲的是如何让计算机更聪明、更高效地做“规划”(比如机器人怎么移动、物流怎么送货)。

为了让你轻松理解,我们可以把“规划”想象成给一个巨大的迷宫找出口,或者给一个复杂的乐高任务写说明书

1. 核心难题:太具体 vs. 太抽象

在计算机规划的世界里,有两种处理问题的方法,就像两种不同的“地图”:

  • 完全“落地”的方法(Grounding):
    想象你要指挥一个机器人去送货。传统的做法是,把每一个具体的包裹(包裹 A、包裹 B...)和每一个具体的地点(北京、上海、广州...)都列出来,生成一份超级详细的清单

    • 优点: 计算机看得很清楚,每一步都知道具体该动哪个包裹。
    • 缺点: 如果包裹有 1000 个,地点有 1000 个,这份清单就会变得像宇宙一样大,计算机根本算不过来,内存直接爆炸。这就叫“指数级爆炸”。
  • 完全“悬浮”的方法(Lifting):
    另一种做法是,计算机只记规则,不记具体名字。比如它只记:“如果有车,就可以把包裹从 A 运到 B"。它不关心车是红色的还是蓝色的,也不关心 A 是北京还是纽约。

    • 优点: 清单非常短,很省内存。
    • 缺点: 以前有一种叫 LiSAT 的顶尖方法,虽然用了这种“悬浮”规则,但在计算长任务(比如要运 100 步)时,它需要把每一步和之前的每一步都“手拉手”连起来检查。这就像每走一步都要回头和之前所有的步骤握手,导致计算量随着步数平方级增长(走 10 步要 100 次检查,走 100 步要 10000 次检查)。

这篇论文的痛点是: 完全落地太慢(清单太大),完全悬浮(LiSAT)在长任务中又太慢(握手太多)。

2. 作者的解决方案:半落地、半悬浮(Partial Grounding)

作者想出了一个“中间路线”:动作保持“悬浮”(不记具体名字),但状态“半落地”(记具体关系)。

他们用了三个聪明的技巧,就像给计算机装上了**“智能分类器”**:

技巧一:把动作抽象化(动作不落地)

就像你写菜谱时,只写“炒一个鸡蛋”,而不需要写“炒那个编号 007 的鸡蛋”。计算机依然用通用的规则来指挥动作,这样动作的清单就很短。

技巧二:利用“互斥组”(Mutex Groups)来压缩状态

这是最精彩的部分。作者发现,很多事实是互斥的。

  • 比喻: 想象一个包裹。它要么在“车上”,要么在“仓库里”,要么在“家里”。它不可能同时在这三个地方。这三个状态就像是一个**“互斥组”**。
  • 传统做法: 计算机要分别记录“在车上=真/假”、“在仓库=真/假”、“在家=真/假”。
  • 作者的做法: 既然它们互斥,计算机只需要记一个变量:“它现在在哪个位置?”(比如用数字 1 代表车,2 代表仓库)。
    • 这就好比以前你要给 1000 个开关分别记录状态(1000 个变量),现在你只需要一个**“旋钮”**,转到哪个数字就代表哪个状态(只需要 log2(1000)\log_2(1000) 个变量,大概 10 个)。
    • 这种方法叫**“部分落地”**:动作是通用的,但状态通过这种“旋钮”被压缩了。

技巧三:线性增长 vs. 平方增长

  • LiSAT(旧方法): 就像每走一步都要和之前的所有步骤握手。步数越多,握手次数呈平方级爆炸(N2N^2)。
  • 新方法: 因为用了“旋钮”压缩状态,每一步只需要检查当前的状态,不需要回头和所有历史握手。步数增加,工作量只是线性增加NN)。
    • 比喻: 以前是“全员大合唱”,人越多声音越乱;现在是“接力赛”,每个人只和下一棒交接,人再多也能跑得飞快。

3. 实验结果:真的管用吗?

作者在 9 个不同的“迷宫”(规划领域,如物流、机器人、管道运输等)里测试了他们的算法。

  • 在“找最短路径”的任务中(Optimal Planning):
    他们的算法在 9 个领域里有 5 个打败了目前的冠军(LiSAT)。特别是在那些“包裹多、地点多”的复杂领域(如物流、管道),优势非常明显。
  • 在“随便找个路就行”的任务中(Satisficing Planning):
    虽然还没完全超越所有对手,但表现非常强劲,而且能解决一些其他方法解决不了的难题。
  • 公式大小:
    随着任务变长,他们的算法生成的“说明书”(公式)大小是直线上升的,而旧方法是曲线飙升的。这意味着任务越长,新方法的相对优势越大。

4. 总结:这就像什么?

如果把规划问题比作组织一场大型婚礼

  • 完全落地: 给每个宾客发一张专属的座位表,列出 1000 个人的名字和具体座位。太厚了,翻都翻不过来。
  • 完全悬浮(旧方法): 只写规则“新郎新娘要交换戒指”。但为了确认戒指没被偷,每交换一次,都要把之前 100 次交换的记录都拿出来核对一遍,累死人。
  • 新方法(本文):
    1. 动作规则保持简单(“交换戒指”)。
    2. 把宾客分组(“互斥组”):比如“新郎”、“新娘”、“伴郎”、“伴娘”。你只需要一个**“当前状态旋钮”**,显示“戒指现在在谁手里”。
    3. 因为状态被压缩了,而且不需要回头核对所有历史,所以婚礼流程再长,组织者也不会累垮

一句话总结:
这篇论文发明了一种**“聪明压缩法”,让计算机在处理复杂规划任务时,既能保持规则的简洁,又能避免状态爆炸,特别是在长任务**中,它比以前的冠军方法跑得更快、更稳。