Cours en PDF sur La programmation dynamique et l’algorithme complexe, document de formation sur 20 pages pour les débutants.
Plan de cours
- Introduction
- Algorithme 1
- Algorithme 2
- Exemples
- Complexité de l’algorithme
- Quand et comment utiliser la méthode de la programmation dynamique
- Étude de quelques exemples
- Multiplication chaînée de matrices
- Problème du sac à dos en nombres entiers
- Propriété récursive du problème
- Les fonctions à mémoire
L’idée de base de la programmation dynamique est d’éviter le travail répété en se souvenant des résultats partiels et ce concept trouve son application dans beaucoup de situations de la vie réelle.
En programmation, la programmation dynamique est une technique puissante qui permet de résoudre différents types de problèmes en temps O (n2) ou O (n3) pour lesquels une approche naïve prendrait un temps exponentiel.
Jonathan Paulson explique la programmation dynamique dans sa réponse étonnante de Quora ici.
Ecrit ‘1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 =’ sur une feuille de papier.
‘Qu’est-ce que c’est égal?’
Compter ‘Huit!’
Écrit un autre ‘1+’ sur la gauche.
‘Que dire de cela?’
‘Neuf!’ ‘Comment savais-tu qu’il était neuf heures si vite?’
‘Vous venez d’en ajouter un de plus!’
‘Donc, vous n’avez pas besoin de recompter parce que vous vous souvenez qu’il y en avait huit! La programmation dynamique est juste une façon élégante de se souvenir de choses pour gagner du temps plus tard!’
Programmation dynamique et récursion:
La programmation dynamique est essentiellement la récursivité et l’utilisation du bon sens. Ce que cela signifie, c’est que la récursivité vous permet d’exprimer la valeur d’une fonction en fonction d’autres valeurs de cette fonction. Là où le sens commun vous dit que si vous implémentez votre fonction de telle sorte que les appels récursifs sont faits à l’avance et stockés pour un accès facile, votre programme sera plus rapide.
C’est ce que nous appelons Memorization – c’est mémoriser les résultats de certains états spécifiques, qui peuvent ensuite être consultés pour résoudre d’autres sous-problèmes.
Profitez de ce manuel de formation en PDF pour comprendre mieux le Programmation D et enrichir votre connaissance.
Commencez à télécharger ce cours adapté pour vous et à apprendre Programmation D.
10 procedure PlusCourtChemin(i, j: integer); var k: integer; begin k := i; while k j do begin write (k, ‘ ‘); k := suivant[k, j]; end; writeln(j); end; Sur l’exemple précédent, on obtient la matrice suivante: 3.2: Multiplication chaînée de matrices Soit n matrices n M M M ,…, ,2 1 ; chaque matrice i M possède 1−id lignes et id colonnes. Le problème est d’effectuer n M M M× × ×… 2 1 en un minimum d’opérations de multiplications. Rappels a. Pour faire le produit 2 1 M M× , il est nécessaire que le nombre de colonnes de 1 M soit égal au nombre de ligne de 2 M b. Le nombre de multiplications engendrées par j i M M× , de dimension respectivement de ) ( 1i i d d× − et )( j id d× est égal à j i id d d× ×−1 . Parce que la multiplication est une opération associative ( 3 2 1 3 2 1 ) ( ) (M M M M M M× = × , il existe une multitude de manières d’effectuer le produit entre les matrices. Par exemple, soit les trois matrices suivantes : ) 5 13 ( × A ; ) 89 5 ( × B ; ); 3 89 ( × C ) 34 3 ( × D