邏輯程式語言

邏輯程式語言

Prolog(Programming in logic)是一種面向演繹推理的邏輯型程式設計語言,最早於1972年由柯爾麥倫納(Colmeraner)及其研究小組在法國馬賽大學提出。

高濟,何欽銘著,人工智慧基礎 (第二版),高等教育出版社,2008.10,第67頁

基本介紹

  • 中文名:邏輯程式語言
  • 外文名:Programming in logic
  • 簡稱:Prolog
  • 定義:面向演繹推理的邏輯型語言
  • 提出時間:1972年
  • 提出者:柯爾麥倫納及其研究小組
  • 套用學科:計算機原理
關於邏輯程式語言,Prolog語言的基本概念,目標,規則,事實,特點,

關於邏輯程式語言

Prolog以處理一階謂詞演算為背景,由於其簡單的文法、豐富的表達力和獨特的非過程語言的特點,很適合用來表示人類的思維和推理規則,從而一問世就贏得了人工智慧研究和套用開發者的廣泛興趣。尤其在西歐和日本,Prolog語言已推廣套用於許多套用領域,如關係資料庫數理邏輯、抽象問題求解、自然語言理解專家系統等。日本還在其於1979年提出的第五代計算機研究計畫中把Prolog列為核心語言。
Prolog實際上就是一種基於逆向規則的演繹推理技術,只不過對規則和目標的表示有嚴格的限制.再加上演繹推理控制機制自身的簡單性,難以適用於複雜的套用域。

Prolog語言的基本概念

Prolog語言的基本成分是Horn子句,表示為如下形式:
p;
Prolog語言中,Horn子句以3種形式去分別表示逆向演繹推理中問題求解描述的3個部分:目標、規則和事實。

目標

表示為只有左部的Horn子句:
即在Prolog語言中,目標公式只限於表示為原子公式的合取,而不能是任意的文字與或形。

規則

表示為典型的Horn子句:
p
這就是逆向演繹推理所使用的規範化B規則,只是規則左部限定為原子公式的合取,而非任意文字與或形。

事實

事實表示為事實元素的集合,每個事實元素表示為只有右部的Horn子句,即單一原子公式P。事實元素間隱含合取關係。
只要用Prolog語言表示問題描述的這3個部分,支持Prolog語句的推理機制就會自動執行基於規則的逆向演繹推理,並最終給出解答。
邏輯程式語言
由於目標和規則的左部都限定為原子公式的合取,而這些原子公式又可激活多條規則(這些規則間隱含或關係)。所以,Prolog演繹推理過程建立的與或圖具有與、或關係呈現逐層交替的局面。隨著與或圖的向下擴展,最終會形成(搜尋到)一致解圖,從而演繹推理成功;否則推理失敗。
把目標中包含的各原子公式視為子目標,每當由子目標激活的規則插入與或圖時,規則左部的各原子公式又成為新的子目標,再用於激活新的規則;如此,隨著規則的激活和新子目標的產生,與或圖逐步擴展,直到子目標直接與事實元素(原子公式)匹配為止。

特點

Prolog語言的語法結構相當簡單,但描述能力很強。例如,當事實和規則描述的是某一學科公理。那么問題就是待證的命題;當事實和規則描述的是某些數據和關係,那么問題就是數據查詢語句;當事實和規則描述的是某些狀態變化規律,那么問題就是目標狀態。因此,Prolog語言是一種智慧型型程式設計語言。
Prolog程式沒有特定的運行順序,程式運行順序完全按照數理邏輯推導(消解法)的方式進行.而不是由編程式的人決定。Prolog是一種描述型語言,用特定的方法描述一個問題,然後由計算機自動找到這個問題的答案。舉個極端的例子:當建立好事實和規則後,只需要把某個問題告訴它,它就會自動查找答案。
Prolog程式中沒有if、case、for這樣的控制流程語句。通常情況下,程式設計師不需要了解程式的運行過程,只需要注重程式的描述是否全面。不過Prolog也提供了一些控制程式流程的方法,這些方法和其他語言中的方法有很大區別。

相關詞條

熱門詞條

聯絡我們