Predicate calculus First order Logic

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Good morning welcome to Calvary Chapel at the Bridge สวัสดีตอนเช้าขอต้อนรับสู่ โบสถ์แคล'วะรีแชพ'เพิลที่สะพาน.
Advertisements

THE PARTS OF A FLOWERING PLANT AND THEIR FUNTION.
พีชคณิตบูลีน Boolean Algebra.
จำนวน สถานะ NUMBER OF STATES. ประเด็นที่ สนใจ The number of distinct states the finite state machine needs in order to recognize a language is related.
นางสาวอุทัยวรรณ ชัยมงคล กลุ่มสาระการเรียนรู้ภาษาต่างประเทศ
Moment in Life บางขณะของชีวิต.
Verb to be : is,am,are Positive ประโยคบอกเล่า โครงสร้าง = ประธานเอกพจน์ + is……… He ,She ,It + is………… He is a man. He is handsome. He is six years old.
Quick Review about Probability and
Inference in Propositional Logic
นำเสนอโดย ดร.สุธี สุดประเสริฐ
INC 551 Artificial Intelligence
Boolean Algebra วัตถุประสงค์ของบทเรียน
เอ้า....มองย้อนดูกัน ไร้สาระลามกจกเปรต  ทั้งอุบาทว์น่าสมเพชทั้งหลาย สั่งรุ่นน้องเหมือนเป็นวัวเป็นควาย เป็นรุ่นพี่สมองคิดได้เท่านั้นหรือ  รุ่นน้องๆปีหนึ่งต้องปรับตัว.
Mathematics for computing I
ผศ.ดร.สุพจน์ นิตย์สุวัฒน์
Predicate Logic Dr.Yodthong Rodkaew.
Boolean Algebra พีชคณิตบูลลีน บทที่ 4.
Chapter 5 Using Predicate Logic Artificial Intelligence ดร. วิภาดา เวทย์ประสิทธิ์ ภาควิชาวิทยาการคอมพิวเตอร์ คณะ วิทยาศาสตร์ มหาวิทยาลัยสงขลานครินทร์
Pronouns Pronouns (คำสรรพนาม) คือ คำที่ใช้แทนที่คำนาม
Logic Programming การโปรแกรมเชิงตรรกะ.
โครงสร้างควบคุมการทำงาน
ประโยคเปิดและตัวบ่งปริมาณ
Parts of Speech ( ชนิดของคำ )
In-Class Exercises Discrete Mathematics
San Ratanasanya สรร รัตนสัญญา CS, KMUTNB
Indirect Question without Question Word.
Question Tag Question Tag ตอนที่2 ครูรุจิรา ทับศรีนวล
Tell me about your family
Risk Management Asst.Prof. Dr.Ravi. การระบุมูลค่าความเสี่ยง กรณีการแจกแจงแบบปกติ (Normal Distribution) ความเสี่ยงที่ Pr (r
ภาษาอังกฤษ อ่าน-เขียน 2
Part of Speech Conjunction.
Introduction to ARTIFICIAL Intelligence
ว เคมีพื้นฐาน พันธะเคมี
ครูรุจิรา ทับศรีนวล. “Christmas Day” * อ่านเรื่องแล้วสรุป ใจความสำคัญได้ ครูรุจิรา ทับศรีนวล.
ANSI/ASQ Z1.4 Acceptance Sampling Plans
ภาษาอังกฤษ อ่าน-เขียน 2
ภาษาอังกฤษ ชั้นมัธยมศึกษาปึที่ 4 Grammar & Reading ครูรุจิรา ทับศรีนวล.
Present Continuous Tense
These examples show that the subject is doing the verb's action.
สื่อการเรียนรู้ด้วยตัวเอง ชุดฝึกเขียนสรุป (Writing Summary)
Chapter 1 Mathematics and Computer Science
คำเทศนาหัวข้อที่ 3: ประกาศข่าวดี SERMON 3: PREACHING GOOD NEWS
Knowledge Representation
บทที่ 6 การเขียนโปรแกรมแบบมีเงื่อนไข
Part 1: By the Power of the Gospel
1. นี่เป็นสิ่งที่พระเยซูทรงทำ พระองค์ทรงรักษาทุกคน ที่เจ็บป่วยให้หายดี
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
PHP (2) - condition - loop
สุขสันต์วันครบรอบคริสตจักร 19 ปี คริสตจักรเรมากรุงเทพฯ
เรื่องราวของวันคริสต์มาส
Adjective Clause (Relative Clause) An adjective clause is a dependent clause that modifies head noun. It describes, identifies, or gives further information.
การประเมินความจำเป็นด้านสุขภาพ Health Needs Assessment - HNA
Direct Speech Vs Indirect Speech
Dr.Surasak Mungsing CSE 221/ICT221 การวิเคราะห์และออกแบบขั้นตอนวิธี Lecture 04: การวิเคราะห์หาความซับซ้อนด้านเวลา ในรูป.
ตอนที่ 3: ท่านเป็นผู้ชอบธรรมได้อย่างไร?
การสร้างองค์ความรู้ใหม่ทางประวัติศาสตร์สากล
Good morning welcome to Calvary Chapel at the Bridge สวัสดีตอนเช้าขอต้อนรับสู่ โบสถ์แคล'วะรีแชพ'เพิลที่สะพาน.
1 ยอห์น 1:5-7 5 นี่เป็นเรื่องราวซึ่งเราได้ยินจากพระองค์และประกาศแก่ท่าน คือพระเจ้าทรงเป็นความสว่าง ในพระองค์ไม่มีความมืดเลย 6 ถ้าเราอ้างว่ามีสามัคคีธรรมกับพระองค์แต่ยังดำเนินในความมืด.
คุณลักษณะของเพื่อนที่ดีที่สุด
อัตถิภาวนิยม existentialism J.K. Stevens, instructor
หน่วยความจำหลัก (Main Memory)
แล้วไงเกี่ยวกับความจริง What About Truth?
Conditional sentences
การวิเคราะห์และออกแบบขั้นตอนวิธี
Inventory Control Models
การเขียนโปรแกรมภาษา Java (ต่อ)
Good morning welcome to Calvary Chapel at the Bridge สวัสดีตอนเช้าขอต้อนรับสู่ โบสถ์แคล'วะรีแชพ'เพิลที่สะพาน.
FREE INDEED! เสรีภาพให้เราเป็นไท
Constraint Satisfaction Problem (CSP)
สื่อประกอบการเรียนการสอน
ใบสำเนางานนำเสนอ:

Predicate calculus First order Logic 030523111 – Introduction to Artificial Intelligence Asst. Prof. Dr. Choopan Rattanapoka

ข้อจำกัดของ Propositional Logic ทบทวน Propositional Logic เป็นการแทนประโยคด้วยสัญลักษณ์ เช่น สมชายเป็นคน (P) สมปองเป็นคน (Q) สมหญิงเป็นคน (R) จะเห็นได้ว่าจะต้องใช้สัญลักษณ์ 1 ตัวเพื่อแทนประโยค 1 ประโยคไม่สามารถ จะเข้าถึงค่าที่มีคุณลักษณ์เหมือนกันเฉพาะตัวได้ Predicate calculus (Predicate Logic) สามารถที่จะทำให้ประโยคที่ มีคุณลักษณะเหมือนกันเข้าถึงค่าเฉพาะแต่ละตัวได้ Human(สมชาย), Human(สมปอง), Human(สมหญิง) Human( ) เรียกว่า Predicate

Predicate Logic บางครั้งเรียกว่า Predicate Calculus เป็นกระบวนการตรรกะที่มีความซับซ้อนกว่า Propositional Logic แต่มีการอนุมานเพื่อให้ได้ค่าความจริงใหม่จากค่าความจริงที่มีอยู่แล้ว องค์ประกอบพื้นฐานของ Predicate Logic จะประกอบด้วย ตัวอักษร (Alphabet) ส่วนแสดงความสัมพันธ์ (Predicate) ตัวเชื่อม (Connective) ตัวบ่งปริมาณ (Quantifier)

Predicate Logic : ตัวอักษร ค่าคงที่ (Constant) เป็นค่าที่ใช้บอกถึงความหมายที่ชัดเจนแน่นอน เช่น GARFIELD แทนความหมายของแมว SURASAK แทนความหมายของคน เพศชาย ตัวแปร (Variable) คือ การระบุถึงความหมายในภาพรวม ไม่เฉพาะเจาะจง cat หมายถึงสัตว์ที่เป็นแมว แต่ไม่ได้ระบุถึงพันธุ์ father หมายถึงพ่อคน แต่ไม่ได้ระบุว่าพ่อใคร ฟังก์ชัน (Function) คือส่วนที่ใช้ในการบ่งบอกโดเมนขององค์ประกอบ cat(GARFIELD) เป็นฟังก์ชันสำหรับหาว่า GARFIELD เป็นแมวพันธุ์อะไร father(SURASAK) เป็นฟังก์ชันสำหรับหาว่าพ่อของ SURASAK คือใคร

Predicate Logic : ส่วนแสดงความสัมพันธ์ เป็นส่วนที่ใช้แสดงความสัมพันธ์ระหว่างองค์ประกอบ ซึ่งจะช่วยขยายความ เข้าใจในค่าที่แสดงว่ามีความสัมพันธ์กันอย่างไร เช่น MAN(SURASAK) SURASAK เป็นผู้ชาย LIKES(BOB, PUI) BOB ชอบ PUI OLDER(SURASAK, father(CHAI)) SURASAK แก่กว่าพ่อของ CHAI

Predicate Logic : ตัวเชื่อม นิเสธ () ทำให้กลับค่าความจริง และ () เช่น บ๊อบหล่อและนิสัยดี เขียนได้เป็น HANDSOME(BOB)  NICE(BOB) หรือ () เช่น กรแก่กว่าบ๊อบหรือส้ม OLDER(KORN, BOB)  OLDER(KORN, SOM) ถ้า ... แล้ว () เช่น ถ้าบ๊อบดำแล้วบ๊อบจะหล่อ BLACK(BOB)  HANDSOME(BOB) ก็ต่อเมื่อ () เช่น บ๊อบจะบวชก็ต่อเมื่ออายุ 25 ปี MONK(BOB)  AGE25(BOB)

Predicate Logic : ตัวบ่งปริมาณ เป็น ค่าที่ใช้ชี้วัดปริมาณของประโยค เพื่อใช้ในการบ่งชี้ถึงจำนวนหรือขนาด ใน Predicate Logic ทำให้เกิด First Order Logic มีอยู่ 2 ประเภทคือ ตัวบ่งปริมาณสากล(Universal Quantifier) บางครั้งเรียก “For All” จะใช้เครื่องหมาย  จะเป็นจริงเมื่อทุกค่าเป็นจริง คนไทยจะเลือกตั้งได้ตอนอายุ 18 ปี x(THAI18(x)  VOTE(x)) ตัวบ่งปริมาณบางส่วน(Existential Quantifier) บางครั้งเรียก “For Some” จะใช้เครื่องหมาย  จะเป็นจริงถ้าค่าบางค่าเป็นจริง คนบางคนเล่น facebook และ twitter x(FACEBOOK(x)  TWITTER(x))

ค่าควรระวังในการใช้ Quantifier ปกติการใช้  ประโยคหลักจะเชื่อมกันด้วย  ไม่ใช่  ตัวอย่าง : นักศึกษาทุกคนที่เรียน ECT จะเก่ง x( At(x, ECT)  smart(x) ) ผิดเพราะจะหมายความว่า “ทุกคนที่เรียน ECT และ ทุกคนเก่ง” x( At(x, ECT)  smart(x) ) ถูก ปกติการใช้  ประโยคหลักจะเชื่อมกันด้วย  ไม่ใช่  ตัวอย่าง : นักศึกษาบางคนที่เรียน ECT จะเก่ง x( At(x, ECT)  smart(x) ) ผิดเพราะประโยคสามารถเป็นจริงได้ ถึงคนที่เก่งจะไม่เรียน ECT x( At(x, ECT)  smart(x) ) ถูก

ความสัมพันธ์ของ  และ  x P(x)  x P(x) x P(x)  x P(x) x P(x)  x P(x) x P(x)  x P(x) ตัวอย่าง : ทุกคนชอบไอศครีม x Loves(x, ICE-CREAM) สามารถเขียนได้อีกอย่าง x  Loves(x, ICE-CREAM)

Nested Quantifier บางครั้งความต้องการที่จะแสดงประโยคที่ซับซ้อนมากขึ้น จะมีการใช้ตัวบ่ง ปริมาณหลายตัว เช่น พี่น้องคือญาติ x y Brother(x,y)  Sibling(x,y) x y  y x สามารถเขียน x,y ได้เพื่อให้ดูง่ายขึ้น x y  y x สามารถเขียน x,y ได้เพื่อให้ดูง่ายขึ้น x y ไม่เหมือนกับ y x x y Loves(x,y) มีบางคนที่รักทุกๆคนในโลก y x Loves(x,y) ทุกๆคนในโลกนี้ถูกใครบางคนรัก

แบบฝึกหัด จงแปลงข้อความต่อไปนี้ให้อยู่ในรูปของ First Order Logic คนทุกคนรักสุนัข คนบางคนรักแมว สุนัขบางตัวไม่ชอบแมว คนที่ชอบแมวเป็นคนดีแต่ไม่มีความสุข

Normal Form เพื่อให้คอมพิวเตอร์สามารถทำการอนุมานได้ง่ายขึ้น ควรจะเปลี่ยนประโยค ต่างๆให้อยู่ในรูปของ “Normal Form” ทุกประโยคใน FOL สามารถที่จะแปลงให้อยู่ในรูปของ Normal Form ได้ Conjunctive normal form (CNF) ทุกประโยคจะเกิดจากเชื่อมต่อกันของประโยคย่อยด้วย conjunction () และ ในประโยคย่อยจะประกอบด้วยคำที่เชื่อมต่อกันด้วย disjunction () (P(x)  R(x,y))  (S(y)  R(y,z))  T(y)

การอนุมานใน First Order Logic (FOL) เราไม่สามารถใช้ Truth table เพื่อแก้ไขปัญหาของ FOL เนื่องจากใน FOL มีตัวแปร(variables) ทำให้ตาราง Truth table สามารถมีค่า ความเป็นไปได้เป็น infinity Robinson (1965) เสนอวิธีแก้ไขปัญหาการพิสูจน์ค่าใน FOL ด้วย algorithm ที่ชื่อว่า resolution refutation (ซึ่งสามารถใช้กับ propositional logic ก็ได้) Resolution (A  B)  (B  C) อนุมานได้เป็น (A  C) (A  B)  (B  C) อนุมานได้เป็น (A  C)

Resolution Refutation การพิสูจน์ประโยค p สามารถอนุมานจากเซ็ตของประโยคใน KB เปลี่ยน p และประโยคใน KB ให้อยู่ในรูปของ CNF ทำซ้ำจนกระทั่งได้ประโยคว่าง หาประโยคย่อย 2 ประโยคที่สามารถทำ resolution ได้และยังไม่เคยถูกใช้มาก่อน นำ 2 ประโยคย่อยนั้นเข้ากฎ resolution เพิ่งสร้างประโยคย่อยใหม่ ถ้าการทำงานสิ้นสุดลงด้วยประโยคว่างเปล่า(null, false) ถือว่าพิสูจน์ p ได้ ไม่เช่นนั้นก็คือ p ไม่สามารถพิสูจน์ได้ ปัญหาของ Resolution Refutation กับ FOL จะเปลี่ยนประโยคให้อยู่ในรูป CNF ได้อย่างไรเมื่อมี Quantifier ? จะรู้ได้อย่างไรว่าประโยค 2 ประโยคขัดแย้งกันในเมื่อมีตัวแปรอยู่ ?

การเปลี่ยนประโยคให้อยู่ในรูป CNF (1) 1. กำจัดตัวเชื่อม  ด้วยการใช้กฎ Material Equivalent (Equiv) P  Q  (P  Q)  (Q  P) 2. กำจัดตัวเชื่อม  ด้วยการใช้กฎ Material Implication (Impl) P  Q  P  Q 3. นำตัว negation () กระจายเข้าไปข้างในประโยค  P  P Double negation (P  Q)  P  Q Demorgan (P  Q)  P  Q Demorgan x P(x)  x P(x) x P(x)  x P(x)

การเปลี่ยนประโยคให้อยู่ในรูป CNF (2) 4. ทำ standardize โดยการเปลี่ยนชื่อตัวแปรของแต่ละประโยคย่อยไม่ให้ซ้ำกัน x(P(x))  x(Q(x))  x(P(x))  y(Q(y)) 5. เลื่อน Quantifier ทุกตัวมาทางด้านซ้ายของประโยคโดยรักษาลำดับไว้ x(P(x))  y(Q(y))  xy(P(x)  Q(y)) 6. ใช้วิธี Skolemization เพื่อกำจัด  7. ลบ  ออกจากประโยคให้หมด 8. ใช้ Distributive law เปลื่ยนให้อยู่ในรูปของ CNF P  (Q  R)  (P  Q)  (P  R) 9. แยกประโยคใหญ่ออกเป็นประโยคย่อยๆโดยใช้  เป็นตัวแยก 10. ทำ standardize ตัวแปรของแต่ละประโยคย่อยอีกรอบหนึ่ง

วิธี Skolemization เป็นวิธีที่ใช้เปลี่ยนประโยคที่มี Existential Quantifier() เป็น ประโยคที่ไม่มี  จะทำการกำจัด  ด้วยการแทนที่ตัวแปรของ  ด้วย skolem function ซึ่ง argument ของ function จะเป็นตัวแปรของ universal quantifier  ที่อยู่ใน scope ของ  ที่จะกำจัด ถ้า  ที่ต้องการจะกำจัดไม่อยู่ใน scope ของ universal quantifier  ตัวใดเลย ก็จะแทนที่ด้วย skolem function ที่ไม่มี argument ซึ่งก็คือ ค่าคงที่

ตัวอย่าง : Skolemization xy (Person(x)  Person(y))  Loves(x,y) y อยู่ภายใต้ x ดังนั้นแทนที่ y ด้วย skolem function ที่มี argument คือ x เปลี่ยนได้เป็นx (Person(x)  Person(f(x)))  Loves(x,f(x)) x P(x) เป็น P(A) ค่าคงที่ A xyz P(x,y,z) เปลี่ยนเป็น xy P(x, y, f(x,y)) xyz P(x,y,z) เปลี่ยนเป็น xz P(x, f(x), z)

ตัวอย่าง : การแปลงประโยคให้อยู่ในรูป CNF (1) (x)([a(x)  b(x)]  [c(x,i)  (y)((z)[c(y,z)]  d(x,y))])  (x)(e(x)) 1. กำจัด  (x)([a(x)  b(x)]  [c(x,i)  (y)((z)[c(y,z)]  d(x,y))])  (x)(e(x)) 2. นำตัว  กระจายเข้าไปข้างในประโยค (x)( [a(x)  b(x)]  [c(x,i)  (y)((z)[c(y,z)]  d(x,y))])  (x)(e(x)) 3. ทำ standardize ชื่อตัวแปร (x)( [a(x)  b(x)]  [c(x,i)  (y)((z)[c(y,z)]  d(x,y))])  (w)(e(w)) 4. เลื่อน quantifier มาอยู่ด้านซ้ายของประโยค (x)(y)(z) (w)([a(x)  b(x)]  [c(x,i)  (c(y,z)  d(x,y))]  e(w)

ตัวอย่าง : การแปลงประโยคให้อยู่ในรูป CNF (2) (x)(y)(z) (w)([a(x)  b(x)]  [c(x,i)  (c(y,z)  d(x,y))]  e(w) 5. กำจัด  (x)(z) (w)([a(x)  b(x)]  [c(x,i)  (c(f(x),z)  d(x,f(x)))]  e(w) 6. ปลดตัว  ออกจากประโยค [a(x)  b(x)]  [c(x,i)  (c(f(x),z)  d(x,f(x)))]  e(w) 7. ทำ Distribution law [a(x)  b(x)]  e(w)  [c(x,i)  (c(f(x),z)  d(x,f(x)))] [a(x)  b(x)  e(w)  c(x,i)]  [a(x)  b(x)  e(w)  c(f(x),z)  d(x,f(x))]

ตัวอย่าง : การแปลงประโยคให้อยู่ในรูป CNF (3) 8. ใช้ตัว conjunction () เป็นตัวแยกประโยคใหญ่ออกเป็นประโยคย่อยๆ [a(x)  b(x)  e(w)  c(x,i)] [a(x)  b(x)  e(w)  c(f(x),z)  d(x,f(x))] 9. ใช้ตัวทำ standardize อีกรอบของแต่ละประโยคย่อยไม่ให้ซ้ำกัน [a(u)  b(u)  e(v)  c(f(u),z)  d(u,f(u))] แบบฝึกหัด: จงแปลงประโยคต่อไปนี้ให้อยู่ในรูป CNF x(P(x))  yx(Q(x,y))

การพิสูจน์ด้วย Resolution Refutation (1) กลับมาที่ propositional logic ที่ไม่มีค่าตัวแปรให้วุ่นวาย ตัวอย่าง: ต้องการพิสูจน์ a จากสมมุติฐาน b  c  a b d  e  c e  f d  f (b  c)  a b  c  a b  c  a b d  e  c e  f d f (d  e)  c d  e  c f d

การพิสูจน์ด้วย Resolution Refutation (2) (A  B)  (B  C) อนุมานได้เป็น (A  C) (A  B)  (B  C) อนุมานได้เป็น (A  C) a b  c  a กำหนด a b  c  a b d  e  c e  f d f b  c b d  e  c c d  e e  f f d  f d d

Unification (1) จะเห็นว่าสำหรับ Propositional Logic จะง่ายมากในการดู 2 ประโยคที่ขัดกัน (p และ p) แต่สำหรับ FOL การเทียบกันจะซับซ้อนขึ้นเนื่องจากจะต้องพิจารณา argument ของ predicate ด้วยเช่น MAN(JOHN) และ MAN(JOHN) ขัดแย้งกัน MAN(JOHN) และ MAN(SPOT) ไม่ขัดแย้งกัน ในการตรวจสอบความขัดแย้งกันของประโยคใน FOL จะต้องมีการ แทนที่ (substitution) ค่าของตัวแปร ซึ่งเรียกว่า Unification Notation : car/x หมายถึงการแทนค่า car ให้กับตัวแปร x

Unification (2) ถ้ามีประโยค Knows(John, x) แล้วแทนที่ด้วย {Paul/x} จะทำให้ประโยคที่ได้เป็น Knows(John, Paul) ถ้าไม่สามารถหาค่ามาแทนตัวแปรได้ถือว่าการทำ unification ล้มเหลว ตัวอย่าง : foo(x, A, goo(y)) {Fred/x, z/y} => foo(Fred, A, goo(z)) {w/x, Jack/y} => foo(w, A, goo(Jack)) {z/x, moo(z)/y} => foo(z, A, goo(moo(z)))

ตัวอย่าง1: สร้างประโยคในรูปแบบของ FOL จากประโยคต่อไปนี้ คนที่สอบวิชาประวัติศาสตร์ผ่านและถูกลอตเตอรี่จะมีความสุข แต่ถ้าใครที่เรียนอยู่หรือโชค ดีจะผ่านวิชาที่เรียนทุกวิชา สมชายไม่ได้เรียนแต่สมชายโชคดี ใครที่โชคดีจะถูกลอตเตอรี่ ถามว่าสมชายมีความสุขไหม ? คนที่สอบวิชาประวัติศาสตร์ผ่านและถูกลอตเตอรี่จะมีความสุข x(Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x)) ใครที่เรียนอยู่หรือโชคดีจะผ่านวิชาที่เรียนทุกวิชา xy (Study(x)  Lucky(x)  Pass(x,y)) สมชายไม่ได้เรียนแต่สมชายโชคดี Study(สมชาย)  Lucky(สมชาย) ใครที่โชคดีจะถูกลอตเตอรี่ x(Lucky(x)  Win(x, LOTTERY))

ตัวอย่าง1: เปลี่ยนประโยคให้อยู่ในรูป CNF กำจัด  x(Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x)) x([Pass(x, HISTORY)  Win(x, LOTTERY)]  Happy(x)) xy (Study(x)  Lucky(x)  Pass(x,y)) xy ([ Study(x)  Lucky(x)]  Pass(x,y)) Study(สมชาย)  Lucky(สมชาย) x(Lucky(x)  Win(x, LOTTERY)) x( Lucky(x)  Win(x, LOTTERY))

ตัวอย่าง1: เปลี่ยนประโยคให้อยู่ในรูป CNF (1) กระจาย  เข้าไปในประโยค x([Pass(x, HISTORY)  Win(x, LOTTERY)]  Happy(x)) x(Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x)) xy ([ Study(x)  Lucky(x)]  Pass(x,y)) xy ([Study(x)  Lucky(x)]  Pass(x,y)) Study(สมชาย)  Lucky(สมชาย) x( Lucky(x)  Win(x, LOTTERY)) Standardize : ไม่มีให้ทำ เลื่อน Quantifier ไปด้านซ้ายของประโยค : ไม่ต้องทำ ทำ Skolemization : ไม่ต้องทำ

ตัวอย่าง1: เปลี่ยนประโยคให้อยู่ในรูป CNF (2) ตัด universal quantifier ออก Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x) (Study(x)  Lucky(x))  Pass(x,y) Study(สมชาย)  Lucky(สมชาย)  Lucky(x)  Win(x, LOTTERY) ทำ Distribution (Study(x)  Pass(x,y))  (Lucky(x)  Pass(x,y))

