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
    
  • 写一个包含两个参数的谓词,如果两个演员在同一个节目中,该谓词为true。因此

    ?-same_show(david,clara).
    
    是真的,但是

    ?-same_continent(elisabeth,skippy).
    
    不是

  • 我真的不明白我将如何回答这些问题,我在网上发现的序言信息很少。我希望能得到一些帮助。对格式设置表示歉意。

    1:

    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程序的搜索树的影响(提示:合取是拱门,析取是分支)。