• Aucun résultat trouvé

5.2 Alignement partiel par strate

5.2.5 Proc´ edure P rolonger

La proc´edure Prolonger doit ˆetre adapt´ee pour s’appliquer correctement `a un multigraphe partiel, c’est-`a-dire pour tenir compte des jokers. La modification se situe dans la s´election des prolongements (lignes 4 et 5) : les candidats vk+1 sont pris dans l’ensemble Vk+1 pour autoriser les prolongements par un joker, et la propri´et´e Pk+1 va changer pour tenir compte des nouveaux types d’empilements.

Algorithm 5: Prolonger.

Global: Graphe de donn´ees stratifi´e D = (V, E) pour les r´eseaux Gi = (Vi, Ei), i ∈ [|1, n|]

Input: Multigraphe C = (V, E1, . . . , Ek) /* multigraphe par-tiel courant `a prolonger */

Output: Multigraphe N ewC = (V0, E01, . . . , E0k+1) /* mul-tigraphe partiel prolong´e sur la strate k + 1 */

(1) begin

(2) /* pour chaque nœud de C s´election des prolongements */ (3) for (v1, . . . , vk) ∈ V do (4) for vk+1 ∈ V k+1 do (5) if Pk+1(v1, . . . , vk, vk+1) then (6) V0 ← V0+ {(v1, . . . , vk+1)} ; (7) end if (8) end for (9) end for

(10) /*r´eintroduire les arˆetes en respectant le graphe de donn´ees stratifi´e*/

(11) (E01, . . . , E0k+1) ← ReconstruireAretes(V0, D) ; (12) return (V0, E01, . . . , E0k+1) ;

(13) end

Voyons comment les propri´et´es de prolongement sont chang´ees pour tenir compte du quorum. Pour chaque type d’empilement partiels, nous allons avoir deux cas : le cas d’un prolongement en joker et le cas d’un prolongement par un nœud de la k + 1-`eme strate. Supposons, dans un premier temps, que l’empilement `a prolonger v = (v1, . . . vk) soit tel que cover(v) 6= ∅. Nous donnons dans la Figure 5.5, un exemple de prolongements d’un tel empilement.

Dans le cas des empilements-cliques partiels, pour un prolongement en joker nous nous contenterons de v´erifier que l’ajout de ce joker ne vient pas contredire la condition de quorum. Pour un prolongement par un nœud de la k + 1-`eme strate,

1 2 3

4

Figure 5.5 – Exemple de s´election de prolongements d’un empilement partiel non-vide pour un quorum q = 3 sur 5 r´eseaux. Nous avons un triplet d´ej`a construit, form´e d’un nœud du r´eseau bleu, un nœud du r´eseau rouge et un nœud joker. Nous cherchons `a le prolonger sur la strate orange. Dans tous les cas nous pourrons le prolonger par un nœud joker, puisqu’il reste suffisamment de strates apr`es pour ne pas briser la condition de quorum. a) Pour les empilements-cliques partiels, seul le nœud 1 de la strate orange est pertinent, parce qu’il est connect´e `a chacun des nœuds non-jokers du triplet. b) Pour les empilements-´etoile, nous obtenons les deux nœuds 1 et 3, parce qu’ils sont tous deux reli´es par une arˆete pointill´ee au nœud bleu du triplet. c) Avec des empilements-connexes, nous devons r´ecup´erer uniquement le nœud 2 parce que c’est le seul prolongement gagnant.

nous allons par contre imposer qu’il soit en correspondance avec chacun des nœuds de cover(v). En pratique la propri´et´e s’exprime de la fa¸con suivante :

Propri´et´e de Prolongement 5. (Empilements-Cliques Partiels)

– P cliquek+1(v1, . . . , vk, ∗) = (|cover(v1, . . . , vk, ∗)| ≥ q − (n − k − 1)), – P cliquek+1(v1, . . . , vk, vk+1 6= ∗) = ∀v ∈ cover(v1, . . . , vk), (v, vk+1) ∈ E. L’id´ee derri`ere la condition sur |cover(v1, . . . , vk, ∗)| est qu’il reste n − k − 1 strates, donc le k + 1-uplet peut encore ˆetre compl´et´e par n − k − 1 nœuds non-jokers, la condition `a la fin est donc n − k − 1 + |cover(v1, . . . , vk, ∗)| ≥ q. Le second cas correspond simplement au test de clique.

Dans le cas des empilements-´etoiles partiels, pour un prolongement en joker la condition n´ecessaire sera, une fois encore, que ce joker ne vienne pas briser la condition de quorum. Pour un prolongement par un nœud de la k + 1-`eme strate, nous imposerons qu’il soit en correspondance avec le nœud v1 du r´eseau central.

Propri´et´e de Prolongement 6. (Empilements-Etoiles Partiels) – P etoilek+1(v1, . . . , vk, ∗) = |cover(v1, . . . , vk, ∗)| ≥ q − (n − k − 1)), – P etoilek+1(v1, . . . , vk, vk+1) = (v1, vk+1) ∈ E.

Enfin, pour un empilement connexe partiel, nous allons chercher, comme pr´ec´ e-demment, les prolongements gagnants, nous voulons donc que pour chaque pro-longement, y compris le prolongement en joker, on puisse exhiber des nœuds qui compl`etent le k+1-empilement partiels en un n-empilement partiel v qui convienne, c’est `a dire tel que cover(v) est connexe et |cover(v)| ≥ q.

