Vous êtes sur la page 1sur 82

Graphes – introduction et notions de base

Définition et vocabulaire

Cycle ingénieur
UV FUNS
Benjamin Allaert
Qu’est-ce qu’un graphe ?

sommet

Un ensemble de sommets
Un ensemble d’arêtes

arête

Zéro ou une arête entre chaque paire de sommets

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment dessiner un graphe

Sommets : A, B, C, D
Arêtes : AD, BD, BC, CD

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment dessiner un graphe

Sommets : A, B, C, D
Arêtes : AD, BD, BC, CD

C’est toujours le même graphe !

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment dessiner un graphe

Sommets : A, B, C, D
Arêtes : AD, BD, BC, CD

C’est toujours le même graphe !

Cycle ingénieur
UV FUNS
Benjamin Allaert
A quoi sert un graphe ?

Représenter des relations entre des éléments

Pierre
Réseau social Paul

Vincent
Lili

Louis
Franck

Léa Zoé

Jacques

Cycle ingénieur
UV FUNS
Benjamin Allaert
A quoi sert un graphe ?

Représenter des relations entre des éléments

Oslo
NY

Bruxelles
Transport Londres

Madrid
Tokyo

Rio Lisbonne

Paris

Cycle ingénieur
UV FUNS
Benjamin Allaert
A quoi sert un graphe ?

Représenter des relations entre des éléments

M3
M1 Problème de connexion

M8
M4

M7
M2
Réseau informatique

M5 M9

M6

Cycle ingénieur
UV FUNS
Benjamin Allaert
Où trouve-t-on les graphes dans la vie ?

 Réseaux
 Sociaux
 Routiers, aériens
 Distribution de biens
 Energie

Mathématique

 Informatique
 Relation entre les données
 Routage dans les réseaux

…

Cycle ingénieur
UV FUNS
Benjamin Allaert
Où trouve-t-on les graphes dans la vie ?

 Réseaux
 Sociaux
 Routiers, aériens
 Distribution de biens
 Energie

Mathématique

 Informatique
 Relation entre les données
 Routage dans les réseaux

…
Beaucoup de problèmes
Non encore résolus !

Cycle ingénieur
UV FUNS
Benjamin Allaert
Les types de graphe Règle : Zéro ou une arête entre chaque sommets

Le graphe complet

L’ensemble des sommets


sont reliés entre eux

Cycle ingénieur
UV FUNS
Benjamin Allaert
Les types de graphe Règle : Zéro ou une arête entre chaque sommets

Le graphe complet Le graphe non connexe

L’ensemble des sommets


sont reliés entre eux

Cycle ingénieur
UV FUNS
Benjamin Allaert
Les types de graphe Règle : Zéro ou une arête entre chaque sommets

Le graphe complet Le graphe non connexe Le graphe vide

L’ensemble des sommets Apporte l’information qu’il


sont reliés entre eux n’existe pas de relation entre
les sommets
Cycle ingénieur
UV FUNS
Benjamin Allaert
Notions Voisines, Degrés

U et V sont voisins

A et B ne sont pas voisins

Deg(r) = 3
r à trois voisins

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notions Voisines, Degrés

Voisins de A : D et C D à trois voisins


U et V sont voisins Deg(D) = 3

A et B ne sont pas voisins

E à un seul voisin
Deg(r) = 3 Deg(E) = 1
r à trois voisins
E et F ne sont pas voisins

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de chemin

A
B

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de chemin

Longueur = 4

A
B

Longueur d’un chemin = son nombre d’arêtes

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de chemin

Longueur = 4

A
B

Longueur = 4

Longueur d’un chemin = son nombre d’arêtes

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de chemin

Longueur = 4

A
Longueur = 2 B

Longueur = 4

Longueur d’un chemin = son nombre d’arêtes

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de cycle

Chemin dont les deux extrémités sont reliées

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de cycle

Longueur = 3

