跳转至

Logic

[!PREREQUISITE]

Quick Review

  • DPLL(Davis-Putnam-Logemann-Loveland 算法)
    • DPLL 算法是一种深度优先回溯搜索算法,旨在解决可满足性问题(SAT,即给定一个逻辑句子,找到所有符号的有效赋值。该算法通过三种技巧减少过度回溯:早期终止、纯符号启发式和单元子句启发式。DPLL 处理的输入是合取范式(CNF,并通过不断赋值符号的真值,直到找到满足模型或无法赋值为止。
  • Forward Chaining(前向推理)
    • 前向推理是一种推理方法,常用于解决可满足性问题(SAT。它通过从已知的事实出发,逐步应用规则来推导新的事实,直到达到目标或无法再推导出新事实为止。在 SAT 中,前向推理可以用于从已知的逻辑句子中推导出新的赋值,从而帮助确定是否存在满足条件的模型。
  • First-order Logic(第一阶逻辑,FOL)
    • 第一阶逻辑是一种形式逻辑系统,使用量词和变量来表达关于对象的命题。与命题逻辑不同,第一阶逻辑允许使用量词(如“对于所有”和“存在”)来处理更复杂的逻辑关系。

explain

实话说,project 3 相比于考察逻辑运算,个人感觉考察 python 更加多;因为在讲解实验时,文档中给出了很多伪代码;哪怕我们不知道它在干什么,纯靠 python 编程实现它似乎不是什么难事。

同时基于此时其他比较需要花费时间的工作,我更多只是结合 project 3 pavlosdais 的代码自己跑了一遍作罢。该代码基于 cs188 sp22 project 完成,部分函数名和一些些细节与 sp24 的略有不同,但本身讲的比较详细了,仔细读就能找到不同之处。

  • 对于 Q1-Q5 看的比较仔细,也赞叹于将逻辑表达式“对象化”的操作;
  • 对于 Q6-Q8 看的比较粗略;虽然后三问大同小异,还是佩服 pavlosdais 能够很好地将实验文档中的伪代码实例化。

pass

我自己略作修改后的代码也会放在 solution 文件夹中,已 运行全部通过

评论