28
Structures de données IFT-2000 Abder Alikacem Abder Alikacem Arbres de recouvrement minimum Département d’informatique et de génie logiciel Édition Septembre 2009 JFK BOS MIA ORD LAX DFW SFO BWI PVD 867 2704 187 1258 849 144 740 1391 184 946 1090 1121 2342 1846 621 802 1464 1235 337

Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Embed Size (px)

Citation preview

Page 1: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Structures de donnéesIFT-2000

Abder AlikacemAbder Alikacem

Arbres de recouvrement minimum

Département d’informatique et de génie logiciel

Édition Septembre 2009

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 2: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Définitions L’algorithme de Prim-JarnikAlgorithme de Kruskal

Plan

Page 3: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Définitions

Un sous-graphe couvrant d’un graphe G est un sous-graphe contenant tous les sommets

de G.

Un arbre couvrant d’un graphe est un sousgraphe couvrant qui est un arbre.

Arbre couvrant minimal (minimum spanning tree):

Arbre couvrant d’un graphe avec poids dont le poids total des arêtes est minimal.

ORD

PIT

ATL

STL

DEN

DFW

DCA

101

9

8

6

3

25

7

4

Page 4: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Propriétés

Propriété de cycle: Soit T un arbre couvrant d’un

graphe avec poids G Soit e une arête de G

n’appartenant pas à T et soit C, le cycle obtenu

lorsqu’on ajoute e à T Si T est minimal, alors on a

pour toutes arêtes f dans C poids(f) poids (e)

Preuve: Par contradiction Si poids(f) > poids(e), on

obtient un arbre couvrant de plus petit poids en remplaçant

l’arête f par l’arête e dans notre arbre T

84

2 36

7

7

9

8e

C

f

84

2 36

7

7

9

8

C

e

f

Remplacer f par e donne un arbrecouvrant de plus petit poids total

Page 5: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

U V

Propriété de partition des ACM

Propriétés de partition: Considérons une partition des

sommets de G en deux ensembles U et V

Soit e une arête de poids minimal entre U et V

Alors, il existe un arbre couvrant minimal de G contenant e

Preuve: Soit T un arbre couvrant minimal

de G Si T ne contient pas e, soit C le

cycle formé par l’addition de e à l’arbre T et soit f, une arête entre U et V

Par la propriété de cycles, on a,poids(f)

poids(e) Comme on avait pris e de poids

minimal, on a que poids(f) = poids(e) et alors on obtient un autre ACM en remplaçant f par e

74

2 85

7

3

9

8 e

f

74

2 85

7

3

9

8 e

f

Remplacer f par e nousdonne un autre ACM

U V

Page 6: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Algorithme de Prim-Jarnik’s

Algorithme similaire à l”algorithme de Dijkstra (dans le cas des graphes connexes).On choisit un sommet s aléatoirement qu’on met dans un “nuage” et on

construit l’arbre couvrant minimal en faisant grossir le “nuage” d’un

sommet à la fois.On garde en mémoire à chaque sommet v, une étiquette d(v) qui ici est égale au poids minimal parmi les poids des arêtes reliant v à un sommet à l’intérieur du nuage.À chaque étape:

On ajoute au nuage le sommet u extérieur ayant la plus petite étiquette d(u)

On met à jour les étiquettes des sommets adjacents à u

Page 7: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Algorithme de Prim-Jarnik’s

A priority queue stores the vertices outside the cloud

Key: distance Element: vertex

Locator-based methods insert(k,e) returns a

locator replaceKey(l,k)

changes the key of an item

We store three labels with each vertex:

Distance Parent edge in MST Locator in priority

queue

Algorithm PrimJarnikMST(G)Q new heap-based priority queues a vertex of Gfor all v G.vertices()

if v ssetDistance(v, 0)

else setDistance(v, )

setParent(v, )l Q.insert(getDistance(v), v)

setLocator(v,l)while Q.isEmpty()

u Q.removeMin() for all e G.incidentEdges(u)

