หน่วยการเรียนรู้ที่ 1 แนวคิดเชิงคำนวณ

อ้างอิงจาก : หนังสือเรียนรายวิชาพื้นฐานวิทยาศาสตร์ เทคโนโลยี (วิทยาการคำนวณ) ของ สสวท.
ประกอบด้วยเนื้อหา ดังนี้

1.  การแบ่งปัญหาใหญ่เป็นปัญหาย่อย
2. การพิจารณารูปแบบ
3.  การคิดเชิงนามธรรม
4.  การออกแบบอัลกอริทึม
5.  กรณีศึกษา

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

ความหมายของแนวคิดเชิงคำนวณ
    แนวคิดเชิงคำนวณ (computational thinking) เป็นกระบวนการวิเคราะห์ปัญหา เพื่อให้ได้แนวทางการหาคำตอบอย่างเป็นขั้นตอนที่สามารถนำไปปฏิบัติได้โดยบุคคลหรือคอมพิวเตอร์อย่างถูกต้องและแม่นยำ ซึ่งเรียกว่า อัลกอริทึม ทักษะการใช้แนวคิดเชิงคำนวณจึงสำคัญต่อการแก้ปัญหา ช่วยให้สามารถสื่อสารแนวคิดกับผู้อื่นได้อย่างมีประสิทธิภาพ รวมถึงช่วยพัฒนาพื้นฐานในการเขียนโปรแกรม คอมพิวเตอร์ด้วย

    แนวคิดเชิงคำนวณมีองค์ประกอบที่สำคัญ 4 ส่วน ได้แก่
    1. การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (decomposition) เป็นการแตกปัญหาที่ขับซ้อนให้เป็นปัญหาย่อยที่มีขนาดเล็กลงและซับซ้อนน้อยลง เพื่อช่วยให้การวิเคราะห์และออกแบบวิธีการแก้ปัญหาทำได้ง่ายขึ้น
    2. การพิจารณารูปแบบ (pattern recognition) เป็นการวิเคราะห์หาความเหมือนหรือคล้ายคลึงกันระหว่างปัญหาย่อยที่แตกออกมา หรือความคล้ายคลึงกับปัญหาอื่น ๆ ที่มีผู้ออกแบบวิธีการแก้ไขไว้ก่อนแล้ว
    3. การคิดเชิงนามธรรม (abstraction) เป็นการแยกรายละเอียดที่สำคัญและจำเป็นต่อการแก้ปัญหาออกจากรายละเอียดที่ไม่จำเป็น ซึ่งรวมไปถึงการแทนกลุ่มของปัญหา ขั้นตอน หรือกระบวนการที่มีรายละเอียด ปลีกย่อยหลายขั้นตอนด้วยขั้นตอนใหม่เพียงขั้นตอนเดียว
    4. การออกแบบอัลกอริทีม (algorithm) เป็นการพัฒนากระบวนการหาคำตอบให้เป็นขั้นตอนที่บุคคล

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

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

1.2 การพิจารณารูปแบบ

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

ตัวอย่างที่ 1.2 รูปแบบในภาพวาดหมู่บ้าน

จากปัญหาภาพวาดในตัวอย่างที่ 1.1 นักเรียนอาจจะอธิบายคำตอบของปัญหาย่อยได้ดังนี้

    ปัญหาย่อยที่ 1 ในภาพมีบ้านกี่หลัง
    คำตอบ ในภาพมีบ้าน 3 หลัง

    ปัญหาย่อยที่ 2 ชั้นตอนในการวาดบ้านหลังแรกเป็นอย่างไร และอยู่ที่ตำแหน่งใด
    คำตอบ บ้านหลังแรกวาดตัวบ้านด้วยสี่เหลี่ยมจัตุรัสสีเหลืองขนาดด้านละ 100 หน่วย ตั้งอยู่ตำแหน่งมุมลงซ้ายที่พิกัด (0, 0) ด้านบนสี่เหลี่ยมวาดหลังคาด้วยรูปสามเหลี่ยมด้านเท่าสีม่วงขนาดด้านละ 100 หน่วย

    ปัญหาย่อยที่ 3 ขั้นตอนในการวาดบ้านหลังที่สองเป็นอย่างไร และอยู่ที่ตำแหน่งใด
    คำตอบ บ้านหลังที่สองวาดตัวบ้านด้วยสี่เหลี่ยมจัตุรัสสีแดงขนาดด้านละ 50 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายที่พิกัด (120, 90) ด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีเทาขนาดด้านละ 50 หน่วย

    ปัญหาย่อยที่ 4 ขั้นตอนในการวาดบ้านหลังที่สามเป็นอย่างไร และอยู่ที่ตำแหน่งใด
    คำตอบ บ้านหลังที่สามวาดตัวบ้านด้วยสี่เหลี่ยมจัตุรัสสีเขียวขนาดด้านละ 80 หน่วย ตั้งอยู่ตำแหน่งมุมล่างซ้ายที่พิกัด (200, 10) ด้านบนสี่เหลี่ยมวาดหลังคาเป็นรูปสามเหลี่ยมด้านเท่าสีฟ้าขนาดด้านละ 80 หน่วย