ตัวอย่าง1: เปลี่ยนประโยคให้อยู่ในรูป CNF (3) จาก Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x) (Study(x)  Pass(x,y))  (Lucky(x)  Pass(x,y)) Study(สมชาย)  Lucky(สมชาย)  Lucky(x)  Win(x, LOTTERY) แยกออกเป็นประโยคย่อยได้ (Study(x)  Pass(x,y)) (Lucky(x)  Pass(x,y)) Study(สมชาย) Lucky(สมชาย)

ตัวอย่าง1: เปลี่ยนประโยคให้อยู่ในรูป CNF (4) จาก Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x) (Study(x)  Pass(x,y)) (Lucky(x)  Pass(x,y)) Study(สมชาย) Lucky(สมชาย)  Lucky(x)  Win(x, LOTTERY) Standardize ตัวแปรของแต่ละประโยคย่อยได้ Pass(x1, HISTORY)  Win(x1, LOTTERY)  Happy(x1) (Study(x2)  Pass(x2,y1)) (Lucky(x3)  Pass(x3,y2))  Lucky(x4)  Win(x4, LOTTERY)

ตัวอย่าง1: พิสูจน์ (1) จากสมมุติฐานที่ได้ Pass(x1, HISTORY)  Win(x1, LOTTERY)  Happy(x1) Study(x2)  Pass(x2,y1) Lucky(x3)  Pass(x3,y2) Study(สมชาย) Lucky(สมชาย)  Lucky(x4)  Win(x4, LOTTERY) ต้องการพิสูจน์ว่า สมชายมีความสุข Happy(สมชาย) ดังนั้นให้กลับค่า ความเป็นจริงเป็นพิสูจน์ Happy(สมชาย)

