Vous êtes sur la page 1sur 1

UNIVERSITÉ DE CAEN

UFR Sciences L3 MASS, L3 Maths


Optimisation combinatoire
TP2 : Parcours de graphes

Exercice 1. Soit le graphe orienté ci-dessous :

F B A

G D C

a) Pour le sommet A donner le parcours en profondeur du graphe et préciser les différents


types d’arêtes rencontrés. Faire la même chose à partir du sommet E
b) Faire la même chose avec le parcours en largeur.
Exercice 2. En python on codera un graphe, donné par sommets et listes de successeurs, par
une structure de dictionnaire : d={cle_1:val_1,...,cle_n:val_n} et on peut accéder à une
valeur par d[cle_i]. Pour nous les clés seront les noms des sommets et les valeurs les listes
des successeurs. Par exemple pour les graphe ci-dessus on aura :
G={’A’:[’B’],
’B’:[’C’,’D’],
’C’:[’A’],
’D’:[’A’,’C’],
’E’:[’F’,’G’],
’F’:[’B’],
’G’:[’D’,’F’]}
On veux générer aléatoirement un graphe à partir d’une liste de sommets. Pour cela on va
utiliser l’algorithme suivant :
– Pour chaque arrête possible, on tire au hasard l’entier 0 ou 1
– Si on obtient 1, on met cette arrête dans le graphe.
Dans Python, les fonctions aléatoires sont dans le paquet random. Regarder sur la docu-
mentation Python ce que font les fonctions randrange et choice
a) Combien d’arrêtes, au maximum, peux avoir un graphe orienté à n sommets ? Même chose
pour un graphe non orienté. On s’interdit les arrêtes partant et arrivant au même sommet.
b) Écrire une fonction GrapheOrientAlea(L) qui construit un graphe orienté aléatoire à partir
de la liste de sommets L.
c) Écrire une fonction GrapheNonOrientAlea(L) qui construit un graphe non orienté aléatoire
à partir de la liste de sommets L.
Exercice 3.
a) Écrire une fonction RechProf(G,s,etat) qui fait la recherche en profondeur dans un graphe
G à partir du sommet s et etat étant un dictionnaire de clé les sommets et de valeur 0
ou 1 selon que le sommet a déjà été visité ou non par une recherche en profondeur ; on
retournera la suite des sommets visités.
b) Faire la même chose pour une fonction de recherche en largeur RechLarg(G,s,etat)

Vous aimerez peut-être aussi