100% ont trouvé ce document utile (1 vote)
310 vues3 pages

TD: Algorithmes de Graphes pour GI1

Transféré par

Thouraya Ayadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
310 vues3 pages

TD: Algorithmes de Graphes pour GI1

Transféré par

Thouraya Ayadi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ecole Nationale d’Ingénieurs de Sfax

A. U : 2022/2023
Dép. Génie Informatique & Mathématique
Appliquée Auditoire : GI1
TD 2 : Parcours en profondeur d’un graphe

L’objectif de ce TD est d’implémenter l’algorithme de parcours en profondeur (DFS) vus en


cours et de l’appliquer pour :
 Tester si un sommet t est accessible à partir d’un sommet S0 et afficher le chemin
parcourus.
 Ordonnancement de tâches d’un graphe orienté.
 Recherche des composantes connexes d’un graphe non orienté.
 Recherche des composantes fortement connexes d’un graphe orienté.

Comme dans le TD1, nous allons utiliser les listes d’adjacence pour représenter des graphes
orientés ou non orientés. Aussi, les graphes sont entrés comme suit :
1. La première ligne donne respectivement le nombre de sommets et le nombre d’arcs (arêtes).
2. Les lignes suivantes donnent, chacune, les extrémités d’un des arcs du graphe.
3. La dernière ligne (optionnelle) indique le sommet de départ et le sommet d’arrivée, si besoin.

Exercice 1 : Recherche d’un chemin dans un labyrinthe

Dans cet exercice on souhaite parcourir un labyrinthe contenant 50 sommets et 49 arcs. On veut
faire le parcours du graphe du sommet 1 au sommet 50.
1. Compléter le fichier [Link] (la fonction DFS_Rec(adj,x,y)) pour qu’il affiche 1 s’il
existe une chaine entre le sommet x et y ; si oui afficher le chemin parcourus.
2. Tester la fonction sur le graphe suivant qui est représenté par le fichier (‘[Link]’)

4 3
4 3
2 4
3 2
1 4
L’exécution du DFS donne lieu à l’affiche de 0.

3. Puis, tester la fonction sur le graphe (‘[Link]’) correspondant au labyrinthe donné.


L’exécution du DFS donne lieu à l’affichage du chemin suivant :

-1/3-
Exercice 2 : Recherche des composantes connexes
Compléter le fichier nb_comp_connexe.py (la fonction NB_ComposConnexe(adj)) pour
qu’il affiche le nombre de composantes connexes du graphe donné.
Le graphe suivant (fichier [Link]), donne lieu à l’affichage de 2.
8 9
1 4 6
1 5 3 7
1 5
2 4
2 5
8
3 4 4 2
3 5
6 7
6 8
7 8

Exercice 3 : Ordonnancement des tâches


Dans cet exercice, on souhaite trouver un ordre de suivi de modules d’un cursus en respectant
les contraintes de prérequis entre ces modules. Noté bien que le graphe ne doit pas contenir de
cycle.
Compléter le fichier tri_topologique.py (la fonction Tri_Top(adj)) pour qu’il affiche
un ordre correct de suivi de modules.

Exemple 1 :
Le graphe suivant (fichier [Link]) :
4 3
1 2
4 1
3 1

Donne lieu à l’affichage : 4 3 1 2

Exemple 2 :
Le graphe suivant (fichier [Link]) :

4 1
1 3

Donne lieu à l’affichage de : 4 2 1 3

Exemple 3 :
Le graphe suivant (fichier [Link]) :

5 7
2 1
3 2
3 1
4 3
4 1
5 2
5 3

Donne lieu à l’affichage : 5 4 3 2 1

-2/3-
Exercice 4 : Recherche des composantes fortement connexes
Dans cet exercice, on souhaite déterminer s’il existe un chemin entre n’importe quelles deux
intersections dans une ville. Ceci revient à déterminer si le nombre de composants fortement
connectés dans le graphe sous-jacent modélisant les rues est égal ou non à 1.

Compléter le fichier comp_fortement_connexe.py, particulièrement les fonctions


dfs(adj,order) et Compos_Fortement_connex(adj) pour que cette dernière fonction
affiche le nombre total de CFC dans le graphe donné en paramètre.

Exemple 1 :
Le graphe suivant (fichier [Link]) :

4 4
1 2
4 1
2 3
3 1

Donne lieu à l’affichage de 2. Les deux CFC sont : {1, 2, 3} et {4}

Exemple 2
Le graphe suivant (fichier [Link]) :

5 7
2 1
3 2
3 1
4 3
4 1
5 2
5 3

Donne lieu à l’affichage : 5 CFC : {1}, {2}, {3}, {4} et {5}

Exemple 3
Le graphe suivant (fichier [Link]) :

8 12
12
15
23 1 2 3 4
25
36
37
47
48
56
62 5 6 7 8
76
87

Donne lieu à l’affichage : 4 CFC : {1}, {2, 3, 5, 6, 7}, {4} et {8}

-3/3-

Vous aimerez peut-être aussi