Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
บทที่ 7 โปรแกรมภาษาโปรลอกเบื้องต�นIntroduction to PrologUbon Ratchathani University, Mukdahan Campus : อ.วรยทุธ วงศน์ิล
1
1106 602(Artificial Intelligence)
Prolog
� PROLOG มาจากคําว0า Programming in Logic
� เป3นภาษาคอมพิวเตอร<ที่ใชBแกBปDญหาทางดBานสัญลักษณ< ใชBพื้นฐานของ
predicate logic
� จัดเป3น descriptive language ใชBอธิบาย object และความสัมพันธ<
� SWI-Prolog เป3น interpreter download ไดBจาก
www.swi-prolog.org/download/stable
2
Example 1
Clauses:
has(jack, apples).
has(ann, plums).
has(dan, money).
fruit(apples).
fruit(plums).
3
Example 1
4
Knowledge Base
5
Knowledge Base
6
Knowledge Base 2
7
Knowledge Base นี้ ประกอบดBวย
� 5 clauses
� 2 facts
� 3 rules
Expressing Conjunction
เครื่องหมาย ‘,’ คือตัวเชื่อม ‘และ’
‘:-’ แทนคําว0า ‘ถBา’
ทุกประโยคจบดBวย ‘.’
8
Expressing Conjunction
9
Expressing Conjunction
10
Knowledge Base 3 : Asking Alternatives
11
Knowledge Base 3 : Asking Alternatives
12
Knowledge Base 3 :
13
Knowledge Base 3 :
14
Knowledge Base 4
15
Prolog Syntax
16
Atoms
� คือ สายอักขระที่ประกอบไดBจาก อักษรภาษาอังกฤษตัวเล็ก, ตัวใหญ0, ตัวเลข แต0ตBองขึ้นตBนดBวยอักษรตัวเล็กเท0านั้น
เช0น butch, big_kahuna_burger, playGuitar
� สายอักขระที่เกิดจากการกําหนดเองใหBเขียนไวBในเครื่องหมายฝนทองเช0น ‘Vincent’, ‘Five dollar shake’
� สัญลักษณ<พิเศษ
เช0น : , . :-
17
Numbers
� Integers : 12, -34, 22342
� Floats : 34.5678
18
Variables
� คือ สายอักขระที่ประกอบไดBจาก อักษรภาษาอังกฤษตัวใหญ0, ตัวเล็ก,
ตัวเลข หรือ underscore แต0ตBองขึ้นตBนดBวยอักษรตัวใหญ0หรือ
underscore เท0านั้น
เช0น X, Y, Variable, Vincent, _tag
19
Complex Terms
Complex terms เกิดจากการประกอบดBวย Atoms, numbers
และ variables
ตัวอย0างเช0น
playAirGurtar(jody)
loves(Vincent, mia)
hide(X, father(father(father(butch))))
20
Prolog Syntax
21
การทํางานของ Prolog
22
Example : Search tree
23
Another Example
24
Tower of Hanoi
หอคอยแห0งฮานอย หรือ ทาวเวอร<ออฟฮานอย (Tower of Hanoi) เป3นเกมคณิตศาสตร< ประกอบดBวยเสา 3 เสา และ จานกลมแบนขนาดต0างๆ ซึ่งมีรูตรงกลางสําหรับใหBเสาลอด เกมเริ่มจากจานทั้งหมดวางอยู0ที่เสาเดียวกัน โดยเรียงตามขนาดจากใหญ0ที่สุดอยู0ทางดBานล0างจนถึงจานขนาดเล็กที่สุดอยู0ดBานบนสุด เป3นลักษณะกรวยคว่ําตามรูป
เป{าหมายของเกมคือ พยายามยBายกองจานทั้งหมดไปไวBที่อีกเสาหนึ่ง โดยการเคลื่อนยBายจานจะตBองเป3นไปตามกติกา คือ
- สามารถยBายจานไดBเพียงครั้งละ 1 ใบ
- ไม0สามารถวางจานใหญ0ไวBบนจานที่มีขนาดเล็กกว0าไดB
25
Tower of Hanoi
Recursive algorithm
ถBาใหBเสาหลักเป3น A, B, C ตามลําดับจากซBายไปขวา และมีแผ0นจานหนึ่งแผ0น ก็จะยBายจากเสา A ไปยังเสา C การแกBปDญหานี้สามารถใชBแกBปDญหาแผ0นจานจํานวน n-1 เพื่อแกBปDญหา n แผ0นจะง0ายเมื่อใชB recursive ดังนี้
1. ยBายแผ0นจานจํานวน n-1 ที่อยู0บนสุดจากเสาหลัก A ไปไวBยังเสา B โดยมีเสา C ทําหนBาที่ช0วยเหลือในการสลับแผ0น
2. ยBายจานขนาดใหญ0สุด (จานที่ n) ที่เหลืออยู0จากเสา A ไปเสา C
3. ยBายจานจํานวน n-1 จากเสา B ไปเสา C
26
Tower of Hanoi
จากทดลองของปDญหานี้ : http://www.dynamicdrive.com/dynamicindex12/towerhanoi.htm27