Licence Informatique
Université de Bordeaux
4TIN501U Algorithmique et structures de données 2
Feuille 4
Exercice 1
Dans cet exercice nous souhaitons utiliser l’algorithme PP du parcours en profondeur pour
déterminer les points d’articulation d’un graphe non-orienté. Un point darticulation est un
sommet dont la suppression augmente le nombre de composantes connexes du graphe.
1. Déterminer les points d’articulation du graphe Gsuivant :
1 2 3 4
5
6
2. Modifier PP(G) en NB_CC(G) afin de compter le nombre de composantes connexes du
graphe G. En utilisant NB_CC(G) écrire un algorithme calculant les points d’articulation
du graphe G. Calculer sa complexité.
Dans la suite, nous allons mettre en place un algorithme plus ecace de calcul des points
d’articulation. Pour cela, on fixe un sommet ret on considère l’arborescence de liaison T(r)
définie par le parcours en profondeur de Gàpartirder.Lesarcsdeliaisons sont les arcs (u,v)
de Gu=pere(v)c’est-à-dire les arcs de T(r),tandisquelesarcsderetour sont les arcs
(u,v) de Gqui ne sont pas de liaison et où vest un ancêtre de udans T(r).Onpeutmontrer
que dans un PP sur un graphe non-orienté, les arcs sont soit de liaison soit de retour.
Pour tout sommet v,ondénitl[v] comme la plus petite valeur de d[u] uest soit égal à
v,soitlextrémitédunarcretour(w,u) avec wdescendant de v(w=vpossible).
3. Calculer l’arbre T(r) pour Gen prennant r=1.Distinguerlesarcsderetour,etcalculer
l[u] pour tous les sommets ude G.
4. Modifier l’algorithme PP pour calculer l[v] pour tout sommet vd’un graphe G.
5. Établir que vest un point d’articulation si et seulement si :
(a) soit v=ret vaaumoinsdeuxfilsdansT(r),
(b) soit v6=ret vaaumoinsunfilswdans T(r) tel que l[w] d[v].
6. Modifier l’algorithme PP pour calculer, pour tout sommet vd’un graphe, pa[v] qui vaut
vrai si et seulement si vest un point d’articulation. Comparer la complexité de cet
algorithme avec celle de l’algorithme de la question 2.
1
7. Tester lalgorithme modié sur le graphe Gci-dessus et sur le graphe obtenu en ajoutant
àGl’arête {6,3}.
8. Tester lalgorithme sur le graphe Hci-dessous, en partant du sommet r=0 et en suivant
l’ordre croissant des sommets.
2 3
1
0 7 8
94
6 5
Rappel :
0PP(G)
1pour chaque sommet u de X faire
2couleur[u] <- BLANC
3pere[u] <- nil
4temps <- 0
5pour chaque sommet u de X faire
6si couleur[u] = BLANC
7alors Visiter_PP(u)
0Visiter_PP(u)
1couleur[u] <- GRIS
2d[u] <- temps <- temps + 1
3pour chaque v de Adj[u] faire
4si couleur[v] = BLANC
5alors pere[v] <- u
6Visiter_PP(v)
7couleur[u] <- NOIR
8f[u] <- temps <- temps + 1
2
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 !