資源描述:
《程序設(shè)計語言課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、人工智能程序設(shè)計語言概述前面幾章,我們介紹了一些運用AI技術(shù)求解問題的一般方法。這些方法可運用于定理證明、自然語言理解、模式識別、專家系統(tǒng)等各個領(lǐng)域。要在計算機上實現(xiàn),就涉及到計算機語言的問題。嚴(yán)格地講,可以使用任何計算機語言來實現(xiàn)這些算法。但是AI的主要課題是非數(shù)值計算的問題求解和知識處理等復(fù)雜問題,主要任務(wù)在于完成推理、規(guī)劃、決策、分析、論證等智能行為,其中包括各種符號處理和表處理等。傳統(tǒng)過程性語言不太適合AI方面的程序設(shè)計AI語言的特點具有回溯功能具有模式匹配功能守護(hù)功能(保護(hù)遞歸、回溯的現(xiàn)場)過程說明功能(解釋推理過程)表達(dá)能力強(尤其對各種符號知識)建立在嚴(yán)格的數(shù)學(xué)系統(tǒng)上(
2、因為AI中的許多推理都有堅實的數(shù)學(xué)基礎(chǔ))表處理功能并行處理或分布處理(提高推理速度,實現(xiàn)時多采用模擬并行處理技術(shù))常用的AI程序設(shè)計語言PrologLispCC++SmalltalkPrologProlog是ProgramminginLogic用邏輯進(jìn)行程序設(shè)計的縮寫第一個Prolog系統(tǒng)是由Colmerauer及其研究小組于1972年在法國馬賽研制成功Prolog是完全基于一階謂詞邏輯基礎(chǔ)上的,它的所有語句和推理都可以用Horn子句歸結(jié)的形式表示,所以它又嚴(yán)格的數(shù)學(xué)基礎(chǔ)Prolog的特點邏輯型語言語句類型簡單,只有三種基本形式:事實、規(guī)則、詢問接近于自然語言,簡潔明了,易寫易讀數(shù)據(jù)和
3、程序結(jié)構(gòu)一致(都由項構(gòu)成,便于將a程序的輸出作為b程序的輸入)能自動進(jìn)行匹配和回溯可大量使用遞歸Prolog的程序結(jié)構(gòu)Prolog程序包括常量段、域段、數(shù)據(jù)庫段、謂詞段、目標(biāo)段和子句段;另外還可以在程序首部設(shè)置編譯指令,在程序中加注釋通常,一個Prolog程序不一定包括所有段,最常用的有子句段、謂詞段、域段。如果需要產(chǎn)生一個可獨立執(zhí)行的程序,還需要有目標(biāo)段/*注釋*/編譯指令constants常量說明Domains域語句Database數(shù)據(jù)庫說明Predicates謂詞語句Goal目標(biāo)語句Clauses子句語句子句段是整個程序的核心,所有的事實和規(guī)則都在子句段列出,例如Clausesl
4、ike(Bill,Cindy).like(Cindy,Bill).like(Bill,dogs).like(A,C):-like(A,B),like(B,C).parent(ZhangYi,ZhangEr).謂詞段Prolog有許多內(nèi)部謂詞,如read,write,makewindow等,對內(nèi)部謂詞不需說明在程序中,若定義了自己要用的外部謂詞,如上例中l(wèi)ike,parent,則必須在謂詞段加以說明,例:Predicateslike(symbol,symbol)parent(symbol,symbol)域段域就相當(dāng)于類型說明,如上例中parent中的兩個參數(shù),應(yīng)該是兩個人名,則下面的程序
5、更好理解Domainsname=symbolPredicatesparent(name,name)通過域,可以說明標(biāo)準(zhǔn)域中沒有定義的數(shù)據(jù)結(jié)構(gòu)Domainsarticles=book(title,author);horse(name)title,author,name=symbolPredicatesown(name,articles)Clausesown(John,book(ABC,Ding)).own(John,horse(blacky)).標(biāo)準(zhǔn)域:integer,char,real,ref,string,symbol目標(biāo)段目標(biāo)段輸入要解決問題的語句也可以省略目標(biāo)段。若省略目標(biāo)段,則
6、在運行時程序會等待用戶輸入一個目標(biāo),然后才能運行,這時稱為外部目標(biāo)若把目標(biāo)寫在目標(biāo)段中,則程序運行時,自動執(zhí)行目標(biāo),直接顯示運行結(jié)果,這種目標(biāo)稱為內(nèi)部目標(biāo)目標(biāo)段的作用有點類似于主程序目標(biāo)段Predicatesrun(char)Clausesrun(X):-write(“first”),readchar(X).run(X):-write(“second”),readchar(X).運行時,會在對話窗口提示輸入一個目標(biāo),若輸入目標(biāo)run(X).則輸出first,然后按一個鍵接著輸出second,再按一個鍵,就結(jié)束了外部目標(biāo)運行時,Prolog尋找所有解目標(biāo)段Predicatesrun(ch
7、ar)Clausesrun(X):-write(“first”),readchar(X).run(X):-write(“second”),readchar(X).Goalrun(X).運行時,直接顯示運行結(jié)果,輸出first,然后按一個鍵,就結(jié)束了注意:在有內(nèi)部目標(biāo)時,Prolog只尋找第一個解程序執(zhí)行和匹配法則Prolog的程序執(zhí)行過程就是不斷地匹配規(guī)則,在匹配過程中對變量實例化,其實就是謂詞歸結(jié)推理在推理過程中,使用的是“試探-返回-再試”