• Aucun résultat trouvé

Algorithmes Gloutons Fin de la Partie 1

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmes Gloutons Fin de la Partie 1"

Copied!
51
0
0

Texte intégral

(1)

Algorithmes Gloutons Fin de la Partie 1

ACT

Sophie Tison Master Informatique

Universit´e de Lille

(2)

T

ROIS PARADIGMES

Diviser Pour R´egner

Programmation Dynamique

Algorithmes gloutons (greedy algorithms)

(3)

L

E PRINCIPE D

UNE METHODE GLOUTONNE

´

Avaler tout ce qu’on peut

=

Construire au fur et `a mesure une solution en faisant les choix qui paraissent optimaux localement

Dans certains cas, cela donnera finalement la meilleure solution: on parlera d’algorithmes gloutons exacts.

Dans d’autres, non, on parlera d’heuristiques gloutonnes.

(4)

U

N PREMIER EXEMPLE

: L

E MONNAYEUR

On dispose des pi`eces de monnaie correspondant aux valeurs {a0, . . . ,an−1}, avec 1=a0<a2. . . <an−1.

Pour chaque valeur le nombre de pi`eces est non born´e.

Etant donn´ee une quantit´ecenti`ere, on veut trouver une fac¸on de ”rendre” la sommecavec unnombre de pi`eces minimum.

(5)

U

N PREMIER EXEMPLE

:

RENDRE LA MONNAIE

Uneinstancedu probl`eme est la donn´ee des valeurs faciales des pi`eces{a0, . . . ,an1}, avec 1=a0 <a2. . . <an1et de la sommec`a payer.

Unesolutionest pour chaque type de pi`ece ( 0≤i≤n−1) un nombre de pi`ecesnbitelle que∑n−1

i=0 nbi∗ai =c: on a bien pay´e c(exactement);

Elle estoptimalesi∑

i=0n1nbiest minimal: on a minimis´e la fonction objectif, ici le nombre total de pi`eces.

(6)

U

NE INSTANCE DU MONNAYEUR

Les pi`ecesa0=1,a1=2,a2 =5,a3=10,a4=20

la somme `a payerc=26 Solution optimale?

1 pi`ece de 20, pas de pi`ece de 10, 1 pi`ece de 5, pas de pi`ece de 2, 1 pi`ece de 1.

Peut-on faire mieux?

Pourquoi?

(7)

C

OMMENT JUSTIFIER QUE LA SOLUTION EST OPTIMALE

Pour les pi`ecesa1=1,a2 =2,a3=5,a4=10,a5 =20 et la somme `a payerc=26, la solution: 20,5,1 est-elle optimale?

Preuve par cas?

Si on utilise 1 pi`ece de 20, il reste 6 `a payer: au moins deux pi`eces!

Si on utilise 0 pi`ece de 20, il reste 26 `a payer en 10, 5, 2, 1:

au moins 3 pi`eces Donc c’est optimal!

(8)

L’

ALGORITHME

?

//c somme `a payer enti`ere ¿0

//valeurs des pi`eces: 1=a[0]< ... <a[n−1]

//les a[i] tri´es en croissant intnb pieces=0;//solution vide int[n]nb;

initialis´e `a 0 i=n−1;nb+ +;

while(c>0)do if(c≥a[i])then

nb[i] + +;nb pieces+ +;c=c−a[i];

else i− −;

end

(9)

A

UTRE VERSION

//c somme `a payer enti`ere ¿0

//valeurs des pi`eces: 1=a[0]< ... <a[n−1]

//les a[i] tri´es en croissant int nbtotal0; //solution vide int[n] nb;

for (inti=n−1;i≥0;i− −) do nb[i]←c/a[i];

nb pieces←nb pieces+nb[i];

c←c mod a[i];

end

(10)

L’

ALGORITHME EST

-

IL CORRECT

?

Par exemple, soit 26 `a payer en pi`eces de 7, 6, 1 algo glouton: 3 Pi`eces de 7, 5 pi`eces de 1 solution optimale: 2 pi`eces de 7, 2 pi`eces de 6

Donc,Non, l’algo n’est pas correct!

(11)

L’

ALGORITHME EST

-

IL CORRECT

?

