chap5_methodes-exactes

publicité
Université Abou Bakr Belkaid
Faculté des Sciences
Département d’informatique
Algorithmique Avancée et Complexité
Chap5: Les méthodes de résolution exactes
RSD-GL 1
2015-2016
1
3)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.
• 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.
l'algorithme glouton ne fournit pas toujours la solution
optimale
C’est une méthode rapide et donne une solution optimale
Au problème de sac à dos fractionné.
2
L’algorithme glouton(Résolution approchée)
Objets
Exemple: Sac à dos
1
2
3
4
Poids
2
5
4
3
Bénéfices
5
2.5
8
1.6
7
1.8
6
2
Benif/poids
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
3
Formulation du problème
Objets
Poids
Bénéfices
1
2
5
2
5
8
3
4
7
4
3
6
Max Z= 5x1+8x2+7x3+6x4
2X1+5x2+4x3+3x4 ≤ 10
Xi{0,1}, i=1..4
4
Sac à dos -programmation dynamique
Objets
1
2
3
4
Poids
2
5
5
8
4
7
3
6
Bénéfices
i
Objet 1
0
0
j
1
2
3
4
5
6
7
8
9
10
0
5
5
5
5
5
5
5
5
5
Objet 2
0
0
5
5
5
8
8
13
13
13
13
Objet 3
0
0
5
5
7
8
8
13
14
15
15
Objet 4
0
0
5
6
7
11
11
13
14
15
19
Résultats: objets(4,2,1)
 bénifice=6+8+5=19
5
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:
B(1,p)=
0 si p < p1
a1 si p > p1
Pour k > 1
B(k − 1, p)
B(k,p)=
si p < pk
max(B(k − 1, p),B(k − 1, p − poidsObjet[k]) + valeurObjet[k] )
Si p >= poidsObjet[k]
Complexité  T(n) = Ө(k*p)
6
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
début
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
fin
7
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.
8
Programmation Dynamique
Algorithme de Floyd-Warshal
9
Programmation Dynamique
Algorithme de Floyd-Warshal
• Floyd-Warshall(W)
• D(0)W
• Pour k1 à n faire
Pour i1 à n faire
pour j1 à n faire
Di(,kj)  min( Di(,kj1) , Di(,kk1)  Dk( k, j1) )
Renvoyer D
10
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
11
La méthode séparation et
évaluation (Branch and Bound)
12
Algorithme de Djikstra
13
Téléchargement