程序员入行人工智能需要懂逻辑和表示

尼尔斯·尼尔森(Nils Nilsson)一直是AI逻辑学派的主要支持者,他发表了许多文章,并与Michael Genesereth共同发表了一篇名为《人工智能逻辑基础》的文章。

 

尼尔斯·尼尔森(Nils Nilsson)

归纳谜题是一种逻辑谜题,这种逻辑谜题需要通过识别以及消除一系列可能的明显情况来求解。众所周知的“国王智者”(King’s Wise Men)就是这样的一个谜题。

国王智者的谜题(见图1.1)讲的是国王寻找新智者的故事。在预先筛选之后,3名最聪明的申请者前往宫廷。他们面对面地坐着,然后被蒙上眼睛,每个人头上都戴着一顶蓝色或白色的帽子。现在,国王同时揭开他们的眼罩,然后告诉他们:“你们每个人都有一顶蓝色或白色的帽子,你们中间至少有一顶蓝色的帽子。谁能够首先猜到自己头上帽子的颜色,请举起手,他将是我的下一个智者。”

 

图1.1 国王智者的谜题。每个人都必须猜测自己帽子的颜色

 

在通过机器解决这个谜题之前,我们必须使用一个合适的表示。由于谓词逻辑允许每个状态可以由不同的表达式表示,因此我们将用谓词逻辑表示这个谜题。例如,我们可以让谓词WM_1()表示智者1有某种颜色的帽子(待指定)。接下来,我们要表示智者1有一顶蓝色帽子,智者2和智者3都戴着1顶白色的帽子的情况,这表示为:

WM_1 (B)∧WM_2 (W)∧WM_3 (W)(1)

回顾一下:符号“∧”是合取算符,表示术语“与”;符号“∨”是析取算符,表示术语“或”。

如果这个谜题的表示式有用,那么这个表示式必须有可能做出推断,也就是说,必须得出有助于解决谜题的结论。例如,扫描表达式(1),你应该能够得出“智者1会举手,并宣布他的帽子是蓝色的”这样的结论。他可以正确地猜出自己戴的是蓝帽子,因为国王承诺3顶帽子中至少有一顶必须是蓝色的,智者1注意到其他两个智者都戴着白帽子,因此他的帽子必须是蓝色的。查阅表1.1,你应该能够推导出其他两种只有一顶蓝帽子情况的结果,即表达式(2)和(3)。

表1.1 国王的智者问题中7种不同的情况

(WM_1(B) ∧WM_2(W) ∧WM_3(W))(1)

(WM_1(W) ∧WM_2(B) ∧WM_3(W))(2)

(WM_1(W) ∧WM_2(W) ∧WM_3(B))(3)

(WM_1(B) ∧WM_2(B) ∧WM_3(W))(4)

(WM_1(W) ∧WM_2(B) ∧WM_3(B))(5)

(WM_1(B) ∧WM_2(W) ∧WM_3(B))(6)

(WM_1(B) ∧WM_2(B) ∧WM_3(B))(7)

由于国王已承诺至少有一顶帽子是蓝色的,因此情况不包括表示所有 3 个智者都戴着白帽子的表达式WM_1(W)∧WM_2(W)∧WM_3(W)。

两顶蓝色帽子的情况更微妙。我们思考一下表5.1中表达式(4)描述的情况。把自己想象成戴着蓝色帽子的智者如智者1。你的理由是,如果你的帽子是白色的,那么智者2会观察到两顶白色的帽子,因此会宣布自己的帽子是蓝色的。智者2没有做出这样的结论,因此你可以正确地得出结论:你戴的帽子是蓝色的。其他涉及两顶蓝色帽子的例子以类似的方式处理。其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这里我要推荐c++交流群六四八,七七八,八四零,不管你是小白还是大牛欢迎入住,大家一起交流成长,里面各种学习资料免费领取还有专业程序员解疑答惑。

最困难的情况(实际发生的情况)是所有3名智者都戴着蓝色帽子,如表达式(7)所示。我们已经看到了,有一顶或两顶蓝色帽子的情况可以立刻得出结论。但是,在3顶都是蓝色帽子的场景中,人们告知智者,已经过去好长的时间了。因此,一个智者(最有智慧的人)得出的结论是:上述情况都不适用,所有 3 顶帽子(特别是他自己的帽子)都是蓝色的。在本章的后面,我们将描述允许从观察到的事实中得出结论的各种推理规则。现在,这足够让你领会如何用逻辑来表示知识了。

posted @ 2019-03-22 22:08  程序员小伙伴  阅读(211)  评论(0编辑  收藏  举报