recherche operationnelle - la theorie du graphe.doc
DESCRIPTION
Recherche operationnelleLa theorie du grapheTRANSCRIPT
MATHEMATIQUES
Année Universitaire : 2015-2016
Chapitre 4 :
GRAPHES ET RESEAUX
Professeur : Tayeb OUADERHMAN
0
INTRODUCTIONL’histoire de la théorie des graphes débute avec les travaux d’Euler au XVIIIe siècle et trouve
son origine dans certains problèmes, tels que celui des ponts de Königsberg :
Figure 2.1 : Carte du village de Königsberg
Figure 2.2 : graphe du problème des ponts de Königsberg
Les habitants se demandaient s’il était possible, en partant d’un quartier quelconque de la
ville, de traverser tous les ponts sans passer deux fois par le même et de revenir à leur point de
départ.
L’idée d’Euler était très simple et marqua le début de la théorie des graphes. Tout d’abord, il
remplaça la carte du village par le diagramme de figure 2.2 . Sur ce graphe les sommets s1 et
s3 représentent les deux rives de la rivière, les sommets s2 et s4 représentent les deux îles, et
les sept arêtes reliant ces sommets correspondent aux sept ponts.
Euler a donc démontré que la réponse à cette question est négative.
Dés lors la théorie des graphes s’est alors développée dans diverses disciplines telle que la
chimie, la biologie, les sciences sociales…
île 1 11 île 2
11
Rive nord
Rive sud
s2
s1
s3
s4
Un graphe permet de représenter la structure, les connections d’un ensemble complexe en
exprimant les relations entre ses éléments : réseau de communication, réseaux routiers,
circuits électriques…
Les graphes permettent donc de modéliser une grande variété de problèmes en se ramenant à
l’étude de sommets et d’arcs. Les derniers travaux en théorie des graphes sont souvent
effectués par des informaticiens, du fait de l’importance qu’y revêt l’aspect algorithmique.
DEFINITIONS ET PREMIERS EXEMPLES :Il existe plusieurs manières de caractériser un graphe, nous allons en parcourir quelques unes.
Notons immédiatement qu’il existe deux grands types de graphes :
Les graphes orientés
Les graphes non orientés
Concepts orientés (digrahe)Un graphe G(S,U) est caractérisé par :
Unb ensemble S={s1, s2,…, sn} dont les éléments sont appelés sommets ou noeuds
un ensemble U={ u1, u2,…, um } du produit cartésien SxS dont les éléments sont
appelés arcs.
On appelle le cardinal de S l’ordre du graphe.
Pour un arc u=( si,sj), si est l’extrémité initiale, sj est l’extrémité finale ( ou bien origine et
destination).
u
figure 2.1 : Diagramme sagittal
Un arc u=( si,si) est appelé une boucle :
Application multivoquesj est successeur de si si , l’ensemble des successeurs de si est noté . (si est prédécesseur de , l’ensemble des prédécesseurs de ) :
Exemple 1 :
si
2
s1 S2
Figure 2.2 :
Calculer (si) pour i=1,..,5
Remarques 1: - G peut être parfaitement déterminé par .- On peut également définir une fonction telle que représente l’ensemble des
arcs sortant de et réciproquement pour les arcs entrants.
Concepts non orientésLors de l’étude de certaines propriétés, il arrive que l’orientation des arcs ne joue aucun rôle.
On s’intéresse simplement à l’existence d’arc (s) entre deux sommets (sans en préciser
l’ordre). Un arc sans orientation est appelé arête. u est constitué non pas de couples, mais de
paires de sommets non ordonnés.
Pour une arête (si,sj) on dit que U est incidente aux sommets si et sj .
Remarque : Dans le cas non orienté, au lieu de noter G =(S,U) et u=( ei,ej) on préfère souvent G=(S,E) et
e=[ si,sj ] .
Les graphes simples et les multigraphes
Un multigraphe G=(S,E) (ou G=(S,U)) est un graphe pour lequel il peut exister plusieurs
arêtes entre deux sommets.
Un graphe est simple :
o S’il n’est pas multigraphe
o S’il n’existe pas de boucles.
s2
s1
s3
s5
s4
Arêtes multiples Arcs multiples
Remarque : Deux arcs de sens opposés ne sont pas des arcs multiples.
On appelle p-graphe, un multigraphe dont le nombre maximum d’arcs liant deux sommets ne
peut jamais excéder p.
Exemple 2 : Donner un exemple de chaque type de graphes suivants :
(a) : 3-graphe d’ordre 4 (b) 2-graphe d’ordre 5
Lorsque p=1, le p-graphe devient un 1-graphe, les arcs de U étant tous distincts, U devient un
ensemble de cardinal m.
adjacence et incidence Définitions :
o Deux sommets distincts d’un graphe G=(S,U) sont dits adjacents si et seulement si ils
sont joints par un arc : Si et alors
est adjacent à .
o Deux arcs distincts d’un graphe sont dits adjacents si et seulement si ils ont au moins
une extrémité commune.
Un arc u= d’un graphe G est dit incident à vers l’extérieur et incident à
vers l’intérieur.
s2
s1
s1
s2
4
Dans un graphe G, le nombre d’arcs incidents à un sommet s vers l’extérieur, noté ,
s’appelle le demi-degré extérieur de s. De même, le nombre d’arcs incidents à s vers
l’intérieur, noté , s’appelle le demi-degré intérieur de s.
Le degré d’un sommet s d’un graphe G, noté , est défini comme le nombre total d’arcs
ayant une extrémité en s :
Remarques : On a : et
Le degré d’un sommet d’un graphe non orienté est le nombre d’arêtes qui lui sont
incidentes.
Dans le cas d’un 1-graphe, on peut tout aussi bien définir le degré d’un sommet à
l’aide de l’application multivoque puisque :
= et =
Une boucle augmente de deux unités le degré d’un sommet concerné.
Théorème 2.1 :
Pour tout graphe G , la somme des degrés des sommets égale deux fois le nombre
d’arcs.
Preuve : exercice
Corollaire 2.1 :
Pour tout graphe G , il existe un nombre pair des sommets dont le degré est impair.
Proposition 2.1 :
Soit G un graphe, alors g admet au moins une paire de sommets ayant le même degré.
Autres terminologies :o Graphe complémentaire :G= et , et , est le graphe complémentaire de G.o Graphe partiel :G= et , est un graphe partiel de G.o Sous-graphe :G= et , est un sous-graphe de G, où V est la réstriction de la fonction caractéristique de U à S’ :
o Sous-graphe partiel : combiner les deuxo Graphe réflexif :o Graphe symétrique :
o Graphe asymétrique :o Graphe antisymétrique : et o Graphe transitif : et o Graphe complet :
Notons qu’un graphe complet et antisymétrique s’appelle un tournoi, car il symbolise le
résultat d’un tournoi où chaque joueur est opposé une fois à chacun des autres joueurs.
REPRESENTATION DES GRAPHES
3.1. Matrice d’adjacence Soit G= un graphe d’ordre n :
La matrice d’adjacence A(G) de G est la matrice carré nxn définie comme suit :
avec est le nombre d’arêtes (arcs) de à
Remarques : Si G est non orienté alors A(G) est symétrique
Si g es simple, A(G) est une matrice booléens
Une consultation complète de A(G) occupe une place mémoire d’ordre , cette
représentation est coûteuse en mémoire.
Pour les graphes simples numérisés, on peut remplacer « 1 » par la valeur numérique
de l’arc.
6
Exemples 3.1:
3.2. Matrice d’incidence sommets-arcsSoit G= un graphe à n sommets et m arcs, on lui associe une matrice D(G) à n lignes
(correspondant aux sommets ) et m colonnes (associées aux arcs ) :
avec
Exemple 3.2:
On obtient facilement :
s2
s1
s3
s4 s6
s1 s3
s1
s3
s2
s2
s5
IV. COLORATION DES SOMMETS D’UN GRAPHEDéfinition 4.1 :Soit un graphe G= un graphe non orienté. Un sous-ensemble est un ensemble
stable s’il ne comprend que des sommets non adjacents deux à deux : .
Comme tout sous-ensemble d’un ensemble stable est un ensemble stable, il est naturel de
chercher le cardinal maximum d’un ensemble stable. Ce nombre, noté , est le nombre de
stabilité.
Définition 4.2 :
La coloration des sommets d’un graphe consiste en affectation de couleurs à tous les sommets
du graphe de telle sorte que deux sommets adjacents ne soient pas porteurs de la même
couleur.
Le nombre chromatique est défini comme le nombre minimum de couleurs distinctes
nécessaires à la coloration des sommets de G.
Un graphe G tel que qui est colorable en k couleurs est dit k-chromatique. Une
k-coloration des sommets est une partition de l’ensemble des sommets en k
ensembles stables.
Applications : De nombreux problèmes concrets, tels que certains problèmes d’horaire et
d’allocation de ressources, peuvent se ramener à la recherche d’une coloration minimale des
sommets d’un graphe.
4.2. Algorithme de coloration de Welsh et PowellLa détermination du nombre chromatique d’un graphe G= , ainsi que l’obtention
d’une coloration minimale des sommets de G, constituent un problème assez complexe.
Certes, on peut procéder de la manière suivante :
Enumérer tous les ensembles stable maximaux ;
Déduire de ce recouvrement une partition ;
Cependant, le nombre d’ensembles stables maximaux sera souvent trop important pour que
cette procédure soit effectivement applicable.
Il est dès lors utile, en pratique, de recourir à des algorithmes de coloration heuristique mais
simple, qui mènent à une coloration des sommets non nécessairement minimale. L’algorithme
de W&P présenté ci-dessous en est un exemple. Cet algorithme est défini ici à partir d’une
8
matrice d’adjacence A(G). L’expression « colorier le ligne i de la couleur » est substituée à
« attribuer la couleur ».
4.3. Bornes pour le nombre chromatiqueComme nous l’avons mentionné, cet algorithme ne conduit pas nécessairement à une
coloration minimale, de même d’ailleurs que beaucoup d’autres algorithmes proposés dans la
littérature. Le nombre chromatique étant généralement inconnu, il est impossible de comparer
directement le nombre k de couleurs résultant de l’application de l’algorithme à la valeur
Ranger les sommets de S par ordre de degrés décroissants : Soit A la matrice d’adjacence du graphe ainsi ordonné
k=1
N=AA
Colorer par la couleur ck la première ligne non encore colorée dans N, ainsi que la colonne correspondante
N= ensemble des lignes non encore colorées ayant un zéro dans les colonnes de couleur ck
N=
Toutes les lignes sont colorées
k=k+1, Changer de couleur
Stop, la coloration obtenue est une k-coloration
Non
Non oui
optimale de . A défaut d’une valeur exacte, des bornes inférieures et supérieures
peuvent cependant être établies pour , aux quelles il peut être utile de comparer
k. Citons alors quelques bornes inférieures :
où est le degré minimum des sommets du graphe,
où le cardinal de plus grand clique de G (un clique de G est un sous-graphe complet de G).
Et les bornes supérieures suivantes : , , où est le degré maximum des sommets du graphe.
Exemple :Colorons les sommets du graphe G présenté ci-dessous :
La matrice d’adjacence de graphe ordonné est :
Et les degrés de chaque sommet sont les suivants :
si s1 s2 s3 s4 s5 s6 s7 s8
d(si) 4 4 4 3 3 2 2 2
Par application de l’algorithme, on obtient alors la 3-coloration suivant des sommets de G :
La couleur est attribuée à et La couleur est attribuée à , et , La couleur est attribuée à , et
s6 s3
s7
s4
s1
s8
s2
s5
10
Calculons les bornes inférieures et supérieures, pour le nombre chromatique :
On en déduit que =3, la 3-coloration obtenu par l’algorithme de W&P constitue donc ici
une coloration minimale des sommets de G.
Remarques : On peut également se pencher sur le problème de la coloration des arêtes d’un graphe.
On a alors la définition de l’indice chromatique, duale de celle du nombre chromatique pour le cas de la coloration des sommets d’un graphe. L’indice chromatique q(G) est défini comme le nombre minimum de couleurs distinctes nécessaires à la coloration des arêtes de G
L’algorithme nécessite autant d’étape que le nombre k de couleurs qu’il associera aux sommets de G.
V. CONNEXITE DANS UN GRAPHE
5.1. CheminsBeaucoup de problèmes en théorie des graphes tournent autour de l’existence de chemins pour
rendre d’un sommet à un autre. Nous allons définir dans cette section, différents types de
chemins correspondant à différents types de solutions.
Définitions 5.1 :
Dans un graphe orienté G= , on appelle chemin de longueur q, une séquence
d’arcs de G telle que pour tout arc l’extrémité terminale de coïncide
avec l’extrémité initiale de .
Un chemin est dit simple s’il ne comporte pas deux fois le même arc.
Un chemin est dit élémentaire s’il ne passe pas deux fois par le même sommet.
Un chemin est dit eulérien s’il emprunte une et une seule fois chaque arc du graphe.
Un chemin est dit hamiltonien s’il emprunte une et une seule fois chaque sommet du graphe.
Un chemin dont le sommet initial coïncide avec le sommet terminal s’appelle un circuit.
Tous les qualificatifs relatifs aux chemins s’appliquent aussi aux circuits.
Remarque 5.1 : lorsqu’on travaille sur un graphe non orienté, on parle plutôt de chaîne au lieu de
chemin, et de cycle au lieu de circuit. Lorsqu’on travaille avec un 1-graphe, on peut également décrire un chemin à l’aide
d’une séquence de sommets. Dans ce cas, une telle description est équivalente à une séquence d’arcs.
Exemple 5.1 :
Par rapport au graphe de la figure 5.1a, la séquence est un chemin qui relie les
sommets et . Ici, nous pouvons décrire ce chemin à l’aide d’une séquence de sommets
car nous avons affaires à 1-graphe. Ce chemin est à la fois simple et élémentaire. Par contre,
le chemin est simple mais non élémentaire, et il correspond à un circuit. Le
chemin n’est pas un circuit et n’est ni simple, ni élémentaire. Finalement, le
chemin est un circuit simple et élémentaire.
Par rapport au graphe de la figure 5.1b, la séquence [ ] est un chemin qui
relie les sommets et . Ce chemin est simple mais n’est pas élémentaire (il passe deux fois
par ). Le chemin [ ] est simple et élémentaire. Il correspond aussi à un circuit. Le
chemin [ ] est aussi un circuit simple non élémentaire.
5.2. ConnexitéDéfinitions 5.2 :
Une chaîne est l’équivalent d’un chemin mais pour un graphe non orienté. Une chaîne de
longueur q est une séquence d’arcs (ou d’arêtes) telle que chaque arc de la
séquence possède une extrémité en commun avec l’arc précédent, et l’autre extrémité en
commun avec l’arc suivant.
s3 s4
s1 s2
s5
Figure 5.1a :
s3
s4s1
s2
Figure 5.1b :
12
Un graphe G= est dit (faiblement) connexe si et seulement si, pour toute paire de
sommets et , il existe une chaîne reliant ces deux sommets.
Un graphe G= est dit fortement connexe si et seulement si, pour toute paire de
sommets et , il existe un chemin reliant ces deux sommets.
Une composante connexe d’un graphe G= est définie comme une classe de la relation
d’équivalence ≡ dans SxS telle que : x≡y si et seulement si, x=y ou s’il existe une chaîne de x
à y. (i.e. : c’est un sous ensemble de sommets tels qu’il existe une chaîne entre deux sommets
quelconques.
Un graphe est connexe s’il comporte une composante connexe et une seule. Chaque
composante connexe est un graphe connexe.
Théorème 5.1 (théorème d’Euler)Un multigraphe connexe possède une chaîne eulérienne si et seulement si, le nombre de
sommets de degré impair égale à 0 ou 2. Cette chaîne est un cycle si et seulement si, ce
nombre est 0 ; autrement dit, le chemin eulérien mène d’un des sommets de degré impair à
l’autre.
1. Autres difinitions Un arbre est un graphe non orienté simple, connexe, acyclique. Un arbre comprend
n-1 arêtes. L’addition d’une arête entre deux sommets crée un cycle et un seul.
Forêt : c’est un graphe non orienté acyclique (pas forcement connexe). Chaque
composante connexe d’une forêt est un arbre.
Arborescence : c’est un graphe orienté où chaque sommet possède un seul précédent
sauf un qui n’en a pas : la racine. un chemin unique de la racine à s. On
considère un nœud si d’arborescence T, de racine sr, un nœud sk quelconque sur le
chemin unique de sr vers si est appelé ancêtre de si ; si est un descendant de sk . si le
dernier arc sur le chemin de sr vers si est (sp, si), alors sp est le père de si , si est un fils
de sp . si deux nœuds ont le même père, ils sont frères. Un nœud sans fils est une
feuille. La longueur du chemin entre sr et si est la profondeur de si dans T. la plus
grande profondeur de T est la hauteur de T. Si chaque nœud a au maximum deux fils,
on parle d’arborescence binaire.
Exemple 6.2 :
7.1. Arbre maximal de poids minimum7.1.1.Graphe valué (numérisé)
Jusqu’à présent, les graphes avec lesquels nous avons travaillé ont toujours représenté un
ensemble de sommets et un ensemble d’arcs (arêtes). Dans cette section, nous considérons un
dernier type de graphe où nous associons une valeur à chacun de ces liens.
Définition 7.3 :
Un graphe valué G= est un graphe G= auquel on a associé une application
dite fonction de valuation, de l’ensemble des arêtes (arcs) dans un ensemble de
valeurs .
Les valeurs associées aux arêtes peuvent représenter, selon le type de problèmes, soit des
poids, soit des coûts ou encore autres propriétés pertinentes.
Exemple 7.1 :
Un exemple de graphe valué où les sommets pourraient représenter des villes et les arêtes les
routes reliant ces villes. La valeur associée à chaque arête correspondrait alors à la distance
entre deux villes le long d’une route donnée :
s3
s4
s1
s2s5
Figure 6.1 : Arborescence
s8s6 s1
0
s1
1
s7 s1
2
s9
14
Définitions 7.4 :
Soit G= un graphe valué. On définit le poids de G, comme somme des poids de
chacun de ses arêtes (arcs) :
Si G est connexe, on appelle arbre maximal (graphe partiel de G qui est un arbre) de poids
minimum, l’arbre maximal de G dont le poids est minimum.
Il existe plusieurs algorithmes pour trouver l’arbre maximal de poids minimum d’un graphe
valué. Nous en présentons un ici, l’algorithme dit de Kruskal.
7.2. Algorithme de Kruskalsoit G= un graphe connexe valué où . Alors, l’algorithme suivant nécessite exactement n-1 étapes pour produire un arbre maximal de poids minimum de G. à l’étape k, on définit l’ensemble formé de k arêtes distinctes de G :
La définition suivante de l’algorithme de Kruskal est inductive.
Etape k=1 : soit l’arête dont la valeur est minimum. On choisit alors
Etape k+1 : soit l’ensemble des arêtes obtenues à l’étape k. à l’étape k+1, il s’agit de
choisir l’arête \ dont la valeur est minimum et qui n’engendre aucun cycle avec
les arêtes de . Alors et :
A la fin des n-1 étapes, le graphe G= est un arbre maximal de poids minimum.
Exemple 7.2 :
Appliquons l’algorithme de Kruskal sur l’exemple de la figure 7.3. la première étape consiste
à choisir l’arête dont le poids minimum. C’est l’arête dont la valeur est 5 :
s3
s4s1
s2
Figure 7.3 :
s6
s7
s5
11
25
78
17
12
28 16
9
5 7
Ensuite, parmi les arêtes restantes, il s’agit d’en choisir une de poids minimum et qui
n’engendre aucun cycle. La deuxième arête est de poids minimum mais engendre le
cycle ; on ne peut donc pas le choisir. Notre deuxième choix est donc l’arête
comme le montre le graphe suivant :
Ensuite on choisit l’arête car c’est elle dont la valeur est maintenant minimum et elle
n’engendre aucun cycle. De même, on choisit par la suite l’arête . On obtient le graphe
suivant :
s3
s4s1
s2
Figure 7.3a :
s6
s7
s5
11
25
78
17
12
28 16
9
5 7
s3
s4s1
s2
Figure 7.3b :
s6
s7
s5
11
25
78
17
12
28 16
9
5 7
16
A cette étape, on voudrait maintenant choisir l’arête , mais celle-ci engendrerait le
cycle . On choisit donc l’arête . De même, l’arête de poids minimum
suivante est . Cependant, cette arête engendrerait le cycle . Elle doit donc
être rejetée. On choisit donc l’arête qui nous donne le graphe suivant :
A ce graphe, on ne peut plus ajouter aucune arête sans créer de cycle. En vertu de l’algorithme
de Kruskal, on peut donc affirmer que ce graphe (celui en trait plein) correspond à un arbre
maximal de poids minimum. La somme des valeurs des ses arêtes égale à
5+7+8+9+12+17=58
s3
s4s1
s2
Figure 7.3c :
s6
s7
s5
11
25
78
17
12
28 16
9
5 7
s3
s4s1
s2
Figure 7.3d :
s6
s7
s5
11
25
78
17
12
28 16
9
5 7