Telechargé par oosted2m4th5

tp6

publicité
TP6 MPSI: Graphes
Alexis Saurin
Alexis.Saurinens.fr
http://www.eleves.ens.fr/~saurin/tp_ aml
10 mai 2003
1 Introdu tion
semble des arêtes. Pour représenter graphiquement un graphe, on dessinera les som-
Cette séan e va être onsa rée à l'étude
d'une stru ture informatique très lassique et
très entrale : les graphes. On va d'abord
donner les dénitions prin ipales on ernant
les graphes. On s'intéressera ensuite aux manières de représenter des graphes ave des
stru tures de données informatiques et on
s'intéressera ensuite à quelques algorithmes
de base sur les graphes, en fait à un algorithme de par ours de graphe et à de appliations de e par ours.
Vous trouverez dans l'ouvrage Introdu tion à l'algorithmique de Th. Cormen, Ch.
Leiserson et R. Rivest de nombreux algorithmes sur les graphes (arbres ouvrants minimaux, plus ourts hemins, ot maximal)
qui peuvent sans doute servir de base à un
TIPE sur les graphes. Les dénitions de théorie des graphes de ette feuille de TP sont
reprises de e livre. Ce livre regorge de problèmes algorithmiques très variés.
mets
Dénition 1 (Graphe orienté)
omme
des è hes allant d'un sommet à un autre
Dénition 2 (Graphe non orienté)
Un
graphe non orienté est un graphe pour lequel la relation binaire A est symétrique et
anti-réexive (symétrique pour qu'il n'y est
pas d'orientation et anti-réexive ar on veut
empê her les bou les d'un sommet vers luimême dans le
as non-orienté). On peut voir
aussi l'ensemble A
paires et non de
omme un ensemble de
ouples.
Remarques et notations
Beau oup de dénitions sont semblables pour les graphes orientés ou
non orienté, mais dans ertains as, les
termes varient légèrement. Il faut don
toujours bien savoir quel type de graphe
on onsidère.
Dans le as d'un graphe orienté, on dit
que l'arête (u, v) part de u et arrive
en v. Pour un graphe non orienté, on
dit que l'arête (u, v) est in idente aux
sommets u et v.
La relation binaire A est aussi appelée relation d'adja en e : v est adjaent à u si (u; v ) 2 A. Dans un graphe
orienté, on note parfois v adja ent à u
Un graphe
ouple (S, A),
où S est un ensemble ni de sommets et A
une relation binaire sur S ( 'est-à-dire un
ensemble de
er les et les arêtes
sommet.
2 Dénitions
orienté G est la donnée d'un
omme des
ouples d'éléments de S), l'en-
1
par
u
!
v
Dénition 8 (Isomorphisme de graphes)
.
Dénition 3 (Degré d'un sommet)
degré
d'un
sommet
est
d'un
Deux graphes G=(S, A) et G'=(S', A') sont
Le
graphe
isomorphes s'il existe une bije tion
non
S
orienté est le nombre d'arêtes qui lui sont inidentes. Dans le
telle que (u; v )
0
2
(f (u); f (v ))
as d'un graphe orienté, on
0
2
A
si, et seulement si,
Dénition 9 (Sous-graphe)
d'ar s qui arrivent à
est un sous-graphe de G=(S, A) si
et
sortant (nombre d'ar s qui en partent).
A
0
G'=(S',
S
graphe
hemin de longueur k d'un sommet u
A')
0
S
A.
Dénition 4 (Chemin dans un graphe) Dénition 10 (Graphe omplet)
Un
7!
S
A
distingue en outre le degré rentrant (nombre
e sommet) et le degré
:
f
Un
omplet est un graphe non orienté
vers un sommet v dans un graphe orienté
dans lequel A est la relation binaire anti-
G=(S, A) est une suite nie de sommets
reéxive pleine (ie tout
h
0
u ; : : : ; ui ; : : : ; un
pour tout
i
2 [0
i
ave
1℄,
;n
On dit que v est a
s'il existe un
Un
0 =u et un =v
(ui ; ui+1 ) 2 A.
u
Dénition 11 (Graphe biparti)
essible à partir de v
G=(S, A) dans lequel S peut-être partitionné
est
hemin sont distin ts.
u
Un
uit dans un graphe orienté est un
u
élémentaire.
tel que
y le (élémentaire) dans un graphe
0
u
=
un ,
ave
h0
3 tel que
n
sont tous distin ts.
u ; : : : ; ui ; : : : ; un
Un graphe non orienté sans
1
i
u ; : : : ; un
y le est dit
Un graphe non oritenté est onnexe si
haque
paire de sommet est reliée par une
haîne.
a
omposantes
onnexes sont
onstituées
lasses d'équivalen e pour la relation être
essible à partir de.
Dénition 7 (CFC)
Un graphe orienté est
fortement
haque sommet est a -
onnexe si
sont les
2
v
tels que (u; v )
2
S
2
ou
u
2
S
2
2
et
A
v
implique
2
1
S
(ie
Exer i es
Exer i e 1:
Arbres
Exer i e 2:
Graphes
hromatiques
2. Montrer que les énon és suivants sont
équivalents :
onnexes du graphe
(a) G est biparti ;
lasses d'équivalen e de la relation
être mutuellement a
S
1. Montrer que tout arbre peut être olorié
ave uniquement deux ouleurs
essible à partir de n'importe quel autre. Les
omposantes fortement
1
et
Une k- oloration d'un graphe non orienté
G=(S, A) est une fon tion
: S 7!
f0; 1; : : : ; k 1g telle que pour haque arête
(u; v ) 2 A, (u) 6= (v ). Les nombres représentent k ouleurs et les sommets adja ents
doivent avoir des ouleurs diérentes.
Dénition 6 (Composante onnexes)
des
et
Donner les onditions né essaires et sufsantes sur un graphe pour que e soit un
arbre.
a y lique.
Les
1
S
un
u ; : : : ; ui ; : : : ; un
non orienté est un hemin
S
sommets à l'autre ensemble).
hemin
n
Un
2
toutes les arêtes passent d'un ensemble de
ir-
i tel que 0 = , ave
0
1. On parle aussi de ir uit élémentaire
si h 1
i est en plus un hemin 3
u ; : : : ; ui ; : : : ; un
Un
graphe biparti est un graphe non orienté
hemin de u à v.
Dénition 5 (Cir uits et y les)
h
distin ts est dans A).
et
hemin est élémentaire si tous les
sommets du
ouple de sommets
(b) G est 2- hromatique ;
essibles.
2
( ) G n'a au un y le de longueur im- lieu à des algorithmes de la même omplexité
paire.
pour résoudre un problème donné. En outre,
elles
ne prendront pas toutes le même espa e
3. Soit d le degré maximal d'un sommet
du graphe G. Démontrer que G peut mémoire, ertaines seront plus fa ilement modiables que d'autres...
être olorié ave d+1 ouleurs.
q
4. Montrer que si G a O(|S|) arêtes, alors
G peut-être olorié ave O( jS j) ouleurs.
Question
1:
Représentations
informa-
tiques
Proposez quelques manières de représenter les graphes en Caml Light. Dénir à
Exer i e 3: Graphes d'amitié
haque fois un type pour les graphes orresRéé rire ha un des énon és suivants pondant à ette représentation.
omme un théorème sur les graphes non
orientés, puis en faire la démonstration. On Question 2: Diéren e des représentations
suppose que l'amitié est symétrique mais
n'est pas réexive.
Dénition 12 (transposée d'un graphe)
1. Dans un groupe quel onque de n 2 personnes, il existe deux personnes
ayant le même nombre d'amis dans le
groupe.
La transposée d'un graphe orieenté G=(S, A)
est le graphe G'=(S, A') où
2
S =(v; u) 2 Ag.
A
0
=
f(
u; v )
2
Programmez la transposition de graphe
2. Chaque groupe de six personnes pour ha une des représentations.
ontient soit trois amis, soit trois per- Dénition 13 ( arré d'un graphe) Le
sonnes étrangères les unes aux autres.
arré d'un graphe orienté G=(S, A) est
3. Un groupe de personnes quel onque
peut être divisé en deux sous-groupes
tels qu'au moins la moitié de amis
de haque personne appartiennent au
sous-groupe dont ette personne n'est
pas membre.
le
graphe
2
A ssi9w
2
G
2 =(S,
A
S tq (u; w )
2)
2
à-dire qu'il y a un ar
seulement si, il y a un
tel
A;
que
(w; v )
dans le
2
(u; v )
A.
2
C'est-
arré si, et
hemin de longueur
exa tement deux dans le graphe de départ.
Programmez le arré d'un graphe pour les
4. Si ha un dans un groupe est l'ami diverses représentations.
d'au moins la moitié des personnes du
groupe, alors le groupe peut être réparti Question 3: Degré entrant, degré sortant
autour d'une table de façon que ha un
Étant donnée une représentation par listes
soit assis entre deux amis.
d'adja en e d'un graphe orienté, ombien de
temps faut-il pour al uler le degré sortant de
tous les sommets ? et pour le degré entrant ?
4 Représentation informatique
Question 4:
Fermeture
transitive
d'un
graphe
Étant donné la représentation par matri e
Il existe plusieurs manière de représenter
les graphes dans un ordinateur. Ces manières d'adja en e d'un graphe orienté, programmez
n'auront pas les mêmes propriétés, et en par- une fon tion qui al ule la fermeture tranti ulier elles ne donneront pas né essairement sitive d'un graphe G donné, 'est-à-dire un
3
3 temps<- temps + 1
4 pour haque sommet v adja ent
à u dans G
5
faire si ouleur(v)=Blan
6
alors pere(v)<- u
7
Visiter-PP(v)
8 ouleur(u)<- Noir
9 f(u)<- temps
10temps<- temps + 1
nouveau graphe ayant même sommet que le
pré édent mais dont les ar s sont les ouples
de sommets (u, v) tels que v est a essible à
partir de u dans G (on s'inspirera de l'exer i e
sur le arré d'un graphe).
5 Par ours d'un graphe
orienté
Réé hissez, avant de vous lan er dans
la programmation de l'agorithme, à la manière dont vous représenterez le ompteur de
temps, les attributs de ouleur, de temps de
début de traitement et de n de par ours,
ainsi que de parenté dans le par ours.
Qu'avez-vous onstruit une fois que vous
avez par ouru le graphe ?
Réé hissez à l'utilité de onserver les
données pere(u), d(u) et f(u).
On représente maintenant un graphe par
sa matri e d'adja en e.
On va s'intéresser maintenant à des manières de par ourir un graphe. On va voir le
par ours en profondeur d'un graphe (on pourrait aussi étudier le par ours en largeur), et
un ertain nombre d'appli ation de e parours. Il n'est pas surprenant que beau oup
d'alogrithme sur les graphes soient fondés sur
des algorithmes de par ours de graphe dans la
mesure où pour faire un trvail quel onque sur
un graphe il faudra la plupart du temps avoir
vu tous ses sommets, et que les algorithmes
de bases de par ours de graphes permettent
de onserver beau oup d'information sur le
graphe.
Question 5:
Question 6:
Détermination de l'a y li ité
d'un graphe
Utilisez le prin ipe du par ours en profondeur pour déterminer si un graphe a des
y les ou non.
Vous ommen erez par é rire l'algorithme, puis vous le programmerez.
Par ours en profondeur
Le par ours en profondeur d'un graphe
onsiste à par ourir tous les sommets du
graphe de la manière suivante :
Question 7:
Tri topologique d'un graphe
orienté
Trier topologiquement un graphe orienté
revient à mettre sur l'ensemble de ses sommets un ordre qui soit ompatible ave la relation d'adja en e, à savoir si u ! v alors
u v.
Montrer que si un graphe a un y le on ne
peut pas le trier topologiquement
On suppose maintenant que notre graphe
est a y lique. Programmer un algorithme qui
permette de faire un tri topologique grâ e à
un par ours en profondeur du graphe (pensez à utiliser les dates de n de par ours d'un
sommet, ie les f(u)).
PP(G):
1 pour haque sommet u de G
2
faire ouleur(u)<- Blan
3
pere(u)<- NIL
4 temps<- 0
5 pour haque sommet u de G
6
faire si ouleur(u)=Blan
7
alors Visiter-PP(u, G)
Visiter-PP(u):
1 ouleur(u)<- Gris
2 d(u)<-temps
4
Téléchargement