อัลกอริทึมแบบเคลื่อนที่ (Dynamic Programming)
ปัญหาที่เราได้รับมานั้นบางครั้งไม่สามารถแบ่งปัญหาออกเป็นปัญหาย่อย ๆ ได้ ซึ่งถ้าเราพยายามจะแบ่งปัญหานั้น ๆ ออกเป็นปัญหาย่อยที่เล็กที่สุด อัลกอริทึมของเราอาจจะใช้เวลาทำงานเป็นแบบทวีคูณ (Exponential) ได้ แต่เวลาที่เราแก้ปัญหาต่าง ๆ เรามักจะ พบว่าบางครั้งเราต้องแก้ปัญหาย่อย ๆ ที่เหมือนกันซ้ำไปซ้ำมา โดยการหลีกเลี่ยงการคำนวณเพื่อหาคำตอบซ้ำ ๆ ซาก ๆ นี้ Dynamic Programming จะแก้ปัญหาย่อย ๆ เหล่านั้นเพียง ครั้งเดียวแล้วเก็บผลลัพธ์ไว้ ซึ่งถ้าหากพบว่าต้องมีการแก้ปัญหาย่อยนั้นซ้ำอีกเราก็สามารถนำ คำตอบมาจากคำตอบที่เคยคำนวณเก็บไว้มาใช้ได้
from bloggang
|