พิสูจน์ได้ว่า สมชายมีความสุข Happy(สมชาย) ตัวอย่าง1: พิสูจน์ (2) Happy(สมชาย) Pass(x1, HISTORY)  Win(x1, LOTTERY)  Happy(x1) {สมชาย/x1} Pass(สมชาย, HISTORY)  Win(สมชาย, LOTTERY)  Lucky(x4)  Win(x4, LOTTERY) {สมชาย/x4} Pass(สมชาย, HISTORY)  Lucky(สมชาย) Lucky(สมชาย) Lucky(x3)  Pass(x3,y2) Pass(สมชาย, HISTORY) {สมชาย/x3, HISTORY/y2} Lucky(สมชาย) Lucky(สมชาย) พิสูจน์ได้ว่า สมชายมีความสุข Happy(สมชาย)

ตัวอย่าง2: จากข้อมูลต่อไปนี้ จงพิสูจน์ Marcus is not alive ? Marcus was a man Marcus was a Pompeian Marcus was born in 40 AD. All men are mortal All Pompeians died when the volcano erupted in 79 AD. No mortal lives longer than 150 years It’s now 2011 Alive means not dead If someone dies, then he’s dead at all later times. จงพิสูจน์ Marcus is not alive ?

ตัวอย่าง2: สร้างประโยคในรูปแบบของ FOL (1) Marcus was a man man(Marcus) Marcus was a Pompeian pompeian(Marcus) Marcus was born in 40 AD. born(Marcus, 40) All men are mortal x (man(x)  mortal(x)) All Pompeians died when the volcano erupted in 79 AD. erupted(Volcano, 79)  x(pompeian(x) died(x, 79))

