• Aucun résultat trouvé

Algorithme distribué d’arbres couvrants de poids minimum

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithme distribué d’arbres couvrants de poids minimum"

Copied!
83
0
0

Texte intégral

(1)

Lélia Blin

Algorithme distribué d’arbres couvrants de poids minimum

Algorithmique répartie M1 Université d’Evry

(2)

Lélia Blin Algorithmique des graphes

Définitions d’un arbre

Pour un arbre T a n sommets il y a équivalence entre les définitions suivantes : T est un arbre

T est un graphe connexe à n-1 arêtes T est un graphe acyclique à n-1 arêtes

T est un graphe connexe et la suppression de toute arête le déconnecte T est un graphe acyclique et l'ajout de toute arête le rend cyclique.

(3)

Lélia Blin Algorithmique des graphes

Graphe partiel

Un graphe partiel G’(V,E’) d’un graphe G(V,E) est:

Un graphe qui a les mêmes sommets que G.

Un graphe dont l’ensemble des arêtes E’ est inclus dans E.

(4)

Lélia Blin Algorithmique des graphes

Arbres couvrants

Un arbre couvrant T d’un graphe G(V,E) est:

Un graphe partiel, sans cycle.

(5)

Lélia Blin Algorithmique des graphes

Graphe pondéré

Un graphe pondéré G(V,E,ω) est un graphe où un entier positif est affecté à chaque arête.

On appelle cet entier poids de l’arête.

4

8

8 7

2

11 4

10 9

7 6

(6)

Lélia Blin Algorithmique des graphes

Poids d’un graphe

Le poids (où coût) d’un graphe est la somme des poids des arêtes du graphe.

On le note ω(G)

4

8

8 7

2 11

1 2

4

10 9

7 6

ω(G)=103

(7)

Lélia Blin Algorithmique des graphes

Arbre couvrant de poids minimum

Soit un graphe G=(V,E,ω) un graphe non orienté pondéré.

On appelle arbre couvrant de poids minimum (ou maximum) de G noté ACPM ou MST (minimum Spanning Tree)

Tout arbre couvrant dont la somme des poids des arêtes le constituant est minimal (maximal).

4

8

8 7

2 11

1 2

4

10 9

7 6

4

8

8 7

2 11

1 2

4

10 9

7 6

(8)

Lélia Blin Algorithmique des graphes

Proposition

Un graphe admet un arbre couvrant si, et seulement si, il est connexe.

(9)

Lélia Blin Algorithmique des graphes

Remarque1

L’arbre couvrant de poids minimal n’est pas forcément unique.

4

8

8 7

2 11

1 2

4

10 9

7 6

4

8

8 7

2 11

1 2

4

10 9

7 6

(10)

Lélia Blin Algorithmique des graphes

Remarque 2

Un arbre couvrant de poids minimum est unique si et seulement si les poids de ces arêtes sont deux à deux distincts.

(11)

Lélia Blin Algorithmique des graphes

Propriété Cycle-Max

L’arête de poids maximum d’un cycle ne fait partie d’aucun arbre couvrant de poids minimum.

(12)

Lélia Blin Algorithmique des graphes

Propriété Coupe-Min

L’arête de poids minimum d’une coupe fait partie de l’arbre couvrant de poids minimum.

(13)

Lélia Blin Algorithmique Répartie

Algorithmes séquentiels

Algorithme de Borůkva (1926) (Coupe-Min) Algorithme de Prim (1957) (Coupe-Min)

Algorithme de Kruskal (1956) (Cycle-Max) Algorithme de Solin (1961) (Coupe-Min)

(14)

Lélia Blin Algorithmique Répartie

Question

Comment construire de façon distribué un arbre couvrant de poids minimum?

(15)

Lélia Blin Algorithmique Répartie

Kruskal distribué?

L’approche de Kruskal est-elle distribuable?

(16)

Lélia Blin Algorithmique Répartie

Prim distribué?

L’approche de Prim est-elle distribuable?

(17)

Blin Lélia

Algorithme de Borůkva

Arbre couvrant de poids minimum

Algorithmique répartie M1 Université d’Evry

(18)

Lélia Blin Algorithmique Répartie

Algorithme de Borůkva

Initialement chaque sommet est une composante connexe Tant qu’il existe plusieurs composantes connexe:

Choisir une composante connexe C

Trouver l’arête sortante de C de poids minimum: notée e Soit S la composante connexe de l’autre extrémité de e Créer une nouvelle composante connexe:

C ∪ {e} ∪ S

(19)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

•Composantes={A}{B}{C}{D}{E}{F}{G}{H}{I}

