60
CHAPITRE V: ALGORITHMES GLOUTONS Université Saad Dahleb de Blida Faculté des Sciences Département d’Informatique Licence Génie des Systèmes Informatique (GSI) Semestre 5 (3 ème année) ALGORITHMIQUE 02 Cours n°12: 24 Novembre 2013 AROUSSI Sana Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/

Chapitre v algorithmes gloutons

Embed Size (px)

Citation preview

Page 1: Chapitre v algorithmes gloutons

CHAPITRE V:

ALGORITHMES GLOUTONS

Université Saad Dahleb de Blida

Faculté des Sciences

Département d’Informatique

Licence Génie des Systèmes Informatique (GSI)

Semestre 5 (3ème année)

ALGORITHMIQUE 02

Cours n°12: 24 Novembre 2013

AROUSSI Sana

Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/

Page 2: Chapitre v algorithmes gloutons

PLAN DU CHAPITRE V

Introduction

Schéma Général

Preuve d’Optimalité

Exemples

2

Page 3: Chapitre v algorithmes gloutons

3

On est souvent dans le cadre des problèmes

d'optimisation:

E: un ensemble fini d'éléments.

S: une solution est construite à partir des éléments de E. Par

exemple: une partie de E, un multi-ensemble d'éléments de E, une

suite fini de E ou une permutation de E qui satisfait une certaine

contrainte.

A chaque solution S est associée une fonction objectif F(S).

Le but est de chercher une solution qui optimise (minimise ou

maximise) cette fonction objectif.

INTRODUCTION PROBLÈME D’OPTIMISATION

Page 4: Chapitre v algorithmes gloutons

4

Pour un problème d’optimisation, un algorithme glouton

est un algorithme qui cherche à construire une

solution pas à pas

sans jamais revenir sur ses décisions,

en prenant à chaque étape la solution qui

semble la meilleure localement,

en espérant obtenir une solution optimale.

INTRODUCTION PRINCIPE GÉNÉRAL

Page 5: Chapitre v algorithmes gloutons

5

Algorithme Glouton Exact

Choix glouton optimal

Algorithme Glouton Exact

Choix glouton: Solution non optimale Choix glouton: Solution non optimale

Heuristique Gloutonne

INTRODUCTION PRINCIPE GÉNÉRAL

Page 6: Chapitre v algorithmes gloutons

6

On dispose des pièces de monnaie correspondant aux

valeurs E = {e1, ..., en}.

Pour chaque valeur ei, le nombre de pièces (nbi) est non

borné.

Étant donnée une somme « s » entière, on veut trouver

une façon de rendre la somme « s » avec un nombre de

pièces minimum.

Prendre E ={1, 10, 2, 5}, s = 28, Quelles la solution

optimale?

EXEMPLE 1: LE MONNAYEUR

Page 7: Chapitre v algorithmes gloutons

7

Une solution S = (nb1, ...., nbn) présente le nombre de

pièces (nbi) pour chaque valeur (ei):

Elle est correcte si

Elle est optimale si est minimal.

Algorithme glouton: Trier les valeurs de pièces par

ordre décroissant. Pour chaque valeur de pièce,

maximiser le nombre de pièces choisies.

EXEMPLE 1: LE MONNAYEUR

Page 8: Chapitre v algorithmes gloutons

8

Trier E en ordre décroissant

Pour i 1 à n faire

DP

S[i] s div E[i]

s s mod E[i]

FP

EXEMPLE 1: LE MONNAYEUR

1ÈRE VERSION

Page 9: Chapitre v algorithmes gloutons

9

Il est basé sur un critère local de sélection des

éléments de E pour construire une solution optimale. En

fait, on travaille sur l'objet « solution partielle » et on

doit disposer des modules suivant:

Init qui initialise la solution de début

Select qui choisit le meilleur élément restant selon le

critère glouton: Souvent, on trie tout simplement la liste des

éléments selon le critère glouton au départ et on balaye

ensuite cette liste dans l'ordre.

SCHÉMA GÉNÉRAL

Page 10: Chapitre v algorithmes gloutons

10

Init qui initialise la solution de début

Select qui choisit le meilleur élément restant selon le critère

glouton: Souvent, on trie tout simplement la liste des éléments

selon le critère glouton au départ et on balaye ensuite cette liste

