Ο Δυναμικός Προγρμματισμός καθορίζει τη βέλτιστη λύση σε ένα πρόβλημα ν-μεταβλητών αναλύοντας το σε ν-στάδια, με κάθε στάδιο να αποτελέι ένα υποπρόβλημα με μια μεταβλητή. Το υπολογιστικό πλεονέκτημα του Δυναμικού Προγραμματισμού είναι ότι βελτιστοποιεί τα υποπροβλήματα μίας μεταβλητής. Ωστόσο, επειδή το κάθε στάδιο απο τη φύση του διαφέρει ανάλογα με το πρόβλημα βελτιστοποίησης, ο Δυναμικός Προγραμματισμός δεν παρέχει τις υπολογιστικές λεπτομέρειες για την βελτιστοποίηση κάθε σταδίου.
Dynamic programming is a useful mathimatical technique for making a sequence of interrelated decisions. It provides a systematic procedure for determining the optimal combination of decisions.
In contrast to linear programming, there does not exist a standard mathematical formulation of "the" dynamic programming problem. Rather, dynamic programming is a general type of approach to problem solving, and the particular equations used must be developed to fit each situation. Therefore, a certain degree of ingenuity and insight into the general structure of dynamic programming problems is required to recognize when and how a problem can be solved by dynamic programming procedures. There abilities can best be developed by an exposure to a wide variety of dynamic programming applications and a study of tha characteristics that are common to all the these situation. A large number of illustrative examples are presented for this purpose.