Un ancien syst`eme britannique: 1, 2, 6, 12, 24, 30, 60, 240

L’algorithme glouton ´etait-il optimal?

Pour rendre 48, l’algorithme glouton n’est pas optimal.

On appellecanoniqueun syst`eme de pi`eces pour lequel l’algorithme glouton est optimal. Les syst`emes actuels le sont (presque?) tous.

(12)

Q

UAND EST

-

IL CORRECT

?

Par exemple, est-il toujours correct pour 1,2,5,10,20?

La solution produite par l’algorithme glouton est g20=20

g10= (c mod 20)÷10

g5= ((c mod 20) mod 10)÷5 soitg5= (c mod 10)÷5 g2= ((c mod 10) mod 5)÷2 soitg2= (c mod 5)÷2 g1= (c mod 5) mod 2

(13)

Q

UE DIRE DE L

OPTIMALE

?

Soito20,o10,o5,o2,o1une solution optimale. On a c=20∗o20+10∗o10+5∗o5+2∗o2+o1

Alors,o1<2, sinon on peut remplacer 2 pi`eces de 1 par une de 2.

De mˆeme,o2<3, sinon, on remplace 3 pi`eces de 2 par une de 5 et une de 1.

De plus sio2=2, alorso1=0, sinon on remplace deux de 2 et une de 1 par une de 5;

o5<2, sinon, on remplace deux de 5 par une de 10.

o10<2, sinon, on remplace deux de 10 par une de 20.

(14)

Q

UE DIRE DE L

OPTIMALE

?

10∗o10+5∗o5+2∗o2+o1<=10+5+4<20 c=20∗o20+10∗o10+5∗o5+2∗o2+o1. Donco20 = 20=g20et

10∗o10+5∗o5+2∗o2+o1=c mod20.

De mˆeme, 5∗o5+2∗o2+o1 <10 donc o10=c mod20÷ 10=g10.

Donc 5∗o5+2∗o2+o1=c mod10;

Comme 2∗o2+o1<5,o5=c mod10÷5=g5et 2∗o2+o1 =c mod5

De mˆeme,o2= (c mod5)÷ 2=g2,o1=c mod5mod2=g1.

(15)

L

E GLOUTON EST

-

IL OPTIMAL

?

Pour ce syst`eme 1,2,5,10,20, la solution gloutonne est (l’unique) optimale.

Pour le syst`eme 1,2,5,10,20,50, la solution gloutonne est-elle optimale?

(16)

L

E CAS NON CANONIQUE

Quand le syst`eme n’est pas canonique, comment calculer rapidement une fac¸on optimale de rendre la monnaie?

(17)

L

E PRINCIPE GEN

´

ERAL D

´ ’

UNE METHODE GLOUTONNE

´

On est souvent dans le cadre de probl`emes d’optimisation, plus pr´ecis´ement:

On a un ensemble finiE.

Une solution est construite `a partir des

´el´ements deE: c’est par exemple une partie deEou un multi-ensemble d’´el´ements deEou une suite (finie) d’´el´ements deEou une permutation de Equi satisfait une certaine contrainte.

A chaque solution` Sest associ´ee une fonction objectifv(S): on cherche donc une solution qui maximise (ou

minimise) cette fonction objectif.

Le nombre de pi`eces

(18)

L

E SCHEMA G

´

EN

´

ERAL

´

Il est bas´e sur un crit`erelocalde s´election des ´el´ements deE pour construire une solution optimale. En fait, on travaille sur l’objet ” solution partielle”- ”d´ebut de solution”- et on doit disposer de:

select: qui choisit le meilleur ´el´ement restant selon le crit`ere glouton.

complete? qui teste si une solution partielle est une solution (compl`ete).

ajoutPossible? qui teste si un ´el´ement peut ˆetre ajout´e

`a une solution partielle, i.e. si la solution partielle reste un d´ebut de solution possible apr`es l’ajout de l’´el´ement. Dans certains cas, c’est toujours vrai!

ajoutqui permet d’ajouter un ´el´ement `a une solution si c’est possible.

(19)

L

E SCHEMA D

´ ’

ALGORITHME

// on initialise l’ensemble des ”briques” des solutions.

Ens.init();

// on initialise la solution: ensemble (ou suite) ”vide” ou..

Sol.Init();

while(Non Sol.complete?() et Ens.NonVide?())do //on choisit x selon crit`ere glouton

