วันอาทิตย์ที่ 1 มิถุนายน พ.ศ. 2557

มาเรียน Logic for Computer Science (1 -- Natural Deduction)

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

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

เนื่องจากเราศึกษาแบบ Computer Science ดังนั้นเนื้อหาจะไม่ใช่แบบนักคณิตศาสตร์ แต่จะเป็นการเอาคณิตศาสตร์ตรรกศาสตร์ หรือ Mathematical Logic มาใช้ร่วมกับหลักการทางคอมพิวเตอร์ค่ะ

เอาล่ะ เรามาเริ่มทำความรู้จักกันก่อนว่า เราจะเรียนลอจิกกันไปทำไม

Mathematical Logic เนี่ยจริงๆแล้ว เป็นการศึกษาเกี่ยวกับการตรวจสอบว่า  argument ที่เรามีเนี่ยมัน valid หรือเปล่า พูดง่ายๆก็คือ เวลาที่เราได้รับข้อมูลมา จะเป็นข้อเท็จจริงความคิดเห็น หรืออะไรก็แล้วแต่ เราต้องตัดสินใจว่า เอ๊ะ ข้อมูลนี้มันถูกต้องสมบูรณ์มีเหตุมีผลจริงหรือเปล่า

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

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

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

ก่อนที่จะไปพูดถึงทฤษฎีของคณิตตรรกศาสตร์ ที่ถูกเอามาใช้ ซึ่งเราจะอธิบายแค่สองอย่างคือ Propositional Logic กับ First-Order Logic เท่านั้น เราจะพูดถึง  Natural Deduction  ภาษาไทยคำว่า deduction แปลว่า นิรนัย แต่เราขอเรียกว่า deduction ละกันนะ คุ้นเคยกว่า

Natural Deduction คืออะไร   มนุษย์โดยปกติแล้วมีกระบวนการคิดหาเหตุผลโดยอ้างอิงจากพื้นฐานหลักฐาน (deduction) ซึ่งจากแหล่งอ้างอิงได้แบ่งออกเป็น 10 แบบด้วยกันค่ะ


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

ก่อนจะไปพูดถึงกฎของ deduction ทั้ง 10 แบบนั้น เราต้องรู้จักคำศัพท์ 3 คำก่อนค่ะ คือ
statement  derivation แล้วก็ discharged assumption

statement คือ ประโยคบอกเล่าธรรมดาๆ แต่จะต้องเป็นประโยคที่เราสามารถให้ความหมายมันได้ว่า เป็นจริงหรือเท็จ
เช่น "เลข 2.9 เป็นเลขทศนิยม" อย่างนี้เราบอกได้ว่า เป็นจริง
แต่  "3+6 " เป็นประโยคที่ไม่สมบูรณ์ เราให้ค่า จริงหรือเท็จกับมันไม่ได้

derivation คือ การเขียนบทพิสูจน์ โดยที่รูปแบบการเขียนที่เราอ้างอิงอยู่นี้ จะนิยมเขียนเป็นบรรทัดไล่กันมา แล้วบรรทัดสุดท้ายก็คือ conclusion หรือผลลัพธ์ของการพิสูจน์ค่ะ

assumption คือข้อสันนิษฐาน ดังนั้น discharged assumption คือข้อสันนิษฐานที่เราไม่ต้องใช้มันอีกแล้วกับ conclusion ที่ได้ (เดี๋ยวอ่านวิธีการ deduction ไปเรื่อยๆจะเข้าใจมากขึ้นนะคะ)

ทีนี้เราก็เริ่มทำการศึกษา Natural Deduction ทั้ง 10 ข้อได้เลยค่ะ
1. Axiom Rule อันนี้เป็นกฎที่ตายตัวอยู่แล้ว พูดง่ายๆก็คือ ถ้าเรามี statement ใดๆ เราก็จะสามารถพิสูจน์ได้ว่าข้อสรุปก็คือตัวมันเอง


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

