• Aucun résultat trouvé

Algorithme 3.2 Algorithme optimal pour la minimisation de la m´emoire totale.

R´eordonner Arbre (T) : Debut

Pour tout i ∈ ensemble des racines: Traiter Fils(i) ;

Classer les racines dans l’ordre d´ecroissant de leur (Ti−fi) ; Traiter Fils(i) :

Debut

Si i est une feuille Alors Ti=stockagei

Sinon

Pourj = 1 `a ni : Traiter Fils(ei,j) ; Ti=Classer Fils(i) ; Classer Fils (i) :

Debut

Classer les fils dans l’ordre d´ecroissant de leur (Tei,j −(cbei,j +fei,j)) ; Calculer Ti en utilisant la formule (3.3) ;

renvoyer(Ti) ;

louer le p`ere apr`es avoir trait´e un sous-ensemble de ses fils. En effet, cette strat´egie est plus souple que celles d´ecrites pr´ec´edemment.

Etant donn´e un nœud et ses fils dans l’arbre d’assemblage. Supposons que le p`ere est´ activ´e (i.e. allou´e en m´emoire) juste apr`es le j`eme fils, nous d´efinissons alorsp=j comme

´etant la position `a laquelle le p`ere est allou´e. De plus, comme montr´e dans la figure 3.4, nous d´efinissons E1 comme ´etant l’ensemble des fils trait´es avant l’activation du p`ere et E2 comme ´etant l’ensemble des fils trait´es apr`es l’allocation du p`ere.

. . . .

P

S1 S2

Fig. 3.4 – Exemple d’un nœud et de ses fils.

Consid´erons un nœud i et ses fils (ei,j)j=1,...,p = E1 et (ei,j)j=p+1,...,ni = E2 comme illustr´e dans la figure3.4. Jusqu’`a l’allocation de du p`ere, le pic m´emoire peut ˆetre obtenu

en utilisant la formule (3.1) (section3.2) sur l’ensembleE1. De plus, la taille de la m´emoire active requise pour traitement de chacun des fils appartenant `aE2 est donn´ee par :

max(stockagei+ max

j=p+1,ni

(Aei,j))

Il est important de signaler que cette formule est d´eriv´ee de la formule (3.6).

Ainsi, la m´emoire active n´ecessaire au traitement du sous-arbre dont la racine et le nœud i est alors :

Ai = max( max

j=1,p(Aei,j +

j1

X

k=1

cbei,k), stockagei+

p

X

j=1

cbei,j, stockagei+ max

j=p+1,ni

(Aei,j))

(3.8)

Lemme 3.2. L’ordre des fils sur l’ensemble E2 n’a pas d’influence sur le pic m´emoire.

D´emonstration. La preuve est triviale vu que stockagei + maxj=p+1,ni(Aei,j)) ne d´epend

pas de l’ordre des fils dans E2. ¥

Lemme 3.3. Soit j un nœud fils appartenant `aE1. SiAj est inf´erieur ou ´egal `a max

i∈E2(Ai), j peut ˆetre d´eplac´e de E1 vers E2 sans accroˆıtre le pic.

D´emonstration. Le fait d’enlever le nœudj deE1 n’augmente pas le pic sur cet ensemble.

De plus, commeAj est plus petit que max

i∈E2(Ai), le pic de E2 ne croˆıt pas non plus. ¥ Th´eor`eme 3.2. Soit iun nœud et soient ei,1. . . ei,ni ses fils. Un pic m´emoire optimal est obtenu en appliquant l’algorithme suivant :

Pour tout j = 1, . . . , nb children(j) :

Classer les fils dans l’ordre d´ecroissant de leur Aei,k;

D´efinir E1 = (ei,k)k=1,...,j et appliquer la variante de l’algorithme de Liu pour r´eor-donner les fils dans E1 (ordre d´ecroissant de Aei,k −cbei,k) ;

D´efinir E2 = (ei,k)k=j+1,...,ni;

Calculer la valeur de Ai en utilisant la formule (3.8);

Si Ai est plus petit que la valeur minimale de Ai calcul´ee dans une des it´erations pr´ec´edentes Alors

p=j;

sauvegarder l’ordre courant des fils ;

3.5. GESTION OPTIMALE DE LA M ´EMOIRE ACTIVE 41

D´emonstration. Soit i un nœud et σ un ordre optimal des fils en terme de taille de m´emoire active. Supposons que iest allou´e apr`es lep`eme fils dans l’ordre donn´e parσ. La permutation σ0 obtenue en classant les fils appartenant `a E2 dans l’ordre d´ecroissant de leur Aj est optimale (lemme 3.2). Si ∃k ∈ E1 tel que Ak 6 max