1.3 การคิดเชิงนามธรรม

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

1.4 การออกแบบอัลกอริทีม

        อัลกอริทึม หมายถึง รายการคำสั่งที่อธิบายขั้นตอนในการแก้ปัญหา โดยแต่ละคำสั่งนั้นต้องเป็นคำสั่งที่ให้ผู้อื่นนำไปปฏิบัติตามได้โดยไม่มีความกำกวม ซึ่งมักอยู่ในรูปของรหัสลำลอง(pseudo code) หรือผังงาน (flowchart) ในกรณีที่ใช้คอมพิวเตอร์เป็นเครื่องมือในการแก้ปัญหา อัลกอริทึมจะต้องถูกแปลงให้อยู่ในรูปของภาษาโปรแกรมก่อนเพื่อให้คอมพิวเตอร์สามารถปฏิบัติตามได้ ดังนั้นการออกแบบรายละเอียดในอัลกอริทึมจึงขึ้นอยู่กับคนหรือคอมพิวเตอร์ที่จะนำอัลกอริทีมไปปฏิบัติ

ตัวอย่างที่ 1.4 อัลกอริทึมวาดภาพหมู่บ้าน สำหรับคนนำไปวาด

    ขั้นตอนหลัก
    1. วาดรูปบ้านขนาด 100 หน่วย ที่ตำแหน่ง (O, O)
    2. วาดรูปบ้านขนาด 50 หน่วย ที่ตำแหน่ง (120,90)
    3. วาดรูปบ้านขนาด 80 หน่วย ที่ตำแหน่ง (200,10)

    ขั้นตอนย่อย การวาดรูปบ้านขนาด ร หน่วย ที่ตำแหน่ง (x, y)
    1. วาดรูปสี่เหลี่ยมจัตุรัสความยาวค้นละ ร หน่วย ให้มีมุมล่างซ้ายอยู่ที่พิกัด (x,y)
    2. วาดรูปสามเหลี่ยมดันเท่าขนาด ร หน่วยไว้บนสี่เหลี่ยมจัตุรัส

ตัวอย่างที่ 1.5 อัลกอริทึมวาดภาพหมู่บ้าน สำหรับสร้างเป็นโปรแกรมคอมพิวเตอร์

    ขั้นตอนหลัก
    1. วาดรูปบ้านขนาด 100 หน่วย ที่ตำแหน่ง (0, 0)
    2. วาดรูปบ้านขนาด 50 หน่วย ที่ตำแหน่ง (120, 90)
    3. วาดรูปบ้านขนาด 80 หน่วย ที่ตำแหน่ง (200, 10)

    ขั้นตอนย่อย 1 การวาดรูปสี่เหลี่ยมจัตุรัสขนาด s หน่วย
    1. ทำคำสั่งต่อไปนี้ซ้ำ 4 รอบ
        1.1 เดินหน้า s หน่วย
        1.2 หันซ้าย 90 องศา

    ขั้นตอนย่อย 2 การวาดรูปสามเหลี่ยมด้านเท่าขนาด s หน่วย

    1. ทำคำสั่งต่อไปนี้ซ้ำ 3 รอบ
        1.1 เดินหน้า s หน่วย
        1.2 หันซ้าย 120 องศา

    ขั้นตอนย่อย 3 การวาดรูปบ้านขนาด s หน่วย ที่ตำแหน่ง (x, y)

    1. ยกปากกา
    2. เคลื่อนที่ไปยังตำแหน่ง (x,y)
    3. วางปากกา
    4. กำหนดทิศทางไปด้านขวา
    5. วาดรูปสี่เหลี่ยมจัตุรัสขนาด s หน่วย
    6. หันซ้าย 90 องศา
    7. เดินหน้า s หน่วย
    8. หันขวา 90 องศา
    9. วาดรูปสามเหลี่ยมด้านเท่าขนาด s หน่วย

1.5 กรณีศึกษา

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

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

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

  • หนังสือเล่มใดควรจัดไว้เป็นลำดับแรก
  • ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับที่สอง
  • ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับที่สาม
  • :

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

