陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第十二章 Prolog 程式語言 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
企业涉税业务基本知识宣传 郑州航空港区国家税务局机场税务分局 王 磊.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
国语主日学 课程系列 灵命进深 事奉装备 生活指导 青年课室 信仰栽培.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
新世代計算機概論 第14章 程式語言.
实践 课题 周围环境对当代大学生成长的影响 指导老师:王永章 小组成员:陈荣、刘若楠、张红艳、吕雪丹、樊金芳、李惠芬、黄婧
資料結構使用Java 第1章 資料結構與Java程式複習.
主題五 CPU Learning Lab.
Chapter 5 迴圈.
陳維魁 博士 儒林圖書公司 第一章 程式語言的演進 陳維魁 博士 儒林圖書公司.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
Visual C++ introduction
Chapter 1 Introduction.
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
2-3 基本數位邏輯處理※.
第四章 流程控制(一) if,if-else 與 switch
JAVA 程式設計與資料結構 第六章 輸出與輸入.
保留字與識別字.
CSS字型樣式.
生物資訊程式語言應用 Part 3 Perl Language.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
陳維魁 博士 儒林圖書公司 第十一章 LISP 程式語言 陳維魁 博士 儒林圖書公司.
安裝JDK 安裝Eclipse Eclipse 中文化
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
程式設計專題.
Fortran 程式語言 之 編與譯(二) 張基昇.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
URL(Uniform Resource Locator)
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
靈 修 週.
UpToDate Anywhere 設定方法
義守大學電機工程學系 陳慶瀚 第4章 VHDL Sequential語法 義守大學電機工程學系 陳慶瀚
第 19 章 XML記憶體執行模式.
雲端計算.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
Definition of Trace Function
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
GUI Title and GUI Status
挑戰C++程式語言 ──第8章 進一步談字元與字串
程式語言 程式語言發展史 資料型態 程式指令 程序定義和使用.
陳維魁 博士 儒林圖書公司 陳維魁 博士 儒林圖書公司.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
第 4 章 認識 SQL 語言與資料型別.
11058: Encoding ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
資料表示方法 資料儲存單位.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Programming & Language Telling the computer what to do
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Joining Multiple Tables
陳維魁 博士 儒林圖書公司 第八章 例外處理 陳維魁 博士 儒林圖書公司.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第十二章 Prolog 程式語言 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司

大綱 簡介 基本資料結構 Prolog語言的陳述 Prolog語言推論的過程 精選習題

簡介 Prolog(PROgramming in LOGic)是在1970年代初期發展 主要應用在人工智慧(Artificial Intelligence),又稱為人工智慧的高階語言 日本發展的第五代電腦計劃採用Prolog為其語言,使得Prolog語言漸受世人注意,且廣泛地被使用 Prolog為適用於處理符號和非數值運算之程式語言 邏輯式程式語言

基本資料結構 – 原子 (atom) 原子的組成有三種可能的方式 由單引號所括住的字串組成: 由特殊的字元所組成的字串 ’Peter’,’Visual Basic’,’Prolog’ 由特殊的字元所組成的字串 &&,::=,<>=,.... 由字母,數字或「底線字元」所組成的字串,但須注意,該字串的第一個字元絕對必須是小寫字母 peter,visualbasic,visual_basic

基本資料結構 – 變數(variable) 變數是由字母,數字或「底線字元」所組成的字串 注意 字串的第一個字元,必須是大寫字母 Peter,Visualbasic,Visual_basic

基本資料結構–結構化資料型態 串列(list) 結構(structure) 結構的語法為 原子名稱 (參數串列) 串列結構(list structure)中,前端與後端皆必須以方括號作記號且串列中的元素必須以“,”作區分。如:〔Pascal, C, Basic, Cobol, Fortran〕 b.在Prolog中以〔H│X〕來表示一個串列的頭部與尾部。以上例來說,H=Pascal(相當於Lisp之CAR)且X=〔C, Basic, Cobol, Fortran〕(相當於LISP之CDR) 結構(structure) 結構的語法為   原子名稱 (參數串列) date(日,月,年) date(25,8,83)

