Vous êtes sur la page 1sur 9

USTHB, Dépt. Info., Th. GRA.

, Chapitre 3 2020/2021

Définition d’un arbre


Chapitre 3
Arbre de couverture optimal • Soit G=(X,U) un graphe orienté d’ordre n 2. G
est un arbre si l’une des six (6) propriétés
suivantes est vérifiée :
1. G est connexe et sans cycles.
Présenté par : 2. G est sans cycles et admet n-1 arcs.
H. BENKAOUHA
3. G est connexe et admet n-1 arcs.
Bureau 222, Département Informatique, USTHB
hbenkaouha@usthb.dz 4. G est sans cycle maximal (tout arc
haroun.benkaouha@gmail.com
supplémentaire créé un cycle dans G).
H. BENKAOUHA 1 H. BENKAOUHA 2

Arbre - Exemple
Définition d’un arbre
G1
5. G est connexe minimal (la suppression d’un • Un arbre de : 1
arc quelconque le rend non connexe). – 8 sommets 7

6. Pour toute paire de sommets (x, y  X, xy) Il – 7 arêtes 5


existe dans G une chaîne et une seule joignant – Connexe 6
x à y. – Pas de cycles
• Les 6 caractéristiques (propriétés) ci-dessus – Supprimer 1 arête : déconnexion 3 2

(propres aux arbres) sont équivalentes. – Rajouter 1 arête : cycle


– 1 seule chaîne entre 2 sommets qcq 4 8

H. BENKAOUHA 3 H. BENKAOUHA 4

Codage de Prufer – algorithme de Prufer : Exemple Algorithme de codage


codage
P  vide; G1
Tant que |X|>2 • Sommets de degré 1 : 1
Faire –478 7
Choisir x dans X tel que dG(x)=1 et – Min : 4 5
x minimal; // feuille de numéro minimal
– Voisin de 4 : 3 6
P  P . Adjacent(x);
// Rajouter le sommet adjacent à x dans la liste ordonnée – Rajouter 3 dans P
P 3 2
–P:3
X  X - {x}; // Supprimer le sommet x
E  E - {x, Adjacent(x)}; // Supprimer 4
l’arête incidente à x 8
Fait
H. BENKAOUHA 5 H. BENKAOUHA 6

Enseignant : H. BENKAOUHA 1
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Prufer : Exemple Algorithme de codage Prufer : Exemple Algorithme de codage


G1 G1
• Supprimer 1 • Supprimer 1
– le sommet 4 7 – le sommet 3 7
– l‘arête incidente à 4 5 – l‘arête incidente à 3 5
• Sommets de degré 1 : 6 • Sommets de degré 1 : 6
–378 –578
3 2 2
– Min : 3 – Min : 5
– Voisin de 3 : 5 – Voisin de 5 : 1
8 8
– Rajouter 5 dans P – Rajouter 1 dans P
–P:35 –P:351
H. BENKAOUHA 7 H. BENKAOUHA 8

Prufer : Exemple Algorithme de codage Prufer : Exemple Algorithme de codage


G1 G1
• Supprimer 1 • Supprimer 1
– le sommet 5 7 – le sommet 7
– l‘arête incidente à 5 – l‘arête incidente à 7
• Sommets de degré 1 : 6 • Sommets de degré 1 : 6
–78 –18
2 2
– Min : 7 – Min : 1
– Voisin de 7 : 1 – Voisin de 1 : 6
8 8
– Rajouter 1 dans P – Rajouter 6 dans P
–P:3511 –P:35116
H. BENKAOUHA 9 H. BENKAOUHA 10

Prufer : Exemple Algorithme de codage Prufer : Exemple Algorithme de codage

