- 相關(guān)推薦
人工智能語(yǔ)言--PROLOG
摘 要 Prolog是人工智能語(yǔ)言的一個(gè)典型代表。本文簡(jiǎn)要闡述了人工智能語(yǔ)言及其特點(diǎn),并通過(guò)實(shí)例介紹了Prolog語(yǔ)言及其基本結構。關(guān)鍵詞 人工智能語(yǔ)言 Prolog在國家高中信息技術(shù)課程新標準的《人工智能初步》選修模塊中,要求學(xué)生通過(guò)學(xué)習,“了解一種人工智能語(yǔ)言的基本數據結構和程序結構,掌握相關(guān)概念,知道人工智能語(yǔ)言的主要特征!醪綄W(xué)會(huì )使用該語(yǔ)言設計程序求解簡(jiǎn)單問(wèn)題,并能夠上機調試、執行相應的程序!笔聦(shí)上,廣大的中小學(xué)信息技術(shù)教師對于Basic、C等過(guò)程式程序設計語(yǔ)言大多比較熟悉。那么,什么是人工智能語(yǔ)言? Prolog有哪些特點(diǎn)?目前常用的軟件版本有哪些?這就是本文準備回答的問(wèn)題。一、什么是人工智能語(yǔ)言人工智能(AI)語(yǔ)言是一類(lèi)適應于人工智能和知識工程領(lǐng)域的、具有符號處理和邏輯推理能力的計算機程序設計語(yǔ)言。能夠用它來(lái)編寫(xiě)程序求解非數值計算、知識處理、推理、規劃、決策等具有智能的各種復雜問(wèn)題。典型的人工智能語(yǔ)言主要有LISP、Prolog、Smalltalk、C 等。一般來(lái)說(shuō),人工智能語(yǔ)言應具備如下特點(diǎn):·具有符號處理能力(即非數值處理能力); ·適合于結構化程序設計,編程容易; ·具有遞歸功能和回溯功能; ·具有人機交互能力; ·適合于推理; ·既有把過(guò)程與說(shuō)明式數據結構混合起來(lái)的能力,又有辨別數據、確定控制的模式匹配機制。 人們可能會(huì )問(wèn),用人工智能語(yǔ)言解決問(wèn)題與傳統的方法有什么區別呢?事實(shí)上,在解決一些復雜的、非結構化的問(wèn)題時(shí),人工智能方法與傳統方法有著(zhù)差別。傳統方法通常把問(wèn)題的全部知識以各種的模型表達在固定程序中,問(wèn)題的求解完全在程序制導下按著(zhù)預先安排好的步驟一步一步(逐條)執行。解決問(wèn)題的思路與馮.諾依曼式計算機結構相吻合。當前大型數據庫法、數學(xué)模型法、統計方法等都是嚴格結構化的方法。對于人工智能技術(shù)要解決的問(wèn)題,往往無(wú)法把全部知識都體現在固定的程序中。通常需要建立一個(gè)知識庫(包含事實(shí)和推理規則),程序根據環(huán)境和所給的輸入信息以及所要解決的問(wèn)題來(lái)決定自己的行動(dòng),所以它是在環(huán)境模式的制導下的推理過(guò)程。這種方法有極大的靈活性、對話(huà)能力、有自我解釋能力和學(xué)習能力。這種方法對解決一些條件和目標不大明確或不完備,(即不能很好地形式化,不好描述)的非結構化問(wèn)題比傳統方法好。它采用用試探法來(lái)解決問(wèn)題。人工智能也尚未發(fā)展到完全能解決這類(lèi)問(wèn)題的全部問(wèn)題。這類(lèi)問(wèn)題是人工智能研究要解決的問(wèn)題。隨之而來(lái)也希望計算機硬件結構也來(lái)一個(gè)革命,突破馮.諾依曼體系結構。二、Prolog語(yǔ)言及其基本結構Prolog是當代最有影響的人工智能語(yǔ)言之一,由于該語(yǔ)言很適合表達人的思維和推理規則,在自然語(yǔ)言理解、機器定理證明、專(zhuān)家系統等方面得到了廣泛的應用,已經(jīng)成為人工智能應用領(lǐng)域的強有力的開(kāi)發(fā)語(yǔ)言,F在的Prolog語(yǔ)言有許多版本,但它們的核心部分都是一樣的。Prolog的基本語(yǔ)句僅有三種,即事實(shí)、規則和目標三種類(lèi)型的語(yǔ)句,且都用謂詞表示,因而程序邏輯性強,文法簡(jiǎn)捷,清晰易懂。另一方面,Prolog是陳述性語(yǔ)言,一旦給它提交必要的事實(shí)和規則之后,Prolog就使用內部的演繹推理機制自動(dòng)求解程序給定的目標,而不需要在程序中列出詳細的求解步驟。1、事實(shí)事實(shí)用來(lái)說(shuō)明一個(gè)問(wèn)題中已知的對象和它們之間的關(guān)系。在Prolog程序中,事實(shí)由謂詞名及用括號括起來(lái)的一個(gè)或幾個(gè)對象組成。謂詞和對象可由用戶(hù)自己定義。例如,謂詞likes(bill,book).是一個(gè)名為like的關(guān)系,表示對象bill和book之間有喜歡的關(guān)系。2、規則規則由幾個(gè)互相有依賴(lài)性的簡(jiǎn)單句(謂詞)組成,用來(lái)描述事實(shí)之間的依賴(lài)關(guān)系。從形式上看,規則由左邊表示結論的后件謂詞和右邊表示條件的前提謂詞組成。例如,規則 bird(X):-animal(X),has(X,feather).表示凡是動(dòng)物并且有羽毛,那么它就是鳥(niǎo)。3、目標(問(wèn)題)把事實(shí)和規則寫(xiě)進(jìn)Prolog程序中后,就可以向Prolog詢(xún)問(wèn)有關(guān)問(wèn)題的答案,詢(xún)問(wèn)的問(wèn)題就是程序運行的目標。目標的結構與事實(shí)或規則相同,可以是一個(gè)簡(jiǎn)單的謂詞,也可以是多個(gè)謂詞的組合。目標分內、外兩種,內部目標寫(xiě)在程序中,外部目標在程序運行時(shí)由用戶(hù)手工鍵入。例如問(wèn)題 ?-student(john).表示“john是學(xué)生嗎?”
三.Prolog程序的簡(jiǎn)單例子以下兩個(gè)例子在Turbo Prolog 2.0環(huán)境下運行通過(guò)。[ 注:一個(gè)Turbo Prolog程序至少包括謂詞段、子句段和目標段三項。目標可以包含在程序中,也可以在程序運行時(shí)給出。]
例1 誰(shuí)是john的朋友?predicates /*謂詞段,對要用的謂詞名和參數進(jìn)行說(shuō)明*/likes(symbol, symbol)friend(symbol, symbol)clauses /*子句段,存放所有的事實(shí)和規則*/likes(bell,sports). /*前4行是事實(shí)*/likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,sports),likes(X,music). /*本行是規則*/當上述事實(shí)與規則輸入計算機后,運行該程序,用戶(hù)就可以進(jìn)行詢(xún)問(wèn),如輸入目標:friend(john,X) 即詢(xún)問(wèn)john的朋友是誰(shuí),,這時(shí)計算機的運行結果為:X=mary (mary是john的朋友)1 Solution (得到了一個(gè)結果)程序運行界面如下圖所示:例2 漢諾塔問(wèn)題:有N個(gè)有孔的盤(pán)子,最初這些盤(pán)子都疊放在柱a上(如圖1),要求將這N個(gè)盤(pán)子借助柱b從柱a移到柱c(如圖2),移動(dòng)時(shí)有以下限制:每次只能移動(dòng)一個(gè)盤(pán)子;大盤(pán)不能放在小盤(pán)上。問(wèn)如何移動(dòng)?
該問(wèn)題可以采用遞歸法思想來(lái)求解,其源程序為:predicates /*謂詞段*/hanoi(integer)move(integer,symbol,symbol,symbol)inform(symbol,symbol).
clauses /*子句段*/hanoi(N):-move(N,a,b,c).move(1,A,_,C):-inform(A,C),!.move(N,A,B,C):-N1=N-1,move(N1,A,C,B),inform(A,C),move(N1,B,A,C).inform(Loc1,Loc2):-nl,write("移動(dòng)1個(gè)盤(pán)子從柱" ,Loc1,"到柱",Loc2).
goal /*目標段,問(wèn)移動(dòng)3個(gè)盤(pán)子的方法*/hanoi(3).
這個(gè)例子的目標包含在程序里面,因此運行時(shí)程序將直接輸出所有結果。程序運行界面如下圖所示:
四、Prolog語(yǔ)言的常用版本Prolog語(yǔ)言最早是由法國馬賽大學(xué)的Colmerauer和他的研究小組于1972年研制成功。早期的Prolog版本都是解釋型的,自1986年美國B(niǎo)orland公司推出編譯型Prolog,即Turbo Prolog以后,Prolog便很快在PC機上流行起來(lái)。后來(lái)又經(jīng)歷了PDC PROLOG、Visual Prolog不同版本的發(fā)展。并行的邏輯語(yǔ)言也于80年代初開(kāi)始研制,其中比較著(zhù)名的有PARLOG、Concurrent PROLOG等。1、Turbo Prolog由美國Prolog開(kāi)發(fā)中心(Prolog Development Center, PDC)1986年開(kāi)發(fā)成功、Borland公司對外發(fā)行,其1.0,2.0,2.1版本取名為T(mén)urbo Prolog,主要在IBM PC系列計算機,MS-DOS環(huán)境下運行。2、PDC Prolog1990年后,PDC推出新的版本,更名為PDC Prolog 3.0,3.2,它把運行環(huán)境擴展到OS/2操作系統,并且向全世界發(fā)行。它的主要特點(diǎn)是:·速度快。編譯及運行速度都很快,產(chǎn)生的代碼非常緊湊!び脩(hù)界面友好。提供了圖形化的集成開(kāi)發(fā)環(huán)境!ぬ峁┝藦娪辛Φ耐獠繑祿䦷煜到y!ぬ峁┝艘粋(gè)用PDC Prolog編寫(xiě)的Prolog解釋起源代碼。用戶(hù)可以用它研究Prolog的內部機制,并創(chuàng )建自己的專(zhuān)用編程語(yǔ)言、推理機、專(zhuān)家系統外殼或程序接口。 ·提供了與其他語(yǔ)言(如C、Pascal、Fortran等)的接口。Prolog和其他語(yǔ)言可以相互調用對方的子程序!ぞ哂袕姶蟮膱D形功能。支持Turbo C、Turbo Pascal同樣的功能。3、Visual PrologVisual Prolog是基于Prolog語(yǔ)言的可視化集成開(kāi)發(fā)環(huán)境,是PDC推出的基于Windows環(huán)境的智能化編程工具。目前,Visual Prolog在美國、西歐、日本、加拿大、澳大利亞等國家和地區十分流行,是國際上研究和開(kāi)發(fā)智能化應用的主流工具之一。Visual Prolog具有模式匹配、遞歸、回溯、對象機制、事實(shí)數據庫和謂詞庫等強大功能。它包含構建大型應用程序所需要的一切特性:圖形開(kāi)發(fā)環(huán)境、編譯器、連接器和調試器,支持模塊化和面向對象程序設計,支持系統級編程、文件操作、字符串處理、位級運算、算術(shù)與邏輯運算,以及與其它編程語(yǔ)言的接口。Visual Prolog包含一個(gè)全部使用Visual Prolog語(yǔ)言寫(xiě)成的有效的開(kāi)發(fā)環(huán)境,包含對話(huà)框、菜單、工具欄等編輯功能。Visual Prolog與SQL數據庫系統、C 開(kāi)發(fā)系統、以及Visual Basic、Delphi或Visual Age等編程語(yǔ)言一樣,也可以用來(lái)輕松地開(kāi)發(fā)各種應用。Visual Prolog軟件的下載地址為:http:/// 。
參考文獻:1. 廉師友 人工智能技術(shù)導論(第二版) 西安電子科技大學(xué)出版社 20022. 陳群秀 《人工智能》(遠程教育研究生課程) http:///tsinghua/rgzn/art2011.htm http:///tsinghua/rgzn/art212.htm3. Visual Prolog語(yǔ)言簡(jiǎn)介 數據采集系統的英文論文及詳盡翻譯
人工智能概述(原創(chuàng ))
【人工智能語(yǔ)言--PROLOG】相關(guān)文章:
人工智能03-21
舞蹈的語(yǔ)言11-19
關(guān)于語(yǔ)言能力觀(guān)對語(yǔ)言測試的影響03-06
論語(yǔ)言能力觀(guān)對語(yǔ)言測試的影響03-19
《茶館》的語(yǔ)言特色03-06