1 / 43

Predicate calculus First order Logic

Predicate calculus First order Logic. Choopan Rattanapoka 357353 – Introduction to AI. ข้อจำกัดของ Propositional Logic. ทบทวน Propositional Logic เป็นการแทนประโยคด้วยสัญลักษณ์ เช่น สมชายเป็นคน (P) สมปองเป็นคน (Q) สมหญิงเป็นคน (R)

sutton
Download Presentation

Predicate calculus First order Logic

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Predicate calculus First order Logic ChoopanRattanapoka 357353 – Introduction to AI

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

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

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

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

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

  7. 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))

  8. ค่าควรระวังในการใช้ 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) ) ถูก

  9. ความสัมพันธ์ของ  และ  • 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)

  10. 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xLoves(x,y) • ทุกๆคนในโลกนี้ถูกใครบางคนรัก

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

  12. 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)

  13. การอนุมานใน 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)

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

  15. การเปลี่ยนประโยคให้อยู่ในรูป 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)

  16. การเปลี่ยนประโยคให้อยู่ในรูป 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 ตัวแปรของแต่ละประโยคย่อยอีกรอบหนึ่ง

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

  18. ตัวอย่าง : 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zP(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)

  19. ตัวอย่าง : การแปลงประโยคให้อยู่ในรูป CNF(1) จงแปลงประโยคต่อไปนี้ให้อย่างในรูป CNF (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)

  20. ตัวอย่าง : การแปลงประโยคให้อยู่ในรูป 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))]

  21. ตัวอย่าง : การแปลงประโยคให้อยู่ในรูป 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(x)  b(x) e(w)  c(x,i)] • [a(u)  b(u) e(v)  c(f(u),z) d(u,f(u))] แบบฝึกหัด: จงแปลงประโยคต่อไปนี้ให้อยู่ในรูป CNF • x(P(x)) yx(Q(x,y))

  22. การพิสูจน์ด้วย 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

  23. การพิสูจน์ด้วย Resolution Refutation (2) • Resolution • (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 e  f d  e f d  f d d

  24. 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

  25. 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)))

  26. ตัวอย่าง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))

  27. ตัวอย่าง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))

  28. ตัวอย่าง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 : ไม่ต้องทำ

  29. ตัวอย่าง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)  Lucky(x))  Pass(x,y) • (Study(x)  Pass(x,y))  (Lucky(x)  Pass(x,y))

  30. ตัวอย่าง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) • แยกออกเป็นประโยคย่อยได้ • 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)

  31. ตัวอย่าง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)) • Study(สมชาย) • Lucky(สมชาย) •  Lucky(x4)  Win(x4, LOTTERY)

  32. ตัวอย่าง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(สมชาย)

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

  34. ตัวอย่าง2: • จากข้อมูลต่อไปนี้ • 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 ?

  35. ตัวอย่าง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))

  36. ตัวอย่าง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)

  37. ตัวอย่าง2: เปลี่ยนประโยคให้อยู่ในรูป CNF (1) • man(Marcus) • pompeian(Marcus) • born(Marcus, 40) • now = 2011 • กำจัด  • 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))

  38. ตัวอย่าง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)])

  39. ตัวอย่าง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)

  40. ตัวอย่าง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)

  41. ตัวอย่าง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)

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

  43. แบบฝึกหัด (ทำส่ง) • กำหนด 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

More Related