การแบ่งแยกและเอาชนะ

 


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