Text this: Dynamic programming , its principles, applications, strengths, and limitations