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?