1. แนวคิดการแยกย่อย (Decomposition)
การแตกปัญหาใหญ่ออกเป็นปัญหาย่อย เป็นการพิจารณาเพื่อแบ่งปัญหาหรืองานออกเป็นส่วนย่อย ทำให้สามารถจัดการกับปัญหาหรืองานได้ง่ายขึ้น การแตกปัญหาที่ซับซ้อนให้เป็นปัญหาย่อยที่มีขนาดเล็กลงและซับซ้อนน้อยลงช่วยให้การวิเคราะห์และออกแบบวิธีการแก้ปัญหาทำได้ง่ายขึ้น
Ex. ในการเขียนโปรแกรมคอมพิวเตอร์ เช่น การเขียนโปรแกรมแยกเป็นส่วน ๆ แยกเป็นแพ็กเกจ แยกเป็นโมดูล หรือมองเป็น layer หรือการแบ่งปัญหาเมื่อจะแก้ไขอุปกรณ์ เช่น การแยกส่วนประกอบของพัดลม แบ่งเป็นใบพัด มอเตอร์ ตะแกรงหน้า ขอบตะแกรง ฝาครอบ ฐานพัดลม เป็นต้น หรือ การแยกส่วนประกอบของรถจักรยาน แบ่งเป็น ล้อหน้า ล้อหลัง หลังอาน โซ่ โช๊ค แฮนด์ มือเบรก เป็นต้น ถ้ามองในรายละเอียดของล้อจักรยานจะเห็น ว่าประกอบด้วย ยางล้อ วงล้อ และซี่ลวด หรือถ้าพิจารณาชุด ขับเคลื่อนก็จะพบว่าประกอบด้วยเฟือง โซ่ และบันได เป็นต้น
การแก้ปัญหาที่มีความซับซ้อนทำได้ยาก การแบ่งปัญหาใหญ่ให้เป็นปัญหาย่อย ๆ ทำให้มีความซับซ้อนของปัญหาลดลง ช่วยให้การวิเคราะห์และพิจารณารายละเอียดขอปัญหาทำได้อย่างถี่ถ้วน ส่งผลให้สามารถออกแบบขั้นตอนการแก้ปัญหาย่อยแต่ละปัญหาได้ง่ายขึ้น
กรณีตัวอย่างการแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)
1. รถของครูไนซ์
ครูไนซ์ เป็นคุณครูที่เด็ก ๆ รัก และกำลังจะเดินทางไปโรงเรียนในเช้าของวันนี้ แต่ด้วยครูไนซ์ไม่สามารถสตาร์ทรถยนต์คู่ใจที่ใช้ทุกวันให้ติดได้ เนื่องจากเกิดปัญหา 3 ปะการ ได้แก่ เมื่อคืนเปิดไฟในรถทิ้งไว้ทั้งคืนอาจจะทำให้แบตเตอรี่หมด หรือ ก่อนเข้าบ้านเขาไม่ได้เติมน้ำมันให้เต็มถัง อาจจะเป็นไปได้ว่าน้ำมันในถังเชิงเพลิงหมด หรืออาจจะเป็นปัญหาเครื่องยนต์ เมื่อครูไนซ์ต้องการใช้แนวคิดเชิงคำนวณแก้ปัญหาที่เกิดขึ้น ครูไนซ์จะสามารถแก้ปัญหาด้วยการแบ่งปัญหาใหญ่เป็นปัญหาย่อย ได้ดังนี้
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)
1. แบตเตอรี่หมด
2. น้ำมันเชื้อเพลิงหมด
3. เครื่องยนต์มีปัญหา
2. การพาจรวดไปดาวอังคาร
จากเว็บไซต์ https://csunplugged.org/en/topics/kidbots/unit-plan/sending-a-rocket-to-mars/ เป็นกิจกรรมที่จะให้จรวดเดินทางไปดาวอังคาร โดยใช้ลูกศรในการเดิน การหมุน เพื่อทำภาระกิจพิชิตดาวอังคารให้สำเร็จ เพื่อฝึกกระบวนการคิดเป็นขั้นตอนของผู้เรียน และกระบวนการแก้ปัญหา
ในชีวิตประจำวันของเรา เราไม่ได้ให้คำแนะนำตามที่กล่าวไว้ว่า "เลี้ยวขวา ก้าวไปข้างหน้า ก้าวไปข้างหน้าอีก แล้วก้าวเลี้ยวขวา" คนส่วนใหญ่จะบอกว่าตรงไปที่ดาวอังคาร แต่เมื่อเขียนโปรแกรมจะต้องเจาะจงรายละเอียดการเดินทางไปดาวอังคารมากกว่าปกติ เพราะต้องบอกคอมพิวเตอร์ว่าจะทำอย่างไรในแต่ละขั้นตอน นอกจากนี้การสั่งให้โปรแกรมทำงานตามที่เราต้องการโดยระบุรายละเอียดแล้ว แทนที่จะพยายามแก้ไขปัญหาทั้งหมด จะเห็นได้ว่าเกมส่งจรวดไปดาวอังคาร ยังมีการแบ่งการเขียนโปรแกรมออกเป็นส่วนย่อย ๆ ทำให้งานมีน้อยลง ก็จะสามารถทำให้ถึงจุดหมายได้อย่างรวดเร็วขึ้น เช่น
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)
1. เดินตรงไป 2 ช่อง
2. เลี้ยวขวา
3. เดินตรงไป 3 ช่อง
3. พัดลม
สิ่งของในชีวิตประจำวัน อย่างเช่น พัดลม หากนักเรียนต้องการเรียนรู้ว่าพัดลมทำงานอย่างไร ให้พิจารณาแยกชิ้นส่วนของพัดลมว่ามีอะไรบ้างและศึกษาทีละชิ้น
ในชีวิตประจำวันของเรา เราไม่ได้ให้คำแนะนำตามที่กล่าวไว้ว่า "เลี้ยวขวา ก้าวไปข้างหน้า ก้าวไปข้างหน้าอีก แล้วก้าวเลี้ยวขวา" คนส่วนใหญ่จะบอกว่าตรงไปที่ดาวอังคาร แต่เมื่อเขียนโปรแกรมจะต้องเจาะจงรายละเอียดการเดินทางไปดาวอังคารมากกว่าปกติ เพราะต้องบอกคอมพิวเตอร์ว่าจะทำอย่างไรในแต่ละขั้นตอน นอกจากนี้การสั่งให้โปรแกรมทำงานตามที่เราต้องการโดยระบุรายละเอียดแล้ว แทนที่จะพยายามแก้ไขปัญหาทั้งหมด จะเห็นได้ว่าเกมส่งจรวดไปดาวอังคาร ยังมีการแบ่งการเขียนโปรแกรมออกเป็นส่วนย่อย ๆ ทำให้งานมีน้อยลง ก็จะสามารถทำให้ถึงจุดหมายได้อย่างรวดเร็วขึ้น เช่น
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) ของพัดลม
1. มอเตอร์พร้อมกะโหลกหลังและฐานพัดลม
2. ตะแกรงหลัง
3. ใบพัด
4. ตะแกรงหน้า
4. การเดินทาง
หากจะเดินทางไปเที่ยวหัวหิน จะมีการวางแผนเดินทางอย่างไร ซึ่งอาจแยกย่อยวิธีเดินทางเป็น 4 รูปแบบ เช่น ขับรถไปเอง นั่งรถทัวร์ นั่งรถตู้ หรือนั่งรถไฟ จากนั้นก็มาวิเคราะห์ถึงข้อดีข้อเสียแต่ละวิธีการ
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) ของการเดินทางไปเที่ยวหัวหิน
1. ขับรถไปเอง
2. นั่งรถทัวร์
3. นั่งรถตู้
4. นั่งรถไฟ
วิเคราะห์ถึงข้อดีข้อเสียแต่ละวิธีการรวมถึงการคำนวณค่าใช้จ่ายของแต่ละวิธีการเดินทางเพื่อเลือกการเดินทางที่ดีที่สุด
แนวคิดเชิงคำนวณ ที่เกี่ยวข้องกับการแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) นั้นเป็นการแตกปัญหาที่ซับซ้อนให้เป็นปัญหาย่อยที่มีขนาดเล็กลงและซับซ้อนน้อยลง เพื่อช่วยให้การวิเคราะห์และออกแบบวิธีการแก้ปัญหาทำได้ง่ายขึ้นทำให้คิดอย่างเป็นระบบมากยิ่งขึ้น โดยผ่านการแยกย่อยปัญหาต่าง ๆ เนื่องด้วยกระบวนงานบางกระบวนงาน มีวิธีการที่ทำงานอย่างเป็นขั้นตอน และมีระบบย่อย จึงมีความจำเป็นที่ต้องแยกปัญหานั้นออกมาเป็นส่วนย่อย ๆ เพื่อสามารถศึกษาปัญหาของกระบวนการได้ชัดเจนยิ่งขึ้น