Prolog 語言的陳述 事實陳述(fact statement) 規則陳述(rule statement) 目的陳述(goal statement)

事實陳述 事實陳述指明“事實” 事實陳述宣告一些無條件成立的事情 通常事實陳述是用來描述個體的性質或個體與個體之間的關係 又稱為無首霍恩子句(Headless Horn clause)

事實陳述 實例 注意 個體的性質 female(helen). male(peter). female(jane). male(john). 個體與個體之間的關係 son(john, helen). son(john, peter). daughter(jane, helen). daughter(jane, peter). 注意 Prolog的敘述之後,必須有句點作為結束

規則陳述 規則陳述是用來描述事實之間的邏輯關係,即必須在某種條件成立的條件下才為真的事情 又稱為有首霍恩子句(Headed Horn clause) 規則陳述結構:    結論部份:- 條件部份 其中結論部份又稱為首項,而條件部份所有的子條件皆成立時結論部份自然成立

規則陳述 實例 mother(helen, jane):- daughter(jane, helen), female(helen). “:-”右邊的敘述為陳述的來歷或規則 “:-”左邊的敘述,為陳述的結論 若來歷為真則結論也必定為真 陳述的來歷若有多個,則以逗號連接而其意義與邏輯運算子AND相同

目的陳述 目的陳述即是用來作為查詢(query)資料之用 目的陳述在程式段中是看不到的 實例 ?- daughter(jane, helen). Yes. ?- daughter(X, helen). jane; No. ?- daughter( _ , helen). jane; No.

Prolog 語言推論的過程 以目的陳述為目標,根據程式中的事實與規則陳述來進行推論,並以敘述定義之先後順序來進行推理動作 以目的陳述的函元(functor)以搜尋之依據,若符合者為 事實陳述:直接回答 規則陳述: 以每個規則為子目標 深度優先搜尋(DFS- Depth First Search) 回溯處理(backtracking):在推理的過程中若產生錯誤,此時系統會自動回溯到另一個可能正確的推理方向

精選習題 以下的PROLOG程式執行後,結果為何? append (〔〕,X,X). append (〔H|X〕,Y,〔H|Z〕):-append(X,Y,Z). ?- append (〔a,b〕,〔c,d〕,Z).

精選習題 假設有一PROLOG程式如下: first (Xs,Ys,IP):- second(Xs,Ys,O,IP). second (〔X|Xs〕,〔Y|Ys〕,Temp,IP):- Temp1 is X*Y+Temp,Second(Xs,Ys,Temp1,IP). second (〔〕,〔〕,IP,IP). 假設我們所鍵入的問句(query)為:  ?- first (〔2,3,1〕,〔3,2,6〕,X). 則所得的結果(亦即X值)為何?

精選習題 假設有一個PROLOG程式如下: class_sem(drinks,drink). class_sem(candies,food). class_sem(cakes,food). class_sem(tea,beverage). class_sem(coffee,beverage). sem_class([],[]). sem_class([X|T],[Y|R]):-class_sem(X,Y),sem_class(T,R). 假設所輸入之問句為:  ?- sem_class([mary,eats,cakes],Answer). 則Answer之結果為?

精選習題 假設有一個PROLOG程式如下: test(X,[X|Xs],Xs):-!. test(X,[Y|Ys],[Y|Zs]):-test(X,Ys,Zs). 假設所輸入之問句為:  ?- test(3,[1,2,2,3,3,4],Result). 則Result之結果為?

精選習題 在PROLOG語言中,事實(fact)和規則(rule)的語法及其用法。 PROLOG程式設計師有那兩種方法可以控制求解(resolution)過程中的型樣比對(pattern match)順序?