ตัวอย่าง2: สร้างประโยคในรูปแบบของ FOL (2) No mortal lives longer than 150 years x t1 t2 (mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2)) It’s now 2011 now = 2011 Alive means not dead x t ([alive(x, t)  dead(x, t)]  [dead(x,t)  alive(x, t)]) If someone dies, then he’s dead at all later times. x t1 t2 (died(x, t1)  gt(t2, t1)  dead(x, t2)) จงพิสูจน์ Marcus is not alive ? alive(Marcus, now)

ตัวอย่าง2: เปลี่ยนประโยคให้อยู่ในรูป CNF (1) กำจัด  x (man(x)  mortal(x)) x ( man(x)  mortal(x)) erupted(Volcano, 79)  x(pompeian(x) died(x, 79)) erupted(Volcano, 79)  x( pompeian(x)  died(x, 79)) x t1 t2 (mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2)) x t1 t2 ( (mortal(x)  born(x, t1)  gt(t2-t1, 150) )  dead(x, t2)) x t ([alive(x, t)  dead(x, t)]  [dead(x,t)  alive(x, t)]) x t ([alive(x, t)  dead(x, t)]  [ dead(x,t)  alive(x, t)]) x t1 t2 (died(x, t1)  gt(t2, t1)  dead(x, t2)) x t1 t2 ( (died(x, t1)  gt(t2, t1))  dead(x, t2)) man(Marcus) pompeian(Marcus) born(Marcus, 40) now = 2011

