Académique Documents
Professionnel Documents
Culture Documents
Une brique de base dans la modélisation est le graphe . Les graphes apparais-
sent naturellement lorsqu’on est confronté à un réseau (réseau de transport,
réseau informatique, réseau d’eau ou de gaz, etc.). Comment parcourir le réseau
de manière optimale? C’est la question du voyageur de commerce par exem-
ple. Comment concevoir un réseau informatique robuste, tout en minimisant
le nombre de connexions? C’est le thème de la conception de réseau (Network
Design).
Mais les graphes apparaissent également de manière plus subtile dans certaines
modélisations de problèmes où la structure du graphe n’est pas physique. Un
exemple classique est le problème de l’affectation optimale d’employés à des
tâches. Les sommets représentent des tâches et des employés, et les arêtes les
appariements possibles entre tâches et employés. Ils apparaissent également
dans des problèmes d’ordonnancement, où les sommets représentent des tâches
et les arcs les relations de précédence.
Graphe non-orienté.
Si e = {u, v}, on dit que u et v sont voisins et qu’ils sont adjacents, ou incidents
avec à e et que e est incidente à u et à v.
On parle de famille d’arêtes pour souligner le fait que les répétitions sont au-
torisées.
La paire associée à une arête peut également être la répétition d’un sommet,
auquel cas on parle de boucle.
Les graphes tirent leur nom du fait qu’on peut les représenter par des dessins.
À chaque sommet de G, on fait correspondre un point distinct du plan et on
relie les points correspondant aux extrémités de chaque arête. Il existe donc
une infinité de représentations d’un graphe. Les arêtes ne sont pas forcément
rectilignes.
Si on peut dessiner un graphe G dans le plan sans qu’aucune arête n’en coupe
une autre (les arêtes ne sont pas forcément rectilignes), on dit que G est planaire.
Le graphe G ci-dessus est planaire.
Un graphe est simple si au plus une arête relie deux sommets et s’il n’y a pas de
boucle sur un sommet. On peut imaginer des graphes avec une arête qui relie
un sommet à lui-même (une boucle), ou plusieurs arêtes reliant les deux mêmes
sommets. On appelera ces graphes des multigraphes.
Un graphe est connexe s’il est possible, à partir de n’importe quel sommet,
de rejoindre tous les autres en suivant les arêtes. Un graphe non connexe se
décompose en composantes connexes. Sur le graphe ci-dessous, les composantes
connexes sont {1, 2, 3, 4} et {5, 6}.
Un graphe est complet si chaque sommet du graphe est relié directement à tous
les autres sommets.
Un graphe est biparti si ses sommets peuvent être divisés en deux ensembles X
et Y, de sorte que toutes les arêtes du graphe relient un sommet dans X à un
sommet dans Y (dans l’exemple ci-dessous, on a X = {1, 3, 5} et Y = {2, 4}, ou
vice versa).
Exercice 1.1. .
On a six wagons à trier. Dans la gare de triage, les wagons entrent dans l’ordre
2, 5, 3, 6, 1, 4 et doivent sortir dans l’ordre croissant. Deux wagons i et j peuvent
être mis sur la même voie si et seulement s’ils entrent dans l’ordre dans lequel
ils doivent sortir.
Exercice 1.2. .
Exercice 1.3. .
Un tournoi d’échecs oppose 6 personnes. Chaque joueur doit affronter tous les
autres.
3. Si chaque joueur ne joue qu’un match par jour, combien de jours faudra-t-il
pour terminer le tournoi?
Dans un graphe simple, on peut aussi définir le degré d’un sommet comme étant
le nombre de ses voisins (la taille de son voisinage). Dans le multigraphe ci-
contre, on a les degrés :
v∈V
Le degré d’un graphe est le degré maximum de tous ses sommets. Dans l’exemple
ci- dessous, le degré du graphe est 4, à cause du sommet v3 .
Un graphe dont tous les sommets ont le même degré est dit régulier. Si le degré
commun est k, alors on dit que le graphe est k-régulier.
Exercice 1.7. Est-il possible de relier 15 ordinateurs de sorte que chaque appareil
soit relié avec exactement trois autres?
Une chaîne dans G, est une suite ayant pour éléments alternativement des som-
mets et des arêtes, commençant et se terminant par un sommet, et telle que
chaque arête est encadrée par ses extrémités.
On ne change pas une chaîne en inversant l’ordre des éléments dans la suite cor-
respondante. Ainsi, les chaînes (v1 , e3 , v3 , e4 , v4 ) et (v4 , e4 , v3 , e3 , v1 ) sont identiques.
On appelle cycle eulérien d’un graphe G un cycle passant une et une seule fois
par chacune des arêtes de G. Un graphe est dit eulérien s’il possède un cycle
eulérien. On appelle chaîne eulérienne d’un graphe G une chaîne passant une
et une seule fois par chacune des arêtes de G. Un graphe ne possédant que
des chaînes eulériennes est semi-eulérien. Plus simplement, on peut dire qu’un
graphe est eulérien (ou semi-eulérien) s’il est possible de dessiner le graphe sans
lever le crayon et sans passer deux fois sur la même arête.
Exercice 1.12. .
Les graphes suivants sont-ils eulériens (ou semi-eulériens)?
Exercice 1.13. Cet exercice est un des problèmes fondateurs de la théorie des
graphes, proposé par le mathématicien suisse Leonhard Euler en 1736. En 1652,
la ville de Königsberg (aujourd’hui Kaliningrad) possède sept ponts enjambant
la Pregel, qui coule de part et d’autre de l’île de Kneiphof.
Au cours d’une promenade, est-il possible de passer sur tous les ponts de la ville
une et une seule fois et revenir au point de départ?
Exercice 1.14. .
Est-il possible de tracer une courbe, sans lever le crayon, qui coupe chacun des
16 segments de la figure suivante exactement une fois?
On peut représenter un graphe simple par une matrice d’adjacences. Une ma-
trice (n × m) est un tableau de n lignes et m colonnes. (i, j) désigne l’intersection
de la ligne i et de la colonne j. Dans une matrice d’adjacences, les lignes et les
colonnes représentent les sommets du graphe. Un « 1 » à la position (i, j) signifie
que le sommet i est adjacent au sommet j.
2. Il n’y a que des zéros sur la diagonale allant du coin supérieur gauche au
coin inférieur droit. Un « 1 » sur la diagonale indiquerait une boucle.
3. Elle est symétrique : mij = mji . On peut dire que la diagonale est un axe
de symétrie.
4. Une fois que l’on fixe l’ordre des sommets, il existe une matrice d’adjacences
unique pour chaque graphe. Celle-ci n’est la matrice d’adjacences d’aucun
autre graphe.
Graphe orienté
Exemple 2.2.
j est un successeur( ou suivant) de i s’il existe un arc de la forme (i, j). L’ensemble des
successeurs d’un sommet i ∈ X est noté Suv(i).
Exemple 2.6.
Réaliser le graphe dont le dictionnaire Réaliser le graphe dont le dictionnaire
des précédents est le suivant: des suivants est le suivant:
Sommets Précédents
A -
Sommets suivants
B -
A E
C -
B B, C
D A
C D, E, F
E B
D C, F
F B
E -
G B
F C, D
H C, F
I D, E
n
2. Le nombre de précédents d− (xi ) d’un sommet xi est d− (xi ) =
X
aji
j=1
n n n
3. aij = d+ (xi ) = d− (xi ) = |E|
X X X
ji i=1 i=1
Matrice d’incidence
1 si xi est l’extrémité initiale deej
bij = −1 si xi est l’extrémité finale deej et ej n’est pas boucle (2.2)
0 dans les autres cas
Exemple 2.11. Un ingénieur informaticien doit exécuter cinq tâches avec cinq machines
différentes. Les diverses machines sont plus ou moins adaptées pour exécuter telle ou telle
tâches. Le tableau suivant présente les possibilités.
On appelle distance entre deux sommets d’un digraphe la longueur du plus pe-
tit chemin les reliant. S’il n’existe pas de chemin entre les sommets x et y, on
pose d(x, y) = ∞. Par exemple, sur le digraphe ci-dessous, d(v5 , v4 ) = 2, d(v4 , v5 ) =
∞, d(v3 , v1 ) = 1,
Un circuit est un chemin dont les sommets de départ et de fin sont les mêmes.
Le digraphe ci-dessous contient un circuit: (1, 6, 4, 1)
10
A
15
20 E
5 20
35 15 25
S B D T
5 20
10
5
F
C
10
Dans ce graphe, la valeur de (S,A) est 20. Celle de (A,E) est 10 et ainsi de suite.
La valeur d’un chemin ou d’un cycle dans un graphe valué est la somme des
valeurs des arc qui le constituent.
0 Si i = j
Cij = ∞ Si i , j et (i, j) < E (2.3)
δij Si i , j et (i, j) ∈ E
Présentation de l’algorithme
• Initialisations
– pour 2 ≤ j ≤ n fair:
Si cij < ∞ p(j) = 1
– S= 1 et T = 2; · · · ; n
• Itérations
∗ Retirer i de T et l’ajouter à S.
15
3 B
7 C
2 3
4
A E 5
D
10
1. Initialisation:
2. Itération 1:
3. Itération 2
(b) On a S = 1; 5; 4 et T = 2; 3
4. Itération 3
5. Itération 4
(b) On a S = {1; 5; 4; 3; 2} et T = {}
Nous sommes à la fin de l’algorithme. On na donc l’arbre couvrant qui donne tous les plus
courts chemins allant de 1 aux autres sommets.
7 C
4
A E 5
3
D B
Remarque 2.15. L’algorithme de Dijkstra ainsi présenté permet de déterminer le plus court
chemin dans tout graphe orienté comportant un circuit ou non. Pour des graphes orientés
sans circuit nous avons l’algorithme suivant.
• Attribuer le niveau 1 aux nouvaux sommets sans précédent puis les barrer
à leur tour de la liste des précédents.
• On répète le processus jusqu’à ce qu’il n’y ait plus de sommet sans précé-
dent.
Exemple 2.16. Considérons le graphe suivant défini par son dictionnaire des précédents:
Sommets Précédents
A -
B -
C B
D A, B
E C
F E
G D, E
H G, F
•Les sommets A et B n’ont pas de précédents, donc ils sont de niveau zéro (0). On les barre
dans la liste des précédents
•Les sommets C et D n’ont pas de précédents, donc ils sont de niveau un (1). On les barre
dans la liste des précédents
F E
G D,
@ E
H G, F
•Le sommet E n’a plus de précédent, donc il est de niveau deux (2). On le barre dans la
liste des précédents
G D, E
@ S
H G, F
•Les sommets F et G n’ont plus de précédents, donc ils sont de niveau trois (3). On les
barre dans la liste des précédents
•Le sommet H n’a plus de précédent, donc il est de niveau quatre (4). On le barre dans la
liste des précédents
A D G
H
B C E F
1. Initialisation:
i. λ(1) = 0
2. Itération
Pour améliorer le coût d’un sommet:
(a) On vérifie que tous les prédécesseurs du sommet sont marqués. Chaque
sommet est marqué par son coût minimal λ0 (i) associé et ainsi que le
précédent correspondant.
(b) Si tous les précédents du sommet i sont marqués, son coût λ(i) est
amélioré par la formule
λ0 (i) = min {λ(i), δ(j, i) + λ(i)} où δ(j, i) est le coût de l’arc (j, i).
j∈P re(i)
Exercice
% A B C D E F G H I J
A 7 6 9 6
B 10
C 4
D 9 5 9
E 5 10
F 4
G 9 5
H 9
I 9
J
Les techniques d’ordonnancement dans le cadre de la gestion d’un projet ont pour
objectif de répondre au mieux aux besoins exprimés par un client, au meilleur
coût et dans les meilleurs délais, en tenant compte des différentes contraintes.
L’ordonnancement se déroule en trois étapes:
Il s’agit de:
• Début au plus tôt d’exécution d’une tâche tX : C’est le maximum des fins au
plus tôt des tâches qui la déclenche (Il peut exceptionnellement y avoir un retard
ou chevauchement si le cahier des charges du projet le précise et que la faisabilité
est vérifiée). On a:
• Début au plus tard d’une tâche t∗X : C’est la date de fin au plus tard de la tâche
moins la durée de la tâche. On a: t∗X = min{t∗Y − dX ; Y ∈ suiv(X)}
• Fin au plus tôt: C’est la date de début au plus tôt plus la durée de la tâche.
• Fin au plus tard: C’est le minimum des dates de début au plus tard des tâches
qu’elle enclenche.
• Marge totale Mt (X): C’est le retard admissible du début d’une tâche qui
n’entraîne aucun recul de la date de fin du projet, mais qui consomme les marges
libres des opérations suivantes. C’est la date de début au plus tard moins la date
de début au plus tôt. On a:
Mt (X) = t∗X − tX .
• Marge libre Ml (X): C’est le retard admissible sur une tâche qui n’entraîne pas
de modification des calendriers des tâches suivantes.
Exercice 2.17. .
Le projet d’installation d’un reseau de communication locale dans un service comporte plusieurs
tâches liées entre elles par des relations de succession présentées par le tableau suivant:
2. Déterminer les dâtes de début au plus tôt et les dâtes de début au plus tard de chaque
tâche.
5. Donner les conséquences d’un retard de 4 jours sur le démarrage des tâches B et D.
Exercice 2.18. .
On considère le projet suivant:
2. Déterminer les dâtes de début au plus tôt et les dâtes de début au plus tard de chaque
tâche.