•MST={}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(20)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

•Composantes={A}{B}{C}{D}{E}{F}{G}{H}{I}

•MST={}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(21)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A}{B}{C}{D}{E}{F}{G}{H}{I}

MST={}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(22)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A}{B}{C}{D}{E}{F}{G}{H,I}

MST={(H,I)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(23)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A}{B}{C}{D}{E}{F}{G}{H,I}

MST={(H,I)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(24)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A}{B}{C}{D}{E}{F}{G}{H,I}

MST={(H,I)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(25)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B}{C}{E}{F}{G}{H,I}

MST={(H,I),(A,D)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(26)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B}{C}{E}{F}{G}{H,I}

MST={(H,I),(A,D)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(27)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B}{C}{E}{F}{G}{H,I}

MST={(H,I),(A,D)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(28)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C}{F}{G}{H,I}

MST={(H,I),(A,D),(B,E)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(29)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C}{F}{G}{H,I}

MST={(H,I),(A,D),(B,E)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(30)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C}{F}{G}{H,I}

MST={(H,I),(A,D),(B,E)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(31)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C}{F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(32)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C}{F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(33)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C}{F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(34)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C,F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H),(C,F)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(35)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C,F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H),(C,F)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(36)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,D}{B,E}{C,F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H),(C,F)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(37)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E}{C,F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(38)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E}{C,F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(39)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E}{C,F}{H,I,G}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(40)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E,H,I,G}{C,F}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B),(B,I)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(41)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E,H,I,G}{C,F}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B),(B,I)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(42)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E,H,I,G}{C,F}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B),(B,I)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(43)

Lélia Blin Algorithmique Répartie

Exemple de Borůkva

{A,B,D,E,H,I,G,C,F}

MST={(H,I),(A,D),(B,E),(G,H),(C,F),(A,B),(B,I),(B,C)}

A

G D

4

8

C

I

F B

H E

8 7

2 11

1 2

4

10 9

7 6

(44)

Blin Lélia

Algorithme distribué

Arbre couvrant de poids minimum

Algorithmique répartie M1 Université d’Evry

(45)

Lélia Blin Algorithmique Répartie

Passage au distribué

Construire un algorithme pour le MST est « facile » en séquentiel beaucoup moins en distribué.

(46)

Lélia Blin Algorithmique Répartie

Gallager, Humblet et Spira (1983) *

C’est le premier algorithme distribué Squelette de tous les autres travaux

Notion de fragment

Un fragment est l’ensemble des nœuds appartenant à un même sous-arbre de poids minimum.

Nous allons voir dans ce cours une adaptation de l’algorithme de GHS83.

(47)

Lélia Blin Algorithmique Répartie

Algorithmes distribués pour le MST

Initialement chaque nœud est un fragment Les nœuds d’un même fragment coopèrent

pour trouver l’arête de poids minimum sortante du fragment Les fragments sont fusionner entre eux

grâce à l’arête de poids minimum La démarche est répété jusqu’à

ce qu’il ne reste qu’un seul fragment Le MST

Algorithme de Borůkva

(48)

Lélia Blin Algorithmique Répartie

Difficultés

Quelle sont les difficultés d’une telle approche?

(49)

Lélia Blin Algorithmique Répartie

Version synchrone

Initialement chaque nœud est un fragment Les nœuds d’un même fragment coopèrent

pour trouver l’arête de poids minimum sortante du fragment Les fragments sont fusionner entre eux

grâce à l’arête de poids minimum

La démarche est répété jusqu’à ce qu’il ne reste qu’un seul fragment

Le MST

(50)

Lélia Blin Algorithmique Répartie

Version synchrone

La première étape est «facile»

Les fragments sont réduits à un seul noeud

Donc chaque fragment peut décider localement de son arête sortante de poids minimum.

(51)

Lélia Blin Algorithmique Répartie

Exemple première étape

A B

F

E

H

I

D

G

21 C

19

20

27 28

15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

(52)

Lélia Blin Algorithmique Répartie

Exemple première étape

A B

F

E

H

I

D

G

21 C

19

20

27 28

15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

(53)

Lélia Blin Algorithmique Répartie

Et après la première étape

Initialement chaque nœud est un fragment Les nœuds d’un même fragment coopèrent

pour trouver l’arête de poids minimum sortante du fragment Les fragments sont fusionner entre eux

grâce à l’arête de poids minimum

La démarche est répété jusqu’à ce qu’il ne reste qu’un seul fragment

Le MST

(54)

Lélia Blin Algorithmique Répartie

Fragments

Un fragment est un sous-arbre couvrant orienté.