ตัวอย่าง2: เปลี่ยนประโยคให้อยู่ในรูป CNF (2) กระจาย  x t1 t2 ( (mortal(x)  born(x, t1)  gt(t2-t1, 150) )  dead(x, t2)) x t1 t2 (mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2)) x t1 t2 ( (died(x, t1)  gt(t2, t1))  dead(x, t2)) x t1 t2 ( died(x, t1)   gt(t2, t1)  dead(x, t2)) man(Marcus) pompeian(Marcus) born(Marcus, 40) now = 2011 x ( man(x)  mortal(x)) erupted(Volcano, 79)  x( pompeian(x)  died(x, 79)) x t ([alive(x, t)  dead(x, t)]  [ dead(x,t)  alive(x, t)])

ตัวอย่าง2: เปลี่ยนประโยคให้อยู่ในรูป CNF (3) Standardization : ไม่มี เลื่อน Quantifier ไปด้านซ้าย : ทุกประโยคอยู่ด้านซ้ายหมดแล้ว ทำ Skolemization เพื่อกำจัด  : ไม่มี  ถอด  ออกจากประโยค man(Marcus) pompeian(Marcus) born(Marcus, 40)  man(x)  mortal(x) erupted(Volcano, 79)  ( pompeian(x)  died(x, 79)) mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2)) now = 2011 (alive(x, t)  dead(x, t))  ( dead(x,t)  alive(x, t))  died(x, t1)   gt(t2, t1)  dead(x, t2)

