วันศุกร์ที่ 17 ตุลาคม พ.ศ. 2557

ดูซีรีย์ดนตรีคลาสสิค -- Buzzer beat กับ Nodame Cantabile

พักยกเรื่องทฤษฎีลอจิกชั่วคราว อยากเล่าเรื่องบันเทิงๆบ้าง ด้วยความที่เราชอบดูหนังของ Studio Ghibli อยู่แล้ว และชื่นชอบในเพลงประกอบหนังอย่างมาก ก็ไปเจอะเข้ากับวีดีโอ

Joe Hisaishi in Budokan - Studio Ghibli 25 Years Concert

ถ้าใครที่เป็นแฟนหนังค่ายนี้ แนะนำว่าให้หาชมและรับฟังเสียให้ได้ เพราะมากๆค่า เราฟังซ้ำๆทุกวันฟังมันทุกเพลง ชอบ Always with me จากเรื่อง spirited away มากที่สุด แต่เพลงนี้ไม่ได้แต่งโดยคุณ Joe ก็เลยไม่มีในคอนเสิร์ตนี้นะคะ

พอฟังเพลงจากวงออเคสตร้าแล้วก็นึกได้ว่า  โอ๊ะมีซีรีย์ญี่ปุ่นที่เราชอบมากๆอยู่สองเรื่อง ลืมพูดถึงไปได้อย่างไรกันนี่
Nodame Cantabile เรื่องนี้เก่าแล้ว สร้างมาจากการ์ตูน เนื้อเรื่องก็ประมาณว่า จิอากิ(พระเอก)ที่เป็นลูกชายนักเปียโน มีความฝันอยากจะเป็นวาทยากรผู้ควบคุมวงออเคสตร้ามาตั้งแต่เด็ก เนื่องจากประทับใจในตัวนักวาทยากรระดับโลกคนนึง จิอากิมีพรสวรรค์ในด้านการฟังแยกแยะเสียงดนตรี เล่นเครื่องดนตรีได้หลายชนิด เก่งโดยเฉพาะเปียโน
ส่วนโนดาเมะ (นางเอก) มีพรสวรรค์ในการเล่นเปียโน แต่อ่านโน๊ตไม่เป็น เล่นโดยอาศัยการจำทั้งนั้น และชอบเล่นตามอารมณ์ตัวเอง ทำให้ออกจะเล่นมั่วอยู่บ่อยๆ

ทีนี้ จิอากิกับโนดาเมะเรียนที่มหาวิทยาลัยด้านดนตรีที่เดียวกัน มีห้องพักอยู่ติดกัน เรื่องวุ่นๆก็เลยเกิดขึ้น

พล็อตเรื่องหลักจะเป็นการแก้ปมปัญหาของพระเอกที่ต้องการเป็นวาทยากร ทั้งที่เขามีความสามารถแต่ไปเรียนต่อต่างประเทศไม่ได้ เพราะจิอากิกลัวการขึ้นเครื่องบิน แต่พอดีมีวาทยากรระดับโลกอีกคนมาสอนที่มหาวิทยาลัยที่จิอากิเรียน จิอากิก็เลยถือโอกาสนี้อยากเป็นลูกศิษย์ แต่....มันไม่ได้เป็นกันง่ายๆอย่างที่คิดหรอกค่ะ ถึงอย่างนั้นจิอากิก็ได้ฝึกฝนตามเส้นทางของการเป็นวาทยากร ร่วมกับเพื่อนๆที่มหาวิทยาลัยของเขา

ขอบอกก่อนว่าเรื่องนี้ ซีรีย์ญี่ปุ่นทำมาได้ดีมากนักแสดงที่เป็นตัวเอกทั้งหมด แสดงดีและหน้าตารวมถึงบุคลิกเหมาะกับเนื้อเรื่องมากๆเลย
ส่วนนิสัยของตัวละคร เนื่องจากเรื่องนี้ดัดแปลงมาจากการ์ตูน ก็จะมีกลิ่นอายความเวอร์แบบการ์ตูนผสมอยู่ อย่างเช่น จิอากิมีนิสัยเย็นชา ขี้โมโห เจ้าระเบียบ แต่โนดาเมะ มีนิสัยตรงกันข้ามกับเขา ห้องของโนดาเมะสกปรกซกมกมาก ถึงขั้นสารพัดแมลงมาอาศัยอยู่ กลิ่นขยะเหม็นเน่า แถมเธอก็ไม่ค่อยอาบน้ำสระผม ชอบขโมยอาหารเพื่อนไปกิน

