2

我指的这本书的部分在这里, http://cs.union.edu/~striegnk/learn-prolog-now/html/node4.html

listensToMusic(mia).
happy(yolanda).
playsAirGuitar(mia)  :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda):- happy(yolanda).

happy谓词是使用单个子句(事实)定义的。和 谓词分别使用两个子句定义(在这两种情况下,两个规则)listensToMusicplaysAirGuitar

我理解它说happy谓词是使用单个子句(事实)定义的第一部分。但我不明白它说的下一部分, listensToMusic 谓词playsAirGuitar每个都使用两个子句定义。

谢谢

4

1 回答 1

1

我认为这本书在哪些条款是事实规则方面有点不一致或令人困惑:

知识库中包含的事实和规则称为子句。因此 KB2 包含五个条款,即三个规则和两个事实。 另一种看待 KB2 的方式是说它由三个谓词(或过程)组成。三个谓词是:

listensToMusic
happy
playsAirGuitar

快乐谓词是使用单个子句(事实)定义的。listensToMusic 和 playAirGuitar 谓词分别使用两个子句定义(在这两种情况下,两个规则)。

我认为括号“ (在这两种情况下,两个规则) ”只是增加了混乱 -listensToMusic(mia).是一个空规则,即一个事实。

文本可能试图在将 Prolog 知识库作为一个整体(一组子句)和一组谓词 - 视为谓词时建立区别,happy只有事实子句,而同时listensToMusic具有事实和规则子句。

如果你得到它listensToMusic/1是用两个子句定义的(一个空规则,一个非空):

listensToMusic(mia).
listensToMusic(yolanda):- happy(yolanda).

...并playsAirGuitar/1用两个子句(两个非空规则)定义:

playsAirGuitar(mia)  :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).

...我想你会没事的。不用担心!

于 2012-09-23T06:16:17.693 回答