• Aucun résultat trouvé

Dans cette section nous nous int´eressons `a la minimisation de la m´emoire totale, pour laquelle `a la fois la m´emoire active et les facteurs doivent ˆetre pris en compte. Tout comme ce qui a ´et´e pr´esent´e dans la section pr´ec´edente pour la minimisation de la m´emoire active, il est possible d’anticiper l’activation du p`ere `a une position autre que celle utilis´ee dans l’algorithme3.2.

Soit i un nœud de l’arbre d’assemblage. Nous allons utiliser les mˆemes d´efinitions que celles utilis´ees dans la section pr´ec´edente pour les ensembles E1 et E2. Le pic de m´emoire totale pour l’ensembleE1, avant l’allocation du p`ere, est obtenu en appliquant la

3.6. OPTIMISATION DE LA M ´EMOIRE TOTALE 43

formule (3.3) aux fils appartenant `a cet ensemble. De plus, la taille de la m´emoire totale n´ecessaire pour traiter les nœuds appartenant `a E2 est donn´ee par :

stockagei+

En effet, lorsqu’un nœud appartenant `a E2 est trait´e la m´emoire contient les facteurs produits par ses nœuds fr`eres d´ej`a trait´es. Dans la formule pr´ec´edente, il est `a noter que Tei,j inclut fei,j de telle sorte que les facteurs du dernier fils sont pris en compte dans la formule.

Finalement, la taille de la m´emoire totale n´ecessaire pour le traitement deiest donn´ee par :

Nous d´efinissons alors P1 (resp. P2) comme ´etant l’espace m´emoire n´ecessaire au traitement de tous les nœuds appartenant `a E1 ainsi que pour l’allocation du p`ere (resp.

l’espace m´emoire n´ecessaire au traitement de tous les nœuds appartenant `a E2). Ainsi, nous avons :

Lemme 3.4. Supposons connus la position p pour l’activation du p`ere et les ensembles E1 etE2 contenant les nœuds fils trait´es respectivement avant et apr`es l’allocation du p`ere.

Ordonner les fils appartenant `a E1 dans l’ordre d´ecroissant de leur Tei,j −(cbei,j +fei,j) respectifs donne un pic de m´emoire totale minimal sur E1. De plus, Ordonner les fils appartenant E2 dans l’ordre d´ecroissant de leur Tei,j −fei,j respectifs donne un pic de m´emoire totale minimal sur E2.

D´emonstration. Pour E1 voir la section 3.4.2. En ce qui concerne E2, ce r´esultat est une cons´equence directe du th´eor`eme de Liu (voir la section 3.4.1.1). En effet, en posant xi =Tei,k et yk =fei,k, il apparaˆıt que l’occupation m´emoire optimale sur E2 est obtenue en classant les nœuds fils dans l’ordre d´ecroissant de leur Tei,k −fei,k respectifs. ¥ Lemme 3.5. Supposons que l’occupation m´emoire maximale sur l’ensembleE2 est obtenue pour le fils j0, p+ 1≤j0 ≤ni. En d’autres termes, P2 =P2(j0), o`u :