Le parent d’un noeud est l’autre extrémité de son arête de poids minimum

Si deux noeuds ont:

la même arête de poids minimum

le parent est celui d’identifiant minimum

(55)

Lélia Blin Algorithmique Répartie

Exemple

A B

F

E

H

I

D

G

21 C

19

20

27 28

15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

(56)

Lélia Blin Algorithmique Répartie

Exemple

A B

F

E

H

I

D

G

21 C

19

20

27 28

15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

(57)

Lélia Blin Algorithmique Répartie

Fragments

La structure induite de la sélection des arêtes de poids minimum est un ensemble de sous-arbre.

La racine de chaque sous-arbre diffuse son identifiant

(58)

Lélia Blin Algorithmique Répartie

Exemple

A B

F

E

H

I

D

G

21 C

19

20

27 28

15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

(59)

Lélia Blin Algorithmique Répartie

Arêtes sortantes

Maintenant chaque noeud connait l’identifiant de son fragment

Chaque noeud peut donc identifier

l’ensemble des arêtes internes au fragment l’ensemble des arêtes sortantes du fragment

(60)

Lélia Blin Algorithmique Répartie

Arête sortante de poids minimum

Comment choisir l’unique arête de poids minimum?

(61)

Lélia Blin Algorithmique Répartie

En partant des feuilles

Les noeuds sélectionnent l’arête de poids minimum sortante de leur sous-arbre.

La racine concentre donc l’arête sortante de poids minimum du fragment

Arête sortante de poids minimum

(62)

Lélia Blin Algorithmique Répartie

Arête sortante de poids minimum

10,3 7,3 0,3

1,3

5,3 2,3 3,3

11,3

8,8

4,8

9,8

6,8 8

3

2 1

5

6

7

4 10

(63)

Lélia Blin Algorithmique Répartie

Arête sortante de poids minimum

10,1,2 7,1,3 0,3,2

1,1,1

5,3,2 2,3,2 3,3,1

11,3,5

8,8,1

4,4,1

9,4,2

6,4,3 8

3

2 1

5

2

7

4 10

1

12,8,9

13,8,9 1

10

4 9

(64)

Lélia Blin Algorithmique Répartie

Comment fusionner deux fragments

Les fragments f1 et f2 sont fusionnés grâce à l’arête de poids minimum e=(u,v)

avec u∈ f1 et v∈ f2

La racine du fragment f1 est déplacer au noeud u en réorientant le chemin de f1 vers u

Idem pour le fragment f2

(65)

Lélia Blin Algorithmique Répartie

Comment fusionner deux fragments

Un message de fusion est lancer depuis la nouvelle racine

message <Fusion, id nouveau fragment>

(66)

Lélia Blin Algorithmique Répartie

Arête sortante de poids minimum

10,1,2 7,1,3 0,3,2

1,1,1

5,3,2 2,3,2 3,3,1

11,3,5

8,8,1

4,4,1

9,4,2

6,4,3 8

3

2 1

5

2

7

4 10

1

12,8,9

13,8,9 1

10

9

(67)

Lélia Blin Algorithmique Répartie

Comment fusionner deux fragments

Quand un noeud u reçoit un message <Fusion,idv>

u est dans un autre fragment:

u est racine, il prend comme parent le noeud qui lui envoie le message

u change l’identifiant de son fragment

(68)

Lélia Blin Algorithmique Répartie

Comment fusionner deux fragments

Quand un noeud v reçoit un message <Fusion,idu>

u est dans un autre fragment ou non:

u efface son arête de poids minimum

u envoie un message <Fusion,idu> à ses enfants

(69)

Lélia Blin Algorithmique Répartie

Fusion

10,1 7,1 0,3,2

1,1

5,3,2 2,3,2 3,1

11,3,5

8,4

4,4

9,4

6,4,3 8

3

2 1

5

2

7

4 10

1

12,8,9

13,8,9 1

10

9

(70)

Lélia Blin Algorithmique Répartie

Fusion

10,1 7,1 0,3,2

1,1

5,3,2 2,3,2 3,1

11,3,5

8,4

4,4

9,4

6,4,3 8

3

2 1

5

2

7

4 10

1

12,8,9

13,8,9 1

10

9

(71)

Lélia Blin Algorithmique Répartie

Mise à jour des fragments

Comment être sur que la mise à jour des fragments est terminé?

Un noeud sait qu’il à mis à jour son fragment car il a effacé son arête de poids minimum.

Quand démarrer la collecte de l’arête de poids minimum?

Comment être sur que les voisins ont fini leurs mise à jour?

(72)