• Supprimer • Supprimer
– le sommet 1 – le sommet 6
– l‘arête incidente à 1 G1 – l‘arête incidente à 6
• Sommets de degré 1 : 6 • Il ne reste que 2 sommets
G1
–68 – Fin du codage
2 2
– Min : 6 – P= 3 5 1 1 6 2
– Voisin de 6 : 2
8 8
– Rajouter 2 dans P
–P:351162
H. BENKAOUHA 11 H. BENKAOUHA 12

Enseignant : H. BENKAOUHA 2
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Prufer : Exemple Algorithme de


Codage de Prufer – algorithme de
décodage
décodage
n  longueur(P)+ 2; X  ; E  ; G1
Pour i de 1 à n • P= 3 5 1 1 6 2 1
X  X  {i}; D[i]  1; • Longueur de P =6 7
Pour chaque valeur j de P
• On prépare un graphe de 5
D[i]  D[i] + 1; 6
Pour chaque valeur j de P 6+2=8 sommets isolés
Chercher k tel que D[k]=1 et k minimal; 1 2 3 4 5 6 7 8 3 2
E  E  {j,k}; 1 1 1 1 1 1 1 1
D[j]  D[j]-1;
4 8
D[k]  0;
Relier les deux sommets ayant D[i]=1;
H. BENKAOUHA 13 H. BENKAOUHA 14

Prufer : Exemple Algorithme de Prufer : Exemple Algorithme de


décodage décodage
G1 G1
• P= 3 5 1 1 6 2 1 • P= 3 5 1 1 6 2 1
7 – Élément de P : 3 7

• Mettre à jour le vecteur D 5 • D[i]=1 et i minimal 5

selon P 6 – i=4 6

1 2 3 4 5 6 7 8
• Créer {3, 4}
3 2 3 2
3 2 2 1 2 2 1 1 1 2 3 4 5 6 7 8
3 2 1 0 2 2 1 1
4 8 4 8

H. BENKAOUHA 15 H. BENKAOUHA 16

Prufer : Exemple Algorithme de Prufer : Exemple Algorithme de


décodage décodage
G1 G1
• P= 3 5 1 1 6 2 1 • P= 3 5 1 1 6 2 1
– Élément de P : 5 7 – Élément de P : 1 7

• D[i]=1 et i minimal 5 • D[i]=1 et i minimal 5


– i=3 6 – i=5 6
• Créer {3, 5} • Créer {1, 5}
3 2 3 2
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
3 2 0 0 1 2 1 1 2 2 0 0 0 2 1 1
4 8 4 8

H. BENKAOUHA 17 H. BENKAOUHA 18

Enseignant : H. BENKAOUHA 3
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Prufer : Exemple Algorithme de Prufer : Exemple Algorithme de


décodage décodage
G1 G1
• P= 3 5 1 1 6 2 1 • P= 3 5 1 1 6 2 1
– Élément de P : 1 7 – Élément de P : 6 7

• D[i]=1 et i minimal 5 • D[i]=1 et i minimal 5


– i=7 6 – i=1 6
• Créer {1, 7} • Créer {1, 6}
3 2 3 2
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
1 2 0 0 0 2 0 1 0 2 0 0 0 1 0 1
4 8 4 8

H. BENKAOUHA 19 H. BENKAOUHA 20

Prufer : Exemple Algorithme de Prufer : Exemple Algorithme de


décodage décodage
G1 G1
• P= 3 5 1 1 6 2 1 • P= 3 5 1 1 6 2 1
– Élément de P : 2 7 1 2 3 4 5 6 7 8 7

• D[i]=1 et i minimal 5 0 1 0 0 0 0 0 1 5
– i=6 6
• Il n‘y a que 2 sommets ayant 6
• Créer {2, 6} D[i]=1 : 2 et 8
3 2 3 2
1 2 3 4 5 6 7 8
• Créer {2, 8}
0 1 0 0 0 0 0 1
4 8 • Fin 4 8

H. BENKAOUHA 21 H. BENKAOUHA 22

Arbre de couverture d’un graphe Arbre de couverture - Exemple