D´emonstration. Supposons que l’on d´eplace un ´el´ementei,j1 6=ei,j0 de E2 vers E1 : i) Si j1 < j0, la valeur de P2 ne change pas (la valeur de la deuxi`eme ligne de la

formule (3.13) ne change pas).

ii) Si j1 > j0, la valeur de P2 va croˆıtre vu que le termefei,j

1 va s’additionner `a l’ancien pic (deuxi`eme ligne de la formule (3.13)).

¥ Lemme 3.6. Etant donn´e un ensemble´ E1. L’insertion d’un ´el´ement ei,j0 dansE1 ne peut pas faire d´ecroˆıtre le pic sur cet ensemble. En d’autres termes, si P10 repr´esente le pic m´emoire sur E1 (allocation du p`ere incluse) apr`es insertion de ei,j0 alors : P10 ≥ P1.

D´emonstration. Triviale (voir la formule (3.10)). ¥

Th´eor`eme 3.3. Soit un nœud i avec ni fils. L’algorithme suivant produit un ordre de parcours qui donne un pic de m´emoire totale Ti optimal :

E1 =∅,E2 = (ei,k)k=1,...,ni etp= 0 ;

Classer les fils appartenant `aE2 dans un ordre conforme au lemme3.4; Calculer Ti =P2 en utilisant la formule (3.11) ;

3.6. OPTIMISATION DE LA M ´EMOIRE TOTALE 45

Classer les fils appartenant `a E1 et E2 dans un ordre conforme au lemme 3.4; Calculer P1, P2, et Ti0 = max(P1,P2) ;

Si Ti0 6Ti Alors

Sauvegarder la valeur de p,E1 etE2; Ti =Ti0;

jusqu’`a ce que p=ni ou P1 ≥ P2

D´emonstration. Etant donn´e un nœud´ i, consid´erons la configurationC0 suivante :E1 =∅, E2 = (ei,k)k=1,...,ni et p = 0. Soit ei,j0 le fils pour lequel le pic est atteint sur E2. Notons, Ti le pic de m´emoire totale pour le traitement de i et de ses fils. Pour C0, nous avons Ti =P2, o`uP2 repr´esente le pic de m´emoire totale observ´e lors du traitement de tous les nœuds fils appartenant `aE2 (voir la formule3.11). Dans ce qui suit nous consid´erons que les ´el´ements de E1 et E2 sont r´eordonn´es avec un ordre pour minimiser le pic de m´emoire totale sur chacun de ces deux ensembles (voir le lemme 3.4). D’apr`es le lemme 3.5, la seule possibilit´e de diminuer le pic de m´emoire totale Ti est de d´eplacer l’´el´ementei,j0 de E2 vers E1. Notons Ti0 le nouveau pic obtenu avec la configuration o`u l’´el´ement ei,j0 a ´et´e d´eplac´e deE2 vers E1. Le pic pouvant croˆıtre ou d´ecroˆıtre, l’op´eration de d´eplacement du fils pour lequel le pic est atteint dans E2 de cet ensemble vers E1 doit ˆetre r´ep´et´ee. Le processus s’arrˆete alors lorsqueE2 est vide ou que P1 est sup´erieur `aP2. En effet, dans ce dernier cas, ajouter un ´el´ement `a E1 ne peut pas faire d´ecroˆıtre le pic m´emoire Ti =P1 (voir le lemme 3.6). De ce fait, l’algorithme donn´e dans le th´eor`eme 3.3 va trouver la

configuration ayant le pic de m´emoire totale optimal. ¥

Enfin, l’application du th´eor`eme 3.3 `a chaque niveau de l’arbre dans un processus de remont´ee d’abord produit un parcours optimal en terme de pic de m´emoire totale.

L’algorithme3.4 d´ecrit ce processus de g´en´eration du parcours optimal.

Remarque.Nous avons utilis´e le crit`ere d’arrˆetP1 ≥ P2. Il faut noter que la condition Ti0 > Ti n’est pas suffisante pour assurer que le pic optimal a ´et´e obtenu. En pratique, il peut en effet arriver que le pic global augmente lors du d´eplacement de ei,j0 de E2 vers E1, et diminue `a nouveau lors d’une ´etape future de l’algorithme. Un exemple pour s’en convaincre est le suivant o`u le nœud parenti a trois fils :

de d´eplacer le fils ei,3 de E2 vers E1 conduit `a un pic m´emoire ´egal `a 330, qui est aussi l’optimal puisqu’on a alors P1 =P2.

Algorithme 3.4 R´eordonnancement optimal pour la minimisation de la m´emoire totale.

R´eordonner Arbre (T) : Debut

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

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

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

Calculer Ai en utilisant la formule 3.9; renvoyer(Ti) ;

3.7 Complexit´ e des algorithmes de minimisation de la