Chemin dont les deux extrémités sont reliées

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de cycle

Longueur = 8

Longueur = 3

Chemin dont les deux extrémités sont reliées

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de connectivité

Graphe complet
Graphe connexe

Connexe = Pour tout U et V, il existe un chemin entre U et V

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de connectivité

Graphe complet Graphe pas complet


Graphe connexe Graphe connexe

Connexe = Pour tout U et V, il existe un chemin entre U et V

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de connectivité

Graphe complet Graphe pas complet Graphe pas connexe


Graphe connexe Graphe connexe 2 composantes connexes

Connexe = Pour tout U et V, il existe un chemin entre U et V

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion d’orientation

Graphe non orienté


Connexion U et V (double sens UV et VU)

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion d’orientation

Graphe non orienté Graphe orienté


Connexion U et V (double sens UV et VU) Connexion U et V uniquement dans le sens de la flèche

Cycle ingénieur
UV FUNS
Benjamin Allaert
Notion de pondération

Les arêtes peuvent être caractérisées par des poids 2


Ces poids peuvent représenter: 63

 Une distance (nombre de kilomètres entre 2 villes) 6 4


12 100
 Un pourcentage (niveau d’affinité entre 2 personnes) 1

 Un coût (prix du transport entre 2 destinations)


23

7
0

11

Cycle ingénieur
UV FUNS
Benjamin Allaert
Les arbres
Une classe remarquable des graphes

Cycle ingénieur
UV FUNS
Benjamin Allaert
Définition d’un arbre

T=(V,E) un graphe à n sommets et m arêtes


T est un arbre

T est connexe, sans cycle

T est connexe et m=n-1

T est sans cycle et m=n-1

T est connexe minimal

T est sans cycle maximal

Pour tout u et v
T contient un unique chemin entre u et v

Cycle ingénieur
UV FUNS
Benjamin Allaert
Définition d’un arbre

Pas connexe
cycle

C’est un Arbre Ce n’est pas un Arbre Ce n’est pas un Arbre

Cycle ingénieur
UV FUNS
Benjamin Allaert
Les types d’arbres

Arbre = Graphe connexe et sans cycle

Structure: Arbre binaire Structure: Etoile Structure: Chemin

Cycle ingénieur
UV FUNS
Benjamin Allaert
Les arbres couvrants

Graphes connexe  contient un Arbre couvrant


Un Arbre est couvrant si c’est un Arbre qui passe par tout les sommets du Graphe

Graphe G connexe Un Arbre couvrant du Graphe G

Cycle ingénieur
UV FUNS
Benjamin Allaert
Arbre couvrant en informatique

Objectif: envoyer un message à un ou à l’ensemble des


utilisateurs le plus rapidement possible en évitant les boucles.

Les boucles sont gênantes dans un réseau informatique parce


que les informations peuvent emprunter la boucle et tourner
plusieurs fois avant d'atteindre leur destination, ou même
tourner indéfiniment au sein de la boucle, sans jamais
atteindre leur destination. Dans le cas extrême de la tempête
de diffusion, le réseau devient inutilisable.

Dans le cas d’un réseau informatique, les nœuds


correspondent aux composants physiques: ordinateurs,
switch, routeurs. Et les poids sur les arêtes correspondent aux
temps de transmission des données entre deux composants.

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment construire un Arbre couvrant ?

G=(V,E) un Graphe pondéré


G est connexe

G contient un Arbre couvrant

 Identifier l’arbre couvrant de poids minimal


Passer par tout les sommets en minimisant les déplacements

 Algorithme de Prim
 Algorithme de Kruskal

Construire un arbre couvrant respectant les distances pondérées à partir d’un sommet
Trouver le plus court chemin entre deux sommets

 Algorithme de Dijkstra

Cycle ingénieur
UV FUNS
Benjamin Allaert
Arbre couvrant de poids minimal
Algorithme de Kruskal

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal

