Algorithm Es G Lou Tons
Algorithm Es G Lou Tons
Algorithm Es G Lou Tons
|=1 ⋂ = 10 = 100
Exemple :
Preuve.
Algorithme glouton !
Algorithme glouton
Principe
Soustraire à la fraction donnée la plus grande
fraction unitaire possible, répéter l'opération avec
la nouvelle fraction, et ainsi de suite jusqu'à ce
que l'opération donne une fraction unitaire.
Exemple
51/105 = 1/3 + 16/105
= 1/3 + 1/7 + 1/105
Terminaison
Lemme.
Soit p/q une fraction non unitaire dans ]0,1[. Soit 1/n la plus grande fraction ≤
p/q. Alors p/q – 1/n est une fraction r/s avec r<p.
Preuve.
p/q – 1/n = (np – q)/nq. Montrons que np – q < p.
Par l'absurde, supposons que np – q ≥ p.
En ajoutant q – p des deux côtés de l'inégalité, on obtient : np – p ≥ q.
Mais alors 1/(np – p) ≤ 1/q.
En multipliant des deux côtés par p, on obtient : p/(np – p) ≤ p/q.
Autrement dit : 1/(n – 1) ≤ p/q.
Comme p/q < 1, on en déduit n > 2. On a donc 1/(n-1) > 1/n.
Contradiction avec « 1/n la plus grande fraction ≤ p/q ».
temps
Principes gloutons
Algorithme générique : considérer les intervalles dans un
ordre spécifique. Prendre chaque intervalle dans cet ordre
s’il est compatible avec les intervalles déjà pris.
Pour i allant de 1 à n
Si i est compatible avec IntervallesChoisis
IntervallesChoisis := IntervallesChoisis U {i}
Retourner IntervallesChoisis
Propriétés :
- On garde en mémoire l’intervalle k qui a été ajouté en dernier à IntervallesChoisis.
- L’intervalle j est compatible avec IntervallesChoisis ssi dj ≥ fk
- Du fait du tri, algorithme en O(n log n)
i1 i2 ... ik 1 i2 ... ik
1 1
fi1 fi1
Propriété de sous-structure optimale
Montrons qu'une solution optimale depuis la date 0, à
laquelle on ôte l'intervalle 1 (choix glouton), est une
solution optimale depuis la date f1.
Soit 1,i2,...,ik une solution optimale (contenant le premier
choix glouton 1).
Par l'absurde, supposons que i2,...,ik n'est pas optimale.
Soit j1,...,jp une solution optimale depuis f1, avec p>k-1.
Alors 1,j1,...,jp est réalisable avec p+1>k. Contradiction !
f1 f1
Problème de sac à dos
● Plusieurs types :
- sac à dos en variables binaires
- sac à dos en variables fractionnaires
et wixi W
Objet 3 15 60€
Objet 2 25 +
10 50€
Objet 1 15
10 + 10 50€
5 5 30€
et wixi W
⅔
de 40€
Objet 3 15
+
Objet 2 25
10 50€
Objet 1 15
10 +
5 5 30€
Objets : 1 2 3 4 5 6 7
Profits : 5 8 3 2 7 9 4
Poids : 7 8 4 10 4 6 4
€/kg : 0.71 1 0.75 0.2 1.75 1.5 1
Capacité du sac à dos : 22 kg
Objet 5 (reste 18)
Objet 2 (reste 4)
Objet 7 (reste 0)
Propriété du choix glouton
Une façon de montrer cette propriété est de prendre une solution optimale et de
la transformer de manière à ce qu'elle commence par un choix glouton, tout
en restant optimale.
Sans perte de généralité, on suppose que les objets sont indicés dans l'ordre des
ratios décroissants. Soit une solution optimale x avec x i1>0,...,xik>0 (i1<...<ik) et i1
> 1 (le choix glouton n'est donc pas inclus). Soit ŵ 1 = min {w1,W}. Considérons la
solution y obtenue à partir de x en retirant arbitrairement des fractions αi des objets
i1,...,ik du sac pour un poids total ŵ 1 afin de mettre une fraction ŵ1/w1 de l'objet 1 à
la place, autrement dit :
yi = 0 ∀i∉{1,i1,...,ik}
yi = xi-αi ∀i∈{i1,...,ik}
y1 = ŵ1/w1
avec αi≤xi ∀i∈{i1,...,ik} et ∑iαi = ŵ1. La différence ∑iyivi - ∑ixivi est égale à :
ik ik
v1 vi v1 vi
^ 1 −∑ αi
w ≥ w
^ 1 − max ∑α
w1 i=i wi 1
w1 i∈ {i ,... ,i } w i i=i i
1 k 1
v1 vi v1 vi
= w
^1
( − max
w 1 i∈{i ,..., i } wi
1 k
)
≥ 0 car
w1
≥
wi
∀ i∈{i1 ,... ,i k }
0 1
A
0 1
B
0 1
C D
Comment créer un code préfixe ?
Considérer les chemins depuis la racine vers
les feuilles A, B, C, D :
A:0 0 1
B : 10 A
C : 110 0 1
D : 111 B
0 1
C D
Algorithme
1. Considérer tous les couples : <f(ai),ai>.
2. Choisir les deux plus petites fréquences f(ai) et f(aj), et leur
donner un même parent dont la fréquence est f(ai)+f(aj).
3. Itérer jusqu'à obtenir un arbre binaire unique.
Exemple
nombre total de bits : B(T) = 45x1 + 12x3 + 13x3 + 5x4 + 9x4 + 16x3 = 224
Propriété du choix glouton
Soit x et y les caractères de plus faibles fréquences. Montrons qu'il existe
toujours un arbre de codage optimal où x et y sont frères et de profondeur
maximale.