dans l'ordre.

Complete? qui teste si une solution partielle est une solution

(complète).

AjoutPossible? qui teste si un élément peut être ajouté à une

solution partielle. Dans certains cas, c'est toujours vrai!

Ajout qui permet d'ajouter un élément à une solution si c'est

possible.

SCHÉMA GÉNÉRAL

Page 11: Chapitre v algorithmes gloutons

11

L’algorithme Glouton est alors:

Trier (E)

Init (S)

Tant que Non Complete(S) faire

Select(x, E)

Si AjoutPossible(x) alors Ajout(S, x)

FTQ

SCHÉMA GÉNÉRAL

Page 12: Chapitre v algorithmes gloutons

12

Trier (E) //en ordre décroissant

Init (S) //Initialiser la solution à 0 (nbi = 0)

i1

Tant que (i n) faire // La solution est complète après

avoir parcouru tous les éléments de E

// Select retourne E(i)

// AjoutPossible est toujours vrai

S[i] s div E[i] // Ajouter la solution

s s mod E[i]

i ++

FTQ

EXEMPLE 1: LE MONNAYEUR

SCHÉMA GLOUTON

Page 13: Chapitre v algorithmes gloutons

13

Soit n la cardinalité de E

Trier (E)

Init (S)

Tant que Non Complete(S) faire

Select(x, E)

Si AjoutPossible(x) alors Ajout(S, x)

FTQ

SCHÉMA GÉNÉRAL

COMPLEXITÉ

La complexité est souvent de l’ordre O ( n log2 n + n f(n) ) La complexité est souvent de l’ordre O ( n log2 n + n f(n) )

O (T ) = O(n log n) O (Ttrier ) = O(n log2 n)

TInit TInit Tcomplete Tcomplete

Tselect Tselect

Tpossible Tpossible TAjout TAjout

n fois n fois

f(n) f(n)

Page 14: Chapitre v algorithmes gloutons

14

EXEMPLE 1: LE MONNAYEUR

COMPLEXITÉ DU SCHÉMA GLOUTON

O (Ttrier) = O ( n log2 n ) O (Ttrier) = O ( n log2 n )

Trier (E)

Init (S)

i1

Tant que (i n) faire

S[i] s div E[i]

s s mod E[i]

i ++

FTQ

Page 15: Chapitre v algorithmes gloutons

15

Dans certains cas, le schéma général est encore plus

simple! Comme dans le cas de MONNAYEUR.

Dans d'autres cas, les solutions sont un peu plus

compliquées ... et on a besoin d'un schéma un peu plus

sophistiqué...

SCHÉMA GÉNÉRAL

REMARQUES

Page 16: Chapitre v algorithmes gloutons

16

Un algorithme glouton produit des solutions optimales si

les propriétés suivantes sont vérifiées :

1. Propriété du choix glouton : Il existe toujours une

solution optimale qui contient un premier choix glouton

En général on montre que toute solution optimale contient ou

débute par le premier choix glouton.

PREUVE D’OPTIMALITÉ

Page 17: Chapitre v algorithmes gloutons

17

2. Propriété de sous-structure optimale : toute solution

optimale contient une sous-structure optimale

Soit S une solution optimale du problème P contenant le choix C et

le S’ = S\{C} alors S’ est une solution optimale du sous problème

PC résultant du choix C dans le problème P

PREUVE D’OPTIMALITÉ

Page 18: Chapitre v algorithmes gloutons

18

PREUVE D’OPTIMALITÉ

Pour monter que l’algorithme glouton rend toujours une

solution optimale, il faut montrer que les deux

propriétés ( choix glouton et sous-structure

optimale) sont vérifiées.

Pour montrer que l’algorithme glouton ne rend pas

toujours une solution optimale, il suffit de trouver un

contre-exemple.

Page 19: Chapitre v algorithmes gloutons

19

EXEMPLE 1: LE MONNAYEUR

PREUVE D’OPTIMALITÉ

E = {10 , 5, 2, 1}: Algorithme Glouton trouve toujours la

solution optimale?

Choix glouton : la valeur de pièce la plus grande

Si s ≥ 10 toute solution optimale contient au moins

une pièce de 10 c’est le premier choix glouton.