โนดาเมะ ก็ตื๊อพระเอกสุดฤทธิ์ คือถ้าไม่ได้ลูกตื๊อคงไม่ได้หัวใจพระเอกมาครองอ่ะค่ะ ไม่อยากเล่ารายละเอียดเยอะ แต่อยากบอกว่าถ้าใครชอบละครแนว ให้กำลังใจ พยายามต่อสู้เพื่อฝัน และตลกๆ แนะนำเลย

เพลงที่ใช้ในละครก็เพราะมาก ขนาดเราไม่รู้จักเพลงคลาสสิคสักเพลง พอดูเรื่องนี้ชอบไปเลย
อยากบอกว่า เรื่องนี้เวอร์ชันละครญี่ปุ่น พระเอก นางเอก คู่รักไวโอลิน แคสหน้าตามาได้สวยหล่อน่ารักสมบทบาทมาก  คือบทนางเอกกับเพื่อนๆนี่ ถ้าไม่ติ๊งต๊องไม่รั่วมันจะไม่ใช่เลย
เสียดายอย่างเดียว บทหวานระหว่างพระเอกกับนางเอกนี่น้อยมาก เรียกว่าแทบไม่มีเลยก็ได้เหอะ มันเลยไม่ค่อยซึ้งหรือประทับใจในความรักเท่าไหร่ จะไปเน้นความฮา ตลก และมิตรภาพของเพื่อนมากกว่า

เรื่องนี้ชอบการแสดงของนางเอกมาก บวกกับหน้าตาที่น่ารักเป็นทุนเดิม ทำให้เล่นบทโนดาเมะรั่วได้ใจเป็นเอกลักษณ์มากเลย ดูแล้วลงตัวสุดๆ 

ปล. ตอนนี้มีเวอร์ชันละครเกาหลีออกมา เพิ่งดูได้ 2 ตอน ไม่ค่อยประทับใจเท่าไหร่ พระเอกทำผมทรงนี้ไม่หล่อ และนางเอกก็ดูไม่รั่วแบบธรรมชาติ เนื้อเรื่องก็รวบรัดไปหน่อยสำหรับสองตอนแรก เพลงก็ฟังแล้วไม่อินไม่อลังการเท่าเวอร์ชันญี่ปุ่น

Buzzer Beat เรื่องนี้ก็เก่าแล้วเช่นกัน พระเอกหล่อแต่แสดงแข็งไปหน่อย เลยทำให้อารมณ์มันไม่สุดเวลาอยู่ในฉากพีค แต่รวมๆก็ใช้ได้ ที่สะดุดคือนางเอกค่ะ น้องเคย์โกะ เล่นเรื่องนี้ได้น่ารักน่าชัง สวยสมวัยและเหมาะกับบทของหญิงสาวนักไวโอลินที่แสนจะน่ารัก ร่าเริงจริงๆ

เนื้อเรื่องคือ พระเอกเป็นนักบาสอาชีพที่ยังไม่ได้โด่งดังหรือฟอร์มดีมากนัก ส่วนนางเอกเป็นนักไวโอลินที่ตกงาน ได้แต่ทำงานพาร์ทไทม์ แต่เนื่องจากว่าความรักที่จะมุ่งไปสู่ฝัน ก็ทำให้ทั้งพระเอกและนางเอกต่างพยายามไขว่คว้าตามเส้นทางฝันของตน
ทีนี้ บังเอิญว่าสองคนนี้ได้มารู้จักกัน ก็เลยกลายเป็นเพื่อนปรับทุกข์และให้กำลังใจกัน นานวันเข้านางเอกของเราก็หลงรักพระเอกก่อน ซึ่งพระเอกก็มีแฟนอยู่แล้ว แต่กำลังอยู่ในสถานะคลอนแคลน
ส่วนโค้ชทีมบาสของพระเอกก็ชอบนางเอก และอยู่ในสถานะดูใจกันอยู่