g
G2
• Soit G=(X,U) un graphe orienté d’ordre n 2. 1 c
7
• On appelle arbre dans G un sous-graphe partiel • En rouge, un arbre de a
b
q
de G, H=(Y, V) connexe et sans cycles. couverture de G2 2
o n
• Un arbre est maximal dans G s’il contient le • Cet arbre est maximal d
h
6
m
maximum possible de sommets de G (c'est-à- • Il y a tous les sommets de G
e
3 k 5
dire Y=X si G est connexe).
j p
i
4 8
f l

H. BENKAOUHA 23 H. BENKAOUHA 24

Enseignant : H. BENKAOUHA 4
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Graphe pondéré (valué) Identification du problème


• Poids d’un arc • Soit G=(X,U) un graphe orienté connexe muni
– Soit G=(X,U) un graphe orienté, d’une application poids p.
– On définit p :U une application • La recherche dans G d’un arbre de poids
– associe pour chaque arc uU de G une valeur réelle optimal revient à :
p(u) – trouver un graphe partiel G’=(X,U’) de G qui soit un
– appelée poids de l’arc u. arbre maximal
• Un tel graphe est appelé: – et pour lequel la somme des poids des arcs de G’
– graphe pondéré, graphe valué ou réseau. soit optimale (maximale ou minimale selon la
situation).
– Noté G=(X,U, p)
H. BENKAOUHA 25 H. BENKAOUHA 26

Algorithme de Kruksal Algorithme de Kruksal - Exemple


V = tri_poids_croissant(U,p); 5
H  {V[1]}; i  1 ; j  1; G1
Tant que (j < n-1) 1 10
Faire 4 7
1
i  i+1; u  V[i]; 2
8

Si (H  {u} ne contient pas de cycle) 2 6


5

Alors H  H  {u}; j  j+1; 7


3
// L’arc sélectionné ne doit pas créer de cycle 3 9 5
fSi 3 1
12
Fait
4 8
6 2

H. BENKAOUHA 27 H. BENKAOUHA 28

Algorithme de Kruksal - Exemple Algorithme de Kruksal - Exemple


• Classer les arêtes dans un 5 5
G1 G1
ordre croissant des poids. 1 1
10 10
Arête Poids Arête Poids 4 7 Arête Poids Arête Poids 4 7
1 1
{1,6} 1 {5,7} 5 8 {1,6} 1 {5,7} 5 8
2 2
{5,8} 1 {2,4} 6 5 {5,8} 1 {2,4} 6 5
{2,3} 2 {5,6} 7
2 6 {2,3} 2 {5,6} 7
2 6
7 7
{4,8} 2 {6,7} 8 3 {4,8} 2 {6,7} 8 3
{3,6} 3 {4,6} 9 3 9 5 {3,6} 3 {4,6} 9 3 9 5
{4,5} 3 {1,7} 10 3 1 {4,5} 3 {1,7} 10 3 1
12 12
{1,2} 4 {3,4} 12 {1,2} 4 {3,4} 12
4 8 4 8
{2,7} 5 6 2 {2,7} 5 6 2
H. BENKAOUHA 29 H. BENKAOUHA 30

Enseignant : H. BENKAOUHA 5
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Algorithme de Kruksal - Exemple Algorithme de Kruksal - Exemple


5 5
G1 G1
1 10 1 10
Arête Poids Arête Poids 4 7 Arête Poids Arête Poids 4 7
1 1
{1,6} 1 {5,7} 5 8 {1,6} 1 {5,7} 5 8
2 2
{5,8} 1 {2,4} 6 5 {5,8} 1 {2,4} 6 5
{2,3} 2 {5,6} 7
2 6 {2,3} 2 {5,6} 7
2 6
7 7
{4,8} 2 {6,7} 8 3 {4,8} 2 {6,7} 8 3
{3,6} 3 {4,6} 9 3 9 5 {3,6} 3 {4,6} 9 3 9 5
{4,5} 3 {1,7} 10 3 1 {4,5} 3 {1,7} 10 3 1
12 12
{1,2} 4 {3,4} 12 {1,2} 4 {3,4} 12
4 8 4 8
{2,7} 5 6 2 {2,7} 5 6 2
H. BENKAOUHA 31 H. BENKAOUHA 32

