520 likes | 1.02k Views
กำหนดการพลวัต ( Dynamic programming ). Dynamic programming จะเหมาะกับการแก้ปัญหา optimization ตัวอย่างเช่น Longest Common Subsequence. Longest Common Subsequence. X = <H, E, L, L, O> มี subsequences < H , E , L, L, O > < H , E > < H , E , L, L, O > < H , E , O >
E N D
Dynamic programming จะเหมาะกับการแก้ปัญหา optimization ตัวอย่างเช่น • Longest Common Subsequence
Longest Common Subsequence • X = <H, E, L, L, O> มี subsequences • <H, E, L, L, O> <H, E> • <H, E, L, L, O> <H, E, O> • <H, E, L, L, O> <> • … • Y = <H, E, R, O> • <H, E, R, O> <H, E> • <H, E, R, O> <H, O> • <H, E, R, O> <H, E, O> • … • ลำดับย่อยร่วม Common subsequence(X, Y) • ลำดับย่อยร่วมที่ยาวที่สุด longest common subsequence(X, Y) หรือ LCS มีลำดับย่อยทั้งหมด 25 = 32
นิยาม ตัววัดคุณภาพของ LCS
คำตอบปัญหาใหญ่ได้จากคำตอบปัญหาย่อยๆคำตอบปัญหาใหญ่ได้จากคำตอบปัญหาย่อยๆ
คำตอบปัญหาใหญ่ได้จากคำตอบปัญหาย่อยๆคำตอบปัญหาใหญ่ได้จากคำตอบปัญหาย่อยๆ
หาความยาว LCS : เวลาการทำงาน
ต้องการ LCS : จำผลการตัดสินใจ
ใช้ผลการตัดสินใจสร้างคำตอบใช้ผลการตัดสินใจสร้างคำตอบ
ต้องการประหยัด ไม่จำผลการตัดสินใจ
สะกดผิด : หาคำใกล้เคียง
สรุปลักษณะของปัญหาที่เหมาะกับ Dynamic Prog.
แบ่งปัญหาใหญ่เป็นปัญหาย่อยแบ่งปัญหาใหญ่เป็นปัญหาย่อย
หาคำตอบใหญ่จากคำตอบเล็กหาคำตอบใหญ่จากคำตอบเล็ก