Si s < 10, l’algorithme fait un bon premier choix ( au

plus une pièce 5, au plus deux pièce de 2 et au plus

une pièce de 1)

Toute solution optimale contient donc un choix

glouton

Page 20: Chapitre v algorithmes gloutons

20

Propriété de sous-structure optimale :

Soient S une solution optimale pour la somme s et C S

un choix glouton (la plus grande pièce) alors S’ = S- {C}

est une solution optimale pour s-valeur(C).

1ère Méthode: Preuve par absurde

Supposant que:

H1: S une solution optimale pour la somme s

H2: C S un choix glouton (la plus grande pièce)

H3: S’ = S- {C} est une solution non optimale

pour s-valeur (C)

EXEMPLE 1: LE MONNAYEUR

PREUVE D’OPTIMALITÉ

Page 21: Chapitre v algorithmes gloutons

21

1ère Méthode: Preuve par absurde

Supposant que:

H1: S une solution optimale pour la somme s

H2: C S un choix glouton (la plus grande pièce)

H3: S’ est une solution non optimale pour s-valeur (C)

Alors il existe une solution S’’ meilleure que S’ pour s-

valeur (C), i.e.

Donc, S’’ {C} est meilleure que S’ {C} pour s car

i.e, S = S’ {C} n’est pas optimale (contradiction avec

l’hypothèse H1).

EXEMPLE 1: LE MONNAYEUR

PREUVE D’OPTIMALITÉ

Page 22: Chapitre v algorithmes gloutons

22

E = {8, 4, 2}:

Solution optimale existe si S est pair et S >1

Algorithme Glouton donne la solution optimale si elle

existe

E = {5, 2}:

Solution optimale existe si n 4

Algorithme Glouton ne la trouve pas toujours (n=6)

E = {5, 4, 1}:

Solution optimale existe toujours

Algorithme Glouton trouve toujours la solution mais elle

n’est pas toujours optimale (n=8)

EXEMPLE 1: LE MONNAYEUR

PREUVE D’OPTIMALITÉ

Page 23: Chapitre v algorithmes gloutons

23

Conclusion: Caractériser les jeux de pièces pour lesquels

l’algorithme glouton est optimal est un problème

ouvert. Il est facile de trouver des catégories qui

marchent (par exemple des pièces E ={1,B,B2,B3} pour B ≥

2) mais le cas général résiste !

EXEMPLE 1: LE MONNAYEUR

PREUVE D’OPTIMALITÉ

Page 24: Chapitre v algorithmes gloutons

CHAPITRE V:

ALGORITHMES GLOUTONS

Université Saad Dahleb de Blida

Faculté des Sciences

Département d’Informatique

Licence Génie des Systèmes Informatique (GSI)

Semestre 5 (3ème année)

ALGORITHMIQUE 02

Cours n°13: 27 Novembre 2013

AROUSSI Sana

Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/

Page 25: Chapitre v algorithmes gloutons

25

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

Soit E= {1,..., n} un ensemble de n tâches.

La tâche i commence à l’instant Di et finit à l’instant Fi.

Deux tâches i, j sont compatibles si elles ne se

chevauchent pas (Dj Fi) .

But 1 : trouver un ensemble maximal de tâches

compatibles.

Page 26: Chapitre v algorithmes gloutons

26

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

Algorithme glouton: Trier les tâches selon leur date

fin et sélectionner une tâche compatible par ordre

croissant.

E 1 2 3 4 5 6 7 8 9

D 1 2 4 1 5 8 9 13 11

F 8 5 7 3 9 11 10 16 14

Page 27: Chapitre v algorithmes gloutons

27

1. Trier les tâches selon leur date fin 1. Trier les tâches selon leur date fin

2. Sélectionner les tâches compatibles par ordre croissant 2. Sélectionner les tâches compatibles par ordre croissant

Solution: Tâches 4, 3, 7, 9

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

E 1 2 3 4 5 6 7 8 9

D 1 2 4 1 5 8 9 13 11

F 8 5 7 3 9 11 10 16 14

E 4 2 3 1 5 7 6 9 8

D 1 2 4 1 5 9 8 11 13

F 3 5 7 8 9 10 11 14 16

E 4 2 3 1 5 7 6 9 8

D 1 2 4 1 5 9 8 11 13