ตัวอย่าง2: เปลี่ยนประโยคให้อยู่ในรูป CNF (4) แยกออกเป็นประโยคย่อย man(Marcus) pompeian(Marcus) born(Marcus, 40)  man(x)  mortal(x) erupted(Volcano, 79)  pompeian(x)  died(x, 79) mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2)) now = 2011 alive(x, t)  dead(x, t)  dead(x,t)  alive(x, t)  died(x, t1)   gt(t2, t1)  dead(x, t2)

ตัวอย่าง2: เปลี่ยนประโยคให้อยู่ในรูป CNF (5) Standardization ตัวแปร man(Marcus) pompeian(Marcus) born(Marcus, 40)  man(x1)  mortal(x1) erupted(Volcano, 79)  pompeian(x2)  died(x2, 79) mortal(x3)  born(x3, t1)  gt(t2-t1, 150)  dead(x3, t2)) now = 2011 alive(x4, t3)  dead(x4, t3)  dead(x5,t4)  alive(x5, t4)  died(x6, t5)   gt(t6, t5)  dead(x6, t6)

ตัวอย่าง2: พิสูจน์ พิสูจน์ alive(Marcus, now) โดยตรวจสอบจาก alive(Marcus, now) alive(Marcus, now) 9 {Marcus/x4, now/t3} dead(Marcus, now) 11 {Marcus/x6, now/t6} 6  died(Marcus, t5)   gt(now, t5) {Marcus/x2, 79/t5}  gt(now, 79)   pompeian(Marcus) {now = 2011}  gt(2011, 79)   pompeian(Marcus) 2  pompeian(Marcus) สรุป Now, Marcus is not alive

แบบฝึกหัด (ทำส่ง) กำหนด Predicate จากข้อมูลต่อไปนี้ man(x) pompeian (x) roman(x) ruler(x) loyalto(x, y) hate(x, y) tryassasinate(x, y) people(x) จากข้อมูลต่อไปนี้ Marcus was a man. Marcus was a Pompeian. All Pompeian were Romans. Caesar was a ruler. All Romans were either loyal to Caesar or hated him Everyone is loyal to someone People only try to assassinate rulers they aren’t loyal to. Marcus tried to assassinate Caesar. All men are people. จงพิสูจน์ว่า Marcus hated Caesar