เรื่องนี้จะเน้นความรัก ดังนั้นพล็อตเรื่องหลัก จะเป็นเรื่องความรักอันแสนวุ่นวาย มากกว่าจะโชว์ให้เห็นฉากในสนามบาส หรือการแสดงไวโอลินของนางเอก แต่ก็ยังคงสอดแทรกปัญหาที่เกิดขึ้นในการทำงานของคนทั้งคู่ออกมาให้เห็นเรื่อยๆ ทั้งตอนพระเอกเจ็บขาลงแข่งไม่ได้ ตอนมีคู่แข่ง หรืออย่างตอนที่นางเอกโดนลูกค้าที่ร้านอาหารตำหนิเรื่องการเล่นไวโอลิน
ซึ่งเราคิดว่า ปัญหาชีวิตการทำงานที่แทรกเข้ามา ถูกหยิบเข้ามาเป็นปม ให้พระเอกกับนางเอกแก้ไข คือเหมือนกับทำให้เห็นว่า คนรักกันย่อมร่วมทุกข์ร่วมสุข หรือเมื่อเกิดปัญหาส่วนตัวเข้ามาอีกฝ่ายจะช่วยให้กำลังใจกันอย่างไร

เรื่องนี้ขออวยนางเอกอย่างออกหน้าออกตา น้องเคย์โกะน่ารักน่าหยิกจริงๆ ยิ้มแต่ละทีโลกสดใสเหลือเกิน ชอบอีกอย่างที่ นางเอกดูภายนอกแต่งตัวบุคลิกดี แต่จริงๆกลับไม่มีความเป็นแม่บ้านแม่เรือนเลย ห้องก็รก ในขณะที่เพื่อนสนิทของนางเอก แต่งตัวดูป้าๆไม่โดดเด่น กลับเป็นคนรักความสะอาดเรียบร้อย

ส่วนพระเอกก็ได้หน้าตาหล่อ เหมาะกับบุคลิกชายหนุ่มนิสัยดี พูดน้อย ดูแลครอบครัวที่มีแม่กับน้องสาวเลยทำให้ทำงานบ้านได้ แต่....ถ้าจะแสดงให้ได้อารมณ์กว่านี้จะดีมากเลย

เรื่องนี้ชอบที่สุดก็คือทุกฉากที่พระเอกกับนางเอกเจอกันที่สนามบาสด้านหลังห้องพักนางเอก คืออารมณ์มันจะเหมือนเพื่อนใหม่ที่มาเจอกันแต่มีอะไรบางอย่างคล้ายๆกัน ทำให้ปรับทุกข์พูดคุยกันได้อย่างสนิทใจ
ขอบอกว่าชอบเพลงประกอบละครเรื่องนี้มาก ชอบเสียงไวโอลินเป็นที่สุด
จริงๆ อยากจะเม้าในรายละเอียดของละครเหมือนกัน แต่มันจะยาวไปขี้เกียจพิมพ์ คนอ่านก็คงขี้เกียจอ่าน ฮ่าๆๆ

สรุปสั้นๆว่าขอแนะนำสาวกซีรีย์ที่ยังไม่เคยดูละครสองเรื่องนี้ รีบหาดูกันนะคะ ดูแล้วจะอิ่มเอิบหัวใจ ยิ้มหวานโลกสดใส และรักในเสียงดนตรี ^ ^

วันเสาร์ที่ 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

ทีนี้ก็พอจะเห็นความเหมือนและความแตกต่างของลอจิกทั้งสองแบบอย่างคร่าวๆแล้วนะคะ แนะนำว่าให้อ่านเพิ่มเติมอย่างละเอียดจะดีกว่า หนังสือแนะนำ ที่นี่ นะคะ

มาเรียน Logic for Computer Science (3 -- Natural Deduction ภาคสรุป)

