第二部分:第5章 Prolog基础 5.2 Prolog推理机 ●在对话框窗口的空白行上,键入一个目标,不带前缀“?-〃。例如, 键入如图5.3所示的查询代码。 grandFather(, Y)- 图5.3键入目标 2004.11.3 A|程序设计
2004.11.3 AI程序设计 11 第二部分:第5章 Prolog基础 5.2 Prolog推理机 ⚫ 在对话框窗口的空白行上,键入一个目标,不带前缀“?-”。例如, 键入如图5.3所示的查询代码。 图5.3 键入目标
第二部分:第5章 Prolog基础 5.2 Prolog推理机 ●当插字符号位于行尾时,按下键盘上的输入键。PIE现在将把从该行 的开头到插字符号之间的文本当作目标来执行。于是,就可以看到 如图5.4所示的结果。 Dialog 口x grandFatherⅥ X= Pam.Y=John 1 Solution 图5.4查询目标对话框 u 2004.11.3 A|程序设计 12
2004.11.3 AI程序设计 12 第二部分:第5章 Prolog基础 5.2 Prolog推理机 ⚫ 当插字符号位于行尾时,按下键盘上的输入键。PIE现在将把从该行 的开头到插字符号之间的文本当作目标来执行。于是,就可以看到 如图5.4所示的结果。 图5.4 查询目标对话框
第二部分:第5章 Prolog基础 5.3扩展家庭定理 使用诸如 mother和 grandMother这样的谓词,可以直接扩展家庭定理。读 者应该试着亲自去做,也可以试着添加上更多的人。我们建议读者使用自己 家庭中的人,因为这样易于验证,且可以不考虑添加的这个人是否真正是自 己的祖母。 ●给出谓词 mother和 Father,我们还可以定义双亲( parent)这个谓词。 位母亲是双亲,一位父亲也是双亲,因此我们可以使用两个子句来定义双亲: parent(Person, Parent): -mother( Person, Parent) parent(Person, Parent): -father( Person, Parent) 第一个规则可以解读为:如果 Parent是 Person的 mother,则 Parent是 Person的双亲( parent)。 还可以用分号“;”来定义双亲( parent)关系,分号代表“或(or)”。 2004.11.3 A|程序设计 13
2004.11.3 AI程序设计 13 第二部分:第5章 Prolog基础 5.3 扩展家庭定理 ⚫ 使用诸如mother和grandMother这样的谓词,可以直接扩展家庭定理。读 者应该试着亲自去做,也可以试着添加上更多的人。我们建议读者使用自己 家庭中的人,因为这样易于验证,且可以不考虑添加的这个人是否真正是自 己的祖母。 ⚫ 给出谓词mother和father,我们还可以定义双亲(parent)这个谓词。一 位母亲是双亲,一位父亲也是双亲,因此我们可以使用两个子句来定义双亲: parent(Person, Parent) :- mother(Person, Parent). parent(Person, Parent) :- father(Person, Parent). 第一个规则可以解读为:如果Parent是Person的mother,则Parent是 Person的双亲(parent)。 还可以用分号“ ; ”来定义双亲(parent)关系,分号代表“或(or)
第二部分:第5章 Prolog基础 5.3扩展家庭定理 parent(Person, Parent) mother(Person, Parent) father(Person, Parent) ●这条规则可以解读为:如果 Parent是 Person的 mother或(or) Parent是 Person的 father,则 Parent是 Person的双亲( parent)。 我们强烈建议读者尽可能少用或根本不用这个分号“;”。之所以这样建议, 是基于以下理由: 1)逗号“,”和分号“;”之间在印刷上的差别非常小,但语义上的差别却很 大。分号“;”常常是引起混淆的一个根源,因为它容易被误解为逗号 “,”,特别是当它处于一个长行的末尾时。 2) Visua| Prolog.只允许在最外一层使用分号(PE允许任意层次的嵌套 2004.11.3 A|程序设计 14
2004.11.3 AI程序设计 14 第二部分:第5章 Prolog基础 5.3 扩展家庭定理 parent(Person, Parent) :- mother(Person, Parent); father(Person, Parent). ⚫ 这条规则可以解读为:如果Parent是Person的mother或(or)Parent是 Person的father,则Parent是Person的双亲(parent)。 ⚫ 我们强烈建议读者尽可能少用或根本不用这个分号“;”。之所以这样建议, 是基于以下理由: 1) 逗号“ , ”和分号“ ; ”之间在印刷上的差别非常小,但语义上的差别却很 大。分号“ ; ”常常是引起混淆的一个根源,因为它容易被误解为逗号 “ , ” ,特别是当它处于一个长行的末尾时。 2) Visual Prolog只允许在最外一层使用分号(PIE允许任意层次的嵌套)
第二部分:第5章 Prolog基础 5.4 Prolog是一种编程语 ● Prolog可以作为专家系统来使用,但它本身却是作为一种程序语 言而设计出来的 ●我们遗漏了把Hon子句逻辑变为一种程序设计语言的两个重要因 素 1严格的搜索顺序或程序控制 2副效应 2004.11.3 A|程序设计 15
2004.11.3 AI程序设计 15 第二部分:第5章 Prolog基础 5.4 Prolog是一种编程语言 ⚫ Prolog可以作为专家系统来使用,但它本身却是作为一种程序语 言而设计出来的。 ⚫ 我们遗漏了把Horn子句逻辑变为一种程序设计语言的两个重要因 素: 1)严格的搜索顺序或程序控制 2)副效应