Δυναμικός προγραμματισμός: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μΧωρίς σύνοψη επεξεργασίας
Χωρίς σύνοψη επεξεργασίας
Γραμμή 1:
==='''Εισαγωγή'''===
Ο Δυναμικός Προγραμματισμός αποτελεί μία υπολογιστική μέθοδο η οποία εφαρμόζεται σε προβλήματα που δεν είναι δυνατόν να λυθούν με [https://en.wikipedia.org/wiki/Greedy_algorithm άπληστες μεθόδους] ή τη μέθοδο [https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%AF%CF%81%CE%B5%CE%B9_%CE%BA%CE%B1%CE%B9_%CE%B2%CE%B1%CF%83%CE%AF%CE%BB%CE%B5%CF%85%CE%B5_(%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82) διαίρει και βασίλευε]. Θεμέλιο του δυναμικού προγραμματισμού αποτελεί η αρχή βελτιστοποίησης. Είναι μία μέθοδος που είναι εφαρμόσιμη όταν τα υποπροβλήματα που υπάρχουν δεν είναι ανεξάρτητα μεταξύ τους. Ένας αλγόριθμος που είναι προϊόν του δυναμικού προγραμματισμού, επιλύει μία φορά κάθε υποπρόβλημα και αποθηκεύει αυτή τη λύση σ' έναν πίνακα, στον οποίον θα καταφεύγει κάθε φορά που συναντά το συγκεκριμένο πρόβλημα. Αποτελεί μία πολύ ισχυρή τεχνική για αλγοριθμική επίλυση προβλημάτων.
 
==='''Ιστορικά Στοιχεία'''===
Ο όρος δυναμικός προγραμματισμός, θεμελιώθηκε το 1953 από τον [https://en.wikipedia.org/wiki/Richard_Bellman Richard Bellman] (1920 - 1984) με στόχο να περιγράψει τη διαδικασία επίλυσης προβλημάτων που διασπώνται σε μία αλληλουχία διαδοχικών αποφάσεων. Ο όρος αυτός αναφέρεται στην εξίσωση Bellman, η οποία επαναδιατυπώνει ένα πρόβλημα βελτιστοποίησης με επαναλαμβανόμενη μορφή και αποτελεί κεντρικό αποτέλεσμα του δυναμικού προγραμματισμού. Επομένως η λέξη "προγραμματισμός" χρησιμοποιήθηκε για να δηλώσει την κατάστρωση ενός σχεδίου και δεν έχει καμία σχέση με τον προγραμματισμό υπολογιστών. Χρησιμοποιείται ως συνώνυμο της βελτιστοποίησης και προέρχεται από τον όρο μαθηματικός προγραμματισμός. Η λέξη "δυναμικός", υποδηλώνει την χρονικά μεταβαλλόμενη φύση της διαδικασίας του δυναμικού προγραμματισμού, καθώς συμβαίνει σε πολλαπλά διαδοχικά στάδια. Έτσι καταλήγουμε ότι ο δυναμικός προγραμματισμός είναι μία σχεδιαστική τεχνική που λύνει με αποτελεσματικότερο τρόπο πολύπλοκα προβλήματα βελτιστοποίησης με τη βοήθεια ενός προγράμματος που εφαρμόζει έναν δυναμικό αλγόριθμο προγραμματισμού στον υπολογιστή.