ตอนนี้เราก็รู้จัก Natural Deduction ทั้ง 10 ข้อแล้วนะคะ สำหรับใครที่เพิ่งเข้ามาหน้านี้ แนะนำว่าให้อ่าน ที่นี่ ก่อนจะเข้าใจได้มากกว่าค่ะ
เราจะมาดูกันว่า วิธีการให้เหตุผลแบบนิรนัยนั้นจะสามารถนำมาใช้ได้อย่างไร

ตัวอย่างเช่น เราต้องการที่จะพิสูจน์ให้เห็นว่า A->B , B->C แล้ว  A->C
เราจะสมมติว่า A = ท้องฟ้ามีเมฆครึ้มและฟ้าร้อง, B = ฝนตก, C = พื้นถนนเปียก
ดังนั้น เรากำลังจะพิสูจน์ โดยมีข้อเท็จจริงที่ว่า
1. ถ้าท้องฟ้ามีเมฆครึ้มและฟ้าร้อง แล้วฝนตก  
2. ถ้าฝนตก แล้วพื้นถนนเปียก
ดังนั้น ถ้าท้องฟ้ามีเมฆครึ้มและฟ้าร้องแล้วพื้นถนนเปียก
 สามารถเขียน derivation ได้แบบนี้ค่ะ
     ท้องฟ้ามีเมฆครึ้มและฟ้าร้อง       (ท้องฟ้ามีเมฆครึ้มและฟ้าร้อง->ฝนตก)
         _________________________________________________(-> E)
                                          ฝนตก                                              (ฝนตก->พื้นถนนเปียก)
                                           _____________________________________________(-> E)
    พื้นถนนเปียก
 ____________________________________________(->I)
(ท้องฟ้ามีเมฆครึ้มและฟ้าร้อง -> พื้นถนนเปียก )

จะเห็นว่า เริ่มต้นพิสูจน์โดยการที่เราให้ discharged statement= ท้องฟ้ามีเมฆครึ้มและฟ้าร้อง (มีไฮไลท์สีเหลือง)  และใช้ implication elimination rule สองครั้ง และสุดท้ายจึงใช้ implication introduction rule (ซึ่งทำให้ต้อง discharge statement)

จากตัวอย่างนี้ คงจะทำให้พอมองออกแล้วนะคะว่า จริงๆแล้วมนุษย์เรามีการสรุปหาเหตุผลจากข้อเท็จจริงที่มีอยู่กันอย่างไร (ซึ่งได้อธิบายไปแล้วด้วย natural deduction 10 ข้อ)
ทีนี้ปัญหาต่อไปคือ ถ้าเราต้องการให้คอมพิวเตอร์ สามารถที่จะคิดหาเหตุผลแบบมนุษย์บ้างล่ะ  เราจะกำหนดรูปแบบต่างๆเหล่านี้ให้คอมพิวเตอร์ประมวลผลได้อย่างไร

สรุปโดยคร่าวๆเท่าที่เราพอเข้าใจนะคะ คือว่าจะเห็นว่า มนุษย์เราพิสูจน์หาว่า อะไรที่เป็นผลลัพธ์ที่มาจากข้อมูลที่มีอยู่บ้าง ซึ่งตรงนี้ถ้าจะให้คอมพิวเตอร์ประมวลผลได้ ก็ต้องทำการเก็บรูปแบบวิธีการคิดแบบนี้เข้าไปในคอมพิวเตอร์ให้คิดให้เรา ซึ่งทฤษฎีลอจิกที่คุ้นเคยกันดี ก็มี Propositional logic และ First-Order logic ซึ่ง ความแตกต่างของสองอันนี้อยู่ตรงที่
Propositional logic ใช้นำเสนอข้อมูล statement ธรรมดาที่ไม่ได้คำนึงถึงคำบอกปริมาณ ดังนั้นทำให้มันไม่สามารถที่จะนำเสนอข้อมูลตามความเป็นจริงได
First-Order logic จึงถูกสร้างขึ้นมาทดแทนข้อเสียตรงนั้น

เมื่อเราเก็บรูปแบบข้อมูลด้วย First-Order logic ได้แล้ว ต่อไปก็จะพูดถึงทฤษฎีที่ทำการพิสูจน์หาผลลัพธ์ของข้อมูลที่เรามีอยู่ เรียกว่า Logical consequence

