5 \subsection{Digraphe (graphe orienté), sommet, arc}
7 En donnant un sens aux arêtes d'un graphe, on obtient un digraphe, ou graphe orienté.
11 De l'anglais directed graph.
14 \begin{Def}[Digraphe, sommets, arcs]
15 Un \emph{digraphe}\index{digraphe}\index{graphe!orienté} fini $G = (V, E)$ est défini par :
17 \item l'ensemble fini $V = \{v_1, v_2, ..., v_n\}$ ($|V| = n$) dont les éléments sont appelés \emph{sommets} \index{sommets},
18 \item et par l'ensemble fini $E = \{e_1, e_2, ..., e_m\}$ ($|E| = m$) dont les éléments sont appelés \index{arcs}\emph{arcs}.
20 Un arc $e$ de l'ensemble $E$ est défini par une paire ordonnée de sommets. Lorsque $e = (u, v)$, on dira que l'arc $e$ va de $u$ à $v$. On dit aussi que $u$ est l'extrémité initiale et $v$ l'extrémité finale de $e$.
25 Un exemple de digraphe :\\
27 \includegraphics[scale=0.7]{graphes/digraphe111}
34 Construire un graphe orienté dont les sommets sont les entiers compris entre 1 et 12 et dont les arcs représentent la relation \og être diviseur de \fg{}.
38 Quel est le nombre maximal d'arêtes dans un graphe orienté d'ordre $n$ qui ne possède pas d'arêtes parallèles ?
43 Le graphe d'une relation binaire peut être assimilé à un graphe orienté.
47 Les graphes orientés peuvent être représentés graphiquement, comme dans le cas non-orienté. On place alors des flèches au lieu de simples segments.
50 \subsection{Degré d'un sommet d'un digraphe}
52 Soit $v$ un sommet d'un graphe orienté.
54 \begin{Def}[Degré extérieur]
55 Le \emph{degré extérieur}\index{degré!extérieur} du sommet $v$ est le nombre d'arcs ayant $v$ comme extrémité initiale.
62 \begin{Def}[Degré intérieur]
63 Le \emph{degré intérieur}\index{degré!intérieur} du sommet $v$ est le nombre d'arcs ayant $v$ comme extrémité finale.
72 On a : $$d(v) = d_+(v) + d_-(v)$$.
76 Soit $G$ un graphe orienté quelconque. Démontrez que la somme des degrés entrants de tous les sommets est égal à la somme de tous les degrés sortants.
79 \noindent\textit{\underline{Réponse :}} Chaque arête compte une fois dans la somme des degrés entrants et une fois dans la somme des degrés sortants...
82 % Trouvez les degrés extérieurs et intérieurs de chacun des sommets du graphe ci-dessous :
84 % \includegraphics[scale=0.7]{digraphe1.eps}
91 Soit X un ensemble de lapins, et G un graphe orienté ayant X pour ensemble de sommets. On dit que G est un «graphe de parenté» si les arcs de G codent la relation «être l'enfant de...». Quelles conditions doit nécessairement vérifier G pour pouvoir être un graphe de parenté?
94 \subsection{Chemins et circuits}
96 \subsubsection{Chemin}
98 Un \emph{chemin}\index{chemin} conduisant du sommet $a$ au sommet $b$ est une suite de la forme ($v_0,e_1,v_1,e_2,v_2, ..., e_k,v_k$) où les $v_i$ sont des sommets ($v_0=a$ et $v_k=b$) et les $e_i$ sont des arcs tels que $e_i$ va de $v_{i-1}$ à $v_i$.
102 Sur le digraphe ci-dessous, on peut voir par exemple le chemin ($v_3,e_3,v_4,e_4,v_5$).
105 \includegraphics[scale=0.7]{graphes/Digraphe1.eps}
110 Par convention, tout chemin comporte au moins un arc.
113 \subsubsection{Distance}
115 \begin{Def}[Distance]
116 On appelle \emph{distance}\index{distance} entre deux sommets d'un digraphe la longueur du plus petit chemin les reliant.
118 S'il n'existe pas de chemin entre les sommets $x$ et $y$, on pose $d(x,y) = +\infty$.
122 Par exemple, sur le digraphe ci-dessus (exemple précédent), $d(v_1,v_5)=2$, $d(v_1,v_6)=1$, $d(v_6,v_1)=+\infty$.
128 Donnez un algorithme permettant de calculer la distance entre deux sommets x et y d'un digraphe connexe.
132 \subsubsection{Circuit}
134 Un \emph{circuit}\index{circuit} est un chemin avec $u_0=u_k$.
138 Le digraphe ci-dessus ne contient pas de circuit.
142 Les notions de longueur, de chemins et de circuits sont analogues à celles des chaînes et des cycles pour le cas non orienté.
146 \section{Digraphe fortement connexe}
148 \subsection{Définitions}
150 \subsubsection{Connexité forte}
152 \begin{Def}[Digraphe fortement connexe]
153 Un digraphe est \emph{fortement connexe}\index{digraphe!fortement connexe}, si toute paire ordonnée ($a$, $b$) de sommets distincts du graphe est reliée par au moins un chemin.
159 En d'autres termes, tout sommet est atteignable depuis tous les autres sommets par au moins un chemin.
164 \subsubsection{Composantes connexes}
166 \begin{Def}[Composante fortement connexe]
167 On appelle \emph{composante fortement connexe}\index{composante fortement connexe} tout sous-graphe induit maximal fortement connexe (maximal signifie qu'il n'y a pas de sous-graphe induit connexe plus grand contenant les sommets de la composante).
171 Les graphes ci-dessous sont-il fortement connexes? Si non, donnez leurs composantes fortement connexes.
173 \includegraphics[scale=0.7]{graphes/digraphe2.eps}
174 \includegraphics[scale=0.7]{graphes/digraphe3.eps}
180 Proposez un algorithme qui détermine si un graphe est fortement connexe ou non.
182 \textit{Indication :} utilisez un système de marquage des sommets.
185 \subsection{Circuits eulériens}
189 Dans le cas des graphes orientés, il y a équivalence entre :
191 \item posséder un circuit eulérien,
192 \item être fortement connexe, tel que $d_+(s) = d_-(s)$ pour tout sommet $s$.
196 \section{Matrice et listes d'adjacences}
199 \subsection{Matrices d'incidence}
201 \begin{Def}[Matrice d'incidence entrante et sortante]
202 On suppose que les arêtes et les sommets ont été numérotés.
204 On appelle \emph{matrice d'incidence sortante $J^+$}\index{matrice d'incidence!sortante} la matrice dont l'élément $J^+(s,\varepsilon)$ vaut
206 \item 1 si le sommet $s$ est le début de l'arête ${\varepsilon}$,
210 On appelle de même \emph{matrice d'incidence entrante $J^-$}\index{matrice d'incidence!entrante} la matrice dont l'élément $(s,\varepsilon )$ vaut :
212 \item 1 si le sommet $s$ est la fin de l'arête $\varepsilon$,
219 On suppose à nouveau que les arêtes et les sommets du graphe orienté considéré ont été numérotées, et on appelle alors \emph{matrice d'incidence J} de ce graphe la matrice dont l'élément $(s,\varepsilon)$ vaut :
221 \item 2 si $s$ est une extrémité de $\varepsilon$, quand $\varepsilon$ est une boucle,
222 \item 1 si $s$ est une extrémité de $\varepsilon$, quand $\varepsilon$ n'est pas une boucle,
228 $J$ est la matrice d'incidence du graphe non orienté sous-jacent, obtenu en remplaçant les arcs (flèches) par des arêtes.
233 Reprendre les graphes orientés dessinés dans ce chapitre, et trouver à chaque fois $J^+$, $J^-$ et $J$.
236 \subsubsection{Résultats}
238 On peut relier $d^+(s)$ (resp. $d^-(s)$) au nombre de 1 apparaissant dans $J^+$ (resp. $J^-$), comme suit.
241 Soient $(s_1, \hdots, s_n)$ les sommets d'un graphe orienté. Alors
243 \item $\left( \begin{array}{c}
247 \end{array} \right) = J^+ \left( \begin{array}{c}
252 $ et $\left( \begin{array}{c}
256 \end{array} \right) = J^- \left( \begin{array}{c}
262 \item $J^{+}J^{-t} = \left( \begin{array}{ccc} d^+(s_1) & & 0 \\ & \ddots & \\ 0 & & d^+(s_n) \end{array}
264 \item $J^{-}J^{+t} = \left( \begin{array}{ccc} d^-(s_1) & & 0 \\ & \ddots & \\ 0 & & d^-(s_n) \end{array}
271 Vérifier ces résultats avec les matrices d'incidences calculées dans l'exercice précédent.
275 \subsection{Matrice d'adjacence}
277 \subsubsection{Définition}
278 \begin{Def}[Matrice d'adjacence]
279 On peut représenter un digraphe par une \emph{matrice d'adjacence}\index{matrice!d'adjacence} :
281 \item Les lignes et les colonnes représentent les sommets du graphe.
282 \item Un 1 à la position ($i$,$j$) signifie qu'un arc part de $i$ pour rejoindre $j$.
289 \subsubsection{Exemple}
291 Voici un digraphe et sa matrice d'adjacence :
294 \includegraphics[scale=0.7]{graphes/digraphe123.eps}
297 $$M = \left(\begin{array}{cccccc}
298 0 & 1 & 0 & 1 & 0 & 1 \\
299 0 & 0 & 0 & 1 & 1 & 0 \\
300 0 & 0 & 0 & 1 & 0 & 0 \\
301 0 & 0 & 0 & 0 & 1 & 0 \\
302 0 & 0 & 0 & 0 & 0 & 0 \\
303 0 & 1 & 0 & 0 & 0 & 0 \\
310 Décrivez le digraphe G ci-contre par une matrice d'adjacences.
312 \includegraphics[scale=0.7]{graphes/digraphe4.eps}
318 Se donner un graphe orienté revient à se donner sa matrice d'adjacence.
321 \subsubsection{Propriétés}
324 La matrice d'adjacence à plusieurs caractéristiques :
326 \item Elle est carrée : il y a autant de lignes que de colonnes.
327 \item Il n'y a que des zéros sur la diagonale. Un 1 sur la diagonale indiquerait une boucle.
328 \item Contrairement au cas non orienté, elle n'est pas symétrique.
334 \begin{Th}[Nombre d'arcs de longueur k]
335 $A^k(s,t)$, élément à la position $(s,t)$ de la puissance k\textsuperscript{ième} de A, est aussi le nombre d'arcs de longueur $k$ qui mènent de $s$ à $t$.
340 Soient $(s_1, \hdots, s_n)$ les sommets d'un graphe orienté. Alors
341 $$\left( \begin{array}{c} d^+(s_1)\\ \vdots \\ d^+(s_n) \end{array} \right) = A \left(\begin{array}{c}
345 \end{array} \right) \textrm{ et } \left( \begin{array}{c} d^-(s_1)\\ \vdots \\ d^-(s_n) \end{array} \right) = A^t \left( \begin{array}{c}
358 Vérifier les propriétés ci-dessus sur la matrice d'adjacence calculée dans l'exercice précédent. On déterminera les chemins de longueur 2.
363 \begin{Th}[Lien entre les matrices d'adjacence]
364 Soit A la matrice d'adjacence d'un graphe orienté, et B la matrice d'adjacence du graphe non orienté qui lui est associé. Alors
365 $$\boxed{B = A+A^t}$$
370 Vérifier la dernière propriété sur le digraphe ci-dessous
372 \includegraphics[scale=0.7]{graphes/digraphe4.eps}
376 \subsection{Lien entre matrices d'adjacences et d'incidences}
379 Les remarques précedentes permettent de conclure que se donner ($J^+,J^-$) ou $A$, \og c'est pareil \fg{}. Plus précisément, on a
380 $$\boxed{J^{+}J^{-t} = A}$$
385 On pose $$A=\left( \begin{array}{cccc} 0 & 1 & 0 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & 1 & 0 \\ \end{array}\right)$$
387 \item Dessinez le graphe orienté ayant $A$ pour matrice d'adjacence.
388 \item Déterminez ses matrices d'incidences.
389 \item Vérifiez, sur cet exemple, les formules précédentes.
395 A partir du graphe orienté $G$, on fabrique un graphe orienté $H$ en retournant le sens de toutes les flèches.
397 \item Comment sont liées les matrices d'incidence de $G$ et de $H$ ?
398 \item Comment sont liées leurs matrices d'adjacence ?
402 \noindent\textit{\underline{Réponse :}} La matrice $J^+$ de $G$ est la matrice $J^-$ de $H$, et réciproquement. Leurs matrices d'adjacence sont transposées l'une de l'autre.
407 Soient $s_1, s_2, \hdots, s_n$ les sommets d'un graphe orienté. Alors
408 $$\left( \begin{array}{c} d(s_1) \\ \vdots \\ d(s_n) \end{array} \right) = J \left( \begin{array}{c}
412 \end{array} \right)$$
415 \begin{Th}[relation entre $J, J^+$ et $J^-$]
416 On note $J^+$ et $J^-$ les matrices d'incidences d'un graphe orienté, et J la matrice d'incidence du graphe non orienté qui lui est associé. Alors
417 $$\boxed{J = J^+ + J^-}$$
422 Vérifier ces propriété sur le digraphe ci-dessous
424 \includegraphics[scale=0.7]{graphes/digraphe4.eps}
429 \subsection{Listes d'adjacence}
432 On peut encore représenter un digraphe à l'aide de listes d'adjacences : en donnant pour chacun de ses sommets la liste des sommets qu'on peut atteindre directement en suivant un arc (dans le sens de la flèche).
436 Voici les listes d'adjacences du digraphe G:
438 \includegraphics[scale=0.7]{graphes/digraphe11.eps}
452 Décrivez le digraphe $G$ de l'exercice précédent par des listes d'adjacences.
457 \section{Digraphes sans circuits}
459 \subsection{Théorème}
462 Le digraphe $G = (V, E)$ est sans circuit si et seulement si on peut attribuer un nombre $r(v)$, appelé le \emph{rang}\index{rand!d'un sommet} de $v$, à chaque sommet $v$ de manière que pour tout arc $(u, v)$ de $G$ on ait $r(u) < r(v)$.
467 Si $G$ comporte un circuit $C$, il n'est pas possible de trouver de tels nombres $r(i)$ car, autrement, considérant $r(j) = max \{r(i) | i \in C\}$ et l'arc $(j, k) \in C$ on aurait $r(j) \leqslant r(k)$ en contradiction avec la définition de $r( )$.
470 Réciproquement, si $G$ n'a pas de circuits, il existe au moins un sommet sans prédécesseurs dans $G$ (sans cela, en remontant successivement d'un sommet à un prédécesseur, on finirait par fermer un circuit). Ainsi, on peut attribuer séquentiellement des valeurs $r( )$ aux sommets du graphe à l'aide de l'algorithme qui suit, ce qui conclura la démonstration.
475 \subsection{Algorithme de calcul du rang}
477 L'algorithme suivant permet de calculer $r(v)$ pour tout sommet v du digraphe. Il permet donc de savoir si un digraphe possède ou non un circuit.
482 \item X est l'ensemble des sommets du digraphe.
483 \item R est l’ensemble des sommets de X sans prédécesseurs dans X.
486 Tant que X n’est pas vide, faire
488 \item r(v) := r pour tout sommet v de R,
489 \item Enlever de X les sommets contenus dans R,
490 \item Recalculer R comme ci-dessus,
494 \subsection{Exercice}
497 Attribuez un rang aux sommets du digraphe ci-dessous en utilisant l'algorithme de calcul du rang :
499 \includegraphics[scale=0.7]{graphes/rang.eps}
509 \centerline{\x{Fin du Chapitre}}