Arbres Recouvrements
Arbres Recouvrements
Arbres Recouvrements
Arbres recouvrants
Algorithmes
de Prim O(n2)
(adapté aux matrices d’adjacence)
de Kruskal O(a log a)
(adapté aux listes de successeurs
et graphes contenant peu d’arêtes)
601
UMLV
Graphes non orientés
G=(S, A)
S sommets card S = n
A arêtes card A = a
A = {{s, t}, …} s ≠ t,… (pas de boucle)
a b
chemin : ({a,b}, {b,c}, {c,d}, {d,b}, {b,a})
chemin simple : ({a,b}, {b,c}, {c,d})
cycle simple : ({a,b}, {b,d}, {d,c}, {c,a})
c d
602
UMLV
Sous-graphe
a b
Graphe non orienté G = (S, A)
c d b
Sous-graphe
G' ⊆ G : G' graphe (S', A')
avec S' ⊆ S et A' ⊆ A
c d
a b
Sous-graphe recouvrant
si S' = S
c d
a b
Arbre
graphe connexe sans cycle (simple)
Arbre recouvrant pour G
sous-graphe recouvrant qui est un arbre c d
603
UMLV
Représentations
Matrice d'adjacence a b c d
a b
(symétrique) a 0 1 1 0
b 1 0 1 1
c 1 1 0 1
d 0 1 1 0 c d
Listes de successeurs
(redondantes)
a b c
b a c d
c a b d
d b c
604
UMLV
Problème ARCM
6 b 4 b
1 c 1 c
f 5 5 f 5
a a
3 2 3 2
5 3 3
e d e d
6
605
UMLV
Arbre recouvrant
Propriétés
T possède n-1 arêtes : card B = n-1
si {p, q} ∈ A-B alors H = (S, B + {u,v}) possède un cycle
b b
c
f c
card S = 6 f
a a
card B = 5
e d e d
606
UMLV
Coupure
Théorème
si {p, q} une arête de coût minimal entre P et Q
il existe un ARCM qui contient {p, q}
Q
6 b 4 b
1 c 1 c
f 5 5 f 5
P a a
3 2 3 2
5 3 3
e d e d
6
607
UMLV
Preuve
Soit {p, q} une arête de coût minimal entre P et Q
p∈ P q∈Q
Soit T = (S, B) un ARCM pour G
si {p, q} ∈ B terminé
sinon
H = (S, B + {p, q}) contient un cycle
ce cycle contient {u, v} ∈ B, u ∈ P, v ∈ V
soit T’ = (S, B - {u, v} + {p, q})
T’ est un arbre recouvrant et
coût (T’) ≤ coût (T) ⇒ coût (T’) = coût (T)
donc {p, q} contenu dans l’ARCM T’
608
UMLV
Algorithmes gloutons
c
1
a 2 b -2 Plus court chemin de a à c ?
2 d
Optimalité pour
- rendeur de monnaie
- codage de Huffman
- algorithme de Dijkstra
- ARCM par algorithmes
de Prim et de Kruskal
609
UMLV
Méthode de Prim (1957)
Exemple
6 b 4 6 b 4 6 b 4
1 c 1 c 1 c
f 5 5 f 5 5 f 5 5
a a a
3 2 3 2 3 2
5 3 5 3 5 3
e d e d e d
6 6 6
610
UMLV
Exemple (suite)
6 b 4 6 b 4 6 b 4
1 c 1 c 1 c
f 5 5 f 5 5 f 5 5
a a a
3 2 3 2 3 2
5 3 5 3 5 3
e d e d e d
6 6 6
b
1 c
ARCM f 5
coût = 14 a
3 2
3
e d
611
UMLV
Algorithme de Prim
612
UMLV
Implémentation
6 b 4 a b c d e f
1 c proche
f 5 a a a a a
5
a
2
3
5 3 coût ∞ 1 5 3 5 5
e d
6
613
UMLV
Une étape
6 b 4 a b c d e f
1 c proche
f 5 a a a a a
5
a
2
3
5 3 coût ∞ 1 5 3 5 5
e d
6
ajout de b et {a, b}
6 b 4
a b c d e f
1 c
f 5 5 proche a b a a a
a
3 2
3
5 coût ∞ ∞ 4 3 5 5
e d
6
Temps O( 1+card A(b) )
614
UMLV
Méthode de Kruskal (1956)
Exemple
6 b 4 6 b 4 6 b 4
1 c 1 c 1 c
f 5 5 f 5 5 f 5 5
a a a
3 2 3 2 3 2
5 3 5 3 5 3
e d e d e d
6 6 6
615
UMLV
Exemple (suite)
6 b 4 6 b 4 6 b 4
1 c 1 c 1 c
f 5 5 f 5 5 f 5 5
a a a
3 2 3 2 3 2
5 3 5 3 5 3
e d e d e d
6 6 6
b
1 c
ARCM f 5
coût = 14 a
3 2
3
e d
616
UMLV
Algorithme de Kruskal
617
UMLV
CLASSE//UNION
CLASSE UNION
Implémentations possibles
1. table simple
2. arbres
3. idem + compression de chemins
Exemple n = 7
soit 1 ≡ 2 ; {1, 2} {3} {4} {5} {6} {7}
soit 5 ≡ 6 ; {1, 2} {3} {4} {5, 6} {7}
soit 3 ≡ 4 ; {1, 2} {3, 4} {5, 6} {7}
soit 1 ≡ 4 ; {1, 2, 3, 4} {5, 6} {7}
est-ce que 2 ≡ 3 ? oui car 2 et 3 dans la même classe
618
UMLV
Par table simple
1 2 3 4 5 6 7
CLASSE 1 1 3 3 5 5 7 représente {1,2} {3,4} {5,6} {7}
1 2 3 4 5 6 7
CLASSE 1 1 1 1 5 5 7 représente {1,2,3,4} {5,6} {7}
619
UMLV
Par arbres
partition {1,2} {3,4} {5,6} {7}
CLASSE,TAILLE 1,2 3,2 5,2 7,1
arbres 1 3 5 7
1 2 3 4 5 6 7
2 4 6 P - 1 - 3 - 5 -
CLASSE(i ){
k ← i; Temps
tant que P[k] défini faire k ← P[k] ; CLASSE : O(n)
retour ( CLASSE[k] ) ; UNION : constant
}
partition {1,2,3,4} {5,6} {7}
CLASSE,TAILLE 1,4 5,2 7,1
arbres 1 5 7
1 2 3 4 5 6 7
2 3 6 P - 1 1 3 - 5 -
4
620
UMLV
Union des arbres
1
Éviter des arbres filiformes pour réduire
le temps de calcul de CLASSE(i ) 2
Temps
CLASSE : O(logn)
UNION : constant petite classe
grosse classe
Preuve
niveau( i ) augmente de 1 quand
union de P et Q, card P ≤ card Q et i ∈ P
i.e., quand la taille de la classe de i double au moins
Ceci ne peut arriver que log2n fois au plus
621
UMLV
Compression de chemins
1 1
2 3 2 3 5 7
4 5
4 6 8 9 0
6 7 8 après calcul
de CLASSE(7)
9 0
Propriétés
y = 0 A(x, 0) = x+2 x≥2
623
UMLV
2
2
y=3 A(x,3) = 2 « tour de 2 en x exemplaires »
si n raisonnable, α(n) ≤ 4
624