• Aucun résultat trouvé

7.8 Schéma de routage pour les graphes médians sans cube

7.8.1 L’idée

L’idée pour l’encodage dans le cas du routage est la même que celle pour les requêtes de distances de la section7.7: le graphe est partitionné récursivement en fibres, respectivement à un sommet médian. À chaque étape, les étiquettes des sommets reçoivent trois nouvelles parties, nommées “St”, “1er” et “2nd” comme précédemment. Évidemment, les informations stockées dans ces parties seront un peu différentes de celles utilisées pour décoder des distances. En plus du fait que des informations spécifiques au routage soient nécessaires, cela est aussi dû au fait que les requêtes de routage (contrairement aux requêtes de distance) ne sont pas commutatives. Par exemple, dans la fonctionDist_1-Voisins, nous sup-posions queuappartenait à un panneau etvà un cône. Le cas symétrique était ré-duit au premier avec un appel àDist_1-Voisinsavecv pour premier argument et u pour second. Cela n’est plus possible pour faire du routage car router d’un panneau vers un cône est différent de router d’un cône vers un panneau. L’idée intuitive derrière cela est le fait que, les cônes ayant un nombre constant (égal à deux) de frontières (portées), les sommets à l’intérieur peuvent stocker des informations relatives à chacune des frontières et ainsi connaître les directions vers lesquelles elles mènent. Les panneaux, quant à eux, ont aussi des frontières portées, mais en nombre potentiellement linéaire en la taille du graphe. Pour que les sommets dans ces panneaux stockent un nombre de portes constant, nous de-vons considérer non pas leurs frontières mais leurs bordures, perdant au passage l’information de direction. Ainsi, lorsqu’une requête de routage d’un panneau vers un cône est effectuées, il faut que les informations relatives aux choix de la direction soient disponibles dans l’étiquette du sommet dans le cône.

Comme dans le schéma de distance, les décisions de routage de u versv né-cessitent au préalable de trouver la premier médian stocké par u et v par rap-port auquel les sommets appartiennent à des fibres distinctes. Soitm le sommet médian en question, et soient F(x) et F(y) les fibres de la partition courante par rapport à m contenant u etv, respectivement. Si u et v sont éloignés, alors

dG(u, v) = dG(u, m) + dG(m, v), et donc le routage de uversv est équivalent au routage deuversm(à moins queu= m). De ce fait, la fonction d’encodage doit donner à l’étiquette de u le port port(u, u0) pour un certain voisin u0 de u dans I(u, m). Siu=m, alors il suffit de router deu=mvers la porteydev surSt(m).

Cela est fait en utilisant un schéma de routage pour les étoiles surSt(m).

Siuetv sont 2-voisins, alorsF(x)etF(y)sont deux cônes voisins d’un même panneauF(w). De façon similaire au schéma de distance, le décodage du schéma de routage trouve ce F(w). Puisque les portes u+ et v+ de v sur F(w) appar-tiennent à un même plus court (u, v)-chemin, il suffit de router de u vers u+. Ainsi, l’encodage doit ajouter à l’étiquette de u le port de u pour atteindre un voisin dans I(u, u+). La même information est nécessaire lorsque u et v sont 1-voisins et F(x) est un cône est F(y)un panneau. En effet, dans ce cas, il existe un plus court(u, v)-chemin passant par la porteu+deusurF(y)et par l’une des empreintes dev surF(y). En conséquence, pour router deuversv, il suffit de router deuversu+.

Enfin, supposons queu etv sont 1-voisins, mais que F(x)soit un panneau et F(y) un cône. Alors, dans ce cas, il existe un plus court (u, v)-chemin passant par l’une des empreintes u1 ou u2 de u sur F(x) et par la porte v+ de v sur F(x). Par conséquent, si u est différent de v+, il suffit de router le message de u vers l’un de ses voisins dans I(u, u1) ou dans I(u, u2) selon la position de v.

L’encodage ajoute donc dans l’étiquette de u les ports vers ces deux voisins de u. Pour décider lequel permet de se rapprocher dev, le décodage doit comparer dG(u, u1)+dG(u1, v+)etdG(u, u1)+dG(u1, v+). Ainsi, à la différence du schéma de routage dans les arbres, le présent schéma de routage dans les graphes médians sans cube doit contenir des informations de distance. D’autre part, siucoïncide avecv+, alors le message doit être routé vers un voisin deudansI(u, v)qui doit forcément appartenir au côneF(y) et non au panneauF(x)(car v+ est la porte de v sur F(x)). Il existe un unique sommet jum(v+) de F(y) adjacent à v+. Il n’est pas possible de conserver l’identifiant dejum(v+)dans l’étiquette deu=v+ car un sommet dans un panneau peut avoir un nombre arbitraire de sommets voisins dans des cônes voisins. L’identifiant de jum(v+) doit donc être stocké dans l’étiquette dev (car un cône ne peut avoir que deux panneaux voisins).

7.8.2 Encodage

Nous présentons maintenant l’algorithme d’encodage de façon plus détaillée.