จุดนี้ก็จะเห็นว่า ในทางทฤษฎี เรามีครบละ มีส่วนที่นำเสนอรูปแบบข้อมูล กับส่วนที่ทำการ deduce แต่ว่าเวลาจะนำไปใช้จริงล่ะ ก็มีทฤษฎีที่ชื่อว่า Herbrand's Theorem ที่แนะนำวิธีการนำไป implement ในคอมพิวเตอร์ให้ แต่!!!! ปัญหาคือมันเป็นไปได้ยากมากที่จะประสิทธิภาพของคอมพิวเตอร์จะรองรับไหว ต่อมาจึงมีทฤษฎี Resolution ที่นำ Herbrand's Theorem มาปรับใช้ได้จริง

สุดท้ายภาษาสำหรับเขียนโปรแกรมที่ถูก implement มาจากแนวคิด logic programming นี้ก็คือ ภาษา Prolog นั่นเองค่ะ แต่ว่าใน Prolog เองก็ยังมีเทคนิคอื่นๆเพิ่มเติมไปอีกนิดหน่อยนะคะ

เราคิดว่าเราคงจะไม่อธิบายทฤษฎีทั้งหมดนี้อย่างละเอียด เพราะมันมีแต่นิยามทฤษฎีเต็มไปหมด เราคงจะพูดถึงแค่แนวคิดกับการนำไปใช้อย่างง่ายๆ เพื่อเป็นแนวทางให้คนที่สนใจสามารถไปศึกษาต่อเพิ่มเติมได้ต่อไปค่ะ (เอาจริงๆมันอธิบายยากมากเลยล่ะ ไม่รู้จะอธิบายยังไงให้เข้าใจง่าย ฮ่าๆๆ)

เหมือนเดิม เราขอออกตัวก่อนเลยนะคะว่าไม่ใช่ผู้เชี่ยวชาญด้านนี้ เป็นแค่นักศึกษาอาจจะมีผิดถูกบ้าง สามารถแนะนำและพูดคุยกันได้นะคะ ;)

วันจันทร์ที่ 2 มิถุนายน พ.ศ. 2557

มาเรียน Logic for Computer Science (2 -- Natural Deduction ภาคต่อ)

วันนี้เราจะมาต่อจากเมื่อวานนะคะ จาก Natural Deduction ทั้ง 10 ข้อ เราก็ได้รู้จักไปแล้ว 3 กฎ สำหรับใครที่เพิ่งเข้ามาหน้านี้ แนะนำว่าให้อ่าน ที่นี่ ก่อนจะเข้าใจได้มากกว่าค่ะ
4. Implication Introduction Rule อันนี้เป็นกฎที่เรากำลังจะสร้างเงื่อนไข ถ้า...แล้ว.... ดังนั้น ถ้าเรามี statement (ข้อสันนิษฐาน)นึง และก็มีข้อพิสูจน์อันนึงว่าเกิดอะไรขึ้น เราก็จะสามารถสร้างข้อสรุปได้ว่า ถ้า statement นั้นแล้ว...

ตัวอย่างเช่น

statement = ฝนตก
derivation =                      ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก
_____________________________________(and E)
    พื้นถนนเปียก
เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion = ถ้า ฝนตก แล้ว พื้นถนนเปียก
ซึ่ง statement = ฝนตก จะเรียกว่า discharged assumption คือมันไม่จำเป็นต้องใช้อีกแล้วสำหรับข้อสรุปบทพิสูจน์ เนื่องจากว่าถ้าดู ข้อสรุปหรือ conclusion ดีๆ จะเห็นว่า statement มันถูกรวมไปใน if ของ conclusion เรียบร้อยแล้ว
สามารถเขียน derivation ได้แบบนี้ค่ะ
                                                             ฝนตก
                                              __________________________
      ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก
_____________________________________(and E)
    พื้นถนนเปียก
                                      _________________________________(If I)
                                                  (ฝนตก -> พื้นถนนเปียก)

