-
邏輯編程語言
鎖定
Prolog(Programming in logic)是一種面向演繹推理的邏輯型程序設計語言,最早於1972年由柯爾麥倫納(Colmeraner)及其研究小組在法國馬賽大學提出。
[1]
高濟,何欽銘著,人工智能基礎 (第二版),高等教育出版社,2008.10,第67頁
- 中文名
- 邏輯編程語言
- 外文名
- Programming in logic
- 簡 稱
- Prolog
- 定 義
- 面向演繹推理的邏輯型語言
- 提出時間
- 1972年
- 提出者
- 柯爾麥倫納及其研究小組
- 應用學科
- 計算機原理
邏輯編程語言關於邏輯編程語言
Prolog以處理一階謂詞演算為背景,由於其簡單的文法、豐富的表達力和獨特的非過程語言的特點,很適合用來表示人類的思維和推理規則,從而一問世就贏得了人工智能研究和應用開發者的廣泛興趣。尤其在西歐和日本,Prolog語言已推廣應用於許多應用領域,如關係數據庫、數理邏輯、抽象問題求解、自然語言理解和專家系統等。日本還在其於1979年提出的第五代計算機研究計劃中把Prolog列為核心語言。
邏輯編程語言Prolog語言的基本概念
Prolog語言的基本成分是Horn子句,表示為如下形式:
Prolog語言中,Horn子句以3種形式去分別表示逆向演繹推理中問題求解描述的3個部分:目標、規則和事實。
邏輯編程語言目標
表示為只有左部的Horn子句:
即在Prolog語言中,目標公式只限於表示為原子公式的合取,而不能是任意的文字與或形。
邏輯編程語言規則
表示為典型的Horn子句:
這就是逆向演繹推理所使用的規範化B規則,只是規則左部限定為原子公式的合取,而非任意文字與或形。
邏輯編程語言事實
事實表示為事實元素的集合,每個事實元素表示為只有右部的Horn子句,即單一原子公式P。事實元素間隱含合取關係。
由於目標和規則的左部都限定為原子公式的合取,而這些原子公式又可激活多條規則(這些規則間隱含或關係)。所以,Prolog演繹推理過程建立的與或圖具有與、或關係呈現逐層交替的局面。隨着與或圖的向下擴展,最終會形成(搜索到)一致解圖,從而演繹推理成功;否則推理失敗。
把目標中包含的各原子公式視為子目標,每當由子目標激活的規則插入與或圖時,規則左部的各原子公式又成為新的子目標,再用於激活新的規則;如此,隨着規則的激活和新子目標的產生,與或圖逐步擴展,直到子目標直接與事實元素(原子公式)匹配為止。
[1]
邏輯編程語言特點
Prolog語言的語法結構相當簡單,但描述能力很強。例如,當事實和規則描述的是某一學科公理。那麼問題就是待證的命題;當事實和規則描述的是某些數據和關係,那麼問題就是數據查詢語句;當事實和規則描述的是某些狀態變化規律,那麼問題就是目標狀態。因此,Prolog語言是一種智能型程序設計語言。
Prolog程序沒有特定的運行順序,程序運行順序完全按照數理邏輯推導(消解法)的方式進行.而不是由編程序的人決定。Prolog是一種描述型語言,用特定的方法描述一個問題,然後由計算機自動找到這個問題的答案。舉個極端的例子:當建立好事實和規則後,只需要把某個問題告訴它,它就會自動查找答案。
Prolog程序中沒有if、case、for這樣的控制流程語句。通常情況下,程序員不需要了解程序的運行過程,只需要注重程序的描述是否全面。不過Prolog也提供了一些控制程序流程的方法,這些方法和其他語言中的方法有很大區別。
[2]