Vous êtes sur la page 1sur 47

1

NFP136- Cours 6
NFP136- Cours 6
ALGORITHMES GLOUTONS
ALGORITHMES GLOUTONS
PLAN
Problmes d'optimisation
Algorithmes gloutons
Arbre couvrant minimal
Choix d'activits
Codage de Huffman
Matrodes
2
6.1
6.1
PROBLEMES D
PROBLEMES D

OPTIMISATION
OPTIMISATION
3
un problme ! plusieurs solutions
une solution ! une valeur
problme d'optimisation:
recherche d'une solution de valeur optimale
(min ou max)
algorithme de rsolution:
reconnaissance d'une solution
valuation d'une solution
slection d'une des meilleures solutions
4
problmes d'optimisation
! faciles
! difficiles
---------------------------------------------------------------
EXEMPLES
E1) chemin min
problme facile
(v=9;ABECG)
A
B E
G C
D F
3
2
3
4
1
2
6
5
4
4
5
E2) sac--dos (en nombres entiers)
problme "assez" difficile
2 solutions optimales:
1.A + 2.B + 1.C ! v = 40 (p=17)
4.B ! v = 40 (p=16)
aliments A B C
poids
unitaire
hg
6 4 3
valeur
nutritive
unitaire
14 10 6
poids max des aliments: 17
6
E3) voyageur de commerce

problme difficile
ici, 2 solutions optimales
ACBDEA et ACEBDA v = 12
nombre de solutions: 24 (n-1!)
---------------------------------------------------------------
B
A
E
D C
3
4
1
2
3
4
1
5
2
2
7
problme de petite taille
! numration possible
problme de grande taille
! numration impossible
optimisation discrte " optimisation
continue
8
problmes faciles !
algorithme de complexit polynomiale
(cf cours 2)
problmes "difficiles" !
- tous les algorithmes connus sont
de complexit exponentielle
- problmes dits NP-complets ou NP-
difficiles
cours VARI:problmes "faciles"
9
6.2
6.2
ALGORITHMES GLOUTONS
ALGORITHMES GLOUTONS
10
choix glouton = choix localement optimal
optimum local " optimum global
fonction concave x
1
et x
3
: optima locaux
(ou convexe)
optimum local = x
2
optimum global
optimum global (et local)
continu " entier
x
1
x
2
x
3
11
algorithme glouton: pas toujours optimal
EXEMPLE
un algo glouton pour le PVC:
- trier les artes (cots croissants)
- slectionner dans l'ordre les artes non
"parasites"
B
A
E
D C
3
4
1
2
3
4
1
5
2
2
([A,E],[B,D],[A,B],
[A,D],[B,E],[A,C],
[E,D],[C,E],[C,D])

[A,B,D,C,E,A]
valeur 13

(opt=12 [ACEBDA])
12
algorithme glouton: chaque tape
choix le plus intressant cet instant
! facile concevoir
! difcile de vrier l'optimalit
! efcace (faible complexit)
13
6. 3
6. 3
ARBRE COUVRANT MINIMAL
ARBRE COUVRANT MINIMAL
14
6.3.1 6.3.1 LE PROBLME LE PROBLME
relier des objets avec une
longueur totale minimale des liens
graphe valu associ:
- sommets = objets
- arte = lien possible
- poids d'une arte = longueur du lien
15
--------------------------------------------------------------
---------------------------------------------------------------
solution optimale:
sans cycle et connexe ! ARBRE
par tous les sommets ! COUVRANT
de longueur totale min ! MINIMAL
A
B E
G
D F
5
1
1
1
1
5
5
5
1
EXEMPLE

16
6.3.2 6.3.2 ALGORITHME DE KRUSKAL ALGORITHME DE KRUSKAL
rappel: arbre ! m = n-1 artes
entre: G = (X,U,P)
n sommets, m artes
sortie: A arbre couvrant min de G
17
procedure kruskal (in G: graphe; out A: arbre):
entier k=0; {artes} V=#;
dbut
trier les artes de G par ordre de poids croissant ;
tant que k < n-1 faire
parcourir la liste trie ;
slectionner la premire arte, w, qui ne forme
pas de cycle avec les prcdentes ;
k = k+1 ;
V = V U {w} ;
fait ;
A = graphe (X,V) ;
fin
18
--------------------------------------------------------------
EXEMPLE
liste trie:
-
n = 9 ! stop aprs 8 slections
P(A) = (1+1+1+1+1+2+2+3) = 12
--------------------------------------------------------------
a
b c
e
g f
2
4
3
1
2
1
4
1
d
h i
1 2 3 2
3
3
1 1
STOP
19
implmentation peu facile
(sera faite en exercices dirigs)
complexit O(m logm) (TRI)
20
G=(X,U) le graphe
A=(X,V) l'arbre couvrant obtenu par Kruskal
p(u) : poids de l'arte u
6.3.3 6.3.3 PREUVE DE L PREUVE DE L OPTIMALITE OPTIMALITE
21
proprit 1
soit w $ U -V, w=[x,y] et
c
w
: chane de x y dans A;
alors, p(w) % max
u$cw
p(u)
x
y
cw
w
Car sil existait une arte a de
c
w
de poids plus fort que p(w),
w aurait t slectionne
avant a
22
A': arbre optimal de poids p(A')
montrons que p(A) = p(A')
soit u $ A'-A
A'=(X,V') A=(X,V)
u $ V'-V relie C
1
et C
2
dans A'
v $ c
u
relie C
1
et C
2
dans A