x←Ens.select();

ifSol.ajoutPossible(x)then Sol.ajout(x); fsi;

//dans certains probl`emes, toujours le cas ifCertainesConditionsthen

Ens.retirer(x);

// selon les cas,xconsid´er´e une fois ou plus end

// la Solution partielle est a priori compl`ete returnSol;

(20)

L

E SCHEMA D

´ ’

ALGORITHME

// on initialise l’ensemble des ”briques” des solutions.

Ens.init();

// on initialise la solution: ensemble (ou suite) ”vide” ou..

Sol.Init();

while(Non Sol.complete?() et Ens.NonVide?())do //on choisit x selon crit`ere glouton

x←Ens.select();

ifSol.ajoutPossible(x)then Sol.ajout(x); fsi;

//dans certains probl`emes, toujours le cas ifCertainesConditionsthen

Ens.retirer(x);

// selon les cas,xconsid´er´e une fois ou plus end

// la Solution partielle est a priori compl`ete returnSol;

(21)

U

N EXEMPLE AVEC UN RAISONNEMENT TYPE

Le probl`eme:sont donn´eesndemandes de r´eservation -pour une salle, un ´equipement...- avec pour chacune d’entre elles l’heure de d´ebut et de fin (on supposera qu’on n’a pas besoin de p´eriode de battement entre deux r´eservations).

Bien s ˆur, `a un instant donn´e, l’´equipement ne peut ˆetre r´eserv´e qu’une fois!

On cherche `a donner satisfaction au maximum de demandes.

(22)

L

A FORMALISATION DU PROBLEME

`

Donn´ee:

n–le nombre de r´eservations

(d1,f1), ...,(dn,fn)–pour chacune d’entre elles, le d´ebut et la fin- Sortie:les r´eservations retenues i.e.J [1..n]tel que:

. elles sont compatibles :i∈J,j∈J,i̸=j⇒di >=fj ou fi<=dj

. On satisfait le maximum de demandes, i.e.|J|(le cardinal deJ) est maximal.

(23)

U

NE INSTANCE

Donn´ee:

n, le nombre de r´eservations=8

(3,8),(0,6),(1,4),(6,8),(4,7),(5,11),(7,9),(9,10) Sortie:

(3,8),(0,6), (1,4),(6,8), (4,7),(5,11), (7,9),(9,10)

(24)

Q

UEL CRITERE GLOUTON

` ?

dur´ee croissante?

dur´ee d´ecroissante?

d´ebut croissant?

d´ebut d´ecroissant?

fin croissante?

fin d´ecroissante?

(25)

Q

UEL CRITERE GLOUTON

` ?

SYMETRIE´

dur´ee croissante

dur´ee d´ecroissante

d´ebut croissant ou fin d´ecroissante

d´ebut d´ecroissant ou fin croissante

(26)

Q

UEL CRITERE GLOUTON

` ?

SYMETRIE´

dur´ee croissante

dur´ee d´ecroissante

d´ebut croissant ou fin d´ecroissante

d´ebut d´ecroissant ou fin croissante

(27)

L’

ALGORITHME GLOUTON

g=Vide;

Lib=0; //la ressource est dispo nb=0; //nb de r´es. accept´ees

trier les demandes par fin croissante;

pour chaque demande i si d_i>=Lib

//on peut la planifier {g.ajouter(i);

Lib=f_i;

nb++;}

co ˆut= celui du tri = enO(nlogn)

(28)

P

ARENTHESE

`

On aurait pu tester tous les sous-ensembles possibles de r´eservations.

Il y en a 2n.

(29)

C

OMMENT PROUVER QUE L

ALGORITHME EST CORRECT

?

1. La solution est correcte, i.e. les r´eservations retenues sont bien compatibles: facile `a v´erifier par induction.

On prend pour invariant{les demandes de g sont compatibles et finissent toutes au plus tard `a Lib}.

2. La solution est optimale...?

(30)

C

OMMENT PROUVER QUE L

ALGO EST CORRECT

?

On d´efinit une notion dedistancesur les solutions.

Une solution est une liste de demandes accept´ees; on les suppose tri´ees dans l’ordre des fins croissantes.

Soient deux solutionsA,Bdiff´erentes; soitile plus petit indice tel queAisoit diff´erent deBiou tel queAi soit d´efini et nonBi

