UPDATE2,哈斯克尔

时间:2011-02-19 17:56:04

标签: haskell

  1. Atom:Atom是用于描述原子句或命题的数据类型。这些基本上都是 用字符串表示。
  2. 文字:文字对应原子的原子或否定。在这个实现中每个文字 表示为一对由布尔值组成,表示Atom的极性,以及 实际的原子。因此,字面'P'表示为(True,“P”),而其否定'-P'表示为 (错误, “P”)。 2
  3. 条款:条款是文字的分离,例如PvQvRv-S。在此实现中 表示为文字列表。所以最后一个子句是[(True,“P”),(True,“Q”), (真, “R”),(假, “S”)。
  4. 公式:公式是子句的结合,例如(P vQ)^(RvP v-Q)^( - P v-R)。 这是命题公式的CNF形式。在此实现中,这表示为列表 条款,因此它是文字列表的列表。我们上面的例子公式是[[(True,“P”), (真,“Q”)],[(真,“R”),(真,“P”),(假,“Q”)],[(假,“P”), (假, “P”)]]。
  5. 模型:(部分)模型是(部分)将真值分配给公式中的原子。在这 实现这是(Atom,Bool)对的列表,即。原子与他们的任务。所以在 上面的类型为Formula的例子,如果我们将Q赋值为true而将Q赋给Q则那么我们的模型就是 [(“P”,True),(“Q”,False)]
  6. 好的,所以我写了并更新了函数

           update :: Node -> [Node] 
    

    它接收一个Node并返回一个节点列表 这是因为在一种情况下将True分配给未分配的原子而在另一种情况下分配为False(即一种情况) 分裂)。返回的列表有两个节点作为元素。一个节点包含公式 将atom指定为True,并使用此赋值更新模型,另一个包含 原子指定为False并更新模型以显示此公式。未分配的清单 每个节点的原子也相应地更新。这个功能使用了 分配功能来进行分配。它还使用chooseAtom函数 选择要分配的文字。

        update :: Node -> [Node]
        update (formula, (atoms, model)) = [(assign (chooseAtom atoms, True) formula, (remove (chooseAtom atoms) atoms, ((chooseAtom atoms,True)) `insert` model)) , (assign (chooseAtom atoms, False) formula, (remove (chooseAtom atoms) atoms, ((chooseAtom atoms, False) `insert` model)) )] 
    

    现在我必须做同样的事情,但这次我必须实现变量选择启发式。这应该替换chooseAtom而我应该用它来编写函数update2

        type Atom = String
        type Literal = (Bool,Atom)
        type Clause = [Literal]  
        type Formula = [Clause]
        type Model = [(Atom, Bool)]
        type Node = (Formula, ([Atom], Model))
       update2 :: Node -> [Node]
       update2 = undefined
    

    所以我的问题是如何创建一个heurestic并将其实现到update2函数中,该函数与更新函数的行为相同?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,你就会问如何在命题逻辑的解析系统中实现其他选择规则。据推测,你正在构建一个通过为文字指定真值而得到的公式树,直到(a)已经尝试了所有可能的文字赋值组合或(b)box(空子句)已经派生出来。

假设函数 chooseAtom 实现了一个选择规则,你可以通过给出来对任意选择规则 r 上的函数 update 进行参数化。更新一个附加参数,并用 r 替换 update chooseAtom 的出现次数。由于 chooseAtom 实现了一个选择规则,因此将该选择规则传递给参数 r 会得到所需的结果。如果您提供 chooseAtom 的实现以及要替换它的函数,则可以更轻松地验证您的实现是否正确。

希望这很有帮助。但是,目前还不清楚究竟是在问什么。特别是,你要求的是一个“变量选择规则”。但是,看起来你正在为命题逻辑实现一个解决方案系统。通常,选择规则和变量与谓词逻辑的分辨率相关联。