a
b
x
x
x
x
x
x
x
x
x
a
b
x
x
x
x
x
x
x
x
x
u
v
C
1
C
2

23
proprit 1 & p(u) % p(v) et
A' minimal & p(v) " p(u)
& p(u) = p(v)
soit A"=A'+{v}-{u}: p(A")=p(A')
! A"optimal et v $ A"
soit u'$ A"-A,... (idem... ! A''')
...
n: A'''' = A et p(A'''') = p(A') = p(A)
Fin preuve
24
6. 4
6. 4
CHOIX D
CHOIX D

ACTIVITES
ACTIVITES
25
6.4.1 6.4.1 LE PROBLME LE PROBLME
A = {a
1
,a
2
,..,a
n
} activits
a
i
$ [d
i
,f
i
[ d
i
dbut, f
i
fin de a
i
a
i
et a
j
compatibles si d
i
% f
j
ou d
j
% f
i
problme:
choisir le plus grand nombre d'activits
compatibles
26
6.4.2 ALGORITHME CHOIX_ACTIVIT 6.4.2 ALGORITHME CHOIX_ACTIVIT
choix glouton : maximiser le temps restant aprs l'activit choisie
Algorithme choix_activit (in A: liste initiale d'activits;
out A*: liste d'activits choisies):
dbut
trier et numroter les a
i
dans l'ordre croissant des f
i
; f
1
! f
2
! ! f
n
A* = {a
1
} ;
j = 1; j reprsente la dernire activit slectionne
pour i = 1 n faire
si d
i
! f
j
alors
A* = A*U{a
i
} ;
j = i ;
finsi;
fait ;
fin
27
complexit: O(nlogn)+O(n)
tri boucle
& O(nlogn)
--------------------------------------------------------------
EXEMPLE
d
i
date de dbut de l'activit a
i
f
i
date de n de l'activit a
i
activits tries selon les f
i
i 1 2 3 4 5 6 7 8 9 10 11
d
i
1 3 0 5 3 5 6 8 8 2 12
f
i
4 5 6 7 8 9 10 11 12 13 14
28
1
2
3
1
1
1
1
1
1
1
1
1
4
4
4
4
4
4
4
4
4
4
4
4
5
6
7
8
8
8
8
8
9
10
11
11
1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
temps
1
1
4
8
11 4
8
29
Soit B solution optimale B " A* card B % card A*
B ordonn selon les f
i
:
a
k1
,a
k2
,..,a
kn
avec f
k1
' f
k2
' ... ' f
kn
si a
k1
" a
1
, soit B'= B-{a
k1
}+{a
1
}
- f
1
' f
k1
' f
k2
' ... ' f
kn
! B' admissible
- card B' = card B & B' optimal
sinon B'= B
6.4.3 6.4.3 OPTIMALITE OPTIMALITE
Conclusion : il existe une solution optimale
commenant par un choix glouton
30
problme restant = problme initial avec
A' = {a
i
$ A t.q. d
i
"f
1
}
! choix glouton suivant de B': a
2
...
n: B'''' = A*
et card B'''' = card B = card A*
Fin preuve
31
6. 5
6. 5
CODAGE DE HUFFMAN
CODAGE DE HUFFMAN
32
compression de donnes
gain de place de 20 90%
C = {caractres}
c
i
$ C

! chane binaire unique
--------------------------------------------------------------
EXEMPLE
C = alphabet
d-01 f-101 m-0110 ...
dfd = 0110101
MAIS mf = 0110101 (= dfd !)
--------------------------------------------------------------
33
codage prxe : aucun mot de code n'est prxe
d'un autre mot
dcodage facile
--------------------------------------------------------------
EXEMPLE
--------------------------------------------------------------
face ! 101000010100 ! face
concevoir le codage et dcoder efcacement
caractre a b c d e f
code 000 001 010 011 100 101
34
arbre associ (binaire et complet)
a b f c d e
0 1
1
1
1
0
0
0
0
0
1
000 001 010 011 100 101
A
dcodage: 101000010100 (
f
c e
a
35
arbre associ (binaire et complet)
a b f c d e
0 1
1
1
1
0
0
0
0
0
1
000 001 010 011 100 101
a b
f
c
d e
0 1
1
1
1
0
0
0
0
1
face =
11000000110
A
A
dcodage: 101000010100 (
f ace
autre possibilit
36
choix d'un arbre
tableau des frquences d'apparition des
caractres dans le chier (c

f(c))
h
A
(c): hauteur de la branche c
= nombre de bits pour c
nombre de bits requis pour encoder un
chier selon l'arbre A
B(A) = f(c) h
A
(c)
!
"C c
37
----------------------------------------------------------------
EXEMPLE
B(A') = 300 (45+13+12+16+9+5)*3
B(A")= 328 (45*4+13*4+12*3+16*2+9*2+5*2)
B(H) = 224 (45*1+13*3+12*3+16*3+9*4+5*4)
----------------------------------------------------------------
a b c d e f
frq. 45 13 12 16 9 5
code A' 000 001 010 011 100 101
code A'' 0000 0001 001 01 10 11
code H 0 101 100 111 1101 1100
38
code de Huffman
caractres frquents ! mots courts
nombre de feuilles = card(C)
feuille ! c$C ! "val"= f(c)
"val" d'un = somme des
nud interne "val" des 2 fils
39
Algorithme HUFFMAN (in C: liste trie de caractres;
in f: frquence des caractres;
out A: arbre de Huffman):
Utilise la procdure construire(A,z,x,y) quiajoute A un nud z ayant
pour ls gauche x et pour ls droit y
liste_ordonne L ; entier n;
dbut
n = card(C) ;
L = C;
tri de L selon les f(c) croissants;
pour i = 1 n-1 faire
x := L.min(); L.supprimer_min();
y := L.min(); L.supprimer_min();
f(z) = f(x) + f(y);
construire (z,x,y);
L.insrer (z);
fait ;
n
complexit: O(nlogn)
40
Un arbre d'exemple avec la phrase "this is
an example of a huffman tree"
0 1
0
0
0
0
0
0 0 0 0
0
0
0 0 0
1
1
1
1
1
1 1 1
1
1 1
1 1
wikipdia
41
complment facultatif du cours
6. 5
6. 5
MATROIDES
MATROIDES
42
6.5.1 6.5.1 DFINITION DFINITION
E = {e
1
,e
2
,..,e
n
} I ) P(E)
matrode: couple M = (E,I) t.q.
F $ I et F' ) F & F' $ I
* S ) E,
[F $ I et F' $ I et F , F' sous-ensembles maximaux de S]
& card F = card F
I famille de sous-ensembles indpendants
# $ I et *i, {e
i
} $ I
43
Contre-exemple:
E= ensemble des sommets dun graphe
I = ensemble des ensembles stables
a
b
c e d
{a,c,e}, {a,d} et {b}
Sont des stables maximaux
qui nont pas le mme
cardinal.
S=Ensemble Stable=sous-ensemble de sommets du graphe
tel que deux sommets de S ne sont pas voisins. Tout ensemble
inclus dans S est donc stable. S est maximal si lajout dun
sommet quelconque le rend non stable.
44
----------------------------------------------------------------
EXEMPLE
graphe G=(X
G
,E
G
)
M
G
matrode graphique
M
G
= (E
G
,I
G
)
I
G
= {F ) E
G
t.q. G'=(X
G
,F) sans cycle}
sous-ensembles maximaux = arbres couvrants
mme cardinal: n-1 artes
----------------------------------------------------------------
45
M = (E,I ,w)
e $ E w
e
= poids de e
F ) E w(F) = w
e
= poids de F
problme:
trouver F ) I t.q. w(F) minimal (ou maximal)
6.5.2 6.5.2 MATROIDES PONDERES MATROIDES PONDERES
!
"F e
46
algorithme glouton_min (in M = (E,I,w): matrode;
out F: lment de I):
dbut
F = #;
trier et numroter les lments de E par ordre de
poids croissant;
pour i = 1 n faire
si FU{e
i
} ) I alors
F = FU{e
i
} ;
nsi
fait ;
n
47
thorme
M matrode pondr :
l'algorithme glouton donne toujours
l'optimum
complexit
si test en O(f(n))
O(nlogn) + O(nf(n))
tri boucle pour
(dpend de f(n))

Vous aimerez peut-être aussi