โพสนี้อยู่ในหมวด เรียนรู้ logic programming + argumentation นะคะ
จริงๆตอนแรกอยากจะตั้งชื่อโพสวันนี้ว่าบันทึกบทสนทนาเวลาเบื่อๆ ของชาว logic แต่ก็เกรงใจกลัวว่าเดี๋ยวอาจจะเข้าใจผิดได้ว่า เอ... ทำไมต้องเป็นชาว logic ถึงจะคุยอะไรแบบนี้ แต่จริงๆเจตนาเราคือ อยากจะล้อเล่นน่ะค่ะ เนื่องจากว่า วันนี้อาจารย์เราเกิดความรู้สึกเบื่อๆ อยู่ในภาวะไม่มีอะไรทำ พอดีคุยโทรฯกันเรื่องงาน เราก็เลยแก้เบื่ออาจารย์ด้วยการถามคำถามไปซะเลย ฮ่าๆๆๆ
เพราะเราอยากจะรู้(โดยไม่ต้องไปอ่านเองตั้งมากมาย) ว่า symbolic logic กับ classical logic มันต่างกันยังไงนะ
เพื่อป้องกันไม่ให้ตัวเองลืม และเพื่อเป็นการแลกเปลี่ยนความรู้กันกับผู้อ่าน เราก็เลยคิดว่า ควรจะบันทึกบทสนทนาแก้เบื่อวันนี้ไว้ในบล็อกดีกว่า :)
เอาล่ะ เข้าเรื่องเลยนะคะ มาเริ่มที่คำแรกก่อน symbolic logic ผู้อ่านบางท่านอาจจะเคยได้ยินคำนี้ และอาจจะเคยอ่านหนังสือที่เราแนะนำไปแล้วด้วย
แล้วสงสัยกันไหมคะ ว่าคำๆนี้ สื่อถึงอะไร
สั้นๆเลยก็คือ symbolic logic เนี่ย คือ logic ที่เราสามารถนำเสนอมันได้ด้วย symbol ค่ะ ซึ่งถ้าเรามองดู logic ประเภทต่างๆที่เราเคยเห็นผ่านหูผ่านตากันมา มันก็มีแต่ logic ที่แทนค่าด้วย symbol กันทั้งนั้น
ยกตัวอย่างเช่น propositional logic , first order logic , second order logic, description logic , modal logic, logic programming, etc. ลอจิกต่างๆเหล่านี้ เวลาเรา represent มัน เราก็ใช้ symbol นำเสนอ ใช่ไหมคะ
อย่าง propositional logic เราก็ใช้ ตัวอักษร อย่างเช่น p, q อะไรต่างๆ แทน proposition แต่ละอัน ตัว logical connection ก็ แทนด้วย symbol อย่างพวก and, or, implication อะไรทำนองนี้
แน่นอนว่า first order logic ก็ไม่ต่างกันมาก เพราะคล้ายกับ propositional logic ที่เพิ่ม quantifier ขึ้นมา
ดังนั้น ถ้าให้นิยามโดยไอเดียแล้ว symbolic logic คือ การ reasoning ที่เรานำเสนอมันด้วย symbol ต่างๆ นั่นเอง
ต่อมา เราก็มาดู อีกคำนึงที่มักจะได้ยินกันบ่อยๆ รวมถึงในหลายๆโพสที่เราเคยเขียนไว้ก่อนหน้าด้วย
แล้ว classical logic คืออะไรกัน
คำจำกัดความของคำนี้ก็อาจจะเป็นที่ถกเถียงได้นะคะ เราเองไม่ได้หาหลักฐานยืนยัน แต่ว่าขอยืนยันด้วยความเห็นของผู้เชี่ยวชาญด้านนี้(ซึ่งก็คืออาจารย์นั่นเอง) ถ้าผู้อ่านท่านใดมีความคิดเห็นต่าง อยากจะหาข้อสรุปกันเราก็ยินดีค่ะ
ก่อนอื่น เราต้องย้อนไปที่คำว่า monotonic reasoning ก่อนค่ะ หวังว่าคงจะยังจำความหมายคำนี้ได้นะคะ
คือว่า classical logic เนี่ย จะมีลักษณะของ monotonic reasoning ค่ะ แต่ว่า.... ไม่ได้หมายความว่า logic ที่มีลักษณะเป็น monotonic reasoning จะถูกจัดเป็น classical logic เสมอไป
รายละเอียดเรื่อง monotonic reasoning หาอ่านได้จากโพสนี้ค่ะ
ตรงนี้เราจะขอขยายความให้ว่า ยกตัวอย่างเช่น description logic(ไม่นับ extension ของมันก่อนนะคะ) มีลักษณะเป็น monotonic reasoning แต่ว่า มันไม่ได้ถูกนับเป็น classical logic
เพราะว่า... เดิมทีคำว่า classical logic เนี่ยใช้เรียก logic ที่นัก logician เป็นคนคิดกัน เมื่อ 20-30 ปีก่อนมาแล้ว ทีนี้ ตอนหลังๆ อย่าง description logic ก็ถึงจะคลอดออกมาใช้กันในวงการนักคอมพิวเตอร์
ซึ่ง logic หลายๆตัว ในช่วงหลังๆ ก็จะมี extension ของมัน ซึ่งจากลักษณะเดิม ที่เป็น monotonic reasoning เขาก็ปรับให้ extension มันกลายเป็น non-monotonic reasoning อย่างเช่น description logic เป็นต้น
ดังนั้น เพื่อความเข้าใจง่ายๆ เราก็จะขอสรุปว่า classical logic หมายถึง logic สมัยเก่า 20-30 ปีที่แล้ว ที่มีลักษณะเป็น monotonic reasoning ค่ะ
หวังว่า จะช่วยคลายความสงสัยให้กับหลายๆคน รวมถึงตัวเราเองด้วยนะคะ
จบบทสนทนาวันเบื่อๆ กันแค่นี้นะคะ (เป็นโพสเกี่ยวกับลอจิก ที่สั้นที่สุดแล้ว ฮ่าๆๆ)
ถ้าหากโพสนี้มีข้อผิดพลาดประการใด เราขอรับผิดชอบแต่ผู้เดียวนะคะ เพราะเราเกรงว่า สิ่งที่บันทึก เราอาจจะจำผิดพลาด จากบทสนทนาจริงๆได้ เพราะบันทึกจากความจำและที่เราคิดว่าเราเข้าใจค่ะ
ขอให้สนุกกับลอจิกนะคะ :)
แสดงบทความที่มีป้ายกำกับ Propositional Logic แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Propositional Logic แสดงบทความทั้งหมด
วันเสาร์ที่ 18 สิงหาคม พ.ศ. 2561
วันเสาร์ที่ 30 สิงหาคม พ.ศ. 2557
มาเรียน Logic for Computer Science (4 -- Propositional Logic vs First-Order Logic)
สำหรับใครที่เพิ่งเข้ามาหน้านี้ แนะนำว่าให้อ่าน
ที่นี่ ก่อนนะคะ เอาล่ะที่นี้เราจะมาคุยกันต่อเรื่องว่า ทำอย่างไรเราถึงจะนำเสนอรูปแบบข้อมูลให้อยู่ในรูปที่สามารถนำไปทำ reasoning ได้ ซึ่งก็มีทฤษฎี 2 อย่างที่เราจะพูดถึงคือ Propositional logic และ First-Order logic ซึ่งมีความแตกต่างกันอยู่
เพื่อให้เข้าใจได้ง่ายและกระชับ เราจะไม่อธิบายนิยามแต่ละอันไปทีละนิดนะคะ แต่จะชี้ให้เห็นลอจิกทั้งสองรูปแบบ และตอนต่อไปจึงจะเน้นอธิบาย First-Order logic เลยทีเดียว
ก่อนอื่นเรามารู้จักกับคำว่า Formal language กันก่อน ซึ่งก็คือ ภาษาที่ถูกออกแบบมาเพื่อใช้นำเสนอข้อเท็จจริงต่างๆ(arguments) ซึ่งการออกแบบ formal language นี้จำเป็นต้องประกอบไปด้วย 3 ส่วน คือ
1. Lexicon คือ กลุ่มคำศัพท์ที่ใช้ในภาษา
2. Syntax คือ ไวยากรณ์ หรือจะเรียกว่า grammar นั่นเอง
3. Semantic คือการเชื่อมโยงกันระหว่างคำศัพท์กับความหมาย
ดังนั้น ภาษาลอจิก ทั้ง Propositional logic และ First-Order logic ก็จำเป็นที่จะต้องมีทั้งสามส่วนนี้
สมมติว่า เรามีประโยค P= นกแก้วเป็นนก Q=นกทุกตัวสามารถบินได้
ด้วย Propositional logic เราสามารถนำเสนอประโยค P ได้ แต่ไม่สามารถนำเสนอประโยคQ
ในขณะที่ First-Order logic สามารถที่จะนำเสนอได้ทั้ง P และQ
ดังนั้นจะเห็นว่า ปัญหาคือ propositional logic ไม่มีโครงสร้างที่ใช้บ่งบอกปริมาณของนามในประโยค
เรามาพิจารณาโครงสร้างของลอจิกทั้งสองแบบในแต่องค์ประกอบของการออกแบบกันเลยนะคะ
1. Lexicon ไม่มีอะไรแตกต่างกัน ทั้ง Propositional และ First-order จะสนใจแค่ กลุ่มของ symbols ที่ถูกใช้เป็นสัญลักษณ์ในการนำเสนอ statements เท่านั้น
2. Syntax มีความแตกต่าง โดยเฉพาะ First-Order logic มีนิยามขององค์ประกอบมากกว่า ดังสรุปในแผนภาพ
Atom คือ statement (ข้อมูลหรือข้อเท็จจริง)
Formula (Well-formed formula) สามารถที่จะสร้างขึ้นมาได้จากเงื่อนไข 4 ข้อต่อไปนี้
- Atom อันนึงก็ถือเป็น formula
- ถ้าเรามี formula G ใดๆ แล้ว (~G) ก็เป็น formula เหมือนกัน
- ถ้าเรามี formula สองอันใดๆ แล้ว การนำ formula 2 อันนั้นมาเชื่อมกันด้วย logical connectives (and , or , if, iff ) ก็ถือเป็น formula เช่นกัน
- เราจะสร้าง formula ทั้งหมดได้จากการใช้กฎทั้ง 3 ข้างต้นเท่านั้น
จะเห็นว่า สิ่งที่เพิ่มขึ้นมาคือ Quantifier ซึ่งจะมีได้สองแบบ คือ for all กับ for some ใช้นำหน้าตัวแปรใดๆ
และ Atom เอง ก็ไม่ใช่แค่ statement เฉยๆ แต่ว่ามีโครงสร้างที่ซับซ้อนขึ้นเมื่อ
Atom ต้องเป็น Predicate ซึ่ง Predicate นั้นเป็นสัญลักษณ์ที่รับค่า n จำนวนใดๆ และ Predicate เองก็จะทำการ map ค่าไปเป็นคำตอบแค่ จริงหรือเท็จเท่านั้น
ค่าที่จะใส่ลงไปใน Predicate เราเรียกว่า Term ซึ่ง term นั้นสามารถเป็น ค่าคงที่ หรือ ตัวแปร หรือฟังก์ชัน ก็ได้
3. Semantic ในลอจิกส่วนนี้ก็คือ Interpretation นั่นเอง ซึ่งมีความแตกต่างระหว่างลอจิกทั้งสองแบบ เนื่องจากว่าโครงสร้างไวยากรณ์ก็ไม่เหมือนกัน
Propositional Logic มี formula ที่ถูกสร้างมาจาก Atom ซึ่งเป็นแค่ statement เพราะฉะนั้น เราก็เพียงแค่ใส่ค่า ความจริงให้กับแต่ละ atom ว่า Atom/ Statement นั้นเป็นจริงหรือเท็จ แล้วก็ทำการประมวลผลตามหลักตรรกศาสตร์ธรรมดา
ตัวอย่างเช่น
เรากำหนดให้ มี Atom คือ P , Q โดยที่ P และ Q แทนค่า statement ดังนี้
P= นกแก้วเป็นนก ( A parrot is a bird)
Q=นกบินได้ (A bird can fly)
กำหนดให้ formula G = P ∧ P->Q
และตารางกำหนดค่าความจริงของ Propositional Interpretation คือ
ดังนั้น Interpretation ของ G เมื่อเราให้ค่า P,Q = {T,T} จะได้ผลลัพธ์เป็น T ก็แสดงว่า formula G นี้เป็นจริงสำหรับ interpretation นี้ แต่ถ้าเราให้ค่า P,Q ={F,T} ก็จะได้ว่า G เป็นเท็จ สำหรับ interpretation นี้ (คือให้ว่า นกแก้วไม่เป็นนก , นกบินได้)
First-Order Logic นั้น formula ถูกสร้างมาจาก Atom ที่ซับซ้อน ดังนั้นการทำ interpretation ต้องมีการกำหนดค่า Domain ให้กับตัวแปร(variable) , ค่าคงที่ (constant), ผลลัพธ์ของ function และค่าความจริงของ predicate ร่วมด้วย
จากตัวอย่างข้างต้น
เรากำหนดให้ formula G = (∀x) (P(x) -> Q(x))
ให้ predicate P(x) = x เป็นนก (x is a bird) และให้ Q(x) = x บินได้ (x can fly)
ถ้าเรามี domain D = {นกแก้ว (parrot) , เพนกวิน (penguin)}
และมีตารางค่าความจริงของ predicate ของ First-Order Interpretation คือ
ดังนั้น Interpretation ของ G เมื่อเราให้ค่า x เป็น parrot ผลลัพธ์คือ T->T = T ถ้า x เป็น penguin ผลลัพธ์คือ T-> F = F จะเห็นว่า มีตัวแปร x ตัวนึงใน domain D ให้ผลลัพธ์ interpretation เป็น F ดังนั้นเราจะถือว่า formula G เป็นเท็จสำหรับ interpretation
ทีนี้ก็พอจะเห็นความเหมือนและความแตกต่างของลอจิกทั้งสองแบบอย่างคร่าวๆแล้วนะคะ แนะนำว่าให้อ่านเพิ่มเติมอย่างละเอียดจะดีกว่า หนังสือแนะนำ ที่นี่ นะคะ
เพื่อให้เข้าใจได้ง่ายและกระชับ เราจะไม่อธิบายนิยามแต่ละอันไปทีละนิดนะคะ แต่จะชี้ให้เห็นลอจิกทั้งสองรูปแบบ และตอนต่อไปจึงจะเน้นอธิบาย First-Order logic เลยทีเดียว
ก่อนอื่นเรามารู้จักกับคำว่า Formal language กันก่อน ซึ่งก็คือ ภาษาที่ถูกออกแบบมาเพื่อใช้นำเสนอข้อเท็จจริงต่างๆ(arguments) ซึ่งการออกแบบ formal language นี้จำเป็นต้องประกอบไปด้วย 3 ส่วน คือ
1. Lexicon คือ กลุ่มคำศัพท์ที่ใช้ในภาษา
2. Syntax คือ ไวยากรณ์ หรือจะเรียกว่า grammar นั่นเอง
3. Semantic คือการเชื่อมโยงกันระหว่างคำศัพท์กับความหมาย
ดังนั้น ภาษาลอจิก ทั้ง Propositional logic และ First-Order logic ก็จำเป็นที่จะต้องมีทั้งสามส่วนนี้
สมมติว่า เรามีประโยค P= นกแก้วเป็นนก Q=นกทุกตัวสามารถบินได้
ด้วย Propositional logic เราสามารถนำเสนอประโยค P ได้ แต่ไม่สามารถนำเสนอประโยคQ
ในขณะที่ First-Order logic สามารถที่จะนำเสนอได้ทั้ง P และQ
ดังนั้นจะเห็นว่า ปัญหาคือ propositional logic ไม่มีโครงสร้างที่ใช้บ่งบอกปริมาณของนามในประโยค
เรามาพิจารณาโครงสร้างของลอจิกทั้งสองแบบในแต่องค์ประกอบของการออกแบบกันเลยนะคะ
1. Lexicon ไม่มีอะไรแตกต่างกัน ทั้ง Propositional และ First-order จะสนใจแค่ กลุ่มของ symbols ที่ถูกใช้เป็นสัญลักษณ์ในการนำเสนอ statements เท่านั้น
2. Syntax มีความแตกต่าง โดยเฉพาะ First-Order logic มีนิยามขององค์ประกอบมากกว่า ดังสรุปในแผนภาพ
Atom คือ statement (ข้อมูลหรือข้อเท็จจริง)
Formula (Well-formed formula) สามารถที่จะสร้างขึ้นมาได้จากเงื่อนไข 4 ข้อต่อไปนี้
- Atom อันนึงก็ถือเป็น formula
- ถ้าเรามี formula G ใดๆ แล้ว (~G) ก็เป็น formula เหมือนกัน
- ถ้าเรามี formula สองอันใดๆ แล้ว การนำ formula 2 อันนั้นมาเชื่อมกันด้วย logical connectives (and , or , if, iff ) ก็ถือเป็น formula เช่นกัน
- เราจะสร้าง formula ทั้งหมดได้จากการใช้กฎทั้ง 3 ข้างต้นเท่านั้น
จะเห็นว่า สิ่งที่เพิ่มขึ้นมาคือ Quantifier ซึ่งจะมีได้สองแบบ คือ for all กับ for some ใช้นำหน้าตัวแปรใดๆ
และ Atom เอง ก็ไม่ใช่แค่ statement เฉยๆ แต่ว่ามีโครงสร้างที่ซับซ้อนขึ้นเมื่อ
Atom ต้องเป็น Predicate ซึ่ง Predicate นั้นเป็นสัญลักษณ์ที่รับค่า n จำนวนใดๆ และ Predicate เองก็จะทำการ map ค่าไปเป็นคำตอบแค่ จริงหรือเท็จเท่านั้น
ค่าที่จะใส่ลงไปใน Predicate เราเรียกว่า Term ซึ่ง term นั้นสามารถเป็น ค่าคงที่ หรือ ตัวแปร หรือฟังก์ชัน ก็ได้
3. Semantic ในลอจิกส่วนนี้ก็คือ Interpretation นั่นเอง ซึ่งมีความแตกต่างระหว่างลอจิกทั้งสองแบบ เนื่องจากว่าโครงสร้างไวยากรณ์ก็ไม่เหมือนกัน
Propositional Logic มี formula ที่ถูกสร้างมาจาก Atom ซึ่งเป็นแค่ statement เพราะฉะนั้น เราก็เพียงแค่ใส่ค่า ความจริงให้กับแต่ละ atom ว่า Atom/ Statement นั้นเป็นจริงหรือเท็จ แล้วก็ทำการประมวลผลตามหลักตรรกศาสตร์ธรรมดา
ตัวอย่างเช่น
เรากำหนดให้ มี Atom คือ P , Q โดยที่ P และ Q แทนค่า statement ดังนี้
P= นกแก้วเป็นนก ( A parrot is a bird)
Q=นกบินได้ (A bird can fly)
กำหนดให้ formula G = P ∧ P->Q
และตารางกำหนดค่าความจริงของ Propositional Interpretation คือ
ดังนั้น Interpretation ของ G เมื่อเราให้ค่า P,Q = {T,T} จะได้ผลลัพธ์เป็น T ก็แสดงว่า formula G นี้เป็นจริงสำหรับ interpretation นี้ แต่ถ้าเราให้ค่า P,Q ={F,T} ก็จะได้ว่า G เป็นเท็จ สำหรับ interpretation นี้ (คือให้ว่า นกแก้วไม่เป็นนก , นกบินได้)
First-Order Logic นั้น formula ถูกสร้างมาจาก Atom ที่ซับซ้อน ดังนั้นการทำ interpretation ต้องมีการกำหนดค่า Domain ให้กับตัวแปร(variable) , ค่าคงที่ (constant), ผลลัพธ์ของ function และค่าความจริงของ predicate ร่วมด้วย
จากตัวอย่างข้างต้น
เรากำหนดให้ formula G = (∀x) (P(x) -> Q(x))
ให้ predicate P(x) = x เป็นนก (x is a bird) และให้ Q(x) = x บินได้ (x can fly)
ถ้าเรามี domain D = {นกแก้ว (parrot) , เพนกวิน (penguin)}
และมีตารางค่าความจริงของ predicate ของ First-Order Interpretation คือ
ดังนั้น Interpretation ของ G เมื่อเราให้ค่า x เป็น parrot ผลลัพธ์คือ T->T = T ถ้า x เป็น penguin ผลลัพธ์คือ T-> F = F จะเห็นว่า มีตัวแปร x ตัวนึงใน domain D ให้ผลลัพธ์ interpretation เป็น F ดังนั้นเราจะถือว่า formula G เป็นเท็จสำหรับ interpretation
ทีนี้ก็พอจะเห็นความเหมือนและความแตกต่างของลอจิกทั้งสองแบบอย่างคร่าวๆแล้วนะคะ แนะนำว่าให้อ่านเพิ่มเติมอย่างละเอียดจะดีกว่า หนังสือแนะนำ ที่นี่ นะคะ
วันอาทิตย์ที่ 31 มีนาคม พ.ศ. 2556
มาศึกษาทฤษฎี Logic กันเถอะ -- ขั้น Propositional Logic (1)
วันนี้เหม็นกลิ่นน้ำส้มสายชูควันไม้มาก คือว่าที่ห้องเนี่ยจะมี "มด" มาเที่ยวหาตลอด ไม่ว่าจะย้ายไปอยู่ที่ไหนก็ตาม รักกันมาก เอาแป้งฝุ่นโรยก็ป้องกันได้สักพัก พอแป้งเริ่มเกาะตัวไม่เป็นผง พี่มดทั้งหลายก็เดินข้ามกันหน้าตาเฉย เลยต้องลองของเล่นใหม่ น้ำส้มสายชูควันไม้เอามาฉีดตามทางเดินพี่ๆเค้าแหละค่ะ เพราะว่าเราไม่อยากฆ่าให้ตายก็เลยต้องใช้วิธีนี้ เลยทำเอาเรามึนหัวไปซะนานจนต้องนอนกลางวันไปหลายชั่วโมง ตื่นมาก็ตาลายอ่านหนังสือไม่ได้ อิอิ (ข้ออ้างชัดๆ)
โพสอันนี้เก่าแล้ว เราอธิบายก็ไม่ค่อยละเอียดไม่ดีเท่าไหร่ แนะนำว่าคนที่สนใจศึกษาเริ่มอ่าน ที่นี่ ดีกว่าค่ะ โพสอันนี้ถ้าเอาไว้ใช้อ้างอิงตามหนังสือก็พอได้อยู่ แต่จะไม่เข้าใจภาพรวมนัก
สำหรับใครที่หลงเข้ามาหน้านี้ แนะนำให้อ่านทฤษฎี Logic ขั้นแนะนำตัว ก่อนนะคะ เรามาต่อกันเลยดีกว่า จากที่เรารู้แล้วว่าจุดประสงค์เราคือจะทำให้ machine สามารถคิดแบบมีเหตุมีผลได้ ถ้าเราดูจากตัวอย่างที่แล้วเนี่ย เรามีข้อมูล(knowledge) อยู่ที่ว่า "ถ้าเป็นนก แล้วจะบินได้" แล้วเราก็มีความจริง (fact) ที่ว่า "นางนวลเป็นนก" เราก็เลยสรุปเอาว่า "นางนวลบินได้" เพราะเราสรุปตามความเชื่อที่เรามี
ทีนี้ปัญหาใหญ่ก็คือ แล้วจะเก็บข้อมูลเหล่านี้ยังไงล่ะ เพื่อที่จะได้นำเอามาประมวลผลในกฎหรือข้อมูลความเชื่อที่เรามีได้ สำหรับรูปแบบง่ายที่สุดของแบบฟอร์มที่ใช้ก็คือ Propositional Logic ค่ะ ต่อจากนี้ไปจะขออธิบายทฤษฎีของ Propositional Logic แล้วนะคะ จะพยายามอธิบายเป็นทีละคำศัพท์ไปค่ะ
เราคงอยากที่จะเขียนกฎที่ใช้ประมวลผลหาข้อสรุปจากข้อมูลจนได้มาว่า "นกนางนวลบินได้" แต่ว่าเราจะเขียนอย่างนั้นใน machine ได้อย่างไร ปัญหาหลักคือประโยคเหล่านั้นจะเก็บอย่างไร ต่อจากนี้จะอธิบายรูปแบบการเก็บข้อมูล Well-formed formulas หรือ formulas ของ Propositional Logic นะคะ แต่จะเริ่มอธิบายจากหน่วยย่อยๆก่อน
Logical Connectives คือตัวกระทำการต่างๆ มี 5 ชนิด คือ not, and , or , if...then, if and only if ดังรูปค่ะ
Compound Proposition คือการนำเอา proposition ที่เรามี มากระทำกันผ่าน logical connective นอกจากนี้เรายังสามารถนำ compound proposition มากระทำกับ logical connective ซ้ำได้อีกทำให้เกิด compound proposition ที่ซับซ้อนขึ้นเรื่อยๆได้ค่ะ ตัวอย่างเช่น เรามีประโยคว่า
เรามี proposition ทั้ง 3 อันด้านบนแล้ว เราก็จะนำมาใช้กระทำกับ logical connective เพื่อเขียนแทนประโยคนี้ ได้ดังนี้ If P and Q , then R
เมื่อเรารู้จักหน่วยย่อยๆทั้งหมดแล้วทีนี้ก็ถึงเวลาที่จะต้องมารู้จักกับ formulas แล้วล่ะค่ะ นิยามของ formulas มีดังนี้
Definition : Well-formed formulas, or formulas for short, in the propositional logic are defined recursively as follows:
สรุปจากนิยามง่ายๆนะคะ ก็คือ เราถือว่า atom อย่างเดียวก็เป็น formula หรือถ้าเรา ~ atom ก็เป็น formula เช่นกัน (proposition) หรือเราจะเอามันไปทำกับ logical connectives ก็เป็น formula (compound proposition)
ตัวอย่าง ถ้าอย่างเขียนว่า (P∨) อย่างนี้ไม่เป็น formula เพื่อป้องกันความสับสน ถึงจะเขียนโดยไม่มี ( ) ก็ยังเป็น formula อยู่ เช่น P∨Q
ถ้าไม่มี () ต้องคำนึงถึงลำดับความสำคัญของ logical connective ด้วย ซึ่งเราจะเรียงความสำคัญจากน้อยไปมาก (ซ้ายไปขวา) ดังต่อไปนี้ ↔ → ∧ ∨ ~
สุดท้ายของวันนี้ก็คือเรื่องการกำหนดค่าความจริงให้กับ formulas ของเรา ตรงนี้เหมือนกับที่เราเรียนตรรกศาสตร์ม. 4 เลยค่ะ ขอสรุปเป็นดังตารางข้างล่างนะคะ
แปลให้ฟังง่ายๆก็คือ ถ้าเราให้ G เป็น T และให้ H เป็น T แล้ว เราหา G∧ H ค่าความจริงของมันจะเป็น T
เอาล่ะค่ะ คิดว่าวันนี้เนื้อหายาวมากแล้ว ทีนี้ก็รู้จักรูปแบบการเก็บข้อมูลในแบบที่ง่ายที่สุดคือ propositional logic กันไปแล้ว คงพอจะมองเห็นแล้วใช่มั้ยคะว่าต่อไป machine จะเอาไปคิดหาเหตุผลได้อย่างไร ไว้โอกาสหน้ามีเวลาว่าง ตาลายเมื่อไหร่ จะมาเขียนต่อนะคะ บ๊ายบาย
โพสอันนี้เก่าแล้ว เราอธิบายก็ไม่ค่อยละเอียดไม่ดีเท่าไหร่ แนะนำว่าคนที่สนใจศึกษาเริ่มอ่าน ที่นี่ ดีกว่าค่ะ โพสอันนี้ถ้าเอาไว้ใช้อ้างอิงตามหนังสือก็พอได้อยู่ แต่จะไม่เข้าใจภาพรวมนัก
สำหรับใครที่หลงเข้ามาหน้านี้ แนะนำให้อ่านทฤษฎี Logic ขั้นแนะนำตัว ก่อนนะคะ เรามาต่อกันเลยดีกว่า จากที่เรารู้แล้วว่าจุดประสงค์เราคือจะทำให้ machine สามารถคิดแบบมีเหตุมีผลได้ ถ้าเราดูจากตัวอย่างที่แล้วเนี่ย เรามีข้อมูล(knowledge) อยู่ที่ว่า "ถ้าเป็นนก แล้วจะบินได้" แล้วเราก็มีความจริง (fact) ที่ว่า "นางนวลเป็นนก" เราก็เลยสรุปเอาว่า "นางนวลบินได้" เพราะเราสรุปตามความเชื่อที่เรามี
ทีนี้ปัญหาใหญ่ก็คือ แล้วจะเก็บข้อมูลเหล่านี้ยังไงล่ะ เพื่อที่จะได้นำเอามาประมวลผลในกฎหรือข้อมูลความเชื่อที่เรามีได้ สำหรับรูปแบบง่ายที่สุดของแบบฟอร์มที่ใช้ก็คือ Propositional Logic ค่ะ ต่อจากนี้ไปจะขออธิบายทฤษฎีของ Propositional Logic แล้วนะคะ จะพยายามอธิบายเป็นทีละคำศัพท์ไปค่ะ
เราคงอยากที่จะเขียนกฎที่ใช้ประมวลผลหาข้อสรุปจากข้อมูลจนได้มาว่า "นกนางนวลบินได้" แต่ว่าเราจะเขียนอย่างนั้นใน machine ได้อย่างไร ปัญหาหลักคือประโยคเหล่านั้นจะเก็บอย่างไร ต่อจากนี้จะอธิบายรูปแบบการเก็บข้อมูล Well-formed formulas หรือ formulas ของ Propositional Logic นะคะ แต่จะเริ่มอธิบายจากหน่วยย่อยๆก่อน
Proposition คือประโยคบอกเล่า (declarative sentence) ที่มีค่าเป็นแค่จริง (true) หรือเท็จ (false) อย่างใดอย่างหนึ่ง
ตัวอย่างเช่น Humidity is high. และ Temperature is high. และ One feels comfortable.
ทีนี้เราก็ใช้สัญลักษณ์แทน proposition เพราะต่อไปเราจะต้องนำมันไปใช้อีกใช่มั้ยคะ ก็นิยมจะใช้ตัวอักษรภาษาอังกฤษพิมพ์ใหญ่แทนแต่ละ proposition ค่ะ เช่น P, Q, R ,S ,...
ดังนั้นเราก็จะได้ว่า
P ≜ Humidity is high.
Q ≜ Temperature is high.
R ≜ One feels comfortable.
สัญลักษณ์ ≜ (denote) หมายถึงเรากำหนดให้ สัญลักษณ์แทนประโยคอะไรนะคะ
Atomic formulus หรือ atoms คือ proposition ต่างๆนี่แหละค่ะ (แต่มองในรูปแบบของสัญลักษณ์ P, Q, R,...)
Logical Connectives คือตัวกระทำการต่างๆ มี 5 ชนิด คือ not, and , or , if...then, if and only if ดังรูปค่ะ
Compound Proposition คือการนำเอา proposition ที่เรามี มากระทำกันผ่าน logical connective นอกจากนี้เรายังสามารถนำ compound proposition มากระทำกับ logical connective ซ้ำได้อีกทำให้เกิด compound proposition ที่ซับซ้อนขึ้นเรื่อยๆได้ค่ะ ตัวอย่างเช่น เรามีประโยคว่า
If the humidity is high
and the temperature is high , then one does not feel comfortable
Definition : Well-formed formulas, or formulas for short, in the propositional logic are defined recursively as follows:
- An atom is a formula.
- If G is a formula, then (~G) is a formula.
- If G and H are formulas, then (G∧ H) ,(G∨ H) , (G→ H) ,and (G↔ H) are formulas.
- All formulas are generated by applying the above rules
สรุปจากนิยามง่ายๆนะคะ ก็คือ เราถือว่า atom อย่างเดียวก็เป็น formula หรือถ้าเรา ~ atom ก็เป็น formula เช่นกัน (proposition) หรือเราจะเอามันไปทำกับ logical connectives ก็เป็น formula (compound proposition)
ตัวอย่าง ถ้าอย่างเขียนว่า (P∨) อย่างนี้ไม่เป็น formula เพื่อป้องกันความสับสน ถึงจะเขียนโดยไม่มี ( ) ก็ยังเป็น formula อยู่ เช่น P∨Q
ถ้าไม่มี () ต้องคำนึงถึงลำดับความสำคัญของ logical connective ด้วย ซึ่งเราจะเรียงความสำคัญจากน้อยไปมาก (ซ้ายไปขวา) ดังต่อไปนี้ ↔ → ∧ ∨ ~
สุดท้ายของวันนี้ก็คือเรื่องการกำหนดค่าความจริงให้กับ formulas ของเรา ตรงนี้เหมือนกับที่เราเรียนตรรกศาสตร์ม. 4 เลยค่ะ ขอสรุปเป็นดังตารางข้างล่างนะคะ
G
|
H
|
~G
|
G∧ H
|
G∨ H
|
G→ H
|
G↔ H
|
T
|
T
|
F
|
T
|
T
|
T
|
T
|
T
|
F
|
F
|
F
|
T
|
F
|
F
|
F
|
T
|
T
|
F
|
T
|
T
|
F
|
F
|
F
|
T
|
F
|
F
|
T
|
T
|
แปลให้ฟังง่ายๆก็คือ ถ้าเราให้ G เป็น T และให้ H เป็น T แล้ว เราหา G∧ H ค่าความจริงของมันจะเป็น T
เอาล่ะค่ะ คิดว่าวันนี้เนื้อหายาวมากแล้ว ทีนี้ก็รู้จักรูปแบบการเก็บข้อมูลในแบบที่ง่ายที่สุดคือ propositional logic กันไปแล้ว คงพอจะมองเห็นแล้วใช่มั้ยคะว่าต่อไป machine จะเอาไปคิดหาเหตุผลได้อย่างไร ไว้โอกาสหน้ามีเวลาว่าง ตาลายเมื่อไหร่ จะมาเขียนต่อนะคะ บ๊ายบาย
สมัครสมาชิก:
บทความ (Atom)
-
วันนี้เหม็นกลิ่นน้ำส้มสายชูควันไม้มาก คือว่าที่ห้องเนี่ยจะมี "มด" มาเที่ยวหาตลอด ไม่ว่าจะย้ายไปอยู่ที่ไหนก็ตาม รักกันมาก เอาแป้งฝุ...
-
ที่มาภาพ http://en.wikipedia.org/wiki/Spirited_Away Spirited Away เรื่องนี้ถ้าแปลตามตัวก็คือเรื่องจิตวิญญาณที่หายไป แต่ว่าชื่อในภาษาญี่ป...
-
สำหรับใครที่เพิ่งเข้ามาหน้านี้ แนะนำว่าให้อ่าน ที่นี่ ก่อนนะคะ เอาล่ะที่นี้เราจะมาคุยกันต่อเรื่องว่า ทำอย่างไรเราถึงจะนำเสนอรูปแบบข้อมูลให้...




