Programmation dynamique Chapitre 2 Programmation dynamique
Programmation dynamique La programmation dynamique est une méthode de conception d'algorithme qui peut être employée quand la solution à un problème peut être vue comme le résultat d'une série de décisions
Formulation d’un problème en programmation dynamique Formulation du problème de la programmation dynamique en tant qu’un système dynamique à étapes discrètes Deux caractéristiques principales du problème de base déterminent sa structure : (1) un système dynamique sous-jacent à étapes discretes, et (2) un coût fonctionnel qui est additif dans le temps.
Programmation dynamique Déterministe vs stochastique Les méthodes de programmation dynamique basés sur des modèles déterministes supposent que le coût et le changement de l’état résultants de chaque décision, même pour leurs valeurs futures, sont connus avec certitude. Pour les systèmes stochastiques ( ex: gestion de stock), la fonction coût dépendent des perturbations aléatoires. Il est alors impossible de minimiser les coûts totaux. L’approche traditionnelle consiste à minimiser leur espérance.
Le plus court chemin Pour trouver le plus court chemin dans un graphe à plusieurs étapes: Appliquer la méthode glouton (greedy method) : Un algorithme glouton est un algorithme qui suit le principe de faire, étape par étape, un choix optimum local, dans l'espoir d'obtenir un résultat optimum global. le plus court chemin de S à T est :1 + 2 + 5 = 8
Le plus court chemin dans les graphes à plusieurs étapes par exemple. La méthode de Glouton ne peut pas être appliquée à ce cas : (S, A, D, T) 1+4+18 = 23. Le vrai court chemin est : (S, C, F, T) 5+2+2 = 9.
Approche de programmation dynamique (approche vers l'avant) : d(S, T) = min{1+d(A, T), 2+d(B, T), 5+d(C, T)} d(A,T) = min{4+d(D,T), 11+d(E,T)} = min{4+18, 11+13} = 22.
d (B, T) = minute {9+d (D, T), 5+d (E, T), 16+d (F, T)} d (C, T) = min {2+d (F, T)} = 2+2 = 4 d (S, T) = min {1+d (A, T), 2+d (B, T), 5+d (C, T)} = min {1+22, 2+18, 5+4} = 9. La manière ci-dessus du raisonnement s'appelle raisonnement en arrière.
Approche en arrière (raisonnement vers l'avant) d (S, A) = 1 d (S, B) = 2 d (S, C) = 5 d (S, D)=min {d (S, A)+d (A, D), d (S, B)+d (B, D)} = min {1+4, 2+9} = 5 d (S, E)=min {d (S, A)+d (A, E), d (S, B)+d (B, E)} = min {1+11, 2+5} = 7 d (S, F)=min {d (S, B)+d (B, F), d (S, C)+d (C, F)} = min {2+16, 5+2} = 7
d (S, T) = min {d (S, D)+d (D, T), d (S, E)+ d (E, T), d (S, F)+d (F, T)} = min {5+18, 7+13, 7+2} = 9
Principe de l'optimalité Principe de l'optimalité : Supposer qu'en résolvant un problème, nous doivent faire un ordre des décisions D1, D2,…, DN. Si cet ordre est optimal, alors les dernières décisions de k, 1 n du k doivent être optimales. Dans le problème du plus court chemin Si I, i1, i2,…, j est un court chemin d'I à j, alors i1, i2,…, j doit être un court chemin d'i1 à j
Programmation dynamique Caractéristiques d’un problème de programmation dynamique Le problème peut être décomposé en étapes et une décision doit être prise à chaque étape. Ces décisions sont interdépendantes et séquentielles. A chaque étape correspond un certain nombre d’états. Dans l’exemple du voyageur, les états à chaque étape sont représentés par les villes que le voyageur les visiter. Le nombre de ces états dans l’exemple est fini. Le nombre d’états peut être infinie (xn IN) ou continue (xn IR) A chaque étape, la décision prise transforme l’état actuel en un état associé à l’étape suivante (dans certains cas avec une distribution de probabilité).
Programmation dynamique Etant donné un état, une stratégie optimale pour les étapes restantes est indépendante des décisions prises aux étapes précédentes. d’autres termes, l’état actuel contient toute l’information nécessaire aux décisions futures. Cette propriété est dite principe d’optimalité. L’algorithme de recherche de la solution optimale commence par trouver la stratégie optimale pour tous les états de la dernière étape. Une relation de récurrence identifie la stratégie optimale dans chaque état de l’étape n à partir de la stratégie optimale dans chaque état de l’étape n+1. Utilisant cette relation de récurrence, l’algorithme procède à reculons étape par étape. Il détermine la stratégie optimale pour chaque état de chaque étape.