Les données du problème Un Graphe G connexe et pondéré

Poids de l’arête

Un arbre couvrant

Poids de l’arbre couvrant : 9+10+3+7 = 29

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal

Les données du problème Un Graphe G connexe et pondéré

Poids de l’arête

Un arbre couvrant

Poids de l’arbre couvrant : 9+10+3+7 = 29

On cherche un arbre couvrant de poids minimal

Comment trouver un tel arbre ?

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1

A, B : 3

B, C : 4

A, C : 4

E, D : 5

A, F : 7

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3

B, C : 4

A, C : 4

E, D : 5

A, F : 7

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3 Oui

B, C : 4

A, C : 4

E, D : 5

A, F : 7

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3 Oui

B, C : 4 Oui

A, C : 4

E, D : 5

A, F : 7

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3 Oui

B, C : 4 Oui

A, C : 4 Non

E, D : 5

A, F : 7

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3 Oui

B, C : 4 Oui

A, C : 4 Non

E, D : 5 Oui

A, F : 7

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3 Oui

B, C : 4 Oui

A, C : 4 Non

E, D : 5 Oui

A, F : 7 Non

C, D : 9

C, E : 9

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui

A, B : 3 Oui

B, C : 4 Oui

A, C : 4 Non

E, D : 5 Oui

A, F : 7 Non

C, D : 9 Oui

C, E : 9

Poids : 3+4+9+1+5 = 22

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Kruskal
Trier les arêtes par poids croissants

F, C : 1 Oui F, C : 1 Oui

A, B : 3 Oui A, B : 3 Oui

B, C : 4 Oui A, C : 4 Oui

A, C : 4 Non B, C : 4 Non

E, D : 5 Oui E, D : 5 Oui

A, F : 7 Non A, F : 7 Non

C, D : 9 Oui C, E : 9 Oui

C, E : 9 C, D : 9

Poids : 3+4+9+1+5 = 22 Poids : 3+4+9+1+5 = 22

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe
Arbre couvrant en passant une seule fois par chaque arête

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Cas du ramassage des ordures

« passer » exactement une fois par chaque arête


et finir sur le sommet de départ

Le sommet de départ n’est pas important


(parcours cyclique)

Deux sens de parcours possibles


(graphe non orienté)

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe
Ne contient pas de parcours eulérien
Contient un parcours eulérien

2-4-4-4-4-4-2

3-2-3-3-3-3-2-2-3
Un graphe connexe admet un parcours eulérien si et seulement si
ses sommets sont tous de degré pair sauf au plus deux

Un graphe connexe admet un circuit eulérien si et seulement si


tous ses sommets sont de degré pair.

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Parcours eulérien d’un graphe

Exemple du dessin sans lever le crayon Contient un parcours eulérien

Cycle ingénieur
UV FUNS
Benjamin Allaert
Plus court chemin entre deux sommets
Algorithme de Dijkstra

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

Trouver le chemin le Longueur = 24 Longueur = 13 Longueur = 6


plus court entre les
sommets a et b

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

0
18 3
inf
inf
8
4 10 2

inf inf
1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

0 0
18 3 18 3
18
inf 3
inf
8 8
4 10 2 4 10 2

inf inf
1 inf 1 inf

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

0 0
0
18 3 18 3 18 3
18 18
inf 3 3
inf
8 8 8
4 10 2 4 10 2 4 10 2

inf inf 5
1 inf 1 inf 13 1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

0 0
0
18 3 18 3 18 3
18 18
inf 3 3
inf
8 8 8
4 10 2 4 10 2 4 10 2

inf inf 5
1 inf 1 inf 13 1

0
18 3
3
18
8
4 10 2

6 5
1
Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

0 0
0
18 3 18 3 18 3
18 18
inf 3 3
inf
8 8 8
4 10 2 4 10 2 4 10 2

inf inf 5
1 inf 1 inf 13 1

