TD2. - Irif

publicité
L3 Informatique
Année 2016-2017
AMD5
TD no 2 : parcours en largeur de graphes non orientés
Exercice 1 : parcours en largeur
Appliquer aux deux graphes ci-dessous l’algorithme de parcours en largeur à partir du
sommet 1. Pour chaque graphe, donner l’arbre résultant de ce parcours.
1
1
2
2
7
7
4
3
4
10
3
6
6
9
8
8
5
Un graphe
5
11
un autre graphe
Exercice 2 : parcours et matrice d’adjacences
Quel est la complexité de l’algorithme de parcours en largeur d’un graphe si celui-ci est
représenté par une matrice d’adjacences ?
Exercice 3 : plus courts chemins
Proposer un algorithme de complexité linéaire en (n + m) (nombre de sommets plus
nombre d’arêtes) qui calcule le plus court chemin dans un graphe entre deux sommets
donnés.
Exercice 4 : composantes connexes
Proposer un algorithme de complexité linéaire en (n + m) (nombre de sommets plus
nombre d’arêtes) qui calcule les composantes connexes d’un graphe.
Exercice 5 : cycle
Proposer un algorithme renvoyant, s’il existe, un cycle de longueur minimale passant par
un sommet s donné dans un graphe G. Prouver sa correction.
1
L3 Informatique
Année 2016-2017
Exercice 6 : diamètre d’un graphe
Le diamètre d’un graphe est la plus grande distance possible qui puisse exister entre deux
de ses sommets. On rappelle que la distance δ(a, b) entre deux sommets a et b d’un graphe
est la longueur d’un plus court chemin entre ces deux sommets.
On note PL(G,s) l’algorithme de parcours en largeur d’un garphe G depuis son sommet s
et on suppose que PL(G,s) retourne le dernier sommet visité. Voici alors un algorithme
pour calculer le diamètre d’un arbre T, ou, plus précisément, une paire (u, v) de sommets
tel que le diamètre de T soit δ(u, v).
prendre un sommet s quelconque de T
u = PL(T,s)
v = PL(T,u)
return (u,v)
Soient a et b deux sommets de T tel que le diamètre de T soit égal à δ(a, b). Nous allons
montrer que cet algorithme est correct.
On appelle feuille diamétrale une feuille de l’arbre telle qu’il existe un diamètre ayant
cette feuille pour extrémité.
1. Montrer que pour tout s, P L(T, s) est une feuille de T
2. Montrer que a et b sont des feuilles de T
3. Montrer que si u est une feuille diamétrale et v = P L(T, u) alors δ(u, v) est le diamètre de T
On veut maintenant montrer que, pour tout s, u = P L(T, s) est une feuille diamétrale
4. Quelles relations a-t-on entre δ(s, a), δ(s, b) et δ(s, u) ?
5. Traiter le cas u = a, le cas u = b et le cas a = b
On suppose donc maintenant que les trois feuilles a, u et b sont différentes. L’arbre T
restreint aux chemins entre ces trois feuilles est donc un Y. On s’intéresse maintenant à
l’arbre T restreint aux chemin entre s et ces trois feuilles.
6. Supposons que s s’insère sur la branche du Y contenant u (soit s est sur le chemin,
soit il s’y insère par un chemin qui transforme le Y en H). Montrer que cela produit
une contradiction
7. Supposons que s s’insère ailleurs : soit au centre du Y, soit sur la branche de a, soit sur
celle de b, par un chemin ou bien il est directement dessus. Dans tous ces cas montrer
que u est une feuille diamétrale.
8. Conclure.
Et est-ce encore vrai sur les graphes en général ?
9. Montrer que cet algorithme ne marche pas sur les graphes en général.
10. Malgré tout, montrer que si on applique à un graphe G l’algorithme ci-dessus, alors
δ(u, v) 6 diam(G) 6 2δ(u, v) où diam(G) est le diamètre de G. On dit alors que δ(u, v)
est une 2-approximation du diamètre.
2
Téléchargement