290 likes | 552 Views
Logic Programming. การโปรแกรมเชิงตรรกะ. หลักการทำโปรแกรมเชิงตรรกะ. เป็นการทำ โปรแกรมเชิงประกาศ (Declarative Programming) โปรแกรมเมอร์ไม่ต้องระบุขั้นตอนการค้นหาข้อมูล เพียงแต่ระบุจุดมุ่งหมายที่ต้องการ กลไกภายในของภาษาจะตรวจสอบหาคำตอบมาให้
E N D
Logic Programming การโปรแกรมเชิงตรรกะ
หลักการทำโปรแกรมเชิงตรรกะหลักการทำโปรแกรมเชิงตรรกะ • เป็นการทำโปรแกรมเชิงประกาศ (Declarative Programming) โปรแกรมเมอร์ไม่ต้องระบุขั้นตอนการค้นหาข้อมูล เพียงแต่ระบุจุดมุ่งหมายที่ต้องการ กลไกภายในของภาษาจะตรวจสอบหาคำตอบมาให้ • มักนิยมใช้ในงานด้านปัญญาประดิษฐ์ ใช้หลักทางตรรกะศาสตร์ งานฐานข้อมูล SQL • ตัวอย่าง นาย ก เป็นพ่อนาย ข นาย ข เป็นพ่อนาย ค นาง ง เป็นแม่นาย ก คำถาม ใครอายุมากที่สุด และน้อยที่สุด
ประเภทของตรรกศาสตร์ • ตรรกศาสตร์พรอพโพซิชัน (Propositional Logic) • ตรรกศาสตร์พริดิเคต (Predicate Logic)
ตรรกศาสตร์พรอพโพซิชันตรรกศาสตร์พรอพโพซิชัน • คือ ประโยค หรือ ข้อความทางตรรกะศาสตร์ที่ให้ค่าความจริงเป็นจริง หรือ เท็จ • ประโยคที่ไม่สามารถหาค่าความจริงได้ ไม่เรียกว่า พรอพโพซิชัน เช่น ประโยคคำถาม.................................................................
ตรรกศาสตร์พรอพโพซิชันตรรกศาสตร์พรอพโพซิชัน • ถ้า P และ Q เป็นพรอพโพซิชันแล้ว ข้อความต่อไปนี้เป็นพรอพโพซิชัน
ตรรกศาสตร์พรอพโพซิชันตรรกศาสตร์พรอพโพซิชัน • ตารางค่าความจริง
ตรรกศาสตร์เพรดิเคต • ปรับปรุงเพิ่มเติมจากตรรกศาสตร์พรอพโพซิชัน โดยเพิ่ม • ตัวแปรประเภทอื่นๆ เช่น integer, real, string • ฟังก์ชันที่ให้ค่าตรรกะ(หรือ relation) หมายถึงฟังก์ชันที่ส่งค่ากลับเป็นจริง หรือ เท็จ เช่นspeak(a , Thai) ให้ค่าเป็นจริง เมื่อ a สามารถพูดภาษาไทยได้ มิฉะนั้นจะให้ค่าเป็นเท็จ • ตัวบ่งปริมาณ (Quatifier)
ตัวบ่งปริมาณ • ตัวบ่งปริมาณ (quantifiers) X(P) สำหรับ Xทุกตัวจะทำให้ Pเป็นจริง X(P) สำหรับ Xบางตัวเท่านั้นที่จะทำให้ Pเป็นจริง • ตัวอย่าง • ……..(woman(X) human(X)) • ………………………………………………………………………. • ……..(mother(natalee, X) male(X)) • ……………………………………………………………………….
ตัวอย่างเพรดิเคต และค่าของเพรดิเคต
ข้อความรูปแบบของฮอร์นข้อความรูปแบบของฮอร์น • Horn Clause จัดเป็นข้อความตรรกศาสตร์เพรดิเคต อยู่ในรูปแบบimplication(ถ้า-แล้ว) ดังนี้ H p1, p2, … , pn • มีความหมายว่าH จะเป็นจริง ก็ต่อเมื่อp1, p2, … , pn เป็นจริง หรือ ถ้า p1, p2, … , pn เป็นจริงแล้ว H จะเป็นจริง • เครื่องหมาย “,” แทนความหมาย AND (และ) • เรียก H ว่าเป็น เพรดิเคตส่วนหัว (ผล) • เรียก p1, p2, … , pn ว่าเป็น เพรดิเคตส่วนบอดี้ (เหตุ)
ตัวอย่างข้อความรูปแบบฮอร์นตัวอย่างข้อความรูปแบบฮอร์น ตัวอย่างข้อความรูปแบบฮอร์น • likes(bob, salmon) likes(bob, fish), fish(salmon) • sunny(cpc)day(cpc) , hot(cpc) แปลงเป็นตรรกศาสตร์เพรดิเคต (รูปแบบของ Implication) • likes(bob, fish) fish(salmon) likes(bob, salmon) • ………………………………………………………….
ภาษาโปรล็อก • PROLOG : PROgramming in LOGic • Alian Colmerauer ชาวฝรั่งเศสสร้างเมื่อ 1972 • เป็นภาษาคอมพิวเตอร์ที่ใช้ในการทำโปรแกรมเชิงตรรกะ
การเขียนโปรแกรมภาษาโปรล็อก • ชื่อของ Objectและrelationใช้ตัวอักษรตัวเล็ก • ชื่อตัวแปร ขึ้นต้นด้วยอักษรตัวใหญ่ • คำถาม ขึ้นต้นด้วย ?- • กฎเกณฑ์มีรูปแบบดังนี้c :- h1, h2,…,hn for n > 0 • สัญลักษณ์ :- มีความหมายเดียวกันกับ ในข้อความรูปแบบฮอร์น
ภาษาโปรล็อก • ส่วนประกอบของภาษาโปรล็อก • แบ่งออกเป็น 3 ส่วน • ข้อเท็จจริง/ฐานความรู้ (Facts) • กฎเกณฑ์ (Rules) • เป้าหมาย/คำถาม (Goal) • แต่ละประโยคคั่นด้วย “.”
Fact • ข้อเท็จจริง (Fact) คือ ข้อความที่เป็นจริงแบบไม่มีเงื่อนไข เช่น male(jake). female(mary). father(jake, mary). **(Fact คือ เพรดิเคตส่วนหัว นั่นเอง)
Rule • กฎเกณฑ์ (Rule) • ประกอบด้วย Fact และ List of facts • รูปแบบ c :- h1, h2, …, hn for n > 0 ตัวอย่าง parent(X,Y) :- mother(X,Y), female(X). หมายถึง...............................................................................................
Goal • คำถาม (Goal) ใช้สอบถาม prolog ว่าจริงหรือเท็จ หรือถามในสิ่งที่สัมพันธ์กันเช่น • ?-food(meat).Yes • ?-adjacent(X,bangkok).X = nontha buri ; X= patum thani ; .
การทำนิรนัย (deduction) และ ยูนิฟิเคชัน (Unification) • คือ การประมวลผลโปรแกรม ที่เป็นการสรุปความจริงใหม่ จากความจริงเดิมที่มีอยู่ การสรุปความจริงใหม่นี้ เรียกว่า การทำนิรนัย (deduction) • การทำนิรนัยเพื่อให้ได้ความจริงใหม่ จะใช้วิธีการที่เรียกว่า การทำยูนิฟิ-เคชัน (Unification) คือ การแทนค่าตัวแปรเพื่อให้เพรดิเคตมีรูปแบบที่เหมือนกัน
การย้อนกลับ (Backtracking) • การย้อนกลับ (Backtracking) เกิดขึ้นในขั้นตอนของการพิสูจน์ความจริงของคำถาม เมื่อมีกฎที่อ้างถึงมากกว่า 1 กฎ โปรล็อกจะใช้กฎแรกก่อนในกระบวนการพิสูจน์ ถ้ากฎแรกตรวจสอบแล้วพบว่า failโปรล็อกจะย้อนกลับตัวแปรที่เคยถูกแทนค่านั้น แล้วทำกระบวนการพิสูจน์ต่อไป
ตัวอย่างBacktracking • ตัวอย่างการใช้กฎแสดงความสัมพันธ์ในครอบครัว 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 (ต่อ) • ถ้าถามว่า?-grandparent(mary, ron) C
ตัวอย่างโปรแกรมโปรล็อกตัวอย่างโปรแกรมโปรล็อก 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 Is meat a food? Is Fred a carnivore? Is dirt a food? Who are omnivores? What are foods?