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