z G.opposite(u,e)r weight(e)if r getDistance(z)

setDistance(z,r)setParent(z,e)

Q.replaceKey(getLocator(z),r)

Page 8: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Exemple

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

8

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

5

7

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

5

7

BD

C

A

F

E

74

28

5

7

3

9

8

07

2

5 4

7

Page 9: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

BD

C

A

F

E

74

28

5

7

3

9

8

03

2

5 4

7

BD

C

A

F

E

74

28

5

7

3

9

8

03

2

5 4

7

Exemple..suite

Page 10: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Analyse de la complexité

Opérations sur les graphes: On appelle l’opération Incidentes(v) une fois pour chaque sommet v. Donc,

temps total si on utilise une liste d’adjacence de O(m)

Étiquettage: On peut changer l’étiquette D(u) d’un sommet u jusqu’à O(deg(u)) fois.

Donc, au total, l’étiquettage prend un temps O(m)

Opérations de liste avec priorités Chaque sommet est inséré une fois dans la liste et retiré une fois. Chaque

insertion et suppresion prend un temps O(log n). Total O(n log n) La clé de chaque sommet u est modifiée au plus O(deg(u)) et prend un

temps O(log n) chaque fois. Total O(m log n)

La complexité en temps de Prim-Jarník est donc de O((n+m) log n)ou O(m log n) si le graphe est simple et connexe

Page 11: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Kruskal’s Algorithm

A priority queue stores the edges outside the cloud

Key: weight Element: edge

At the end of the algorithm

We are left with one cloud that encompasses the MST

A tree T which is our MST

Algorithm KruskalMST(G)for each vertex V in G do

define a Cloud(v) of {v}let Q be a priority queue.Insert all edges into Q using

their weights as the keyT while T has fewer than n-1

edges do edge e = T.removeMin()

Let u, v be the endpoints of eif Cloud(v) Cloud(u) then

Add edge e to TMerge Cloud(v) and

Cloud(u)return T

Page 12: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Structure de données pour Kruskal

L’algorithme maintient une forêt d’arbresUne arête est acceptée, si elle relit deux arbres distinctsOn a besoin d’une structure de données qui maintient une partition i.e une collection d’ensembles disjoints, avec les opérations

Trouver(u): retourne l’ensemble contenant u Union(u,v): remplace les ensemblescontenant u et v par

leur union

Page 13: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Représentation d’une Partition

Chaque élément d’un ensemble est mis enmémoire dans une séquence (l’ensemblepointe vers la séquence contenant ceséléments).

Chaque élément à un pointeur vers l’ensemble L’opération trouver(u) se fait en O(1) et retourne

l’ensemble dont u fait partie Pour l’opération union(u,v), on bouge les éléments du

plus petit ensemble dans la séquence du plus grand ensemble et on met à jour leur pointeur

La complexité en temps de union(u,v), est min(nu, nv) où nu est la taille de l’ensemble contenant u et nv, la taille de l’ensemble contenant v

Page 14: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Kruskal - partition

Algorithme Kruskal(G):Entrée: un graphe avec poids G.Sortie: Un ACM T pour G.Soit P une partition des sommets de G, où chaque sommet est dans un ensemble séparé.Soit Q une liste avec priorités gardant en mémoire les arêtes de G, ordonnéesselon leur poidsSoit T un arbre initialement videTant que Q n’est pas vide faire

(u,v) Q.enleverMin()si P.trouver(u) != P.trouver(v) alors

Ajouter (u,v) à TP.union(u,v)

retourner T

Complexité en temps:O((n+m)log n)

Page 15: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

Exemple Kruskal

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Page 16: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 17: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 18: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 19: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 20: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 21: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 22: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 23: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 24: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 25: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 26: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 27: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal

Page 28: Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK

JFK

BOS

MIA

ORD

LAXDFW

SFO BWI

PVD

8672704

187

1258

849

144740

1391

184

946

1090

1121

2342

1846 621

802

1464

1235

337

Exemple Kruskal