statement = ท้องฟ้าวันนี้มีเมฆครึ้ม
เราก็จะพิสูจน์ข้อสรุปได้ตัวมันเองก็คือ conclusion = ท้องฟ้าวันนี้มีเมฆครึ้ม
สามารถเขียน derivation ได้แบบนี้ค่ะ

    ท้องฟ้าวันนี้มีเมฆครึ้ม
______________________
    ท้องฟ้าวันนี้มีเมฆครึ้ม

2. Conjunction Introduction Rule กฎข้อนี้บอกว่า ถ้าเรามีข้อพิสูจน์ (derivation) อันแรกที่ได้ข้อสรุปมาอย่างนึง แล้วมีข้อพิสูจน์อีกอันที่ได้ข้อสรุปมาอีกอย่างนึง เราก็สามารถที่จะเอาข้อสรุปสองอันนั้นมาเชื่อมกันด้วย "และ" ได้



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

derivation 1 =  ท้องฟ้าวันนี้มีเมฆครึ้ม
                     _________________
                      ท้องฟ้าวันนี้มีเมฆครึ้ม

derivation 2 =  พื้นถนนเปียก
                     _________________
                      พื้นถนนเปียก

เราก็จะพิสูจน์ข้อสรุปได้ด้วยการเชื่อมข้อสรุปจากทั้งสอง derivation ก็คือ conclusion = ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก
สามารถเขียน derivation ได้แบบนี้ค่ะ

ท้องฟ้าวันนี้มีเมฆครึ้ม                  พื้นถนนเปียก
______________________        _________________
ท้องฟ้าวันนี้มีเมฆครึ้ม                พื้นถนนเปียก
_________________________________________________________(and I)
                                                      ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก

 ตัวอย่างนี้ จะเห็นว่าเราพิสูจน์โดยใช้กฎสองข้อคือ axiom rule ก่อน แล้วก็ and introduction ทีหลัง ซึ่งจริงๆแล้ว เราสามารถที่จะละ axiom rule ออกไปได้นะคะ เพราะมันรู้ๆกันอยู่แล้วไม่ได้มีผลกระทบอะไร

3. Conjunction Elimination Rule กฎ ข้อนี้บอกว่า ถ้าเรามีข้อพิสูจน์ (derivation) ที่เป็นสองประโยคเชื่อมกัน เราสามารถที่จะแยกออกเป็นข้อสรุปอันใดอันหนึ่งก็ได้



ตัวอย่างเช่น
เรามี derivation = ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก
ก็สามารถที่จะพิสูจน์ข้อสรุปได้ 2 แบบ คือ

                      ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก
                     ___________________________________(and E)
                      ท้องฟ้าวันนี้มีเมฆครึ้ม

 หรือ

                       ท้องฟ้าวันนี้มีเมฆครึ้มและพื้นถนนเปียก
                     ___________________________________(and E)
                      พื้นถนนเปียก
   ตัวอย่างนี้ เราละ axiom rule ออกนะคะ

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

กฎที่เหลืออีก 7 ข้อจะเริ่มซับซ้อนมากขึ้นและหลังจากศึกษาครบทั้ง 10 ข้อแล้ว ทีนี้เราจะเข้าใจกระบวนการคิดของมนุษย์มากขึ้นว่า ทุกครั้งที่เราคิดทำอะไรมันจะมีกระบวนการเหตุผลซ่อนอยู่เบื้องหลัง เพียงแต่ว่ามันเร็วมากจนเราไม่รู้ตัวเท่านั้นเองค่ะ

สำหรับท่านที่สนใจศึกษาจริงจัง เราแนะนำว่าให้อ่านหนังสือ Mathematical Logic จริงๆเลยดีกว่า เพราะต้องอ่านตัวบทพิสูจน์ให้ละเอียด ที่เราแปะมานี้เป็นแค่คร่าวๆเท่านั้นเอง  ลิงก์หนังสือแนะนำ ดูได้ที่นี่ ค่ะ

หวังว่าที่เราเขียนมาคงจะพออ่านเข้าใจนะคะ  สำหรับ 7 ข้อที่เหลือเราจะแบ่งไปโพสหน้านะคะ เพราะว่าบล็อกนี้มันยาวมากแล้ว  ;)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น