Logic Programming การโปรแกรมเชิงตรรกะ.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
อาจารย์ปิยศักดิ์ ถีอาสนา
Advertisements

วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
การเสนอโครงการวิทยานิพนธ์
ตรรกศาสตร์ (Logics) Chanon Chuntra.
โครงสร้างทางคณิตศาสตร์และการให้เหตุผล (Mathematical Structure and Reasoning) Chanon Chuntra.
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
Data Type part.II.
Functional Programming
Functional programming part II
การใช้งานโปรแกรม Excel เบื้องต้น
ชนิดของข้อมูลและตัวดำเนินการ
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
การจัดเก็บข้อมูลตามตัวบ่งชี้ สกอ. และ สมศ.
การประยุกต์สมการเชิงเส้นตัวแปรเดียว
Week 6 ประกาศค่าตัวแปร.
PHP LANGUAGE.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
Properties ของคอนโทรล ที่ควรรู้จักในเบื้องต้น
Logic Programming โปรแกรมเชิงตรรกะ.
Poster Presentation โดย สำหรับ การประชุม สคร.5 รศ.นพ.สมพนธ์ ทัศนิยม
Use Case Diagram.
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
บทที่ 3 แบบจำลองข้อมูล Data Models Calculus
ระบบกฎของ FUZZY.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
1 นายทินวัฒน์ พงษ์ทองเมือง. 2 การเปิดให้ Program ทำงาน 3  p:\xampplite\ xampplite-control.exe  Start Apache.
ระบบจำนวนเต็ม โดย นางสาวบุณฑริกา สูนานนท์
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
ไวยากรณ์ของภาษาการทำโปรแกรม (1) (Syntax of programming languages)
เครื่องมือช่วยในการจับประเด็น รวบรวมความคิดให้เป็นหมวดหมู่
ตัวแปรกับชนิดของข้อมูล
การออกแบบฐานข้อมูลและการบริหารธุรกิจ
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ตัวแปรในภาษา JavaScript
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
ฟังก์ชันรับข้อมูล ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ประโยคเปิดและตัวบ่งปริมาณ
1 การอ่านตำรา การอ่านตำรา.
สัปดาห์ที่ 7 การแปลงลาปลาซ The Laplace Transform.
การวิเคราะห์วงจรในโดเมน s Circuit Analysis in The s-Domain
ประวัติความเป็นมาภาษาซี
บทที่ 3 การวิเคราะห์ Analysis.
เทคนิคการสืบค้น Google
ตัวแปรกับชนิดของข้อมูล
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
Week 2 Variables.
Computer Programming for Engineers
ความหมายของวิทยาศาสตร์
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หลักการเขียนโปรแกรม ( )
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
หลักการเขียนโปรแกรม ( )
การสร้างฟอร์ม(Form) ด้วยภาษา HTML
ค่าความจริงของประโยคที่มีตัวบ่งปริมาณ 2 ตัว
บทที่ 7 เงื่อนไขในภาษาซี
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
สาระการเรียนรู้ที่ ๙ ประโยคเปิด
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
ตัวแปร และชนิดข้อมูล.
บทที่ 5 Function. Function Function เป็นการแบ่งโค้ดโปรแกรมออกเป็นส่วนย่อยๆ เพื่อทำงานบางอย่าง - โค้ดโปรแกรมเรียงต่อกันยาว - สามารถเรียกใช้ Function ซ้ำได้
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
โครงสร้างข้อมูลแบบ สแตก (stack)
การแบ่งแยกและเอาชนะ Divide & Conquer
บทที่ 5 การเขียนรายงานโครงงานคอมพิวเตอร์
การแบ่งแยกและเอาชนะ Divide & Conquer
ใบสำเนางานนำเสนอ:

Logic Programming การโปรแกรมเชิงตรรกะ

หลักการทำโปรแกรมเชิงตรรกะ เป็นการทำโปรแกรมเชิงประกาศ (Declarative Programming) โปรแกรมเมอร์ไม่ ต้องระบุขั้นตอนการค้นหาข้อมูล เพียงแต่ระบุจุดมุ่งหมายที่ต้องการ กลไก ภายในของภาษาจะตรวจสอบหาคำตอบมาให้ มักนิยมใช้ในงานด้าน………………………………. ใช้หลักทางตรรกะศาสตร์ ………………………………………… ตัวอย่าง นาย ก เป็นพ่อนาย ข นาย ข เป็นพ่อนาย ค นาง ง เป็นแม่นาย ก

ประเภทของตรรกศาสตร์ ตรรกศาสตร์พรอพโพซิชัน (Propositional Logic) ตรรกศาสตร์พริดิเคต (Predicate Logic)

ตรรกศาสตร์พรอพโพซิชัน คือ ประโยค หรือ ข้อความทางตรรกะศาสตร์ที่ให้ค่าความจริงเป็น จริง หรือ เท็จ ประโยคที่ไม่สามารถหาค่าความจริงได้ ไม่เรียกว่า พรอพโพซิชัน เช่น ประโยคคำถาม.................................................................

ตรรกศาสตร์พรอพโพซิชัน ถ้า P และ Q เป็นพรอพโพซิชันแล้ว ข้อความต่อไปนี้เป็นพรอพโพซิชัน

ตรรกศาสตร์พรอพโพซิชัน ตารางค่าความจริง

ตรรกศาสตร์เพรดิเคต ปรับปรุงเพิ่มเติมจากตรรกศาสตร์พรอพโพซิชัน โดยเพิ่ม ตัวแปรประเภทอื่นๆ เช่น integer, real, string ฟังก์ชันที่ให้ค่าตรรกะ (หรือ relation) หมายถึงฟังก์ชันที่ส่งค่ากลับ เป็นจริง หรือ เท็จ เช่น speak(a , Thai) ให้ค่าเป็นจริง เมื่อ a สามารถ พูดภาษาไทยได้ มิฉะนั้นจะให้ค่าเป็นเท็จ ตัวบ่งปริมาณ (Quatifier)

ตัวบ่งปริมาณ X(P) ตัวบ่งปริมาณ (quantifiers) ตัวอย่าง ……..(woman(X)  human(X)) ………………………………………………………………………. ……..(mother(natalee, X)  male(X))

ตัวอย่างเพรดิเคต และค่าของเพรดิเคต

ข้อความรูปแบบของฮอร์น Horn Clause จัดเป็นข้อความตรรกศาสตร์เพรดิเคต อยู่ในรูปแบบ implication (ถ้า-แล้ว) ดังนี้ ………………………………………… มีความหมายว่า 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 male(jake). female(mary). father(jake, mary).

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)

การย้อนกลับ (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 (ต่อ)

ตัวอย่าง Backtracking (ต่อ) ถ้าถามว่า ?-grandparent(mary, ron) C

ตัวอย่าง Backtracking (ต่อ) LOGO

ตัวอย่าง Backtracking (ต่อ)

ตัวอย่างโปรแกรมโปรล็อก 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?