Algorithme de Kruksal - Exemple Algorithme de Kruksal - Exemple


5 5
G1 G1
1 10 1 10
Arête Poids Arête Poids 4 7 Arête Poids Arête Poids 4 7
1 1
{1,6} 1 {5,7} 5 8 {1,6} 1 {5,7} 5 8
2 2
{5,8} 1 {2,4} 6 5 {5,8} 1 {2,4} 6 5
{2,3} 2 {5,6} 7
2 6 {2,3} 2 {5,6} 7
2 6
7 7
{4,8} 2 {6,7} 8 3 {4,8} 2 {6,7} 8 3
{3,6} 3 {4,6} 9 3 9 5 {3,6} 3 {4,6} 9 3 9 5
{4,5} 3 {1,7} 10 3 1 {4,5} 3 {1,7} 10 3 1
12 12
{1,2} 4 {3,4} 12 {1,2} 4 {3,4} 12
4 8 4 8
{2,7} 5 6 2 {2,7} 5 6 2
H. BENKAOUHA 33 H. BENKAOUHA 34

Algorithme de Kruksal - Exemple Algorithme de Kruksal - Exemple


5 5
G1 G1
1 10 1 10
Arête Poids Arête Poids 4 7 Arête Poids Arête Poids 4 7
1 1
{1,6} 1 {5,7} 5 8 {1,6} 1 {5,7} 5 8
2 2
{5,8} 1 {2,4} 6 5 {5,8} 1 {2,4} 6 5
{2,3} 2 {5,6} 7
2 6 {2,3} 2 {5,6} 7
2 6
7 7
{4,8} 2 {6,7} 8 3 {4,8} 2 {6,7} 8 3
{3,6} 3 {4,6} 9 3 9 5 {3,6} 3 {4,6} 9 3 9 5
{4,5} 3 {1,7} 10 3 1 {4,5} 3 {1,7} 10 3 1
12 12
{1,2} 4 {3,4} 12 {1,2} 4 {3,4} 12
4 8 4 8
{2,7} 5 6 2 {2,7} 5 6 2
H. BENKAOUHA 35 H. BENKAOUHA 36

Enseignant : H. BENKAOUHA 6
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Algorithme de Kruksal - Exemple Algorithme de Kruksal - Exemple


5 • 7 arêtes sélectionnées pour 5
G1 G1
1
8 sommets : Fin Algo. 1
10 10
Arête Poids Arête Poids 4 7 Arête Poids Arête Poids 4 7
1 1
{1,6} 1 {5,7} 5 8 {1,6} 1 {5,7} 5 8
2 2
{5,8} 1 {2,4} 6 5 {5,8} 1 {2,4} 6 5
{2,3} 2 {5,6} 7
2 6 {2,3} 2 {5,6} 7
2 6
7 7
{4,8} 2 {6,7} 8 3 {4,8} 2 {6,7} 8 3
{3,6} 3 {4,6} 9 3 9 5 {3,6} 3 {4,6} 9 3 9 5
{4,5} 3 {1,7} 10 3 1 {4,5} 3 {1,7} 10 3 1
12 12
{1,2} 4 {3,4} 12 {1,2} 4 {3,4} 12
4 8 4 8
{2,7} 5 6 2 {2,7} 5 6 2
H. BENKAOUHA 37 H. BENKAOUHA 38

Algorithme de Kruksal - Exemple Algorithme de Prim