SoitG= (V, E)un graphe médian sans cube et soituun sommet quelconque de G. Soitiune étape récursive dans l’application àGde l’algorithmeENC_ROUT, et soitmun sommet médian du sous-graphe médian courant (à l’étapei) contenant u.

7.8 Schéma de routage pour les graphes médians sans cube

La partie “St” LRSti (u) de l’étiquette de u est composée de l’identifiant de m, d’un port à prendre depuis u pour se rapprocher de m, d’un port de m vers u, ainsi que d’une étiquette d’étoile (voir section 7.3.1) de la porte u de u sur St(m). Remarquons quem ne peut pas stocker un port à prendre pour atteindre chaque autre sommet du graphe. Ainsi, pour pouvoir répondre à des requêtes de routage depuis m, chaque sommetu stocke donc son “port retour” depuism dans sa partie d’étiquette LRSt[depuisMed]

i (u). Suivent les composantes de la partie d’étiquette LRSti (u):

(1) LRSt[Med]i (u) := id(m)est l’identifiant unique dem; (2) LRSt[versMed]

i (u)consiste en un port à prendre à partir deupour se déplacer versm;

(3) LRSt[depuisMed]

i (u)consiste en un port à prendre à partir dempour se dépla-cer vers u;

(4) LRSt[Porte]i (u)contient l’identifiant de la fibre contenantu(c.-à-d., l’étiquette deu donnée par un schéma de distance pour l’étoileSt(m)).

Les parties 1er et 2nd de l’étiquette deu contiennent des informations simi-laires, mais elles dépendent de l’appartenance de uà un cône ou à un panneau.

Si F(u) est un panneau, alors LR1eri (u) est composée des quatre informations suivantes :

(1) LR1er[Emp_LDT]

i (u)est l’étiquette de distance d’arbre de la première empreinte u1 deusur la bordureF(u);

La partie 2nd LR2ndi (u)de l’étiquette de uest définie de façon similaire, relative-ment à la seconde empreinteu2 deusurF(u).

SiF(u)est un cône, alors il est voisin d’exactement deux panneauxF(w1)et F(w2). Les composantes respectives LR1eri (u)et LR2ndi (u)des parties 1er et 2nd de LRi(u), consistent toutes deux en quatre informations. LR1eri (u)est, par exemple, composées des données suivantes :

(1) LR1er[Porte_LDT]

i (u)consiste en l’étiquette de distance d’arbre de la porte u+1 deusur le panneauF(w1);

La partie 2nd LR2ndi (u)de l’étiquette de uest définie de façon similaire, relative-ment à la porte u+2 deusur le panneauF(w2).

Nous supposons qu’aucun port ne reçoit l’identifiant 0. Si ROUTAGE retourne 0, ou si un sommet stocke un port 0, cela signifie qu’aucun déplacement n’est requis. L’algorithme d’encodage est donc le suivant :

Algorithme 3 :Enc_Rout(G, LR(V))

Entrée : Un graphe médian sans cubeG= (V, E)et un étiquetage LD(V)de ses sommets consistant, initialement, en un identifiant unique id(u)donné à chaque sommetuV

1 siV ={v}alors stop;

2 Trouver un sommet médianmdeG;

3 LSt(m)(St(m))Enc_Etoile_Med(St(m)) ;

4 Fm← {F(x) :xSt(m)};

5 pour chaquepanneauF(x)∈ Fmfaire

6 LDF(x)(∂F(x))Enc_Dist_Arbre(∂F(x));

7 LRF(x)(∂F(x))Enc_Rout_Arbre(∂F(x));

8 pour chaqueuF(x)faire

9 Trouver les deux empreintesu1etu2 deusurF(x);

10 LSt(id(m),port(u, m),port(m, u),LSt(m)(x));

11 L1er(LDF(x)(u), LRF(x)(u), port(u, u1), dG(u, u1));

12 L2nd(LDF(x)(u), LRF(x)(u), port(u, u2), dG(u, u2));

13 LR(u)LR(u)(LSt, L1er, L2nd);

14 ENC_ROUT(F(x), LR(V)) ;

15 pour chaquecôneF(x)∈ Fmfaire

16 SoientF(w1)etF(w2)les panneaux voisins deF(x);

17 SupposonsF(w2)le panneau 2nd voisin deF(x);

18 LDF(w1)(∂F(w1))Enc_Dist_Arbre(∂F(w1));

19 LDF(w2)(∂F(w2))Enc_Dist_Arbre(∂F(w2));

20 LRF(w1)(∂F(w1))Enc_Rout_Arbre(∂F(w1));

21 LRF(w2)(∂F(w2))Enc_Rout_Arbre(∂F(w2));

22 pour chaqueuF(x)faire

23 Trouver la porteu+1 deusurF(w1);

24 Trouver la porteu+2 deusurF(w2);

25 LSt(id(m), port(u, m), port(m, u), LSt(m)(x));

26 L1er(LDF(w1)(u),LRF(w1)(u),port(u, u+1),port(u+1,jum(u+1)));

27 L2nd(LDF(w2)(u),LRF(w2)(u),port(u, u+2),port(u+2,jum(u+2)));

28 LR(u)LR(u)(LSt, L1er, L2nd);

29 ENC_ROUT(F(x), LR(V)) ;