F 3 5 7 8 9 10 11 14 16

Page 28: Chapitre v algorithmes gloutons

28

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

SCHÉMA GLOUTON

Trier (E, D, F) //trier selon ordre croissant de la date fin

S{E[1]}; j1 //Initialiser la solution

i2

Tant que (i n) faire // La solution est complète après

avoir parcouru tous les éléments de E

// La tâche E[i] est sélectionnée

Si D[i] F[j] // Si la tâche E[i] est compatible avec la

tâche E[j]

S S {E[i]} // Ajouter la solution

j i;

i ++

FTQ

Page 29: Chapitre v algorithmes gloutons

29

Premier choix glouton : E[1] est la tâche ayant la

date fin la plus petite

Propriété 1: Il existe toujours une solution

optimale qui contient le premier choix glouton

Soit S = { T1, ..., Tk} une solution optimale ordonnée

(D[T1] < D[T2]<.....<D[Tk]) tel que F[Tk] F[1]

Si T1 E[1] alors S – {T1} contient l’ensemble des

tâches compatibles avec T1 ainsi avec E[1].

Ainsi, S – {T1} {E[1]} est aussi une solution

optimale.

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

PREUVE D’OPTIMALITÉ

Page 30: Chapitre v algorithmes gloutons

30

Premier choix glouton : E[1] est la tâche ayant la

date fin la plus petite

Propriété 2: Toute solution optimale contient une

sous-structure optimale

Soit S = { T1, ..., Tm} une solution optimale ordonnée

(D[T1] < D[T2]<.....<D[Tk]) alors S – {T1} est aussi

une solution optimale. Le problème se ramène à

trouver une solution optimale des tâches compatibles

avec T1.

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

PREUVE D’OPTIMALITÉ

Page 31: Chapitre v algorithmes gloutons

31

Preuve par absurde

Supposant que:

H1: S = { T1, ..., Tk} une solution optimale

H2: S’ = S - {T1} est une solution non optimale.

Alors, il existe une solution meilleure (S’’) que S’, i.e.

|S’’| > |S’| = k-1.

Donc, S’’ {T1} est meilleure que S car |S’’ {T1}|> k,

i.e, S n’est pas optimale (contradiction avec

l’hypothèse H1).

EXEMPLE 2: ORDONNANCEMENT DES TÂCHES

PREUVE D’OPTIMALITÉ

Page 32: Chapitre v algorithmes gloutons

32

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

Soit E= {1,..., n} un ensemble de n tâches.

La tâche j commence à l’instant Di et finit à l’instant Fi.

Chaque tâche est exécutée sur une machine.

Une machine exécute une tâche à la fois.

But 2 : Trouver un nombre minimal de machines

permettant d’exécuter toutes les tâches.

Page 33: Chapitre v algorithmes gloutons

33

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

Algorithme Glouton: Trier les tâches selon leur date

début et attribuer une machine compatible à chaque

tâche.

E 1 2 3 4 5 6 7 8 9

D 1 2 4 1 5 8 9 13 11

F 8 5 7 3 9 11 10 16 14

Page 34: Chapitre v algorithmes gloutons

34

1. Trier les tâches selon leur date début 1. Trier les tâches selon leur date début

2. Attribuer une machine compatible à chaque tâche 2. Attribuer une machine compatible à chaque tâche

Solution: 3 machines

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

E 1 4 2 3 5 6 7 9 8

D 1 1 2 4 5 8 9 11 13

F 8 3 5 7 9 11 10 14 16

M 1 2 3 2 3 2 1 3 1

E 1 4 2 3 5 6 7 9 8

D 1 1 2 4 5 8 9 11 13

F 8 3 5 7 9 11 10 14 16

Page 35: Chapitre v algorithmes gloutons

35

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

SCHÉMA GLOUTON

Trier (E, D, F) //trier selon ordre croissant de la date

début

Soit FP une file prioritaire dans laquelle on garde les

machines. Les machines sont classés par ordre croissant

de la date fin de la tâche attribuée. Ainsi, une machine est

caractérisée par son numéro (Num) et une date fin (Fin).

CréerFile (FP); Nb0 //Initialiser la solution

i1

Page 36: Chapitre v algorithmes gloutons

36

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

SCHÉMA GLOUTON

