• Aucun résultat trouvé

TP Graphes 4 Licence Informatique - 2nde ann´ee Ann´ee 2021-2022

N/A
N/A
Protected

Academic year: 2022

Partager "TP Graphes 4 Licence Informatique - 2nde ann´ee Ann´ee 2021-2022"

Copied!
1
0
0

Texte intégral

(1)

TP Graphes 4

Licence Informatique - 2nde ann´ ee Ann´ ee 2021-2022

L’objectif de ce TP est d’implanter l’algorithme de parcours en profondeur d’un graphe, de deux mani`eres diff´erentes.

Exercice 1

En vous appuyant sur ce qui a ´et´e vu en cours sur le parcours en profondeur, implantez les fonctions qui permettent de l’implanter dans un fichier nomm´etp4.cpp.

Exercice 2

La version vue en cours utilise la r´ecursivit´e pour le parcours en profondeur. On souhaite remplacer celle-ci par l’utilisation d’une pile, qui contiendra les diff´erents sommets en attente pour la remont´ee dans le parcours.

Question 1

On propose la structure de pile d’entiers suivante, qui sera repr´esent´ee par une liste chaˆın´ee de MaillonPile :

struct MaillonPile {

int valeur; // valeur du maillon

MaillonPile *dessous; // ´el´ement inf´erieur de la pile };

struct Pile {

MaillonPile *sp; // sommet de la pile };

A partir de cette structure, cr´eez les fonctions de manipulation suivantes :

— void initialiserPile(Pile &p)qui initialise la pile pass´ee en param`etre `a vide ;

— bool estVide(Pile p)qui renvoittruesi la pile pass´ee en param`etre est vide, falsesinon ;

— void empiler(Pile &p, int v)qui ajoute la valeurven sommet de la pile p;

— int depiler(Pile &p)qui enl`eve le maillon en sommet de la pilepet renvoit sa valeur. La pile est suppos´ee non vide ;

Question 2

En utilisant cette structure de pile, proposez une seconde version du parcours en profondeur qui n’utilise pas de r´ecursivit´e. On pr´ecise les points suivants :

— la pile sera utilis´ee pour mettre en attente les sommets d´ecouverts pendant l’exploration, mais pas enti`erement trait´es (tous les voisins n’ont pas encore ´et´e examin´es) ;

— pour conserver l’ordre de parcours en profondeur, il ne faut traiter qu’un seul sommet adjacent `a la fois pour un sommet qui vient d’ˆetre d´ecouvert. Associ´e `a la remarque pr´ec´edente concernant la pile, cela signifie que lorsque vous empilez un sommet, son pr´ed´ecesseur dans l’ordre de parcours doit ˆetre pr´esent dans la pile juste avant lui ...

Il est conseill´e de r´efl´echir au fonctionnement de l’algorithme en le d´eroulant sur un sch´ema de graphe simple et en vous appuyant sur les r´esultats de parcours obtenus par l’algorithme r´ecursif implant´e au premier exercice.

1

Références

Documents relatifs

Dans cet exercice, vous allez d´ evelopper une application permettant de relire ces matrices puis les sauvegarder dans le nouveau format qui sera propos´ e. Il est conseill´

Vous vous assurerez que cette archive contient bien votre nom dans son intitul´ e (ce qui doit ˆ etre le cas avec les directives qui vous sont donn´ ees ci-dessous pour nommer

Le premier param` etre repr´ esente le nom qu’aura le fichier (extension .svg), le second param` etre repr´ esentera la variable de type fichier qui sera intialis´ ee par la fonction

Dans cette premi` ere partie, vous allez mettre en place les fonctions permettant d’initialiser la grille support au labyrinthe, de dessiner cette grille au format SVG et

Cette fonction sera appel´ ee apr` es construction du graphe de parcours, pour demander les cases de d´ epart et d’arriv´ ee dans le labyrinthe. Calcul

Figure 1 – Images obtenues ` a partir du fichier scene01.txt avant et apr` es implantation de la m´ ethode d’intersection de la classe Sphere.. Cette image correspond ` a une vue de

Remarque : n’utilisez pas la classe Plan de l’application pour calculer l’intersection entre le rayon et le plan support du triangle, car l’intersection obtenue serait r´

Enfin, compl´ etez votre code de mani` ere ` a pouvoir ´ evaluer le temps de calcul de la partie vectorielle de la fonction, l’afficher avec le mˆ eme format que pour la partie