5. Implication Elimination Rule กฎ ข้อนี้บอกว่า ถ้าเรามีข้อพิสูจน์ (derivation) อันแรกที่อยู่ในรูปแบบของถ้าแล้ว(implication) และเรามีข้อพิสูจน์อีกอันที่ตรงกับ statement ใน implication เราก็สามารถที่จะสรุปบทพิสูจน์ออกมาเป็น ข้อสรุปของ implication ได้
พูดง่ายๆก็คือ ถ้าเรามีข้อมูลตรง if ว่าจริง ข้อมูลหลัง then ก็จะเป็นข้อสรุป

ตัวอย่างเช่น
derivation 1 =      ฝนตก
                        ________
                          ฝนตก
derivation 2=                                  ฝนตก -> พื้นถนนเปียก
_____________________________________
     ฝนตก -> พื้นถนนเปียก
เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion =  พื้นถนนเปียก

สามารถเขียน derivation ได้แบบนี้ค่ะ
                                                 ฝนตก         (ฝนตก -> พื้นถนนเปียก)
                                      _______________________________________(If E)
                                                   พื้นถนนเปียก


6. Negation Elimination Rule  เป็นกฎที่บอกเราว่า ถ้ามีข้อพิสูจน์สองข้อใดๆที่มันขัดแย้งกันเอง ข้อสรุปก็คือ contradiction ซึ่งใช้สัญลักษณ์ เหมือนตัว T กลับด้านนะคะ

ตัวอย่างเช่น

derivation 1 =      ฝนตก
                        ________
                          ฝนตก
derivation 2=                                        ฝนไม่ตก
_______________________
  ฝนไม่ตก
เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion =  contradiction เพราะมันขัดแย้งกัน

สามารถเขียน derivation ได้แบบนี้ค่ะ
                                                     ฝนตก            ฝนไม่ตก
                                      _______________________________________(~ E)
                                                                 contradiction

7. Negation Introduction Rule กฎ ข้อนี้บอกว่า ถ้าเรามี statement(ข้อสันนิษฐาน) นึง แล้วพิสูจน์ (derivation) ที่ได้ผลลัพธ์ว่า contradiction ดังนั้นเราจะสรุปข้อพิสูจน์เราได้เป็น ตรงกันข้ามกับ statement (ข้อสันนิษฐาน) ที่คิดไว้

ตัวอย่างเช่น
statement =      ฝนตก
derivation 1 =  พื้นถนนไม่เปียก

derivation 2 =                   ฝนตก               ฝนตก -> พื้นถนนเปียก
_____________________________________
   พื้นถนนเปียก
เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion =  ฝนไม่ตก

สามารถเขียน derivation ได้แบบนี้ค่ะ
                                                 ฝนตก         (ฝนตก -> พื้นถนนเปียก)
                                         _______________________________________(If E)
             พื้นถนนไม่เปียก                             พื้นถนนเปียก
______________________________________________(~ E)
                                contradiction
___________________________________________(~ I)
                              ฝนไม่ตก

ซึ่ง statement = ฝนตก จะเรียกว่า discharged assumption คือมันไม่จำเป็นต้องใช้อีกแล้วสำหรับข้อสรุปบทพิสูจน์ เนื่องจากว่าถ้าดู ข้อสรุปมันตรงกันข้ามกับข้อสันนิษฐานที่เราคิดไว้

8. Reduction Ad Absurdum Rule กฎข้อนี้ตรงกันข้ามกับ ~I เพราะถ้าเรามี negation of statement(ข้อสันนิษฐาน) นึง แล้วพิสูจน์ (derivation) ที่ได้ผลลัพธ์ว่า contradiction ดังนั้นเราจะสรุปข้อพิสูจน์เราได้เป็น ตรงกันข้าม คือได้ statement (ข้อสันนิษฐาน)

ตัวอย่างเช่น
statement =      ฝนไม่ตก
derivation 1 =  พื้นถนนไม่เปียก

derivation 2 =                   ฝนไม่ตก               ฝนไม่ตก -> พื้นถนนไม่เปียก
_____________________________________
   พื้นถนนไม่เปียก
เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion =  ฝนตก

