Universit´e de Nice – Sophia Antipolis Licence Math-Info 2
Informatique Th´eorique 2005–2006
TD n12
Algorithmique de graphes
Exercice 1) Lesquelles des figures suivantes peuvent ˆetre trac´ees par un trait continu sans repasser deux
fois sur le mˆeme segment ?
Exercice 2) Un graphe pond´
er´
eest un triplet G= (S, A, p)o`u pest une pond´
eration des arˆetes de G
(par des entiers, par exemple). Un arbre couvrant d’un graphe Gconnexe est un arbre joignant tous les
sommets de G. Un arbre couvrant est dit minimum si la somme des poids de ses arˆetes est minimum sur
l’ensemble des arbres couvrants.
Nous allons ´etudier les deux algorithmes classiques de Kruskal et de Prim pour le calcul d’un arbre
couvrant de poids minimum (ARM). Ce sont des algorithmes gloutons : ils “engloutissent” les arˆetes sans
jamais revenir sur leurs choix. Ceci implique que lorsqu’ils choisissent une arˆete, ils sont sˆurs qu’elle
appartient `a un ARM, et que cet ARM contient aussi les arˆetes pr´ec´edemment choisies. Les algorithmes
gloutons ont souvent une complexit´e minimale.
1. Par d´efinition, tous les sommets du graphe connexe doivent ˆetre reli´es, donc le nombre d’arˆetes d’un
arbre couvrant est exactement n1.
Que dire de l’algorithme qui choisit les n1arˆetes de plus petits poids ? (testez-le sur le graphe
pond´er´e de la figure qui suit)
2. L’algorithme de Kruskal raisonne sur le nombre de composantes connexes et commence par trier
toutes les arˆetes par ordre croissant de leurs poids. Au d´epart, aucune arˆete n’est choisie. Le graphe
poss`ede donc autant de composantes connexes que de sommets. Ensuite et `a chaque ´etape, on choisit
une arˆete de poids minimum ayant ses extr´emit´es dans deux composantes connexes diff´erentes. Cela
a donc pour effet de connecter deux composantes connexes et ainsi faire diminuer le nombre de com-
posantes connexes.
G
B C
D
A
EF
6
6
2
8
1
3
2
4
3
63
7
Remarque : Cet algorithme s’applique ´egalement sur un graphe pond´er´e non connexe pour trou-
ver une forˆet couvrante de poids minimum. Et en prenant tous les poids ´egaux `a 1, on retrouve
l’algorithme de recherche des composantes connexes vu dans le cours.
Appliquer l’algorithme de Kruskal sur le graphe pond´er´e de la figure.
3. L’algorithme de Kruskal construit un ARM en int´egrant une `a une les arˆetes du graphe. L’algorithme
de Prim proc`ede d’une toute autre mani`ere : il int`egre les sommets un par un.
Que dire de l’algorithme qui choisit pour chaque sommet l’arˆete incidente de poids minimum ?
(testez-le sur le graphe pond´er´e de la figure)
4. Dans l’algorithme de Prim, on commence par choisir un sommet au hasard que l’on place dans un
ensemble E, puis `a chaque ´etape on s´electionne une arˆete de poids minimum {x, y}, avec xEet
y6∈ E, et on place ydans E.
Appliquer l’algorithme de Prim sur le graphe pond´er´e de la figure.
Exercice 3) La “course `a N est un jeu `a deux joueurs o`u l’on part de 0et o`u chaque adversaire ajoute `a
tour de rˆole 1ou 2au choix. Le vainqueur est celui qui arrive `a N.
– Dessiner le graphe orient´e des coups possibles pour N= 10.
– D´eterminer le noyau dans ce graphe et en d´eduire quel joueur peut avoir une strat´egie gagnante.
– Donner les valeurs de Npour lesquelles c’est l’autre joueur qui poss`ede une strat´egie gagnante.
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !