ตรรกศาสตร์: รูปแบบปกติสโกเล็ม
ต่อจากที่ค้างไว้คราวที่แล้ว เราได้รูปแบบประพจน์ที่ เครื่องหมายนิเสธอยู่ในสุดแล้ว (บางคนเรียกรูปแบบนี้ว่า Negation Normal Form หรือ รูปแบบปกตินิเสธ) หน้าตาแบบนี้...
∀x[(∃y[P(x, y) ∧ ∀z[¬Q(x, y, z)]] ∨ R(x)) ∧
(∀y[¬P(x, y) ∨ ∃z[Q(x, y, z)] ∨ ¬R(x))]
(∀y[¬P(x, y) ∨ ∃z[Q(x, y, z)] ∨ ¬R(x))]
เดี๋ยวเราจะหาทางทำให้อยู่ในรูปแบบปกติประพจน์รวมให้ได้ ซึ่งมีขั้นตอนหลัก 2 ขั้น คือ
- กำจัด ∃
- ขยับ ∀ ไปไว้นอกสุด
∀x[∃y[P(x, y)]] เป็นจริง
ก็ต่อเมื่อ
มีฟังก์ชัน f(x) ที่ทำให้ ∀x[P(x, f(x))] เป็นจริง
ก็ต่อเมื่อ
มีฟังก์ชัน f(x) ที่ทำให้ ∀x[P(x, f(x))] เป็นจริง
เราเรียก f ว่าเป็น "ฟังก์ชันสโกเล็ม (Skolem Function)" จากรูปประพจน์เดิมคือ
∀x[(∃y[P(x, y) ∧ ∀z[¬Q(x, y, z)]] ∨ R(x)) ∧
(∀y[¬P(x, y) ∨ ∃z[Q(x, y, z)] ∨ ¬R(x))]
(∀y[¬P(x, y) ∨ ∃z[Q(x, y, z)] ∨ ¬R(x))]
พอกำจัด ∃ โดยการแทนฟังก์ชันสโกเล็มลงไป ก็จะเป็น
∀x[((P(x, f(x)) ∧ ∀z[¬Q(x, f(x), z)]) ∨ R(x)) ∧
(∀y[¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))]
(∀y[¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))]
หมายเหตุ: g(x, y) มีพารามิเตอร์ 2 ตัว ก็เพราะว่า มันแทน ∃z ที่อยู่ใน scope ของ ∀x∀y
ในกรณีที่มี ∃ มากกว่า 1 ตัวซ้อนกัน ก็ไม่ต้องเอาไปเพิ่มเป็นพารามิเตอร์นะ เช่น
∀a∃b∀c∃d[P(a, b, c, d)]
จะกลายเป็น
∀a∀c[P(a, f(a), c, g(a, c)]
จะกลายเป็น
∀a∀c[P(a, f(a), c, g(a, c)]
ตอนนี้ เราได้ประพจน์ใน รูปแบบปกติสโกเล็ม (Skolem Normal Form) แล้ว กลับมาที่ประพจน์เดิมของเราอีกที
∀x[((P(x, f(x)) ∧ ∀z[¬Q(x, f(x), z)]) ∨ R(x)) ∧
(∀y[¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))]
(∀y[¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))]
คราวนี้จะ ผลัก ∀ ไปไว้นอกสุดด้วยกัน หมดเลย มันจะหน้าตาแบบนี้
∀x∀z∀y[((P(x, f(x)) ∧ ¬Q(x, f(x), z)) ∨ R(x)) ∧
(¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))]
(¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))]
โชคดี ที่ไม่มีตัวแปรหน้าตาซ้ำกัน แต่ถ้ามันซ้ำกัน (อยู่ที่ ∀ หรือ ∃ คนละตัว) เราจะใช้หลักการนี้...
∀x[P(x)] ∧ ∀x[Q(x)]
จะเทียบเท่ากับ
∀x∀y[P(x) ∧ Q(y)]
จะเทียบเท่ากับ
∀x∀y[P(x) ∧ Q(y)]
และ
∀x[P(x)] ∨ ∀x[Q(x)]
จะเทียบเท่ากับ
∀x∀y[P(x) ∨ Q(y)]
จะเทียบเท่ากับ
∀x∀y[P(x) ∨ Q(y)]
จะเห็นว่า เราแก้ปัญหาได้ง่าย ๆ โดย กำหนดตัวแปรใหม่ (ให้ชื่อไม่ซ้ำกับตัวที่มีอยู่แล้ว) ... กลับมาที่ประพจน์ของเราอีกที คราวนี้ ∀ อยู่นอกสุดหมดแล้ว เราก็เอามันออกไปเลย แล้วคิดซะว่า ตัวแปรทุกตัวมี ∀ อยู่ หน้าตาของประพจน์เราจะกลายเป็น
((P(x, f(x)) ∧ ¬Q(x, f(x), z)) ∨ R(x)) ∧
(¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))
(¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x))
คราวนี้ก็สามารถทำเป็น รูปแบบปกติประพจน์รวม (Conjunctive Normal Form) ได้แล้ว ผลคือ จะได้วรรค 3 วรรค คือ
P(x, f(x)) ∨ R(x)
¬Q(x, f(x), z) ∨ R(x)
¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x)
¬Q(x, f(x), z) ∨ R(x)
¬P(x, y) ∨ Q(x, y, g(x, y)) ∨ ¬R(x)
บางที เราก็เรียกการเขียนเป็นวรรค ๆ ว่า รูปแบบวรรค (Clause Form)
วันนี้จบเรื่องละ
0 Comments:
Post a Comment
<< Home