บทที่ 1 แนวคิดเชิงคำนวณ

แนวคิดเชิงคำนวณ (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ใบ ให้นักเรียนเขียนอัลกอริทึมในการล้างจานและเก็บจานใส่กล่อง

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