i∈E2(Ai), la permutation σ00 obtenue en d´epla¸cant le filsk deE1 vers E2 est aussi optimale (lemme3.3). Ainsi, il existe une permutation optimale σn telle que min

k∈E1(Ak) >max

k∈E2(Ak) obtenue en r´ep´etant l’´etape pr´ec´edente.

De ce fait, une permutation optimale des fils peut ˆetre calcul´ee en classant les fils dans l’ordre d´ecroissant de leur Aj respectifs et en d´eterminant la meilleure position pour activer le p`ere p. Ceci peut ˆetre fait en essayant toutes les positions possibles pour l’activation du p`ere et en s´electionnant celle donnant le pic minimal. Il est important de signaler qu’entre chaque it´eration de la recherche de la position d’activation du p`ere, les fils appartenant `aE1 sont class´es de mani`ere `a minimiser le pic m´emoire sur cet ensemble (en appliquant la variante de l’algorithme de Liu). Ainsi, la recherche de la meilleure position pour l’allocation du p`ere est faite au maximum en ni ´etapes. ¥ Notons qu’`a chaque it´eration du processus d´ecrit dans le th´eor`eme 3.2, un fils est d´eplac´e de E2 vers E1. Ce dernier est le fils appartenant `aE2 dont le pic (Aei,j) est le plus grand. Un processus ´equivalent consisterait `a d´eplacer `a chaque it´eration l’´el´ement ayant le plus petit pic deE1 versE2. L’int´erˆet de cette approche est qu’en utilisant le lemme 3.3, nous pouvons obtenir un crit`ere d’arrˆet permettant de ne pas tester toutes les positions possibles pour l’activation du p`ere.

Du point de vue de l’impl´ementation, il n’est d’autre part pas n´ecessaire de r´eordonner les fils appartenant `a E1 `a chaque it´eration. Ainsi, l’algorithme suivant, dans lequel une permutation pr´e-calcul´ee peut permettre de choisir efficacement les nœuds ayant les plus petits Aei,k dans E1, peut ˆetre appliqu´e :

E1 = (ei,k)k=1,...,ni

E2 =∅ p=ni

Classer les fils appartenant `aE1 dans l’ordre d´ecroissant de leur Aei,k −cbei,k Calculer Ai en utilisant la formule (3.8)

M in=Ai

Calculer Ai en utilisant la formule (3.8) Si Ai 6M IN Alors

Sauvegarder la valeur de painsi que la composition de E1 etE2 M in=Ai

jusqu’`a ce que p= 1 ou Ai > M in

La condition de terminaison Ai > M in, o`uM in repr´esente la valeur minimale du pic m´emoire sur l’ensemble des fils, est motiv´ee par le fait qu’une croissance du pic globale ne peut ˆetre due qu’au terme correspondant `a E2 dans la formule (3.8). Ceci est dˆu au fait que l’algorithme d´eplace des ´el´ements de E1 vers E2 et que donc il peut augmenter le pic sur le deuxi`eme ensemble. De ce fait, tant qu’il n’y a pas d’augmentation du pic global, l’algorithme continue `a transf´erer des ´el´ements du premier ensemble vers le second.

Enfin, en appliquant le th´eor`eme 3.2 `a chaque niveau de l’arbre dans un processus de remont´ee partant des feuilles, on obtient l’algorithme 3.3.

Algorithme 3.3 R´eordonnancement optimal pour la minimisation du pic de m´emoire active.

R´eordonner Arbre (T) : Debut

Pour tout i ∈ ensemble des racines: Traiter Fils(i) ;

Traiter Fils(i) : Debut

Si i est une feuille Alors Ai=stockagei

Sinon

Pourj = 1 `a ni : Traiter Fils(ei,j) ; Ai=Classer Fils(i) ; Classer Fils (i) :

Debut

D´eterminer p, la position d’activation du p`ere, et l’ordre des fils en utilisant le th´eo-r`eme 3.2;

Calculer Ai en utilisant la formule (3.8) ; renvoyer(Ai) ;