從唐伯虎點秋香看神奇的人工智慧Prolog程式設計

2023-01-15 05:27:03 字數 2535 閱讀 2934

作者:wusam

【按】根據學校的要求,給幾位資訊化專業的博士上《資訊科學原理》,乙個二個做資訊系統的,心比天高,沒把這門課當回事,課堂上也不注意聽。我是過來人,當然可以理解。講到人工智慧的時候,為了便於自動推理示範,給幾位高足講prolog。

在他們眼裡,平時都是使慣了c#、j**a或c++的,**把嬰兒語言一樣的prolog放在眼裡?根本不注意聽。第一次讓他們震驚的是,叫他們回去自己用其他語言解決一道我兒子奧賽時的路徑選擇題目,他們第一次感覺到其他語言不太好使,眼看著我幾分鐘之內在課堂上就搞定了,驚得合不攏嘴。

然後,我布置了一題唐伯虎點秋香的作業,徹底傻了,當時我的要求是隨便你用什麼語言,能做出來就行。下面的就是我布置的作業。期末了,我放到網上,供通道中人參考。

唐寅日盼夜盼點秋香的日子終於來了,他已做好了該做的功課,但是華府的情報也是不那麼容易收集的。今天點秋香時,將有五位姑娘從一字排開的五幅不同帷幕中伸出乙隻持花的手來,五位姑娘有醜的、有老的,選中誰就是誰,不能反悔。他花了重金只得到以下的資訊:

1. 名叫四季香(sijixiang)的丫頭將出現在紅色(red)帷幕裡

2. 名叫夏香(xiaxiang)的丫頭美甲影象為龍(dragon)

3. 名**香(chunxiang)的丫頭位於左邊第一幅帷幕裡

4. 佩戴**手鐲(gold)的丫頭會出現在黃色(yellow)帷幕裡

5. 佩戴白金手鐲(platinum)的丫頭緊挨著狐狸(fox)美甲的丫頭

6. 名**香(chunxiang)的丫頭在藍色(blue)帷幕旁邊

7. 美甲影象為鳳(phoenix)的丫頭佩戴景泰藍(jingtailan)的手鐲

8. 佩戴**(silver)手鐲的丫頭手持玫瑰(rose)

9. 名叫冬香(dongxiang)的丫頭手持康乃馨(carnation)

10. 秋香(qiuxiang)將佩戴玉(jade)手鐲

11. 佩戴**(gold)手鐲的丫頭挨著美甲影象為馬(horse)的丫頭

12. 出現在綠色(green)帷幕裡的丫頭手持鬱金香(tulip)

13. 綠帷幕在象牙白(ivory)帷幕的右邊

14. 手持荷花(lotus)的丫頭將出現在中間

15. 有乙個丫頭手持月季花(monthlyrose)

16. 有乙個丫頭美甲影象為大象(elephant)

你是唐伯虎的話,能將秋香的完整資訊推導出來嗎?

解:唐伯虎將以上資訊用**列出來

①首先屬性引數的相關資訊,h(c,n,p,y,f),其中c代表帷幕顏色,丫頭姓名n,指甲p,手鐲y,花f,從以上資料讀取丫頭各自的資訊

color(h(c,n,p,y,f),c).

name(h(c,n,p,y,f),n).

pet(h(c,n,p,y,f),p).

yan(h(c,n,p,y,f),y).

flower(h(c,n,p,y,f),f).

從左到右的順序,由列表元素的順序確定

②用謂詞定義位置關係左left、右right、中間middle、左邊第一first:

left(a,b,[a,b,c,d,e]).

left(b,c,[a,b,c,d,e]).

left(c,d,[a,b,c,d,e]).

left(d,e,[a,b,c,d,e]).

right(b,a,[a,b,c,d,e]).

right(c,b,[a,b,c,d,e]).

right(d,c,[a,b,c,d,e]).

right(e,d,[a,b,c,d,e]).

middle(x,[_,_,x,_,_]).

first(a,[a|x]).

使用這些方位謂詞,可以判定、描述條件中的位置關係

③使用「選擇再校驗」的方法找出答案,那麼靠什麼來選擇呢?這裡將使用member/2謂詞:

member(a,[a|x]).

member(a,[b|x]) :- member(a,x).

④求解:先把程式列出來,然後再來講解。解題的謂詞為solve/3,第乙個引數x返回帷幕列表,第二引數tt返回養美甲為大象的丫頭資訊,第三個引數ttt返回喜歡喝手持月季花的丫頭的資訊。

⑤大多數的prolog編譯平台對漢字的支援很不友好,所以語句謂詞裡盡量避免用漢字。

輸入以上**後,在prolog的平台裡執行,輸入solve(x,tt,ttt),得到的結果為:

x = [h(yellow, chunxiang, fox, gold, monthlyrose), h(blue, dongxiang, horse, platinum, carnation), h(red, sijixiang, phoenix, jingtailan, lotus), h(ivory, xiaxiang, dragon, silver, rose), h(green, qiuxiang, elephant, jade, tulip)],

tt = h(green, qiuxiang, elephant, jade, tulip),

ttt = h(yellow, chunxiang, fox, gold, monthlyrose)

秋香就是那位將出現在綠色帷幕裡、美甲為大象,戴玉手鐲,手持鬱金香的美女!

秋學期晨會教育點

第二週晨會主題 教師禮讚 一年級 星期一 集體晨會 教師禮讚 星期二 教師節的由來 星期三 說說我心中的好老師 星期四 我為老師做點事 星期五 一周常規 班務點評,評選張貼 成長之星 二年級 星期一 集體晨會 教師禮讚 星期二 教師節的由來 星期三 說說我心中的好老師 星期四 我為老師做點事 星期五...

作文話題從學生實際生活中採點

二 大多數教高三的英語教師都曾經或者正在使用 猜題 的方法,即教師根據以往的高考試題以及教學大綱,給學生一系列的範圍並且相應的給出許多寫作模板和范文,讓考生在考前將之熟記於心,當考試遇到接近的形式或者題目時,考生就可以一一套用,保證在考場上的穩定發揮。可是,現在高考英語作文命題出現的新趨勢,使得這種...

《從鋁土礦到鋁合金》知識點總結學案

一 從鋁土礦中提取鋁 一 氧化鋁 al2o3 氧化鋁是一種高沸點 2980 高熔點 2054 高硬度的白色化合物,常用作耐火材料。剛玉的主要成分是 氧化鋁,硬度僅次於金剛石。1.與鹼的反應 與強鹼naoh al2o3 2naoh 2naalo2 h2o 2.與強酸的反應 h2so4 al2o3 3h...