機器智慧型實驗二 prolog程式設計實現一階邏輯推理

2021-09-20 15:25:59 字數 2733 閱讀 4131

學會使用prolog語言;

用prolog語言鞏固一階邏輯知識;

能夠使用prolog語言實現一階邏輯的證明;

硬體:計算機

軟體:作業系統:windows 

應用軟體:prolog

熟悉prolog語言的使用並實現對於一階邏輯推理的證明

實驗步驟:

1.構建乙個pl檔案,首先建立乙個記事本,寫入實驗內容之後儲存為pl格式就可以了,第乙個小實驗分為四個部分

①p(b).

p(a):-p(b).

p(a):-p(c).

這裡需要注意的是每一句後面都要有乙個英文句號表示結束,檔案中的內容都是陳述事實,比如檔案中的表示p(b)為真,p(a):-p(b).表示如果右邊為真,則左邊為真

執行的時候右鍵pl檔案,選擇到swipl-win.exe,之後輸入要查詢的內容就可以了,比如我們這裡要查詢p(a)

用逗號連線條件,連線的雙方同時成立才能推出為真

分號是或的意思,滿足其一就可以為真

2.根據下面的語句猜測結果,再驗證

|?- p(x) = p(a).

|?- p(x, f(y)) = p(a, z).

|?- p(x, a, y) = p(b, y, z).

|?- p(x, f(y, a), y) = p(f(a, b), v, z).

|?- p(f(x, g(y)), y) = p(f(g(a), z), b)

①例項化,x=a

第二個等號兩邊翻過來了,不知道有沒有影響,這裡應該是表示相等的關係,所以順序應該是可以接受的

第三個出了一點問題,a = y,y = z,所以應該是a = z

3.為下列集合構造prolog檢測器

這裡用到了一些比較符和函式,首先如果我們判斷乙個數是非負數的話,就保證這個數大於等於0就可以,prolog可以使用》=這樣的符號來進行判斷

奇數判斷可以使用取餘mod來實現,由於可能有正奇數和負奇數,所以對2取餘之後大於零或者小於零就可以

第三部分使用成員函式member,這裡面有兩個引數,第乙個是待判斷是否在其中的數,第二個是乙個陣列物件

4.已知兄弟sib(x, y)的定義如下

sib(x, y):- p(z, x), p(z, y), x \== y.

4.1:定義堂兄弟co(x, y);

4.2;

定義二代堂兄弟sco(x, y),x,y的父母是堂兄弟。

定義輩分結構如圖:

按照圖中定義,johnson和paul是堂兄弟關係,thomas和james是第二級的堂兄弟關係

windows程式設計實驗二

1.在c 中,經常會使用 include 或者 include 來包含某些標頭檔案,這樣做減少了 的重複冗雜,是非常方便的,但是,不了解其中的奧秘的話,也是非常容易出錯的。所以我們就需要了解兩者不同呼叫的相同點和區別了。相同 這種使用方法是在編譯前將標頭檔案包含到.cpp檔案裡面,區別 includ...

實驗二 基本程式設計

x y z v均為字變數,在x y z v字單元中存放是16位帶符號數。試編寫組合語言程式完成以下功能 1 計算表示式值 v x y z 720 x 2 將上述表示式運算結果整數放在sum1單元,餘數放在sum2單元。stack segment stack dw 512 dup stack ends...

實驗二 基本程式設計

3 在記憶體score緩衝區中存放有100個學生的成績資料,為無符號位元組數。設 計程式完成如下功能 根據使用者輸入的乙個2位十進位制數,作為查詢物件,在該陣列中查詢,若找到則顯示 y 若沒找到則顯示 n stack segment stack dw 512 dup stack ends data ...