2016-08-15 78 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