Trier (E, D, F) //trier selon ordre croissant de la date début

CréerFile (FP); Nb0; //Initialiser la solution

i1

Tant que (i n) faire

Si (FP = Nil) ou (D[i] < FP.Fin) // Si la file est vide ou la tâche E[i] est

compatible avec la machine FP.Num

NB++ // Ajouter la solution

M.Num NB;

Sinon

Défiler (FP, M);

M.FinF[i]; Enfiler (FP, M)

i ++

FTQ

Page 37: Chapitre v algorithmes gloutons

37

Soit S = { M1, ..., Mk} une solution optimale.

Premier choix glouton : la tâche E[1], ayant la date

début la plus petite, est affectée à la machine M1

Propriété 1: Il existe toujours une solution

optimale qui contient le premier choix glouton

La solution optimale contient au moins une machine

(k1), c’est la machine M1.

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

PREUVE D’OPTIMALITÉ

Page 38: Chapitre v algorithmes gloutons

38

Premier choix glouton : la tâche E[1], ayant la date

début la plus petite, est affectée à la machine M1

Propriété 2: Toute solution optimale contient une

sous-structure optimale

Soit S = { M1, ..., Mk} une solution optimale pour E

alors S – {M1} est aussi une solution optimale pour E

- {T(M1)}. T(M1) est l’ensemble des tâches exécutées

sur la machine M1.

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

PREUVE D’OPTIMALITÉ

Page 39: Chapitre v algorithmes gloutons

39

Preuve par absurde

Supposant que:

H1: S = { M1, ..., Mk} une solution optimale pour E

H2: S’ = S- {M1} est une solution non optimale pour E –

{T(M1)}.

Alors, il existe une solution meilleure (S’’) que S’ pour E

– {T(M1)}, i.e. |S’’| < |S’| = k-1.

Donc, S’’ {M1} est meilleure que S pour E car

|S’’ {T1}| < k, i.e, S n’est pas optimale

(contradiction avec l’hypothèse H1).

EXEMPLE 3: ORDONNANCEMENT DES TÂCHES

PREUVE D’OPTIMALITÉ

Page 40: Chapitre v algorithmes gloutons

40

EXEMPLE 4: PROBLÈME DE SAC À DOS ENTIER

Soit E= {1,..., n} un ensemble de n objets.

Chaque objet i a un poids Pi et une valeur Vi. Il peut

être pris en entier et au plus une fois, i.e. Nbi {0,

1}.

Soit un sac à dos de contenance maximale Pmax

But : Maximiser la valeur totale des objets mis

dans le sac à dos

Page 41: Chapitre v algorithmes gloutons

41

EXEMPLE 4: PROBLÈME DE SAC À DOS ENTIER

Algorithme Glouton: trier les objets selon un critère

donné et sélectionner un objet jusqu’à atteindre la

capacité maximale de sac à dos.

Choix gloutons possibles

choisir l’objet de plus grande valeur

choisir l’objet le plus léger

choisir l’objet dont le rapport valeur/poids est

maximal.

Montrer que ces choix ne donnent pas de solution

optimale dans le cas où l’objet est pris en entier.

Page 42: Chapitre v algorithmes gloutons

42

EXEMPLE 4: PROBLÈME DE SAC À DOS ENTIER

E 1 2 3

P 10 20 30

V 30 100 120

V/P 3 5 4

Pmax = 50

(220)

Pmax = 40

(150)

Pmax = 30

(130)

L’objet le plus

léger

Non (130) Non (130) Oui (130)

L’objet de plus

grande valeur

Oui (220) Oui (150) Non (120)

L’objet dont le

rapport V/P est

maximal

Oui (220) Non (130) Oui (130)

Page 43: Chapitre v algorithmes gloutons

CHAPITRE V:

ALGORITHMES GLOUTONS

Université Saad Dahleb de Blida

Faculté des Sciences

Département d’Informatique

Licence Génie des Systèmes Informatique (GSI)

Semestre 5 (3ème année)

ALGORITHMIQUE 02

Cours n°14: 01 Décembre 2013

AROUSSI Sana

Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/

Page 44: Chapitre v algorithmes gloutons

44

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

Soit E= {1,..., n} un ensemble de n objets.

Chaque objet i a un poids Pi et une valeur Vi. Il peut