สามารถเขียน derivation ได้แบบนี้ค่ะ
                                                 ฝนไม่ตก         (ฝนไม่ตก -> พื้นถนนไม่เปียก)
                                         _______________________________________(If E)
             พื้นถนนเปียก                             พื้นถนนไม่เปียก
______________________________________________(~ E)
                                contradiction
___________________________________________(RAA)
                              ฝนตก

 ซึ่ง statement = ฝนไม่ตก จะเรียกว่า discharged assumption คือมันไม่จำเป็นต้องใช้อีกแล้วสำหรับข้อสรุปบทพิสูจน์ เนื่องจากว่าถ้าดู ข้อสรุปมันตรงกันข้ามกับข้อสันนิษฐานที่เราคิดไว้

9. Disjunction Introduction Rule กฎ ข้อนี้บอกว่า ถ้าเรามีข้อพิสูจน์ได้ข้อสรุปอันนึง เราก็สามารถที่จะบอกได้ว่ามันเป็นข้อสรุปนั้นหรือข้อสรุปอื่นก็ได้ เพราะการใช้ "หรือ" จะเป็นจริงเมื่ออย่างใดอย่างหนึ่งเป็นจริง

ตัวอย่างเช่น

derivation 1 =  ท้องฟ้าวันนี้มีเมฆครึ้ม (ใช้ axiom rule ดังนั้นขอละไว้ในฐานที่เข้าใจนะคะ)
เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion =  ท้องฟ้าวันนี้มีเมฆครึ้ม หรือ ฝนตก

สามารถเขียน derivation ได้แบบนี้ค่ะ
                                                
                                ท้องฟ้าวันนี้มีเมฆครึ้ม
___________________________________________(or I)
                     ท้องฟ้าวันนี้มีเมฆครึ้ม หรือ ฝนตก
 
10. Disjunction Elimination Rule กฎข้อนี้บอกว่า ถ้าเรามีข้อพิสูจน์ได้ข้อสรุปที่สามารถเป็นอย่างใดอย่างหนึ่ง  เราก็ตั้งข้อสันนิษฐาน(statement) ขึ้นมา แล้วถ้าข้อสันนิษฐานทั้งสองอันนั้นสามารถพิสูจน์ได้ข้อสรุปตรงกัน เราก็สามารถพิสูจน์ได้ข้อสรุปนั้นเช่นกัน

ตัวอย่างเช่น
derivation 1 =  ฝนตก หรือ สปริงเกอร์ถูกเปิดอยู่
derivation 2 =               ฝนตก      (ฝนตก -> พื้นถนนเปียก)
                    ___________________________________________(if E)
                                     พื้นถนนเปียก
derivation 3 =     สปริงเกอร์ถูกเปิดอยู่     (สปริงเกอร์ถูกเปิดอยู่  -> พื้นถนนเปียก)
                    __________________________________________________(if E)
                                                   พื้นถนนเปียก

เราก็จะพิสูจน์ข้อสรุปได้คือ conclusion =  พื้นถนนเปียก

สามารถเขียน derivation ได้แบบนี้ค่ะ
 ซึ่ง statement = it's raining กับ statement = the sprinkler is on จะเรียกว่า discharged assumption คือมันไม่จำเป็นต้องใช้อีกแล้วสำหรับข้อสรุปบทพิสูจน์

 เราพยายามพิมพ์ใหม่ให้เป็นภาษาไทยแล้วแต่มันยาวมากล้นหน้า ทำให้ดูแล้วงง ก็เลยขอตัดแปะเวอร์ชันภาษาอังกฤษจากเอกสารมาแทนแล้วกันนะคะ

ตอนนี้ก็รู้จัก Natural Deduction ทั้ง 10 แบบครบแล้วนะคะ ก็จะเห็นว่าจริงๆมันคือวิธีการคิดหาเหตุผลที่มนุษย์เราใช้กันอยู่แล้ว คราวหน้าจะนำวิธีกฎทั้ง 10 แบบนี้มาเขียนเป็นบทพิสูจน์ที่ยาวๆและตรงกับสถานการณ์จริงดู เพื่อที่ว่าจะได้เข้าใจมากขึ้นว่าถูกเอาไปใช้อย่างไรนะคะ