ข้อพิจารณาเกี่ยวกับ sorting network (กิจกรรม unplugged)
Main ideas:
- เป้าหมายหลักคือ พิจารณาการทำงานแบบ parallel processing เทียบกับการทำทีละขั้นตอน
- งานบางอย่างแบ่งกันทำพร้อมกันได้ง่าย เช่น แบ่งกันพิมพ์เอกสาร 10 หน้า คนละหน้า หรืองานขุดร่องตื้นๆ (ditch) ยาว 10 เมตร สามารถแบ่งกันขุดสิบคนคนละเมตร พร้อมๆ กันได้
- งานบางอย่างแบ่งกันทำพร้อมกันไม่ได้ เช่น การขุดหลุมลึก 10 เมตร จะแบ่งให้คนสิบคนขุดคนละเมตรโดยขุดพร้อมกันไม่ได้
- คำว่า sorting network ในที่นี้เป็นการใช้คำคนละความหมายกับ network ที่เป็นโครงข่ายสื่อสาร (ระวังสับสน)
- จุดเน้น: การทำตาม algorithm แบบเป๊ะๆ และการทำงานร่วมกับเพื่อน (collaboration) เช่น ต้องหยุดรอกันจึงจะไปต่อได้
- ขั้นอภิปราย: อาจพูดถึง GPU ซึ่งทำงานแบบ parallel และมักถูกนำมาใช้ในงานอื่นนอกจากงานกราฟฟิก, MapReduce บน Cloud
- นี่ไม่ใช่วิธีการเรียงข้อมูลที่ใช้กันโดยทั่วไป จุดประสงค์หลักของกิจกรรมนี้ไม่ได้มีไว้เพื่อสอนอัลกอริทึมการจัดเรียง แท้จริงแล้ว sorting network ในตัวอย่างถูกออกแบบมาเพื่ออินพุต 6 ตัวเท่านั้น ถ้าเปลี่ยนจำนวนอินพุตก็จะต้องออกแบบ network ใหม่ และการออกแบบนั้นไม่ใช่เรื่องง่ายที่เด็กเล็กจะทำเองได้
- ในตัวกิจกรรมนี้เองยังไม่สามารถพิสูจน์ให้นักเรียนเห็นได้ว่าอัลกอริทึมนี้ถูกต้อง 100% แต่สามารถฝึกให้นักเรียนคิดตามได้ว่าข้อมูลตัวที่เล็กที่สุดจะไปอยู่ข้างล่าง ข้อมูลที่มากสุดจะไปอยู่ข้างบน (หรือกลับกัน) เพราะอะไร
ข้อควรระวัง
ระวังสอนผิดวัตถุประสงค์ เช่น แนวการสอนเหล่านี้ น่าจะสร้างความเข้าใจผิดให้นักเรียน:
- นักเรียนจะได้เห็นตัวอย่างการเรียงข้อมูลของคอมพิวเตอร์ ที่ใช้กันโดยทั่วไป (ผิด!)
- วิธีนี้สามารถใช้เรียงข้อมูลกี่ตัวก็ได้ (ผิด!)
- หลังจากทำกิจกรรมแล้ว ครูจะพิสูจน์ให้ดูว่าทำไมผลลัพธ์ถึงจะถูกเรียงอย่างถูกต้องเสมอ (ผิด! — การพิสูจน์นั้นทำได้ แต่ไม่น่าจะง่ายพอที่จะอธิบายให้เด็กประถมเข้าใจได้)
- เห็นไหมว่าถ้าเราทำงานพร้อมๆ กัน ย่อมเร็วกว่าทำทีละขั้นตอนเสมอ (ผิด!)
- นักเรียนจะได้เรียนเรื่อง sorting network และจะได้เห็นว่าระบบ network ที่เราใช้สื่อสารกันบนอินเทอร์เน็ตนั้นมีประโยชน์อย่างไร (ผิด! — ไม่เกี่ยวกันเลยครับ)
Videos
ตัวอย่างการพิสูจน์ความถูกต้อง
- หัวข้อ Applying what we have just learnt ในหน้านี้ยกตัวอย่างวิธีพิสูจน์ความถูกต้องของตำแหน่งข้อมูลตัวที่เล็กสุด และใหญ่สุด (แต่ไม่ได้เขียนอธิบายออกมาทั้งหมด) และบอกว่าสำหรับข้อมูลที่เล็กสุดเป็นอันดับสองการพิสูจน์จะไม่ง่ายนัก แต่ “computer scientists are able to prove that they will also always end up in their correct position” — พูดง่ายๆ ก็คือ “ขอเธอจงโปรดไว้ใจและศรัทธา” https://www.csunplugged.org/en/topics/sorting-networks/unit-plan/reinforcing-numeracy-through-a-sorting-network-junior/
Sources
- กิจกรรม Sorting Network โดยเว็บไซต์ CS Unplugged: https://www.csunplugged.org/en/topics/sorting-networks/unit-plan/description/
- Cover image borrowed from csunplugged.org and the YouTube video by UC Computer Science Education https://youtu.be/M-z5pDjqtZk
ผนวกเดช สุวรรณทัต
22 กันยายน 2563