งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Predicate calculus First order Logic

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Predicate calculus First order Logic"— ใบสำเนางานนำเสนอ:

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

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 : ตัวอักษร
ค่าคงที่ (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 : ตัวเชื่อม
นิเสธ () ทำให้กลับค่าความจริง และ () เช่น บ๊อบหล่อและนิสัยดี เขียนได้เป็น 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 x Loves(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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)

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

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

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)  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) แยกออกเป็นประโยคย่อยได้ (Study(x)  Pass(x,y)) (Lucky(x)  Pass(x,y)) Study(สมชาย) Lucky(สมชาย)

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))  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 พิสูจน์ได้ว่า สมชายมีความสุข 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(สมชาย)

34 ตัวอย่าง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 ?

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)
กำจัด  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

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} 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

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


ดาวน์โหลด ppt Predicate calculus First order Logic

งานนำเสนอที่คล้ายกัน


Ads by Google