2016-08-15 77 views
-1

我正在学习人工智能考试,并努力了解如何回答关于谓词的某些问题。尤其是这两个问题是:Prolog预测考试题

  1. 定义其行为如下谓语 -

    ?- stage_name(billie, Name). 
    
    Name = rose 
    
    yes 
    
    ?- stage_name(jenna,Name). 
    
    Name = clara 
    
    yes 
    
  2. 写断言,它有两个参数,如果两个演员都是在同一个节目是真实的。因此

    ?-same_show(david,clara). 
    

    是真实的,而

    ?-same_continent(elisabeth,skippy). 
    

我真的不明白,我怎么会回答这些问题,而且我发现很少的Prolog信息线上。我希望得到一些帮助。格式化的道歉。

+0

我没有得到same_show和same_continent之间的连接。只有另一个不是? – Paddre

+1

很少有Prolog信息在线?你究竟在寻找什么?有[教程](https://www.google.com/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&q=learn%20prolog%20now&oq=learn%20prolog%20now&aqs=chrome..69i57j0l5.2135j0j7 ),[99序言问题,答案](http://www.ic.unicamp.br/~meidanis/courses/mc336/2009s2/prolog/problemas/)等。 – lurker

+2

您展示的要求都可以满足通过宣布三个事实:'stage_name(billie,rose).','stage_name(jenna,clara).'和'same_show(david,clara).'。没有任何有关谓词要求的附加信息,就像那样简单。 – lurker

回答

1

1:

stage_name(billie,rose). 
stage_name(jenna,Name) :- Name=clara. 

说明:

给定查询,Prolog的查找适当的谓词根据输入参数的名称和 “执行” 它。如果未给出输出参数,则结果为true/false。在这种情况下,有一个(Name)可以从领先大写字母中看到。请注意,有两种可能的方法来实现这一点。前者可能是最常见的(这种形式的谓词被称为“事实”,而下面的谓词被称为“规则”)。

2:

正如我在评论中提到的,我真的不明白两个给定的谓词之间的连接。此外,它的感觉就像有东西丢失,如事实确定哪些人是在其上显示...

假设这些事实都不见了,我会写出如下Prolog程序:

onShow(david, s1). 
onShow(clara, s1). 
onShow(bernie, s2). 

same_show(P1, P2) :- onShow(P1,X), onShow(P2,X). 

说明:

仅当P1P2访问相同节目X时,谓词才成立。

提示:

  • A “逗号” 代表逻辑AND运算符。具有相同名称和参数计数的不同规则表示逻辑或。编辑:正如鲍里斯在评论中提到的,这不完全正确。这种联系只是帮助我理解“逻辑谓词”和“序言谓词”之间的关系。
  • 访问SWISH来测试您的Prolog程序。
+2

为什么'stage_name(billie,Name): - Name = rose.'而不是简单地'stage_name(billie,rose).'? – 2016-08-15 16:11:04

+0

“逗号”不是逻辑AND运算符,它是Prolog结合。这不完全相同。但是关于OR的部分是非常错误的。 Prolog中的分离与逻辑OR很不相同。 – 2016-08-15 16:13:12

+0

是的,你是对的。当我正要学习Prolog时,这只是帮助我理解Prolog的协会。我会重新思考这个部分 – Paddre