Logic Programming
Download
Report
Transcript Logic Programming
LOGIC PROGRAMMING
การโปรแกรมเชิงตรรกะ
หลักการทาโปรแกรมเชิงตรรกะ
2
เป็ นการทาโปรแกรมเชิงประกาศ (Declarative Programming) โปรแกรมเมอร์ไม่
ต้องระบุข้นั ตอนการค้นหาข้อมูล เพียงแต่ระบุจุดมุง่ หมายที่ตอ้ งการ กลไก
ภายในของภาษาจะตรวจสอบหาคาตอบมาให้
มักนิ ยมใช้ในงานด้านปั ญญาประดิษฐ์ ใช้หลักทางตรรกะศาสตร์ งานฐานข้อมูล
SQL
ตัวอย่าง
นาย ก เป็ นพ่อนาย ข
นาย ข เป็ นพ่อนาย ค
นาง ง เป็ นแม่นาย ก
คาถาม ใครอายุมากที่สุด และน้อยที่สุด
ประเภทของตรรกศาสตร์
3
ตรรกศาสตร์พรอพโพซิชนั (Propositional Logic)
ตรรกศาสตร์พริดิเคต (Predicate Logic)
ตรรกศาสตร์พรอพโพซิชนั
4
คือ ประโยค หรือ ข้อความทางตรรกะศาสตร์ที่ให้ค่าความจริงเป็ น
จริง หรือ เท็จ
ประโยคที่ไม่สามารถหาค่าความจริงได้ ไม่เรียกว่า พรอพโพซิชน
ั เช่น
ประโยคคาถาม.................................................................
ตรรกศาสตร์พรอพโพซิชนั
5
ถ้า P และ Q เป็ นพรอพโพซิชนั แล้ว ข้อความต่อไปนี้เป็ นพรอพโพซิชนั
ตรรกศาสตร์พรอพโพซิชนั
6
ตารางค่าความจริ ง
ตรรกศาสตร์เพรดิเคต
7
ปรับปรุ งเพิ่มเติมจากตรรกศาสตร์พรอพโพซิชนั โดยเพิ่ม
ตัวแปรประเภทอื่นๆ เช่น integer, real, string
ฟั งก์ชน
ั ที่ให้ค่าตรรกะ (หรื อ relation) หมายถึงฟังก์ชนั ที่ส่งค่ากลับ
เป็ นจริ ง หรื อ เท็จ เช่น speak(a , Thai) ให้ค่าเป็ นจริ ง เมื่อ a สามารถ
พูดภาษาไทยได้ มิฉะนั้นจะให้ค่าเป็ นเท็จ
ตัวบ่งปริ มาณ (Quatifier)
ตัวบ่งปริมาณ
8
ตัวบ่งปริ มาณ (quantifiers)
X(P)
สาหรับ X ทุกตัวจะทาให้ P เป็ นจริ ง
X(P)
สาหรับ X บางตัวเท่านั้นที่จะทาให้ P เป็ นจริ ง
ตัวอย่ าง
……..(woman(X) human(X))
……………………………………………………………………….
……..(mother(natalee, X) male(X))
……………………………………………………………………….
ตัวอย่างเพรดิเคต และค่าของเพรดิเคต
9
ข้อความรู ปแบบของฮอร์น
10
Horn Clause จัดเป็ นข้อความตรรกศาสตร์เพรดิเคต อยูใ่ นรู ปแบบ
implication (ถ้า-แล้ว) ดังนี้
H p1, p2, … , pn
มีความหมายว่า H จะเป็ นจริ ง ก็ต่อเมื่อ p1, p2, … , pn เป็ นจริ ง
หรื อ ถ้า p1, p2, … , pn เป็ นจริ งแล้ว H จะเป็ นจริ ง
เครื่ องหมาย “,” แทนความหมาย AND (และ)
เรี ยก H ว่าเป็ น เพรดิเคตส่ วนหัว (ผล)
เรี ยก p1, p2, … , pn ว่าเป็ น เพรดิเคตส่ วนบอดี้ (เหตุ)
ตัวอย่างข้อความรู ปแบบฮอร์น
11
ตัวอย่างข้อความรู ปแบบฮอร์น
likes(bob, salmon) likes(bob, fish), fish(salmon)
sunny(cpc) day(cpc) , hot(cpc)
แปลงเป็ นตรรกศาสตร์เพรดิเคต (รู ปแบบของ Implication)
likes(bob, fish) fish(salmon) likes(bob, salmon)
………………………………………………………….
12
ภาษาโปรล็อก
ภาษาโปรล็อก
13
PROLOG : PROgramming in LOGic
Alian Colmerauer ชาวฝรัง่ เศสสร้างเมื่อ 1972
เป็ นภาษาคอมพิวเตอร์ ที่ใช้ในการทาโปรแกรมเชิ งตรรกะ
การเขียนโปรแกรมภาษาโปรล็อก
14
ชื่อของ Object และ relation ใช้ตวั อักษรตัวเล็ก
ชื่อตัวแปร ขึ้ นต้นด้วยอักษรตัวใหญ่
คาถาม ขึ้ นต้นด้วย ? กฎเกณฑ์มีรป
ู แบบดังนี้
c :- h1, h2,…,hn
for n > 0
สัญลักษณ์ :- มีความหมายเดียวกันกับ ในข้อความรู ปแบบฮอร์น
ภาษาโปรล็อก
15
ส่ วนประกอบของภาษาโปรล็อก
แบ่งออกเป็ น 3 ส่ วน
ข้อเท็จจริง/ฐานความรู ้ (Facts)
กฎเกณฑ์ (Rules)
เป้าหมาย/คาถาม (Goal)
แต่ละประโยคคัน่ ด้วย “.”
Fact
16
ข้อเท็จจริ ง (Fact) คือ ข้อความที่เป็ นจริ งแบบไม่มีเงื่อนไข เช่น
male(jake).
female(mary).
father(jake, mary).
**(Fact คือ เพรดิเคตส่ วนหัว นัน่ เอง)
Rule
17
กฎเกณฑ์ (Rule)
ประกอบด้วย Fact และ List of facts
รู ปแบบ c :- h1, h2, …, hn for n > 0
ตัวอย่ าง
parent(X,Y) :- mother(X,Y), female(X).
หมายถึง...............................................................................................
Goal
18
คาถาม (Goal) ใช้สอบถาม prolog ว่าจริ งหรื อเท็จ หรื อถามในสิ่ งที่
สัมพันธ์กนั เช่น
?-food(meat).
Yes
?-adjacent(X,bangkok).
X = nontha buri ;
X= patum thani ;
.
การทานิรนัย (deduction) และ ยูนิฟิเคชัน (Unification)
19
คือ การประมวลผลโปรแกรม ที่เป็ นการสรุ ปความจริ งใหม่ จากความ
จริ งเดิมที่มีอยู่ การสรุ ปความจริ งใหม่น้ ี เรี ยกว่า การทานิรนัย
(deduction)
การทานิ รนัยเพื่อให้ได้ความจริ งใหม่ จะใช้วิธีการที่เรี ยกว่า การทายูนิฟิเคชัน (Unification) คือ การแทนค่าตัวแปรเพื่อให้เพรดิเคตมีรูปแบบที่
เหมือนกัน
การย้อนกลับ (Backtracking)
20
การย้อนกลับ (Backtracking) เกิดขึ้นในขั้นตอนของการพิสูจน์ความจริ ง
ของคาถาม เมื่อมีกฎที่อา้ งถึงมากกว่า 1 กฎ โปรล็อกจะใช้กฎแรกก่อน
ในกระบวนการพิสูจน์ ถ้ากฎแรกตรวจสอบแล้วพบว่า fail โปรล็อกจะ
ย้อนกลับตัวแปรที่เคยถูกแทนค่านั้น แล้วทากระบวนการพิสูจน์ต่อไป
ตัวอย่าง Backtracking
21
ตัวอย่างการใช้กฎแสดงความสัมพันธ์ในครอบครัว
mother(mary, bill).
mother(mary, sue).
mother(sue, nancy).
mother(sue, jiff).
mother(jane, ron).
father(john, sue).
father(john, bill).
father(bob, nancy).
father(bob, jiff).
father(bill, ron).
parent(A, B) :- father(A, B).
parent(A, B) :- mother(A, B).
grandparent(A, C) :- parent(A, B), parent(B, C).
ตัวอย่าง Backtracking (ต่อ)
22
ตัวอย่าง Backtracking (ต่อ)
23
ถ้าถามว่า ?-grandparent(mary, ron)
C
ตัวอย่าง Backtracking (ต่อ)
24
LOGO
ตัวอย่าง Backtracking (ต่อ)
25
ตัวอย่างโปรแกรมโปรล็อก
26
mother_child(trude, sally).
mother_child(trude, bunny).
father_child(tom, sally).
father_child(ted, sally).
father_child(ted, erica).
father_child(mike, tom).
sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).
parent_child(X, Y) :- father_child(X, Y).
parent_child(X, Y) :- mother_child(X, Y).
จงตัง้ คำถำมเพื่อตรวจสอบว่ำ sally เป็ น sibling กับ erica หรือไม่
จงตัง้ คำถำมเพื่อตรวจสอบว่ำ sally เป็ น sibling กับ bunny หรือไม่
จงตัง้ คำถำมเพื่อตรวจสอบว่ำ mike เป็ น sibling กับ sally หรือไม่
ตัวอย่างโปรแกรมโปรล็อก
fred eats meat.
wilma eats meat.
betty eats vegetables.
wilma eats vegetables.
barney eats meat.
barney eats vegetables.
If someone eats meat then they are a carnivore.
If someone eats meat and vegetables then they are an omnivore.
If someone eats X then X is food
27
Is meat a food?
Is Fred a carnivore?
Is dirt a food?
Who are omnivores?
What are foods?