• En rouge, l’arbre de couverture de 5 G  R ; H  ;
G1
poids minimal : Poids = 19. Tant que |X|2
1 10
4 7 Faire
Arête Poids Arête Poids
{1,6} 1 {5,7} 5
1
8 Choisir x dans X;
2
{5,8} 1 {2,4} 6 5 u  u(x);
{2,3} 2 {5,6} 7
2 6
// choisir l’arc u de poids min ayant x comme
7
{4,8} 2 {6,7} 8 3 extrémité
{3,6} 3 {4,6} 9 3 9 5 H  H  {u};
{4,5} 3 {1,7} 10
{1,2} 4 {3,4} 12
12
3 1
G  Gu ; // Contracter G par rapport à l’arc u
4 8
{2,7} 5 6 2 Fait
H. BENKAOUHA 39 H. BENKAOUHA 40

Algorithme de Prim - Exemple Algorithme de Prim - Exemple


G1 contracté
5 5 5
G1 G1
1 10 1 10 1 10
4 7 4 7 4 7
1 1 1
8 8 8
2 2 2
5 5 5
2 6 2 6 2 6
7 7 7
3 3 3
3 9 5 3 9 5 3 9 5
3 1 3 1 3 1
12 12 12
4 8 4 8 4 8
6 2 6 2 6 2

H. BENKAOUHA 41 H. BENKAOUHA 42

Enseignant : H. BENKAOUHA 7
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Algorithme de Prim - Exemple Algorithme de Prim - Exemple


G1 contracté G1 contracté
5 5 5 5
1 G1 1 G1
1, 6 10 1 10 1, 6 1 10
4 8 7 4 7 4 10 4 7
1 8 1
8 5 8
2 2 2 7 2
5 5 5, 7 5
2 2 6 2 2 6
3 7 7 3 7
3 3
3 9 5 3 9 5 3 9 3 9 5
3 1 3 1 3 1 3 1
12 12 12 12
4 8 4 8 4 8 4 8
6 2 6 2 6 2 6 2

H. BENKAOUHA 43 H. BENKAOUHA 44

Algorithme de Prim - Exemple Algorithme de Prim - Exemple


G1 contracté G1 contracté
5 5 5
1 G1 1 2 3 G1
4
1, 6 1 10 1,2,3,6 1 10
10 4 7 10 4 7
8 1 8 5 1
5 8 5 8
4 2 2
7 7
5, 7 5 5, 7 5
2 6 2 6
3 7 7
3 12 3
2, 3 9 3 9 5 6
9 3 9 5
2 12 3 1 3 1 3 1 3 1
6 12 12
4 8 4 8 4 8 4 8
2 6 2 2 6 2

H. BENKAOUHA 45 H. BENKAOUHA 46

Algorithme de Prim - Exemple Algorithme de Prim - Exemple


G1 contracté G1 contracté
5 5
1 2 3 G1 1 2 3 G1
4 4
1,2,3,6 1 10 1,2,3,6 1 10
10 4 7 4 7
8 5 1 8 1
5 8 8
7 2 10 2
5, 7 5 5
2 6 2 6
7 5 7
12 3 12 7 3
6
9
3
3 9 5 6
9 3 9 5
1
3 1 3 1
12 12
4, 8 4 8 5 4,5,7,8 4 8
6 2 6 2
2 2
H. BENKAOUHA 47 1 3 H. BENKAOUHA 48

Enseignant : H. BENKAOUHA 8
USTHB, Dépt. Info., Th. GRA., Chapitre 3 2020/2021

Algorithme de Prim - Exemple


G1 contracté
5
1 7 8 2 3 G1
4
1,2,3,4, 9 1 10
5,6,7,8 6 4 7
5 12 1
8
1 3 2 10 5 2
5
• Il n’y a qu’un seul sommet 2 6
7
Dans le graphe contracté 3
3 9 5
• Fin de l’algorithme 3 1
12
• Arbre (en rouge) de poids 19 4 8
6 2

H. BENKAOUHA 49

Enseignant : H. BENKAOUHA 9

Vous aimerez peut-être aussi