ou inversement. Alors on d´efinit la distance deAetBpar:

dist(A,B) =2−i

(31)

P

REUVE DE L

OPTIMALITE DE L

´ ’

ALGORITHME

Raisonnons par l’absurde: Supposons que la solution gloutonnegne soit pas optimale.

Soit alorsoune solution optimale telle quedist(g,o)soit

minimale (une telleoexiste bien, l’ensemble des solutions ´etant fini).

Soit doncitelle quedist(g,o) =2−i; il y a trois possibilit´es:

(32)

C

AS

1

gi̸=oi

alors, la demandeoia une date de fin au moins ´egale `a celle de gi: sinon comme elle est compatible avec les pr´ec´edentes, l’algo glouton l’aurait examin´ee avantgiet l’aurait choisie.

Mais alors, si on transformeoenoen remplac¸ant l’activit´eoi

pargi, on obtient bien une solution, de mˆeme cardinal queo donc optimale, et telle quedist(o,g)<dist(o,g): on aboutit `a une contradicition!

C’est ce qu’on appellela propri´et´e d’´echange.

(33)

C

AS

2

ET

3

Cas 2:oin’est pas d´efinie: alors|o|<|g|: contradiction,one serait pas optimale.

Cas 3:gin’est pas d´efinie: impossible car l’activit´eoi ´etant compatible avec les pr´ec´edentes, l’algo glouton l’aurait choisie.

Donc, dans tous les cas, on aboutit `a une contradiction;

l’hypoth`ese “la solution gloutonnegn’est pas optimale” est fausse: la solution gloutonne est bien optimale!

(34)

G

RAPHE D

INTERVALLES

On peut mod´eliser les demandes par ungraphe d’intervalles:

un sommet est un intervalle, deux sommets sont reli´es si les intervalles correspondants se chevauchent.

On cherche un ensemble ind´ependant maximal.

(35)

Q

UELQUES VARIANTES DU PROBLEME

`

Que se passe-t-il si on veut maximiser la dur´ee totale de r´eservation? Le crit`ere glouton par dur´ee d´ecroissante marche-t-il?

Que se passe-t-il avec plusieurs ressources?

(36)

C

OMPLEXITE

´