être fractionné i.e. Nbi [0, 1].

Soit un sac à dos de contenance maximale Pmax

But : Maximiser la valeur totale des objets mis

dans le sac à dos

Page 45: Chapitre v algorithmes gloutons

45

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

E 1 2 3

P 10 20 30

V 30 100 120

V/P 3 5 4

Pmax = 50

(220)

Pmax = 40

(180)

Pmax = 30

(140)

L’objet le plus

léger

Non (210) Non (170) Non (130)

L’objet de plus

grande valeur

Oui (220) Non (170) Non (120)

L’objet dont le

rapport V/P

est maximal

Oui (220) Oui (180) Oui (140)

Page 46: Chapitre v algorithmes gloutons

46

Une solution S = (nb1, ...., nbn) présente le nombre de

l’objet i (nbi [0, 1])

Algorithme glouton: Trier les objets par ordre

décroissant de leur rapport Vi/Pi. Pour chaque objet,

maximiser le nombre nbi [0, 1] jusqu’à atteindre la

capacité maximale de l’objet.

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

Page 47: Chapitre v algorithmes gloutons

47

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

SCHÉMA GLOUTON

Trier (E, P, V) //trier selon ordre décroissant du rapport V/P

Init (S) //Initialiser la solution nbi à 0

i1

Tant que (Pmax > 0) et (i n) faire

// Ajouter la solution

Si P[i] Pmax

S[i] 1

Sinon

S[i] Pmax / P[i]

Pmax Pmax – P[i]

i ++

FTQ

Page 48: Chapitre v algorithmes gloutons

48

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

PREUVE D’OPTIMALITÉ

Soit S = (nb1,..., nbn) une solution optimale.

Premier choix glouton : l’objet E[1], ayant le rapport

V/P le plus grand

Propriété 1: Il existe toujours une solution

optimale qui contient le premier choix glouton

Page 49: Chapitre v algorithmes gloutons

49

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

PREUVE D’OPTIMALITÉ

Propriété 1: Il existe toujours une solution

optimale qui contient le premier choix glouton

Cette propriété est toujours vérifiée. En effet, il ne

peut exister que trois cas de figures:

S = (1, 1, ......, 1) si

S = (1, 1, ....., 1, k, 0, ....., 0) si

S = (1, 0, ....., 0) si

Page 50: Chapitre v algorithmes gloutons

50

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

PREUVE D’OPTIMALITÉ

Soit S = (nb1,..., nbn) une solution optimale.

Propriété 2: Toute solution optimale contient une

sous-structure optimale

Soient S une solution optimale pour Pmax, alors S –

{nba} est aussi une solution optimale pour Pmax – Pa.

(Pa = nba x P[a])

Page 51: Chapitre v algorithmes gloutons

51

EXEMPLE 5: PROBLÈME DE SAC À DOS FRACTIONNÉ

PREUVE D’OPTIMALITÉ Preuve par absurde

Supposant que:

H1: S = (nb1,..., nbn) une solution optimale pour Pmax

H2: S’ = S- {nba} est une solution non optimale pour Pmax – Pa.

Alors, il existe une solution meilleure (S’’) que S’ pour

Pmax – Pa, i.e. W(S’’) > W(S’). W(K) retourne la valeur

totale de la solution K.

Donc, S’’ {nba} est meilleure que S pour Pmax car

V(S’’ {nba}) > V(S), i.e, S n’est pas optimale

(contradiction avec l’hypothèse H1).

Page 52: Chapitre v algorithmes gloutons

52

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

Soit G = (X,E, W) un graphe connexe non orienté valué

tel que:

X est l’ensemble de sommet avec |X| = n.

E est l’ensemble des arrêtes avec |E| = m

W est une fonction de valuation des arêtes W: ER

Un arbre recouvrant de G est un sous graphe A

(X, EA, W) connexe et sans cycle. Ainsi, | EA|= n-1.

Page 53: Chapitre v algorithmes gloutons

53

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

Un Arbre Recouvrant Mimimum ARmin (X,EA) du G est

un arbre recouvrant qui minimise

1. Écrire l’algorithme Glouton.

2. Prouver l’optimalité de l’algorithme

Page 54: Chapitre v algorithmes gloutons

54

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

Algorithme glouton: Trier les arêtes par ordre croissant