0 0
18 3 18 3
3
18 10 3
8 8
4 10 2 4 10 2

6 5 6 5
1 1
Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

0 0
0
18 3 18 3 18 3
18 18
inf 3 3
inf
8 8 8
4 10 2 4 10 2 4 10 2

inf inf 5
1 inf 1 inf 13 1

0 0 0
18 3 18 3 18 3
3
18 10 3 10 3
8 8 8
4 10 2 4 10 2 4 10 2

6 5 6 5 6 5
1 1 1
Cycle ingénieur
UV FUNS
Benjamin Allaert
Algorithme de Dijkstra

18 3 18 3 3

8 8
4 10 2 4 10 2 4 2

1 1 1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Coloration des Graphes
Comment créer des plannings optimaux

Cycle ingénieur
UV FUNS
Benjamin Allaert
Coloration d’un Graphe

L'attribution des fréquences est l'ensemble des mécanismes


qui permettent de définir comment sont réparties les fréquences
radio entre les différents acteurs. L'enjeu principal est d'éviter les
interférences entre les émetteurs.

L'allocation de registres (au sein d’un compilateur) est une


étape importante de la génération de code. Elle vise à choisir
judicieusement dans quel registre du processeur seront
enregistrées les variables durant l'exécution du programme que
l'on compile. Cela consiste à ramener le problème à
la coloration du graphe d'interférence des variables. Les
sommets de ce graphe sont les variables du programme, et
deux sommets sont reliés par une arête si les variables
correspondantes interfèrent.

Cycle ingénieur
UV FUNS
Benjamin Allaert
Coloration d’un Graphe

Coloration  donner à chaque sommet une couleur

Coloration propre  chaque sommet a une couleur différente de celles de ses voisins

A A A

E D C B E D C B E D C B

Nombre minimal de couleurs = nombre de sommets du plus grand sous-graphe complet ABC = 3  n >= 3
Nombre maximal de couleurs = Degré du sommet le plus élevé + 1 Deg(A) = 3  n <= 3+1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Coloration d’un Graphe

Donnée : G=(V,E) Trouver une coloration propre de G utilisant le nombre minimal de couleurs

Cycle ingénieur
UV FUNS
Benjamin Allaert
Coloration et planning

Une arête = une incompatibilité


Noé
A : Comptabilité

Isa
B : Informatique

Karim
C : Droit

Lola
D : Théorie des graphes
Vero
E : Marketing

Fred

Cycle ingénieur
UV FUNS
Benjamin Allaert
Coloration et planning

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3
B 2
D 2
E 2
G 2
A 1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3
B 2
D 2
E 2
G 2 vert
A 1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3 rouge
B 2
D 2
E 2
G 2 vert
A 1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3 rouge
B 2 rouge
D 2
E 2
G 2 vert
A 1

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3 rouge
B 2 rouge
D 2
E 2
G 2 vert
A 1 rouge

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3 rouge
B 2 rouge
D 2 bleu
E 2
G 2 vert
A 1 rouge

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3 rouge
B 2 rouge
D 2 bleu
E 2 bleu
G 2 vert
A 1 rouge

Cycle ingénieur
UV FUNS
Benjamin Allaert
Comment colorier un graph ?

Coloration automatique d’un graph complexe  Algorithme Glouton


1- Trier les sommets par ordre décroissant en fonction de leur degré
Tant que les sommets ne sont pas tous coloriés
2- Associer la même couleur à l’ensemble des sommets n’ayant pas un voisin de la même couleur
Sommet Degré Couleur
C 4 vert
F 3 rouge
B 2 rouge
D 2 bleu
E 2 bleu
G 2 vert
A 1 rouge
Résultat : n = 3 couleurs chromatiques
Contrôle: 3 (BCD) <= n <= 5 (C:4+1)
Cycle ingénieur
UV FUNS
Benjamin Allaert

Vous aimerez peut-être aussi