Prolog谓词试题
我正在为一个人工智能考试而学习,努力理解如何回答一些关于谓词的问题。这两个问题特别是:Prolog谓词试题,prolog,Prolog,我正在为一个人工智能考试而学习,努力理解如何回答一些关于谓词的问题。这两个问题特别是: 定义一个行为如下的谓词- ?- stage_name(billie, Name). Name = rose yes ?- stage_name(jenna,Name). Name = clara yes 写一个包含两个参数的谓词,如果两个演员在同一个节目中,该谓词为true。因此 ?-same_show(david,clara). 是真的,但是 ?-same_continent(elisabe
?- stage_name(billie, Name).
Name = rose
yes
?- stage_name(jenna,Name).
Name = clara
yes
?-same_show(david,clara).
是真的,但是
?-same_continent(elisabeth,skippy).
不是stage_name(billie,rose).
stage_name(jenna,Name) :- Name=clara.
说明:
给定一个查询,Prolog根据输入参数和名称查找合适的谓词,并“执行”它。如果未给出输出参数,则结果为true
/false
。在本例中,有一个(名称
)可以从前导大写字母中看到。请注意,有两种可能的实现方法。前者可能是最常见的(这种形式的谓词称为“事实”,而低级谓词称为“规则”)
2:
正如我在评论中提到的,我并不真正理解两个给定谓词之间的联系。同时,它也让人感觉缺少了一些东西,比如决定哪个人在哪个节目中的事实
假设缺少这些事实,我将按如下方式编写Prolog程序:
onShow(david, s1).
onShow(clara, s1).
onShow(bernie, s2).
same_show(P1, P2) :- onShow(P1,X), onShow(P2,X).
说明:
只有当P1
和P2
访问同一节目X
时,谓词才为真
提示:
- “逗号”表示逻辑AND运算符。具有相同名称和参数计数的不同规则表示逻辑或编辑:正如Boris在评论中提到的,这并不完全正确。这种关联只是帮助我理解了“逻辑谓词”和“Prolog谓词”之间的联系
- 访问以测试Prolog程序
stage\u name(billie,rose)。
,stage\u name(jenna,clara)。
和相同的show(david,clara)。
。没有任何关于谓词要求的附加信息,就这么简单。为什么stage\u name(billie,name):-name=rose.
而不是简单的stage\u name(billie,rose)。
“逗号”不是逻辑and运算符,它是Prolog连词。不太一样。但是关于手术室的部分是非常错误的。Prolog中的析取与逻辑OR非常不同。是的,你是对的。这正是在我即将学习序言时帮助我理解它的联想。我将重新思考,第二部分可能更容易考虑合取和析取对Prolog程序的搜索树的影响(提示:合取是拱门,析取是分支)。