Vous êtes sur la page 1sur 2

FSTE Master SIDI

TP1 : Introduction à la théorie des graphes


Rappel :

Dans les exercices suivants on suppose : qu'un graphe G d'ordre N est représenté par une matrice
carrée de dimension NxN, un sommet est représenter par un indice i (tel que 0 <= i < N), et un arc qui
relie deux sommets a et b est représenter par le tuple (a, b).

Si G est un graphe non orienté, la valeur de la case G[a][b] est 1 (resp le cout de l'arête si le graphe
est valué) s'il y a un arc qui relie les deux sommet a et b ou 0 si non

Si G est un graphe orienté, la valeur de la case G[a][b] est 1 (resp le cout de la flèche si le graphe est
valué) il y a une flèche du sommet a vers le sommet b ou 0 si non

1. Définir la fonction def OrdreGraphe(G) qui prend comme argument un graphe G et retourne
l'ordre du graphe G.
Exemple :
si le graphe G est sous la forme :

0 1 1 1 A
B
1 0 1 0

1 1 0 0
D
C
1 0 0 0

La fonction OrderGraphe retourne la valeur 4


2. Définir la fonction def degre_sommet(G, s) qui prend comme argument un graphe G et un
sommet s et retourne le degré de sommet s.

3. Définir la fonction def EstSommetAdjacent(G, x, y) qui prend comme argument un graphe G non
orienté et deux sommets x et y; et elle retourne True si x et y sont adjacents ou false sinon.

4. Définir la fonction def EstIsole( G, a) qui prend comme argument le graphe non orienté G et un
sommet a de G et qui renvoie True si a est un sommet isolé ou False sinon .

5. Définir la fonction def ListeArc(G) qui prend comme argument un graphe G non orienté et
retourne la liste des arcs qui relie les sommets du graphe G.
Exemple :
la fonction ListeArc retourne la liste : [(0, 1), (0, 2), (0, 3), (1, 0), (1, 2),(2, 0), (2, 1), (3, 0)]

6. définir la fonction def Est_chaine(G, E,S,) qui prend comme argument un graphe G et deux
sommets E et S et qui retourne True si il existe une chaine qui relie les deux sommet E et S ou
False sinon.
Théorème . Soit G la matrice d’adjacence d’un graphe et soit p ≥ 1. Alors, l’élément P[i][j] de la
matrice Gp est égal au nombre de chaınes de longueur p reliant le sommet i au sommet j.
Les « 0 » présents dans la matrice Gp signifient un chemin de longueur p impossible
7. Écrire la fonction réciproque def listes_adjacence(G) qui prend en argument une matrice
d’adjacence G et renvoie liste d’adjacence correspondant ou un dictionnaire.

La théorie des graphes 1/2 OUHDA Med


FSTE Master SIDI

TP2: Parcourir un graphe

1) Parcours en largeur d’un graphe.


Algorithme
On choisit un sommet s dont tous les successeurs n’ont pas encore
découverts.
Parcourir les sommets adjacents à s et les stocker dans une file.
Pour chaque sommet défilé, parcourir ses adjacents et les enfiler.
On introduit un tableau Marque pour parcourir chaque sommet une
seule fois
• Si un nœud v est déjà visité Marque[v]=1
• Si un nœud v n’est pas encore découvert Marque[v]=0
Pour cette implémentation, le grapghe est représenté avec une liste d’adjacence L.
a) Ecrire une fonction def successeurs(G,s) qui retourne la listes des successeurs d’un sommet.
b) Ecrire une fonction def ParcoursEnLageur(G,r) qui affiche et parcourir le graphe en largeurs.
2) Parcours en profondeur:
Algorithme:
 On choisit un sommet s dont tous les successeurs n’ont pas
encore découverts.
 On introduit un tableau Marque pour parcourir chaque sommet une
seule fois
 Initialement tous les nœuds sont marqués ” non visités”.
 Au départ la pile est vide.
 On applique les étapes suivantes :
1) on empile un sommet choisi comme point de départ.
2) si le sommet de la pile présente des voisins non encore
entrés dans la pile, alors on empile l’un de ses voisins sinon
on dépile (c’est à dire on enlève l’élément au sommet de la
pile).
3) on recommence au point 2 tant que la pile n’est pas vide
a) Ecrire une fonction def Parcoursprofondeur(G,r) qui affiche et parcourir le graphe en profondeur
3) tester les fonctions de parcours sur le graphe ci-dessous qui représente un réseau routier.

La théorie des graphes 2/2 OUHDA Med