Lélia Blin Algorithmique Répartie

Collecte de l’arête de poids minimum

Quand un noeud efface son arête de poids minimum il envoie fini à ses voisins (non enfants)

Un noeud stocke fini pour chacun de ses voisins

Une feuille u qui a effacée son arête de poids minimum et qui a stocké fini pour l’ensemble de ses voisins( en dehors du parent)

u envoie le message <Fragment>

Chaque noeud qui reçoit le message <Fragment>

envoie l’identifiant de son fragment dans le message

<NumFragment, Idfragment>

(73)

Lélia Blin Algorithmique Répartie

Collecte de l’arête de poids minimum

Maintenant la collecte peut commencer

Chaque feuille peut déterminer son arête de poids sortant et l’envoyer à son parent.

(74)

Lélia Blin Algorithmique Répartie

Nouvelles phases

Il faut remettre à jour les fragments

Diffusion de l’identifiant à partir de la racine Collecter les nouvelles arêtes sortantes de poids minimum

Fusion les fragments ...

(75)

Lélia Blin Algorithmique Répartie

Exemple

A B

J

F

E

H

I

D

G

C

K

19 21

20

27 28

4 15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

15 20

6

6

11

10

10

15 9 6

10

(76)

Lélia Blin Algorithmique Répartie

Exemple

A B

J

F

E

H

I

D

G

C

K

19 21

20

27 28

4 15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

15 20

6

6

11

10

10

15 9 6

10

(77)

Lélia Blin Algorithmique Répartie

Exemple

A B

F

E

H

I

D

G

21 C

19

20

27 28

15

16 7

1 23

6

9

17

18 13

12 2

8

5 3

11

10 14

22

(78)

Lélia Blin Algorithmique Répartie

Exemple

I

A B C

J E

F G

D

19 21

28

20

3

6

23

22

11 8

2 5

17 14

12

13 10

15 18 16 27 7

9

1

20

11

11

21

11

11 11

15 13

(79)

Lélia Blin Algorithmique Répartie

Exemple

I

A B C

J E

F G

D

19 21

28

20

3

6

23

22

11 8

2 5

17 14

12

13 10

15 18 16 27 7

9

1

20

11

11

21

11

11 11

15 13

(80)

Lélia Blin Algorithmique Répartie

Exemple

I

A B C

J E

F G

D

19 21

28

20

3

6

23

22

11 8

2 5

17 14

12

13 10

15 18 16 27 7

9

1

20

11

11

21

11

11 11

15 13

(81)

Lélia Blin Algorithmique Répartie

Exemple

I

A B C

J E

F G

D

19 21

28

20

3

6

23

22

11 8

2 5

17 14

12

13 10

15 18 16 27 7

9

1

(82)

Lélia Blin Algorithmique Répartie

Complexité

L’algorithme de Gallager, Humlet et Spira utilise 5nlog2n+2m messages

n est le nombre de noeuds et m le nombre de liens Chaque message est de taille O(log2n)

(83)

Lélia Blin Algorithmique Répartie

Remarques

Cet algorithme fonctionne en asynchrone.

Dans la version présenté les subtilités liés à l’asynchrone on été masqués.

Il faut notamment que les fragment « grossissent » à la même « vitesse » pour minimiser le nombre de message.

Références

Documents relatifs

Ainsi, le poids exponentiel introduit dans la litt´ erature ne permet pas de bien classer les donn´ ees, alors que la discriminance le peut ; ce qui montre que l’information de

Cette force est dirigée à la verticale du lieu vers le centre de la Terre Le poids est une action à distance, il est réparti sur la totalité de l’objet ; on peut néanmoins

Un arbre couvrant de poids minimum est unique si et seulement si les poids de ces arêtes sont deux à deux

 lorsque ces lignes de raccordement se rejoignent, elles le font quatre par quatre et prennent alors, au point de rencontre, les quatre directions tétraédriques

Dans ce cas, les 3 variantes ont le même comportement : l’émetteur doit attendre le RTO et retransmettre le segment (et repartir en slow start). MA retransmet donc le

Au III e siècle avant J.C, Hiéron II (306-215) roi de Syracuse avait confié à un orfèvre, une certaine quantité d’or pour en faire une couronne... Calculer les poids P T et P

L’exemple typique de motivation pour l’étude de ces ACPM est la construction d’un sous- réseau permettant d’atteindre tous les sommets d’un réseau donné, dont on veut

Dans cet exercice, on considère uniquement des graphes connexes et on suppose donné un algorithme acpm qui prend en entrée un graphe non orienté connexe et renvoie un arbre couvrant