Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap7: Les méthodes de résolution exactes RSD-GL 1 2015-2016
L’algorithme glouton(Résolution approchée) • On appelle glouton un algorithme qui considère des objets dans un certain ordre, décide de les retenir dans la solution en tenant compte uniquement des contraintes et qui ne revient pas sur cette décision par la suite. l'algorithme glouton ne fournit pas toujours la solution optimale • Pour ce qui concerne le sac à dos l’idée est de classer les objets par ordre d’interêts décroissants, l’intérêt étant le quotient du gain par le poids. C’est une méthode rapide et donne une solution optimale Au problème de sac à dos fractionné.
L’algorithme glouton(Résolution approchée) Exemple: Sac à dos Objets 1 2 3 4 Poids 5 Bénéfices 8 7 6 Benif/poids 2.5 1.6 1.8 J'ai un sac à dos de capacité maximale k (poids). J'ai n objets de poids et de valeurs diverses. Je souhaite remplir le sac de façon à cumuler un maximum de valeurs. Quel est le bénéfice maximum que je peux avoir? Dans cet exemple K=10 Et On cherche B_max? 1)Methode minimisant le poids 5+6+7=18 2)Methode maximisant le benifices 8+7=15 3) Maximisation Benifices/poids 5+7+6=18
Formulation du problème Objets 1 2 3 4 Poids 5 Bénéfices 8 7 6 Max Z= 5x1+8x2+7x3+6x4 2X1+5x2+4x3+3x4 ≤ 10 Xi{0,1}, i=1..4
Sac à dos -programmation dynamique Objets 1 2 3 4 Poids 5 Bénéfices 8 7 6 1 2 3 4 5 6 7 8 9 10 Objet 1 Objet 2 13 Objet 3 14 15 Objet 4 11 19 i j Résultats: objets(4,2,1) bénifice=6+8+5=19
Sac à dos -programmation dynamique • On note B(k, p) le bénéfice maximal réalisable avec des objets 1, 2, . . . , k et le poids maximal p pour k = 1: 0 si p < p1 a1 si p > p1 Pour k > 1 B(k − 1, p) si p < pk max(B(k − 1, p),B(k − 1, p − poidsObjet[k]) + valeurObjet[k] ) Si p >= poidsObjet[k] B(1,p)= B(k,p)= Complexité T(n) = Ө(k*p)
Sac à dos -programmation dynamique Algorithme pour Récupérer la liste d'objets (sac à dos) TANT QUE M[i][j] = M[i][j-1] Début j=j-1 Fin TANT QUE j > 0 Debut TANT QUE i > 0 ET M[i][j] = M[i-1][j] début i=i-1 fin j = j - PoidsObjet[i] Ajoute-objet ( Objet[i] ) i=i-1
Programmation Dynamique Plus court chemin Algorithme de Floyd-Warshal L'algorithme de Floyd-Warshall prend en entrée un graphe orienté et valué (V, E), sous la forme d'une matrice d'adjacence donnant le poids d'un arc lorsqu'il existe et la valeur ∞ sinon. Le poids d'un chemin entre deux sommets est la somme des poids sur les arcs constituant ce chemin. Ce problème n'ayant aucune signification métrique.
Programmation Dynamique Algorithme de Floyd-Warshal
Programmation Dynamique Algorithme de Floyd-Warshal Floyd-Warshall(W) D(0)W Pour k1 à n faire Pour i1 à n faire pour j1 à n faire Renvoyer D
La méthode séparation et évaluation (Branch and Bound) Le branch-and-bound est basé sur trois axes principaux : – L’évaluation: permet de réduire l’espace de recherche en éliminant quelques sous ensembles qui ne contiennent pas la solution optimale. – La séparation: consiste à diviser le problème en sous-problèmes, en résolvant tous les sous-problèmes et en gardant la meilleure solution trouvée. – La stratégie de parcours: largeur d’abord profondeur d’abord meilleur d’abord
La méthode séparation et évaluation (Branch and Bound)