• Aucun résultat trouvé

1. Retrouvez dans votre cours les algorithmes réalisant respectivement l’exploration en pro- fondeur et en largeur d’un graphe à partir d’un sommet donné.

N/A
N/A
Protected

Academic year: 2022

Partager "1. Retrouvez dans votre cours les algorithmes réalisant respectivement l’exploration en pro- fondeur et en largeur d’un graphe à partir d’un sommet donné."

Copied!
2
0
0

Texte intégral

(1)

Licence Informatique Algorithmique des graphes 2020–2021 TD 2 - Parcours de graphes et applications.

Dans toute cette feuille de TD, on ne considère que des graphes simples non-orientés.

Exercice 1.

1. Retrouvez dans votre cours les algorithmes réalisant respectivement l’exploration en pro- fondeur et en largeur d’un graphe à partir d’un sommet donné.

2. Déroulez ces deux algorithmes sur le graphe suivant, en partant de A, puis en partant de M . Donnez les arbres correspondant aux différents parcours, et numérotez les sommets dans l’ordre où ils ont été découverts (sans les étapes intermédiaires).

A G

C

H I

B

F E

D

J K

L M

3. Les algorithmes vus en cours renvoient une liste de sommets ; modifiez-les afin qu’ils renvoient chacun l’arbre correspondant au parcours. Pour cette question, on supposera pour simplifier que le graphe à explorer est connexe.

4. Donnez un exemple de graphe G et un sommet v tels que l’exploration en largeur de G à partir de v ne parcourt pas tous les sommets de G.

Exercice 2.

1. Donnez un algorithme qui prend en entrée un graphe G et produit une forêt obtenue en parcourant le graphe avec une stratégie de parcours en largeur. (Attention, on ne donne pas de point de départ pour ce parcours)

2. Donnez un algorithme qui prend en entrée un graphe G et produit une forêt obtenue en parcourant le graphe avec une stratégie de parcours en profondeur.

Exercice 3.

Étant donnés un graphe G et un sommet v de G, on note :

— T

L,v

l’arbre résultant de l’exploration en largeur de G à partir de v ;

— T

P,v

l’arbre résultant de l’exploration en profondeur de G à partir de v.

1. Soit G le graphe complet à 4 sommets numérotés de 0 à 3. Construisez T

P,0

et T

L,0

. 2. Plus généralement, on appelle K

n

le graphe complet à n sommets ; définissez T

P,0n

et T

L,0n

. 3. On veut démontrer que la propriété suivante est vraie pour tout graphe simple connexe :

G est un arbre ⇔ G est connexe et pour tout sommet v de G on a T

L,v

= T

P,v

. (a) (⇒) Justifiez que si G est un arbre, alors pour tout sommet v de G on a T

L,v

= T

P,v

. (b) (⇐) On va raisonner par contraposée. Reformulez la propriété à démontrer.

Page 1 / 2

(2)

Licence Informatique Algorithmique des graphes 2020–2021 (c) Finissez la démonstration.

Exercice 4.

Reprenons l’algorithme d’exploration en profondeur d’un graphe dans sa version itérative.

1. Comment pourrait-on tester si un sommet a déjà été visité sans utiliser la structure déjà_visités ?

2. En utilisant cette idée, écrivez une fonction parcours_profondeur_simple qui effectue l’exploration en profondeur d’un graphe à partir d’un sommet sans construire la structure déjà_visités.

3. Quelle sera la complexité de l’algorithme résultant, en supposant qu’on l’exécute sur une liste d’adjacence ?

4. Quelle sera la complexité de l’algorithme résultant, en supposant qu’on l’exécute sur une matrice d’adjacence ?

5. Votre binôme de projet a pris l’initiative de “simplifier” l’algorithme d’exploration en profondeur en vous proposant le pseudocode ci-dessous. Ce pseudocode est-il correct ? Déroulez-le sur le graphe complet à quatre sommets. Expliquez où se trouve le problème.

Algorithme : ParcoursProfondeurDouteux (G, départ)

1

résultat ← pile();

2

déjà_visités ← tableau(G.nombre_sommets(), faux );

3

a_traiter ← pile();

4

a_traiter.empiler(départ);

5

tant que a_traiter.pas_vide() faire

6

sommet = a_traiter.dépiler();

7

résultat.empiler(sommet);

8

déjà_visités[sommet] = vrai ;

9

pour chaque v dans renverser(G.voisins(sommet)) faire

10

si ¬ déjà_visités[v] alors a_traiter.empiler(voisin) ;

11

renvoyer résultat;

Exercice 5.

Un étudiant a essayé d’implémenter les algorithmes de parcours en largeur, avec et sans reconstruction de l’arbre de parcours. Malheureusement, il a oublié de suivre la convention consistant à explorer les sommets dans l’ordre lexicographique. On veut pouvoir vérifier si ses résultats sont néanmoins corrects.

1. Écrivez un algorithme qui, étant donné un graphe connexe G, un arbre couvrant T pour G et un sommet source s, renvoie vrai si T est un arbre de parcours en largeur pour G à partir de s et faux sinon. Seul l’arbre T est donné ; il n’est pas nécessaire de savoir dans quel ordre l’étudiant a numéroté ses sommets lors de son parcours.

2. Écrivez un algorithme qui, étant donné un graphe connexe G et un ordre L sur ses sommets, renvoie vrai si L ordonne les sommets de G selon un parcours en largeur, et faux sinon.

Page 2 / 2

Références

Documents relatifs

Nous l'avons dit : la drépanocytose est une maladie gouvernée par un seul gène : le gène de la globine bêta, dont il existe deux version, l'une responsable de la.

cela indique les valeurs de x pour lesquelles la courbe représentative de f est située au dessous de celle

(b) A chaque étape de l'algorithme, choisir arbitrairement un sommet en dehors de ceux qui ont déjà été retenus dans la construction, et relier par l'arête de poids le plus faible,

Si le graphe G n’est pas connexe cet algorithme va retourner une forêt couvrante de G, autrement dit un graphe dont chacune des composantes connexes est un arbre couvrant l’une

3- Ne cessant d’améliorer notre commande, nous avons constaté qu’un phénomène d’oscillation de l’eau autour d’un niveau provoque de nombreux démarrage et arrêt

Bref, ce document refléterait bien la « réalité » sociale de l’époque et, même si, le professeur prend soin de dire que « c’est une caricature », il n’est pas sûr que

In order to foster human-centred policies, the secretariat undertook research on topical issues such as the policies, programmes and status of human resources development in Africa;

On décompose le volume du liquide en rotation en couronnes cylindriques de rayon r, d’épaisseur dr et de hauteur z(r). Exprimer le volume dV d’une telle couronne. En supposant que