La complexit´e est donc souvent de l’ordre den logn(le tri selon le crit`ere)+n∗f(n), sif(n)est le co ˆut de la v´erification de la contrainte et de l’ajout d’un ´el´ement. Les algorithmes gloutons sont donc en g´en´eral efficaces...

(37)

C

ORRECTION

Encore faut-il que l’algorithme donne bien une solution optimale... et qu’on sache le prouver...: l`a r´eside souvent la difficult´e dans les algorithmes gloutons.

Les preuves de correction d’algorithmes gloutons, sont souvent bas´ees sur une propri´et´e appel´ee de type ”´echange”:

Propri´et´e d’´echange: Soit une solution quelconque diff´erente de la gloutonne: on peut la transformer en une autre solution au moins aussi bonne et ”plus proche” de la solution gloutonne .

(38)

G

LOUTON VERSUS

D

YNAMIQUE

Dans les deux cas on peut se repr´esenter l’ensemble des solutions sous forme d’un arbre, les solutions pouvant ˆetre vues comme une suite de choix.

Dans le cas de la programmation dynamique, on parcourt toutes les solutions mais on remarque que de nombreux

noeuds de l’arbre correspondent aux mˆemes sous-probl`emes et l’arbre peut donc ˆetre ´elagu´e, ou plut ˆot repr´esent´e de fac¸on beaucoup plus compacte comme un graphe (DAG: directed acyclic graph).

Dans le cas d’un algorithme glouton, on construit uniquement et directement-sans backtracking- une -et une seule- branche de l’arbre qui correspond `a une solution optimale.

(39)

L

A

T

HEORIE

´

Les algorithmes gloutons sont bas´es sur la th´eorie des matro¨ıdes.

(40)

E

XEMPLES CLASSIQUES

Les algorithmes de Prim et de Kruskal de calcul d’un arbre de recouvrement d’un graphe de poids minimal

l’algorithme des plus courts chemins dans un graphe de Dijkstra

le code de Huffman,

de nombreuses versions de probl`emes d’affectations de tˆaches...

(41)

B

ILAN

Pour mettre au point un algorithme glouton, il faut donc:

Trouver un crit`ere de s´election: souvent facile ... mais pas toujours

Montrer que le crit`ere est bon, c.`a.d. que la solution obtenue est optimale: souvent dur!

L’impl´ementer: en g´en´eral facile et efficace!

(42)

B

ILAN DES

3

PARADIGMES

(43)

D

IVISER

P

OUR

R ´

EGNER

, D

IVIDE AND

C

ONQUER

Pb de taille n

taille n/k

n/k*k

cas de base

n/k*k

taille n/k

n/k*k n/k*k

cas de base La hauteur de l’arbre est ”petite”, en logn, la complexit´e d´epend du nombre et de la taille des sous-probl`emes `a chaque

´etape, du co ˆut de la recombinaison (Master Theroem)

(44)

P

ROGRAMMATION

D

YNAMIQUE

Pb de taille n

ss-pb

ss-pb

cas de base

ss-pb

ss-pb

ss-pb ss-pb

ss-pb

ss-pb ss-pb

Il y a de nombreux sous-probl`emes identiques.

(45)

P

ROGRAMMATION

D

YNAMIQUE

Pb de taille n

ss-pb1

ss-pb2

cas de base

ss-pb3

ss-pb 2

ss-pb ss-pb

ss-pb 4

ss-pb3 ss-pb5

Il y a de nombreux sous-probl`emes identiques.

(46)

P

ROGRAMMATION

D

YNAMIQUE

Pb de taille n

ss-pb1

ss-pb2

cas de base

ss-pb3

ss-pb 2 ss-pb 4

ss-pb 3 ss-pb 5

On transforme l’arbre en un graphe acyclique des

sous-probl`emes. Souvent de complexit´e polynomiale, mais parfois de degr´e assez ´elev´e, parfois pseudo-polynomial.

(47)

A

LGORITHMES

G

LOUTONS

D´epart

choix 1

choix 1.1 choix 1.2

choix 2

choix 2.1 choix 2.2

choix 3

choix 3.1

Le glouton fait ses choix localement pour ne pas explorer tout l’arbre.

(48)

A

LGORITHMES

G

LOUTONS

D´epart

choix 1

choix 1.1 choix 1.2

choix 2

choix 2.1 choix 2.2

choix 3

choix 3.1

Le glouton fait ses choix localement pour ne pas explorer tout l’arbre.

(49)

A

LGORITHMES

G

LOUTONS

D´epart

choix 1

choix 1.1 choix 1.2

choix 2

choix 2.1 choix 2.2

choix 3

choix 3.1

Le glouton fait ses choix localement pour ne pas explorer tout l’arbre.

(50)

A

LGORITHMES

G

LOUTONS

D´epart

choix 1

choix 1.1 choix 1.2

choix 2

choix 2.1 choix 2.2

choix 3

choix 3.1

Le glouton fait ses choix localement pour ne pas explorer tout l’arbre. Souvent tr`es efficace et simple `a ´ecrire, mais la preuve n´ecessite un peu de travail.

(51)

Fin de la premi`ere partie du Cours!

Références

Documents relatifs

Exprimez la concentration C en fluorure de sodium apporté en fonction de la masse de fluorure de sodium puis la concentration en ions fluorure correspondante dans le volume Vs.

Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale.. Toute copie ou impression de ce fichier doit contenir la présente mention

En effet, lorsque les côtés opposés d’un quadrilatère sont égaux , deux à deuxj, le quadrilatère est un parallélogramme ; la droite qui joint les milieux de

Par ce même point soit mené ( lemme ) le plan dont les distances aux extrémités de ces perpen- diculaires soient respectivement dans le rapport des projections

Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale.. Toute copie ou impression de ce fichier doit contenir la présente mention

L’accès aux archives de la revue « Annales de Mathématiques pures et appliquées » implique l’accord avec les conditions générales d’utilisation (

Dans le premier cas, les couples de points JS et JN', n et n' s'obtiennent en pre- nant d'abord les deux points M et in où une droite de direction donnée coupe une parabole, puis

Au lieu de considérer le faisceau des courbes C de Ténoncé, je puis prendre un autre faisceau quelconque du réseau, par exemple le faisceau des paraboles homo- focales à la