Dynamic programming — Δυναμικός Προγραμματισμός
Δυναμικός Προγραμματισμός (ΔΠ· αγγλ. dynamic programming, DP) — είναι μέθοδος επίλυσης σύνθετων προβλημάτων βελτιστοποίησης, που βασίζεται στη διάσπαση του αρχικού προβλήματος σε μια ακολουθία απλούστερων υποπροβλημάτων[1][2]. Η μέθοδος εφαρμόζεται σε πολυβηματικές διαδικασίες λήψης αποφάσεων, όπου η βέλτιστη λύση ολόκληρου του προβλήματος μπορεί να κατασκευαστεί από τις βέλτιστες λύσεις των υποπροβλημάτων του.
Ο όρος εισήχθη από τον Αμερικανό μαθηματικό Ρίτσαρντ Μπέλλμαν τη δεκαετία του 1950[3]. Στο πλαίσιο αυτό, η λέξη «προγραμματισμός» χρησιμοποιείται με την έννοια του «σχεδιασμού» ή της «κατάρτισης βέλτιστου σχεδίου δράσης», και όχι με την έννοια της συγγραφής κώδικα υπολογιστή[4].
Βασικές ιδιότητες και θεωρήματα
Η εφαρμοσιμότητα του δυναμικού προγραμματισμού σε ένα πρόβλημα καθορίζεται από την ύπαρξη δύο θεμελιωδών ιδιοτήτων.
Αρχή βελτιστότητας του Μπέλλμαν
Κεντρική έννοια της μεθόδου είναι η αρχή βελτιστότητας του Μπέλλμαν (αγγλ. Bellman's principle of optimality). Αυτή ορίζει: ανεξάρτητα από την αρχική κατάσταση και την αρχική απόφαση, οι επακόλουθες αποφάσεις πρέπει να αποτελούν βέλτιστη στρατηγική ως προς την κατάσταση που προέκυψε από την πρώτη απόφαση[3].
Με άλλα λόγια, οποιοδήποτε τμήμα μιας βέλτιστης τροχιάς είναι από μόνο του βέλτιστο. Αυτή η ιδιότητα επιτρέπει τη διάσπαση του συνολικού προβλήματος σε μια ακολουθία απλούστερων υποπροβλημάτων και την αναδρομική επίλυσή τους.
Επικαλυπτόμενα υποπροβλήματα
Ενα πρόβλημα διαθέτει την ιδιότητα των επικαλυπτόμενων υποπροβλημάτων (αγγλ. overlapping subproblems) εάν κατά την αναδρομική επίλυσή του τα ίδια υποπροβλήματα εμφανίζονται επανειλημμένα. Ο ΔΠ επιτρέπει την αποφυγή επαναλαμβανόμενων υπολογισμών, αποθηκεύοντας τις λύσεις των ήδη συναντηθέντων υποπροβλημάτων (αυτή η τεχνική ονομάζεται memoization ή tabulation), γεγονός που αυξάνει σημαντικά την αποδοτικότητα σε σύγκριση με την αφελή αναδρομική εξάντληση.
Εξίσωση Μπέλλμαν
Από την αρχή βελτιστότητας απορρέει η βασική αναδρομική σχέση της μεθόδου — η εξίσωση Μπέλλμαν[1]. Αυτή συνδέει την «αξία» (βέλτιστο κέρδος ή κόστος) της τρέχουσας κατάστασης με τις αξίες των επακόλουθων καταστάσεων. Στη γενική μορφή για ντετερμινιστική πολυβηματική διαδικασία με προσθετική αντικειμενική συνάρτηση έχει τη μορφή:
όπου:
- — ο αριθμός βήματος (από έως 1)·
- — η κατάσταση του συστήματος στο βήμα ·
- — η ελεγχόμενη απόφαση που λαμβάνεται στο βήμα ·
- — το κέρδος (ή το κόστος) στο k-οστό βήμα·
- — η συνάρτηση που ορίζει τη νέα κατάσταση του συστήματος·
- — η βέλτιστη τιμή της αντικειμενικής συνάρτησης για το υποπρόβλημα που ξεκινά στο βήμα στην κατάσταση .
Η εξίσωση επιλύεται διαδοχικά, συνήθως «από το τέλος», κινούμενη από το τελευταίο βήμα προς το πρώτο.
Παραδείγματα εφαρμογής
- Πρόβλημα συντομότερης διαδρομής σε γράφο: Αυτό το πρόβλημα διαθέτει την ιδιότητα της βέλτιστης υποδομής, καθώς οποιοδήποτε τμήμα της συντομότερης διαδρομής είναι από μόνο του συντομότερο. Οι αλγόριθμοι Bellman-Ford και Floyd-Warshall αποτελούν κλασικά παραδείγματα εφαρμογής ΔΠ για την επίλυση αυτού του προβλήματος[5].
- Πρόβλημα σακιδίου (knapsack): Πρόβλημα βέλτιστης πλήρωσης σακιδίου περιορισμένης χωρητικότητας με αντικείμενα διαφορετικής αξίας και βάρους. Ο ΔΠ επιτρέπει την επίλυση αυτού του προβλήματος εξετάζοντας τα αντικείμενα διαδοχικά και υπολογίζοντας σε κάθε βήμα τη μέγιστη αξία για όλες τις πιθανές τιμές της εναπομένουσας χωρητικότητας.
- Πρόβλημα κατανομής πόρων: Κατανομή περιορισμένου πόρου (π.χ. επενδύσεων) μεταξύ πολλών έργων για τη μεγιστοποίηση του συνολικού αποτελέσματος.
Περιορισμοί
Ο κύριος περιορισμός της μεθόδου είναι η κατάρα της διαστασιμότητας (αγγλ. curse of dimensionality) — όρος που εισήγαγε ο Μπέλλμαν για να δηλώσει την εκθετική αύξηση του αριθμού καταστάσεων και, κατά συνέπεια, της υπολογιστικής πολυπλοκότητας, με την αύξηση του αριθμού των μεταβλητών που περιγράφουν την κατάσταση του συστήματος[6][7]. Αυτό περιορίζει την πρακτική εφαρμογή του ακριβούς ΔΠ για προβλήματα πολύ μεγάλης διαστασιμότητας.
Συναφείς έννοιες
- Επιχειρησιακή έρευνα
- Θεωρία βέλτιστου ελέγχου
- Διαδικασία απόφασης Markov (στοχαστική γενίκευση)
- Εξίσωση Hamilton — Jacobi — Bellman (ανάλογο για συνεχή χρόνο)
Παραπομπές
[1] [2] [3] [4] [5] [6] [7] </references>
- ↑ 1.0 1.1 1.2 "Динамическое программирование". Большая российская энциклопедия. [1]
- ↑ 2.0 2.1 "Динамическое программирование". Википедия. [2]
- ↑ 3.0 3.1 3.2 Решетников А. Н., Коченков А. В., Пиров Д. М., Рябоконь Д. А. (2011). Динамическое программирование. Примеры применения. Учебное пособие, ННГУ им. Лобачевского (ВМиК). [3]
- ↑ 4.0 4.1 "Dynamic programming". Wikipedia. [4]
- ↑ 5.0 5.1 Bradley S. P., Hax A. C., Magnanti T. L. (1977). Applied Mathematical Programming. Addison-Wesley. [5]
- ↑ 6.0 6.1 "Проклятие размерности". Википедия. [6]
- ↑ 7.0 7.1 Jensen P. A. (2004). Dynamic Programming – Models. Operations Research Models and Methods, Univ. of Texas. [7]