Travaux Dirig´es d’algorithmique no2
Repr´esentation des graphes
L’objectif du TD est de se familiariser avec les graphes et leur repr´esentation machine.
xExercice 1. Repr´esentations et parcours en profondeur
1. Indiquez la repr´esentation du graphe suivant sous forme de matrice et sous forme de
liste d’adjacence.
a
m
b
mc
md
m
e
mf
m
g
m
?
-
-
6
@
@
@I
?
7 7
-
2. Comment repr´esenter un graphe pond´er´e?
3. Comment repr´esenter un graphe non orient´e?
4. Peut-on repr´esenter un graphe `a l’aide d’une table de hachage?
5. Faire le parcours en profondeur de ce graphe en indiquant les temps de d´ebut et fin de
parcours.
xExercice 2. Mod´elisation
1. Le graphe du M´etro est-il orient´e, pond´er´e?
2. Expliquer comment repr´esenter une fonction math´ematique `a l’aide d’un graphe. Quelle
est la particularit´e de ce graphe?
3. Il est possible de repr´esenter les appels de fonctions dans un programme `a l’aide d’un
graphe. Que repr´esente un cycle dans un tel graphe?
4. On consid`ere le probl`eme d’ordonnancement des tˆaches T1, . . . , Tn, o`u chaque tˆache a
possiblement des contraintes de pr´ec´edence par rapport aux autres tˆaches, ainsi qu’un
temps d’ex´ecution. On souhaite minimiser le temps total d’ex´ecution de l’ensemble
des tˆaches, sachant qu’elles peuvent ˆetre ex´ecut´ees en parall`ele. Comment mod´eliser et
r´esoudre ce probl`eme `a l’aide d’un graphe?
1
xExercice 3. Complexit´e
Pour chacune des deux repr´esentations, comment fait-on pour:
1. tester si une arˆete (i, j) est dans le graphe,
2. ajouter une arˆete (i, j) dans le graphe,
3. compter le nombre d’arˆetes partant d’un sommet,
4. compter le nombre d’arˆetes,
5. compter le nombre d’arˆetes arrivant sur un sommet.
Indiquez la complexit´es de ces op´erations en fonction du nombre Ad’arˆetes et Sde sommets.
xExercice 4. Changement de structure
Ecrivez les algorithmes pour passer d’une repr´esentation par liste d’adjacence `a une
repr´esentation matricielle et r´eciproquement. Indiquez leur complexit´e.
xExercice 5. Test de connexit´e
Pour les deux types de repr´esentation d’un graphe non-oriene, ´ecrivez un algorithme qui
teste s’il est connexe.
xExercice 6. Graphe de la matrice transpos´ee
Soit Gun graphe repr´esent´e par sa matrice d’adjacence M. Que peut-on dire du graphe tG
repr´esent´e par la transpos´ee tMde M? Quel est l’algorithme pour calculer tG. Proposez
ensuite un algorithme pour calculer tGquand Gest repr´esent´e par des listes d’adjacence.
xExercice 7. Produit Matriciel
On consid`ere une repr´esentation matricielle Md’un graphe. A quoi correspond la matrice
M2=M×M? A quoi correspond M3? Peut-on se servir de cette propri´et´e?
xExercice 8. Trou Noir
Un trou noir est un sommet dont aucun arc ne part et tel que tous les autres sommets ont
un arc les reliant `a lui. Proposez un algorithme lin´eaire en le nombre de sommets (c-`a-d en
O(|S|) ) qui trouve l’´eventuel trou noir d’un graphe repr´esent´e par sa matrice d’adjacence.
2
1 / 2 100%