Powerpoint - Choopan Rattanapoka

Report
PREDICATE CALCULUS
FIRST ORDER LOGIC
Choopan Rattanapoka
357353 – Introduction to AI
ข้อจำกัดของ 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 : ตัวอักษร

ตัวอักษร เป็ นองค์ประกอบที่เป็ นส่วนของตัวอักษรที่ใช้ในกระบวนการของ
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 : ตัวเชื่อม

ตัวเชื่อมใช้ในการเชื่อมระหว่างส่วนแสดงความสัมพันธ์ (Predicate) เข้า
ด้วยกัน มีเครื่องหมายต่างๆ ดังนี้
() ทาให้กลับค่าความจริง
 และ () เช่น บ๊อบหล่อและนิ สย
ั ดี เขียนได้เป็ น
 นิเสธ
 HANDSOME(BOB)
 หรือ
() เช่น กรแก่กว่าบ๊อบหรือส้ม
 OLDER(KORN,
 ถ้ำ
 NICE(BOB)
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

ปกติการใช้  ประโยคหลักจะเชื่อมกันด้วย  ไม่ใช่ 
 ตัวอย่าง
 x(

At(x, ECT)  smart(x) )
ผิดเพราะจะหมายความว่า “ทุกคนที่เรียน ECT และ ทุกคนเก่ง”
 x(

: นักศึกษาทุกคนที่เรียน ECT จะเก่ง
At(x, ECT)  smart(x) ) ถูก
ปกติการใช้  ประโยคหลักจะเชื่อมกันด้วย  ไม่ใช่ 
 ตัวอย่าง
 x(

: นักศึกษาบางคนที่เรียน ECT จะเก่ง
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
(P  Q)  P  Q
(P  Q)  P  Q
x P(x)  x P(x)

x P(x)  x P(x)



Double negation
Demorgan
Demorgan
กำรเปลี่ยนประโยคให้อยูใ่ นรูป 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)
จงแปลงประโยคต่อไปนี้ ให้อย่างในร่ป 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)
ตัวอย่ำง : กำรแปลงประโยคให้อยูใ่ นรูป 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(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))
กำรพิสูจน์ดว้ ย Resolution Refutation (1)


กลับมาที่ propositional logic ที่ไม่มีค่าตัวแปรให้วนุ่ วาย
ตัวอย่ำง: ต้องการพิสจ่ น์ a จากสมมุติฐาน
(b  c)  a
b  c  a
bca
b
dec
ef
 d  f

d
(d  e)  c
d  e  c
f
•
•
•
•
•
•
b  c  a
b
d  e  c
ef
d
f
กำรพิสูจน์ดว้ ย Resolution Refutation (2)

Resolution


(A  B)  (B  C) อนุ มานได้เป็ น (A  C)
(A  B)  (B  C) อนุ มานได้เป็ น (A  C)
กาหนด a
•b  c  a
• b
• d  e  c
• ef
• d
• f
a
b  c  a
b  c
d  e  c
b
c
ef
d  e
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y (Study(x)  Lucky(x)  Pass(x,y))
สมชายไม่ได้เรียนแต่สมชายโชคดี


x(Pass(x, HISTORY)  Win(x, LOTTERY)  Happy(x))
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y ([ Study(x)  Lucky(x)]  Pass(x,y))




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))
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)  Lucky(x))  Pass(x,y)

(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)
แยกออกเป็ นประโยคย่อยได้

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)




ตัวอย่ำง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)
ตัวอย่ำง1: พิสูจน์ (1)

จากสมมุติฐานที่ได้
1.
2.
3.
4.
5.
6.

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(สมชาย)
ตัวอย่ำง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(x3)  Pass(x3,y2)
Lucky(สมชาย)
Pass(สมชาย, HISTORY)
{สมชาย/x3, HISTORY/y2}
Lucky(สมชาย)
Lucky(สมชาย)
พิสจ่ น์ได้วา่ สมชายมีความสุข
Happy(สมชาย)
ตัวอย่ำง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 ?
ตัวอย่ำง2: สร้ำงประโยคในรูปแบบของ FOL (1)

Marcus was a man


Marcus was a Pompeian


born(Marcus, 40)
All men are mortal


pompeian(Marcus)
Marcus was born in 40 AD.


man(Marcus)
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


It’s now 2011


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.


now = 2011
Alive means not dead


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))
จงพิสจ่ น์ Marcus is not alive ?

alive(Marcus, now)
ตัวอย่ำง2: เปลี่ยนประโยคให้อยูใ่ นรูป CNF (1)

กาจัด 

x (man(x)  mortal(x))


born(Marcus, 40)

pompeian(Marcus)

now = 2011
x ( man(x)  mortal(x))
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 t ([alive(x, t)  dead(x, t)]  [dead(x,t)  alive(x, t)])



x t1 t2 (mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2))


man(Marcus)
erupted(Volcano, 79)  x(pompeian(x) died(x, 79))



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))
ตัวอย่ำง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)

แยกออกเป็ นประโยคย่อย
1.
man(Marcus)
2.
pompeian(Marcus)
3.
born(Marcus, 40)
4.
 man(x)  mortal(x)
5.
erupted(Volcano, 79)
6.
 pompeian(x)  died(x, 79)
7.
mortal(x)  born(x, t1)  gt(t2-t1, 150)  dead(x, t2))
8.
now = 2011
9.
alive(x, t)  dead(x, t)
10.
 dead(x,t)  alive(x, t)
11.
 died(x, t1)   gt(t2, t1)  dead(x, t2)
ตัวอย่ำง2: เปลี่ยนประโยคให้อยูใ่ นรูป CNF (5)

Standardization ตัวแปร
1.
man(Marcus)
2.
pompeian(Marcus)
3.
born(Marcus, 40)
4.
 man(x1)  mortal(x1)
5.
erupted(Volcano, 79)
6.
 pompeian(x2)  died(x2, 79)
7.
mortal(x3)  born(x3, t1)  gt(t2-t1, 150)  dead(x3, t2))
8.
now = 2011
9.
alive(x4, t3)  dead(x4, t3)
10.
 dead(x5,t4)  alive(x5, t4)
11.
 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
แบบฝึ กหัด (ทำส่ง)
จากข้อม่ลต่อไปนี้

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








กาหนด Predicate
man(x)
pompeian (x)
roman(x)
ruler(x)
loyalto(x, y)
hate(x, y)
tryassasinate(x, y)
people(x)

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


similar documents