de leur valuation. Sélectionner une arête (si elle forme

pas un cycle avec les arêtes déjà sélectionnées) jusqu’à

construire un arbre recouvrant.

C’est le principe de l’Algorithme de Kruskal

Page 55: Chapitre v algorithmes gloutons

55

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

SCHÉMA GLOUTON

Trier (E) //trier les arêtes selon ordre croissant de leur poids

Initi (EA)//Initialiser la solution; EA est un tableau à (n-1) éléments

nb0 // le nombre des arêtes sélectionnées

i 1

Tant que (nb n-1) faire

// la fonction Cycle vérifie que l’ensemble des arêtes EA E[i] ne

forment pas un cycle

Si non Cycle (EA , E[i]) alors

nb ++

EA[nb] E[i]

i ++

FTQ

Page 56: Chapitre v algorithmes gloutons

56

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

PREUVE D’OPTIMALITÉ

Premier choix glouton : l’arête e = E[1], ayant la

valuation la plus petite.

Propriété 1: Il existe toujours une solution

optimale qui contient le premier choix glouton

Lemme 1: Soient A est un arbre recouvrant, e

A alors e’ A tel que A – {e’} {e} est un

arbre recourvrant. De plus, e’ peut être choisi

dans le cycle formé par les arêtes de A et e.

Page 57: Chapitre v algorithmes gloutons

57

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

PREUVE D’OPTIMALITÉ

Propriété 1: Il existe toujours une solution

optimale qui contient le premier choix glouton

Soit A la solution optimale.

Si e A alors e’ A tel que A – {e’} {e} est aussi un

arbre recouvrant minimal. En effet

W(A – {e’} {e}) = W (A) - w(e’) + w (e) = W* - w(e’) +

w (e) = W*

Ainsi, w (e) = w (e’), i.e. les deux arêtes possèdent la

même valuation.

Page 58: Chapitre v algorithmes gloutons

58

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

PREUVE D’OPTIMALITÉ

Soit A* une solution optimale.

Propriété 2: Toute solution optimale contient une

sous-structure optimale

Soient A* une solution optimale pour W*, alors A*–

{e} est aussi une solution optimale pour W* - w (e)

Lemme 2: Soient A est un arbre recouvrant

pour G = (X, E) et e = (x, y) A tel que d(y) = 1

alors A – {e} est aussi un arbre pour G = (X – {y},

Ey)

Page 59: Chapitre v algorithmes gloutons

59

EXEMPLE 6: ARBRE RECOUVRANT MINIMAL

PREUVE D’OPTIMALITÉ

Preuve par absurde

Supposant que:

H1: A* une solution optimale pour W*

H2: S’ = S- {e} est une solution non optimale pour W* – w(e).

Alors, il existe une solution meilleure (S’’) que S’ pour

W* – w(e), i.e. W(S’’) < W(S’).

Donc, S’’ {e} est meilleure que S pour Pmax car

V(S’’ {nba}) > V(S), i.e, S n’est pas optimale

(contradiction avec l’hypothèse H1).

Page 60: Chapitre v algorithmes gloutons

SOURCES DE CE COURS

Sophie Tison, Algorithmes Gloutons (greedy algorithms), Cours Master Informatique

1ère année, Université Lille 1.

Chapitre 4 Algorithmes Gloutons, Cours MACS (Mathématiques Appliquées et Calcul

Scientifique), Disponible sur www.lamacs.fr/documents/cours/macs1/infochap4.pdf‎

Stéphane Grandcolas, Algorithmes gloutons. Disponible sur www.dil.univ-

mrs.fr/~gcolas/algo-licence/slides/gloutons.pdf‎

Yves Robert, Yves Caniou et Eric Thierry. Algorithmique - Cours et Travaux Dirigés,

École Normale Supérieure de Lyon, 2005.

Ana Busic, Algorithmes Gloutons, Conception d'algorithmes et applications, École

normale supérieure, Département Informatique, Disponible sur

www.di.ens.fr/~busic/cours/LI325/slidesCAAC8_1213.pdf‎

Robert Cori, Analyse et Conception Algorithmes 1, Algorithmes gloutons, Disponible

sur www.lix.polytechnique.fr/~cori/Majeure/cours1.pdf‎

60