Propri´et´e de Prolongement 7. (Empilements-Connexes Partiels) P connexek+1(v1, . . . , vk, vk+1) = ∃{vk+2, . . . vn} ∈ V

k+2× . . . V

n tels que – cover(v1, . . . vn) est connexe,

– |cover(v1, . . . vn)| ≥ q.

L’impl´ementation des prolongements des empilements-cliques partiels et des empilements-´etoiles partiels ne pose pas de probl`emes particuliers, il s’agit simple-ment de parcourir cover(v) et de tester sur les correspondances des nœuds avec Vk+1. Pour les prolongements des empilements-connexes partiels, le fonctionnement est le mˆeme que pour les empilements-connexes : on commence par calculer l’in-tersection de la k + 1-`eme strate avec la composante connexe pour ES qui contient cover(v1, . . . vk), puis on parcourt les voisins de ces nœuds pour ES en cherchant un n-empilement partiel passant une ou z´ero fois par chaque strate, contenant cover(v1, . . . vk) et v´erifiant la condition de quorum.

Une fois les empilements prolong´es par des ´el´ements de Vk+1 , il ne reste plus qu’`a ajouter les arˆetes, comme d´ecrit dans la section pr´ec´edente.

Notons qu’en pratique l’algorithme fonctionne de fa¸con plus efficace, en s´eparant d`es la proc´edure P rolonger les prolongements en joker - qui seront dans une classe `

a part - des autres prolongements. Cela nous permet d’´eviter la construction d’un grand nombre d’arˆetes entre empilements qui de toute fa¸con seraient s´epar´es par la proc´edure P artitionner.

Revenons au cas particulier ´ecart´e pr´ec´edemment : si cover(v) = ∅, nous savons, par construction, que v est le seul empilement du multigraphe courant, puisque la proc´edure P artitionner est con¸cue de telle sorte que dans chacun de ses r´esultats on n’a jamais sur une strate `a la fois des nœuds jokers et des nœuds non-jokers.

Nous n’avons donc pas d’autre choix que de s´electionner comme prolongements de v tous les nœuds de Vk+1, ainsi que ∗ si cela ne contredit pas la condition de quorum.

Propri´et´e de Prolongement 8. (tout type d’empilement partiel) – Pk+1(∗, ∗, . . . , ∗, vk+1 = ∗) = (n − k − 1) ≥ q,

– Pk+1(∗, ∗, . . . , ∗vk+1 6= ∗) = vrai.

Intuitivement, il est normal que l’on soit oblig´es de prolonger par tout le k + 1-`eme r´eseau puisque le cas de figure que nous sommes en train de traiter revient en pratique `a ignorer compl`etement les k premiers r´eseaux.

Notes d’impl´ementation.

Le param`etre associ´e au quorum est appel´e maxstar, il correspond

en pratique au nombre maximal de jokers que l’on peut utiliser. Autrement dit, maxstar = n − q.

Nous donnons, sur la Figure 5.6 un exemple simple d’ex´ecution d’OTFS pour maxstar = 1.

a 1 b 1 a2 a3 b3 a1 b1 Partitionner Prolonger 1 2 (a ,a ) 1 2 (a , ) 1* (b , ) 1* Prolonger 4' Partitionner 3 (a ,a ) 1 2 (a , ) 1* (b , ) 1* (a , , a ) 1* 3 (b , ,b ) 1* 3 Partitionner Connecton partiel par strate maximal 5' Prolonger 4 (a ,a , ) 1 2* (a ,a ,a ) 1 2 3 Partitionner 5 (a ,a ,a ) 1 2 3 (a ,a , ) 1 2* Connecton

partiel par strate maximal

C :1

C :3

Connecton partiel par strate non maximal C :2 * Partitionner Prolonger ( ,a ) 2 * Partitionner Prolonger ( ,a ,a )* 2 3 Partitionner Connecton partiel par strate non maximal C :4 1" 2" 3" 4" 5" Graphe de données stratifié Exécution de l'algorithme

Figure 5.6 – Exemple d’ex´ecution d’OTFS pour maxstar = 1. En haut nous donnons le graphe de donn´ees stratifi´e. Les ronds blancs repr´esentent des nœuds jokers. Par rapport `a OTF, OTFS commence avec deux classes : `a gauche nous suivons l’ex´ecution sur la premi`ere classe, constitu´ee du premier r´eseau (bleu), `a droite nous suivons l’ex´ecution sur la seconde classe, form´ee d’un unique nœud joker. Tant que cela ne brise pas la condition de quorum, l’op´eration d’ajout de strate propose maintenant un prolongement par un nœud joker en plus des pro-longements “classiques”. On remarque aussi que les ´etapes de partitionnement s´eparent syst´ematiquement les empilements qui n’ont pas des nœuds jokers sur les mˆemes strates (c’est le cas dans les ´etapes 3 et 5). Une fois les connectons par-tiels par strate calcul´es, l’algorithme ´elimine ceux qui ne sont pas maximaux, les connectons maximaux sont donc C1 et C3 (car C2 v C1 et C4 v C1). Si on lance OTF sur le mˆeme exemple, on ne retrouve que C1.