ผลต่างระหว่างรุ่นของ "ขั้นตอนวิธีแบ่งแยกและเอาชนะ"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
ไม่มีความย่อการแก้ไข
ไม่มีความย่อการแก้ไข
บรรทัด 1:
ใน[[วิทยาการคอมพิวเตอร์]] '''ขั้นตอนวิธีแบ่งแยกและเอาชนะ''' ({{lang-en|divide and conquer}}; D&C) เป็นวิธี[[การออกแบบขั้นตอนวิธี]]โดยมีพื้นฐานมาจาก[[การเรียกซ้ำ]] [[ขั้นตอนวิธี]]แบ่งแยกและเอาชนะทำงานโดยแบ่งปัญหาออกเป็นปัญหาย่อย 2 ส่วนหรือมากกว่านั้นแบบเวียนเกิด ปัญหาถูกแบ่งไปเรื่อย ๆ จนเล็กและง่ายพอที่จะแก้อย่างง่ายดาย หลังจากแก้ปัญหาย่อยเล็ก ๆ เหล่านั้นแล้วก็จะนำคำตอบมารวมกันขึ้นไปเรื่อย ๆ จนสุดท้ายได้คำตอบของปัญหาดั้งเดิม
 
กลวิธีนี้เป็นพื้นฐานที่ของขั้นตอนวิธีที่มีประสิทธิภาพจำนวนมากมาย เช่น [[ขั้นตอนวิธีการเรียงลำดับ|การเรียงลำดับ]] ([[การเรียงลำดับแบบเร็ว]] [[การเรียงลำดับแบบผสาน]]) [[การคูณเลขขนาดใหญ่]] ([[ขั้นตอนวิธีของคาราซูบา]]) การคำนวณ[[การแปลงฟูรีเยไม่ต่อเนื่อง]]
 
ขั้นตอนวิธีแบ่งแยกและเอาชนะ ยังรวมไปถึงขั้นตอนวิธีที่แต่ละปัญหาแบ่งออกเป็นปัญหาย่อยหลายส่วน แต่กลับใช้คำตอบหรือคำนวณคำตอบจากเพียงแค่ปัญหาย่อยเดียวเท่านั้น เช่น [[การค้นหาแบบทวิภาค]] (หรือขั้นตอน[[วิธีแบ่งครึ่ง]] สำหรับ[[การหาคำตอบของราก]]ใน[[การวิเคราะห์เชิงจำนวน]])<ref name=CLR>Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest, ''Introduction to Algorithms'' (MIT Press, 2000).</ref> หากนิยามของขั้นตอนวิธีนี้รวมไปถึงขั้นตอนวิธีที่มีเพียงปัญหาย่อยเดียวด้วย อาจทำให้ทุก ๆ ขั้นตอนวิธีที่มีการเรียกซ้ำหรือมีวงวนกลายเป็น "การแบ่งแยกและเอาชนะ" ไปเสียหมด บางคนจึงนับว่าขั้นตอนวิธีจะเป็น "การแบ่งแยกและเอาชนะ" ก็ต่อเมื่อมีการแบ่งปัญหาออกเป็นปัญหาย่อย 2 ส่วนหรือมากกว่าเท่านั้น<ref>Brassard, G. and Bratley, P. Fundamental of Algorithmics, Prentice-Hall, 1996.</ref> และเรียก "การลดและเอาชนะ" (decrease and conquer) สำหรับขั้นตอนวิธีที่มีเพียงปัญหาย่อยเดียวแทน<ref>Anany V. Levitin, ''Introduction to the Design and Analysis of Algorithms'' (Addison Wesley, 2002).</ref>