FOL创建规则

2024-09-28 05:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个问题。我试图理解一阶逻辑,因此我找到了以下代码:

# Import libraries
import aima.utils
import aima.logic

# The main entry point for this module
def main():
    # Create an array to hold clauses
    clauses = []

    # Add first-order logic clauses (rules and fact)
    clauses.append(aima.utils.expr("(American(x) & Weapon(y) & Sells(x, y, z) & Hostile(z)) ==> Criminal(x)"))
    clauses.append(aima.utils.expr("Enemy(Nono, America)"))
    clauses.append(aima.utils.expr("Owns(Nono, M1)"))
    clauses.append(aima.utils.expr("Missile(M1)"))
    clauses.append(aima.utils.expr("(Missile(x) & Owns(Nono, x)) ==> Sells(West, x, Nono)"))
    clauses.append(aima.utils.expr("American(West)"))
    clauses.append(aima.utils.expr("Missile(x) ==> Weapon(x)"))

    # Create a first-order logic knowledge base (KB) with clauses
    KB = aima.logic.FolKB(clauses)

    # Add rules and facts with tell
    KB.tell(aima.utils.expr('Enemy(Coco, America)'))
    KB.tell(aima.utils.expr('Enemy(Jojo, America)'))
    KB.tell(aima.utils.expr("Enemy(x, America) ==> Hostile(x)"))

    # Get information from the knowledge base with ask
    hostile = aima.logic.fol_fc_ask(KB, aima.utils.expr('Hostile(x)'))
    criminal = aima.logic.fol_fc_ask(KB, aima.utils.expr('Criminal(x)'))

    # Print answers
    print('Hostile?')
    print(list(hostile))
    print('\nCriminal?')
    print(list(criminal))
    print()
# Tell python to run main method
if __name__ == "__main__": main()

现在我不明白一件事: 我什么时候用这个:clauses.append(aima.utils.expr()什么时候用这个:KB.tell(aima.utils.expr()

这两个都是事实,但我真的不明白为什么你必须以不同的方式设定一些事实。 这里是论坛的链接:https://www.annytab.com/first-order-logic-in-python/?unapproved=2276&moderation-hash=66a786c6e08ac109543a3518a62ea729#comment-2276

请让我知道


Tags: kbmainutilsfirstprintlogicappendexpr
1条回答
网友
1楼 · 发布于 2024-09-28 05:28:25

在我看来,首先在clause数组中创建一个子句列表。然后,您可以使用它初始化知识库KB

使用tell()方法,您可以向知识库中添加更多的表达式/子句

原则上,它们是等效的,因为这两种方法都会将子句添加到知识库中,只有一些在初始化时添加,其他则在初始化后添加

您可能有一个固定的特定设置/域,以及针对不同问题的不同表达式,因此您可以在开始时放入所有常用表达式,并在以后的处理过程中添加其他表达式

相关问题 更多 >

    热门问题