Académique Documents
Professionnel Documents
Culture Documents
Introduction
Beaucoup de situations réelles et pratiques requièrent des graphes
dans laquelle l’orientation des arêtes est importante.
C’est le cas de cartes routières d’une ville où des rues ont un sens
unique de parcours, des réseaux électriques, de flots sur des réseaux
de pipelines.
Il est aussi nécessaire d’orienter les arêtes dans la représentation
abstraite de programmes informatiques où les sommets représentent
les instructions des programmes tandis que les arêtes spécifient leurs
séquences d’exécution.
Les graphes orientés constituent un outil de grande valeur dans l’étude
de machines séquentielles.
La grande majorité des concepts étudiés dans le chapitre sur les
graphes non orientés sont toujours valides pour les graphes orientés.
C’est pourquoi souvent l’orientation des arêtes d’un graphe orienté
n’est pas considérée.
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 2 / 77 / 77
Graphes orientés Introduction
Définition 1
Nous passons d’un graphe non orienté à un graphe orienté en
affectant un sens aux arêtes du graphe non orienté.
Un graphe orienté (ou digraphe) G = (V , E), est défini par l’ensemble
fini V = {v1 , v2 , .., vn } dont les éléments sont appelés sommets
(vertices en anglais) et par l’ensemble fini E = {e1 , e2 , .., em } dont les
éléments sont appelés arcs.
Un arc e de l’ensemble E est défini par une paire ordonnée de
sommets.
Si e = (u, v ), on dit que l’arc e va de l’extrémité initiale u (noeud initial)
à l’extrémité finale v (noeud terminal).
Tout arc dont le noeud initial et le noeud terminal sont identiques est
appelé boucle.
Précision : Le mot digraphe pro vient de la contraction de l’expression
anglaise "directed graph".
Exercice 1
Définition 3
Les graphes isomorphes sont définis de telle sorte qu’ils ont le même
comportement du point de vue des propriétés des graphes. Autrement
dit, si leurs attributs sont effacés, on ne peut pas faire la différence
entre deux graphes isomorphes.
Deux graphes orientés sont dits isomorphes si :
1. Leurs graphes non orientés correspondants sont isomorphes ;
2. La direction de leurs arêtes correspondantes doivent être
conforme.
Définition 5 (Chemins)
Un chemin conduisant du sommet a au sommet b est une suite ayant
alternativement des sommets et des arcs, commençant et se
terminant par un sommet, et telle que chaque arc est encadré à
gauche par son sommet initial et à droite par son sommet final. On ne
peut pas prendre les arcs à rebours (c-à-d dans un sens contraire à
l’orientation de l’arc).
Il est évident qu’une arête ne pourrait apparaitre plus qu’une fois dans
un chemin. Toutefois un sommet peut apparaitre plus qu’une fois
comme dans les graphes non orientés.
Une semi-chaine dans un digraphe est la chaine correspondante dans
le graphe non orienté mais qui n’est pas un chemin.
Par convention, tout chemin comporte au moins un arc.
On appelle distance entre deux sommets d’un digraphe la longueur du
plus petit chemin les reliant.
S’il n’existe pas de chemin entre les sommets x et y, on pose
d(x, y ) = ∞
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 10 / 77 / 77
Graphes orientés Chemins et circuits
Définition 6 (Circuit)
Un circuit est un chemin dont les sommets de départ et de fin sont les
mêmes.
Les notions de chemins et de circuits sont analogues à celles des
chaines et cycles pour les graphes non orientés.
Exercice 2
Accessibilité
Exercice 3
Exercice 4
Digraphes eulériens
Théorème 1
Pour les graphes non orientés, un arbre a été défini comme un graphe
connexe sans circuit. Le concept de base reste le même pour les
graphes orientés.
Un arbre dans ce cas est un digraphe connexe sans circuit c-à-d sans
circuit orienté ni semi-circuit.
Un arbre de n sommets contient n - 1 arcs et possède des propriétés
similaires à ceux avec des arêtes.
Les arbres dans les graphes orientés ont une grande importance dans
beaucoup d’applications comme l’analyse des réseaux électriques, la
théorie des jeux, la théorie des langages, la programmation
informatique, les problèmes de dénombrements etc..
En outre, du fait de l’orientation des arêtes, les arbres dans les
digraphes possèdent des propriétés supplémentaires.
Arbres couvrants
Un arbre est appelé arbre couvrant (aussi appelé arbre maximal et
spanning tree en anglais) d’un graphe connexe G s’il est un sous
graphe de G et s’il contient tous les sommets de G.
Remarques :
I Le terme maximal fait référence au nombre d’arêtes. S un graphe
connexe ne possède pas de circuit, il est son propre arbre
couvrant ;
I Un arbre couvrant est défini seulement pour un graphe connexe
car un arbre est toujours connexe. Dans un graphe disconnecté
avec n sommets, nous ne pouvons pas trouver de sous graphe
avec n sommets ;
I Une collection d’arbres est appelée forêt. Un graphe disconnecté
avec k composantes connexes possède toutefois une forêt
couvrante consistant en k arbres couvrants.
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 21 / 77 / 77
Graphes orientés Arbres et digraphes
Cordes
Algorithme de Kruskal
Poser F := ∅, k := 0
Tant que k < m et |F | < n − 1 faire
Début S
si ek +1 ne forme pas de cycle avec F alors F := F {ek +1 }
k := k + 1
Fin
5 5
2 3
1
2 4
3 1
2
4 5 6
1 3
Arborescence
Théorème 2
Théorème 3
Graphe de comparabilité
1. F := ∅
2. Tant que F 6= E faire
Choisir une arête e dans E − F , donner une orientation à e et
compléter cette orientation pour assurer une orientation transitive de
G.
Si une arête doit être orientée dans les deux sens, STOP :
G n’est pas un graphe de comparabilité.
Sinon, rajouter à F toutes les arêtes nouvellement orientées.
Si F = E alors
STOP : G est un graphe de comparabilité.
Exercice 5
Une compagnie de transport a un ensemble de trajets à effectuer. On
décide de représenter ceci par un graphe : un arc de Ti à Tj indique
que le trajet Tj peut être effectué par le même véhicule que celui qui a
effectué le trajet Ti .
1. De quel type est le graphe obtenu ?
2. Interprétez (dans le graphe non orienté) le problème de la
recherche d’un nombre minimum de véhicules.
Trajet T1 T2 T3 T4
de A B C B
à B C A A
Départ à 6h 10 h 8h 12 h
Durée du trajet A B C
A 1h 3h
B 2h 1h
C 2h 4h
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 32 / 77 / 77
Représentations non graphiques de graphes (structures de
Graphes orientés données)
Introduction
Listes chainées
Les listes chainées constituent la forme la plus simple des structures
de données dynamiques. Tous leurs éléments sont connectés à
travers des pointeurs. Un pointeur peut être vu comme une variable
ayant pour valeur l’adresse d’un autre élément de la liste chainée. Une
liste chainée est une liste de paires, chaque paire étant constituée d’un
élément et d’un pointeur qui pointe vers l’adresse de la prochaine
paire. Chaque paire est représentée par un enregistrement (record)
particulier, sorte de tableau à deux entrées dont les types diffèrent.
Une liste chainée est parcourue en suivant les adresses des pointeurs.
Ce parcours doit être linéaire (linear scan) c-à-d qu’on ne peut pas
avoir un accès direct à un élément de cette liste. Il faut la parcourir
depuis son début dans l’ordre.
Pour détecter la fin d’une liste, une adresse spéciale est disponible,
appelée NIL. Un pointeur NIL est un pointeur qui pointe nulle part.
Une autre possibilité consiste à choisir un enregistrement fictif (dummy
record) pour identifier la fin de la liste chainée.
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 35 / 77 / 77
Représentations non graphiques de graphes (structures de
Graphes orientés données)
Listes d’adjacence
Exercice d’application
Définir les listes d’adjacence du graphe orienté ci-dessous :
Arborescences
Arborescences (définitions)
Le nombre maximal de fils de tout noeud d’un graphe est appelé degré
de ce graphe. Les arborescences de degré 2 sont appelés arbres
binaires avec pour chaque noeud interne un noeud fils gauche et un
noeud fils droit. Tout noeud qui n’a pas de fils est appelé feuille. Tout
noeud qui n’est pas une feuille est un noeud interne. La hauteur d’un
arbre est le niveau maximal de cet arbre (la distance maximale entre le
noeud racine et une feuille).
Exemple d’arborescence
1, si la j eme arête ej est incidente extérieurement au
i eme sommet
si la j eme arête ej est incidente intérieurement au
−1,
aij =
i eme sommet
si la j eme arête ej n’est pas incidente au
0
i eme sommet
Les observations faites sur les propriétés des matrices d’incidence des
graphes non orientés subsistent, avec des changements mineurs, pour
les graphes orientés.
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 44 / 77 / 77
Représentations non graphiques de graphes (structures de
Graphes orientés données)
Théorème 4
Théorème 5
Il faut noter que l’orientation affectée à chaque circuit est tout à fait
arbitraire. Les observations faites sur les propriétés des matrices de
circuits des graphes non orientés subsistent, avec des changements
Semestre 2, Année académique 2018-2019
mineurs,
Ayoub Insa Correapour lesde graphes
(Université Thies) orientés. 47 / 77 / 77
Représentations non graphiques de graphes (structures de
Graphes orientés données)
Théorème 6
Remarque
Introduction
E. W. Dijkstra (1930 - 2002) a proposé en 1959 un algorithme qui
permet de calculer le plus court chemin entre un sommet particulier et
tous les autres.
Résultat : Une arborescence, c’est-à-dire un arbre avec un sommet
particulier appelé racine.
Numéroter les sommets du graphe G = (V , E) de 1 à n.
Supposons que l’on s’intéresse aux chemins partant du sommet 1.
Construire un vecteur λ = (λ(1), λ(2), .., λ(n)) ayant n composantes tel
que λ(j) soit égale à la longueur du plus court chemin allant de 1 au
sommet j.
On initialise ce vecteur à c1j , c’est-à-dire à la première ligne de la
matrice des coûts du graphe, définie comme indiqué ci-dessous :
0,
si i = j
cij = ∞, i 6= j et (i, j) ∈
/E
δ(i, j) i 6= j et (i, j) ∈ E
Semestre 2, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 53 / 77 / 77
Graphes orientés Algorithme de Dijkstra
Introduction (Suite)
Algorithme de Dijkstra
Itérations
Tant que T n’est pas vide faire
Choisir i dans T tel que λ(i) est minimum
Retirer i de T et l’ajouter à S
Pour chaque successeur j de i, avec j dans T, faire
Si λ(j) > λ(i) + δ(i, j) alors
λ(j) = λ(i) + δ(i, j)
p(j) = i
Exemple
4
1 5
10 5
7
15
4
2
3
3
2 3
Initialisations
S = {1}; T = {2, 3, 4, 5} ; λ = (0, 15, ∞, ∞, 4) ; p = (NIL, 1, NIL, NIL, 1).
1 ère itération
i = 5 car λ(5) = min (15, ∞, ∞, 4) = 4
S = {1, 5}; T = {2, 3, 4}.
Les successeurs de 5 dans T sont 3 et 4
λ(3) prend la nouvelle valeur
min (∞, λ(5) + δ(5, 3)) = min(λ; 4 + 7) = 11; p(3) = 5
λ(4) prend la nouvelle valeur min (∞, λ(5) + δ(5, 4)) = 9; p(4) = 5
d’où les nouveaux vecteurs λ = (0, 15, 11, 9, 4) ; p = (NIL, 1, 5, 5, 1).
2 ème itération
i = 4; λ(4) = 9
S = {1, 5, 4}; T = {2, 3}.
Le seul successeur de 4 dans T est 2
λ(2) prend la nouvelle valeur
min (15, λ(4) + δ(4, 2)) = min (15; 9 + 3) = 12; p(2) = 4
d’où les nouveaux vecteurs λ = (0, 12, 11, 9, 4) ; p = (NIL, 4, 5, 5, 1).
3 ème itération
i = 3; λ(3) = 11
S = {1, 5, 4, 3}; T = {2}.
Le seul successeur de 3 dans T est 2
λ(2) garde sa valeur car
min (12, λ(3) + δ(3, 2)) = min (12; 11 + 3) = 12
d’où les vecteurs inchangés λ = (0, 12, 11, 9, 4) ; p = (NIL, 4, 5, 5, 1).
3 ème itération
i = 2; λ(2) = 12
S = {1, 5, 4, 3, 2}; T = {}.
λ = (0, 12, 11, 9, 4) ; p = (NIL, 4, 5, 5, 1).
L’algorithme se termine car T = {}
On peut lire les coûts des chemins les plus courts dans λ et les
chemins eux-mêmes grâce au vecteur p. Par exemple, le chemin
minimal de 1 à 4 est de coût 9, car λ(4) = 9. C’est le chemin 1 - 5 - 4,
car p(4) = 5 et p(5) = 1.
4
1 5
5
7
4
3
3
Théorème
Exemple
Attribuez un rang aux sommets du digraphe ci-dessous en utilisant
l’algorithme de calcul du rang.
Début
- Calcul des dates de début au plus tôt (récurrence en avançant dans
le projet)
δ1 := 0
Pour k := 2 à n faire
δk := max δj + djk | j ∈ P(k )
- Calcul des dates de fin au plus tard (récurrence en reculant dans le
projet)
φn := δn
− 1 à 1 faire
Pour k := n
φk := min φj − dkj | j ∈ S(k )
Fin.
Décyclisation : Remarque
Les graphes acycliques ont une très grande importance dans
beaucoup d’applications. Les circuits orientés représentent souvent
des incohérences (ou anomalies) dans certaines situations. Ils
peuvent par exemple représenter :
1. Des chemins de rétroaction indésirables dans un réseau
électrique ;
2. Une erreur sérieuse dans un graphe de projet d’une méthode de
chemin critique ou PERT. C’est pourquoi par exemple, un circuit
orienté abca, implique que l’activité a doit être complétée avant
l’activité b, et b avant c, et c avant a. Évidemment cette situation
est impossible et rien ne sera réalisé. Une situation semblable
arrive souvent en programmation informatique et est à juste titre
appelée rencontre mortelle. En logique déductive,(où les sommets
représentent des axiomes et les arcs représentent des théorèmes
ou dérivation d’une déclaration à partir d’autres), un circuit orienté
implique un raisonnement circulaire et donc une erreur ;
3.
Ayoub Insa Correa (Université de Thies) 76 / 77
Semestre 2, Année académique 2018-2019
/ 77
Graphes orientés Reseau PERT (Project Evaluation and Review Technique)
Décyclisation
Ainsi, il faut d’abord détecter un cycle (par la méthode des chemins
critiques ou PERT) puis savoir comment briser ces cycles vicieux avec
un effort minimum.
En d’autres mots, trouver un ensemble minimal d’arcs dont la
suppression rendra un graphe orienté acyclique.
Le plus petit ensemble d’arcs dont la suppression rend le graphe
orienté acyclique est appelé ensemble d’arcs à rétroaction minimale
(minimum-feedback arc set) en Génie électrique.
L’action qui consiste à obtenir un tel ensemble minimal d’arcs est
appelée décyclisation minimale d’un graphe orienté.
Pour des graphes de petite taille, on peut procéder à une décyclisation
par inspection mais en général, la décyclisation minimale d’un graphe
orienté est une affaire ardue. Aucune méthode simple n’a été trouvée
jusqu’à présent.