这可能是一个非常幼稚的问题,但我很想知道具体的原因。为什么PDDL首先开发出来?为什么我们不能使用一阶逻辑进行推理?
答案 0 :(得分:7)
使用更具体的语言来表达您的问题,可以应用更具体的算法来解决它们。
从理论的角度来看,FOL是不可判定的,而大多数PDDL版本仍然是可判定的,因为PDDL只能表达规划问题。例如,使用参数化操作的经典计划“仅”像EXPSPACE-complete。
当然,在更加通用/富有表现力的FOL中表达的EXPSPACE完整问题仍然可以在EXPSPACE中解决,如果您了解它。但是,想出一个只使用指数空间解决EXPSPACE中所有问题的通用FOL求解器有多难?
在实践方面,使用专为建模规划问题而设计的语言来表达规划问题比在FOL中写下来更方便。
您不想编写C ++而不是Assembler吗?即使您用C ++编写的所有内容都可以用汇编程序表示。
答案 1 :(得分:1)
ziggystar 未明确提及的另一点是 - 除了使用PDDL比FOL更方便之外 - 计划问题的语义与FOL完全不同。
虽然汇编程序和C ++都用于描述计算机程序(汇编程序比C ++更通用,因为后者被翻译成汇编程序),但FOL与PDDL的用途完全不同(而FOL,作为 ziggystar 指出,比PDDL更通用。
FOL旨在表达对象之间的陈述,命题和关系,如(引用 ziggystar 的例子来自类似问题Reason for the development of First Order Logic and PDDL)“所有人都可以思考”。通常,当使用FOL时,我们只关心公式是否成立(或者,例如,一个命题是否来自另一个)。最突出的例子是以下一组命题(在FOL中形式化):( 1)“所有人都是凡人”。 (2)“苏格拉底是一个男人。”当使用FOL对此进行形式化时,我们可以询问(3)“苏格拉底是凡人”是否遵循“(1)和(2)”。任何完整的FOL推理都会回答这个问题。
规划(以及因此依赖于PDDL描述的问题)是关于是否存在一系列动作(即,实例化的PDDL运算符模式),其将初始状态(世界先前执行动作的描述)转换为一些理想的目标状态。因此,计划是关于动作的执行和推理是否存在这样的序列。这基本上与FOL无关。
由于FOL比大多数标准规划形式(例如“PDDL的风格”)更具表现力,因此人们也可以使用FOL来描述规划问题。然而,由于规划和FOL语义的完全不同,人们不得不“误用”FOL来表达规划问题 - 而实际上这是一个复杂的研究问题。如果您有兴趣:谷歌“计划为SAT”。