Travaux Dirigés d`algorithmique no2

publicité
Travaux Dirigés d’algorithmique no2
Représentation des graphes
L’objectif du TD est de se familiariser avec les graphes et leur représentation machine.
x Exercice 1. Représentations et parcours en profondeur
1. Indiquez la représentation du graphe suivant sous forme de matrice et sous forme de
liste d’adjacence.
m
m - fm
I
@
6
? - ? @@
gm
bm - cm
dm
7
7
a
e
2. Comment représenter un graphe pondéré?
3. Comment représenter un graphe non orienté?
4. Peut-on représenter un graphe à l’aide d’une table de hachage?
5. Faire le parcours en profondeur de ce graphe en indiquant les temps de début et fin de
parcours.
x Exercice 2. Modélisation
1. Le graphe du Métro est-il orienté, pondéré?
2. Expliquer comment représenter une fonction mathématique à l’aide d’un graphe. Quelle
est la particularité de ce graphe?
3. Il est possible de représenter les appels de fonctions dans un programme à l’aide d’un
graphe. Que représente un cycle dans un tel graphe?
4. On considère le problème d’ordonnancement des tâches T1 , . . . , Tn , où chaque tâche a
possiblement des contraintes de précédence par rapport aux autres tâches, ainsi qu’un
temps d’exécution. On souhaite minimiser le temps total d’exécution de l’ensemble
des tâches, sachant qu’elles peuvent être exécutées en parallèle. Comment modéliser et
résoudre ce problème à l’aide d’un graphe?
1
x Exercice 3. Complexité
Pour chacune des deux représentations, comment fait-on pour:
1. tester si une arête (i, j) est dans le graphe,
2. ajouter une arête (i, j) dans le graphe,
3. compter le nombre d’arêtes partant d’un sommet,
4. compter le nombre d’arêtes,
5. compter le nombre d’arêtes arrivant sur un sommet.
Indiquez la complexités de ces opérations en fonction du nombre A d’arêtes et S de sommets.
x Exercice 4. Changement de structure
Ecrivez les algorithmes pour passer d’une représentation par liste d’adjacence à une
représentation matricielle et réciproquement. Indiquez leur complexité.
x Exercice 5. Test de connexité
Pour les deux types de représentation d’un graphe non-orienté, écrivez un algorithme qui
teste s’il est connexe.
x Exercice 6. Graphe de la matrice transposée
Soit G un graphe représenté par sa matrice d’adjacence M . Que peut-on dire du graphe t G
représenté par la transposée t M de M ? Quel est l’algorithme pour calculer t G. Proposez
ensuite un algorithme pour calculer t G quand G est représenté par des listes d’adjacence.
x Exercice 7. Produit Matriciel
On considère une représentation matricielle M d’un graphe. A quoi correspond la matrice
M 2 = M × M ? A quoi correspond M 3 ? Peut-on se servir de cette propriété?
x Exercice 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 à lui. Proposez un algorithme linéaire en le nombre de sommets (c-à-d en
O(|S|) ) qui trouve l’éventuel trou noir d’un graphe représenté par sa matrice d’adjacence.
2
Téléchargement