การแตกปัญหาในตัวอย่าง “สอนน้องจัดหนังสือ” ได้ผลลัพธ์เป็นปัญหาย่อยดังนี้

    ปัญหาย่อยที่ 1 หนังสือเล่มใดควรจัดไว้เป็นลำดับแรก
    ปัญหาย่อยที่ 2 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับที่สอง
    ปัญหาย่อยที่ 3ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับที่สาม
    :

การพิจารณารูปแบบในการสอนน้องจัดหนังสือ

จากการแตกปัญหาในตัวอย่าง “สอนน้องจัดหนังสือ” นักเรียนอาจจะอธิบายคำตอบของปัญหาย่อยได้ดังนี้
    ปัญหาย่อยที่ 1 หนังสือเล่มใดควรจัดไว้เป็นลำดับแรก
    คำตอบ หนังสือเล่มที่มีความสูงมากที่สุด

    ปัญหาย่อยที่ 2 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับที่สอง
    คำตอบ หนังสือเล่มที่มีความสูงมากที่สุดในกองที่เหลือ

    ปัญหาย่อยที่ 3 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับที่สาม
    คำตอบ หนังสือเล่มที่มีความสูงมากที่สุดในกองที่เหลือ

    ปัญหาย่อยสุดท้ายที่มีขนาด 1
        เห็นได้ว่าแต่ละปัญหาย่อยนั้นต่างก็มีรูปแบบเดียวกัน และมุ่งหาคำตอบในลักษณะเดียวกันคือ

    ปัญหาย่อย ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ในลำดับถัดไป
    คำตอบ หนังสือเล่มที่มีความสูงมากที่สุดในกองหนังสือที่เหลืออยู่

การคิดเชิงนามธรรมในปัญหาสอนน้องจัดหนังสือ

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

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

    ในกองหนังสือที่มีอยู่ หนังสือเล่มใดควรค้ออกมาเป็นหนังสือที่วางไว้ในลำดับถัดไป

มีกระบวนการแก้ปัญหาแบบเดียวกันกับปัญหาที่ระบุว่า

        ในชุดจำนวนที่พิจารณาอยู่ จำนวนใดมีค่ามากที่สุด

อัลกอริทีมสำหรับสอนน้องจัดหนังสือ
    กระบวนการที่ผ่านมาสามารถนำมาออกแบบเป็นอัลอริทีมสำหรับให้น้องปฏิบัติตามได้ดังนี้

    ขั้นตอนหลัก
    1. ทำขั้นตอนต่อไปนี้ซ้ำจนกระทั่งไม่มีหนังสือเหลืออยู่ในกอง
        1.1 เลือกหนังสือที่มีความสูงมากที่สุดในกอง
        1.2 นำหนังสือที่เลือกจากขั้นดอน 11 จัดเรียงไว้บนโต๊ะ โดยวางไว้ถัดจากแถวหนังสือที่จัดไว้แล้วก่อนหน้านี้ ถ้ายังไม่มีหนังสือในแถวให้วางหนังสือเล่มนี้ไว้เป็นเล่มแรก

อัลกอริทึมสำหรับการจัดเรียงลำดับ (sorting algorithm)
    อัลกอริทึมสำหรับสอนน้องจัดหนังสือเป็นอัลกอริทึมสำหรับการเรียงลำดับมีชื่อว่า "การเรียงลำดับแบบเลือก (selection sort)" ซึ่งมีวิธีการที่เข้าใจง่ายแต่ค่อนข้างช้า เมื่อมีสิ่งที่ต้องเรียงลำดับเป็น
จำนวนมาก นอกเหนือจากการเรียงลำดับแบบเลือกยังมีอัลกอริทึมสำหรับการเรียงลำดับอีกหลายวิธีดูตัวอย่างและการทำงานของอัลกอริทีมเหล่านี้ได้จากลิงค์ https://www.toptal.com/developers/sorting-algorithms

สรุปท้ายบท

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

กิจกรรมท้ายบท

    ที่หมู่บ้านจัดงานฉลองวันปีใหม่นักเรียนได้รับมอบหมายให้ล้างจานจำนวนมาก จานทุกจานมีขนาดเท่ากัน เมื่อล้างเสร็จแล้วจะต้องเก็บในกล่องที่สามารถบรรจุจานได้ 3 ตั้ง ตั้งละ 10ใบ ให้นักเรียนเขียนอัลกอริทึมในการล้างจานและเก็บจานใส่กล่อง

อ้างอิงจาก : หนังสือเรียนรายวิชาพื้นฐานวิทยาศาสตร์ เทคโนโลยี (วิทยาการคำนวณ) ของ สสวท.

Comments