Théorie de graphe

Université Cadi Ayyad

Ecole Normale Supérieure de Marrakech

Licences professionnelles de qualification dans les métiers de l’éducation Option Informatique

Plan

  • Introduction
  • Qu’est ce qu’un graphe ?
  • Les types de graphes         
    • Les graphes connexes
    • Les graphes non orientés
    • Les graphes orientés
    • Les graphes valués
  • Exercice

Introduction à la théorie des graphes

  • Quel est le plus court chemin (en distance ou en temps) pour se rendre d’une ville à une autre?
  • Comment minimiser la longueur totale des connexions d’un circuit?
  • Peut-on mettre une rue en sens unique sans rendre impossible la circulation en ville?

Qu’est ce qu’un graphe ?

Définition :

     Un graphe est défini par deux ensembles :

     un ensemble X= {x1 ; x2 ; …xn } dont les éléments sont appelés sommets , et un ensemble

A= {a1 ;a2; …am }, dont les éléments sont appelés arêtes.

On le note G= (X ;A).

Qu’est ce qu’un graphe ?
sommets et boucle d'un graphe

 Le degré d’un sommet x de G :

 Le nombre d’arêtes incidentes à x. Il est noté d(x).

 Lorsque d(x)=0, on dit que le sommet x est isolé.

 Lorsque d(x)=1, on dit que le sommet x est pendant.

Le degré d’un sommet d'un sommets de graphe

LES TYPES DE GRAPHE

Les graphes Connexes

Connexité :

  Un graphe G = (X, U) est connexe si i, j ϵX, il existe une chaîne entre i et j.

  Exemple :

Les graphes non orientés

Définition :

Un graphe non orienté G est déterminé par la donnée :

  • d’un ensemble fini S dont les éléments sont appelés sommets ;
  • d’un ensemble U de parties de S à un ou deux élément(s) .

chaîne  :

Une suite d’arêtes consécutives.

Les graphes non orientés

Cycle  : 

   Chaîne qui commence et se termine au même sommet.

Graphes eulériens

  • On dit qu’un graphe est eulérien s’il est possible de trouver un cycle passant une et une seule fois par toutes les arêtes.
  • On dit qu’un graphe est semi-eulérien s’il est possible de trouver une chaîne passant une et une seule fois par toutes les arêtes.
•(A; B; C; C; D; B) est une chaîne eulérienne.
Ce graphe ne contient aucun cycle eulérien.
une des chaînes eulérienne possibles: 
ACEDCBEAB
Cycle eulérien : AEDCBECA

Graphes hamiltoniens

  • On dit qu’un graphe est hamiltonien s’il est possible de trouver un cycle passant une et une seule fois par tous les sommets.
  • On dit qu’un graphe est semi-hamiltonien s’il est possible de trouver une chaîne passant une et une seule fois par tous les sommets.
Dans le graphe ci-dessus, la chaîne ABCDEFG est une chaîne hamiltonienne.Dans le graphe ci-dessous, BADECGFB est un cycle hamiltonien.

Matrice d’adjacences

  On peut représenter un graphe par une matrice d’adjacences. Une matrice (n x m) est un tableau de n lignes et m colonnes. (i,j) désigne l’intersection de la ligne i et de la colonne j.
Dans une matrice d’adjacences, les lignes et les colonnes représentent les sommets du graphe. Un 1 à la position (i,j) signifie que le sommet i est adjacent au sommet j.

Exemple :

Matrice d'adjacences

Listes d’adjacences

  • On peut aussi représenter un graphe en donnant pour chacun de ses sommets la liste des sommets auxquels il est adjacent.

Exemple:

Cherchons les listes d’adjacences du graphe G:

Exemple

les listes d'adjacences du graphe

Coloriage de sommet de graphe:

  • Colorer un graphe consiste à affecter une couleur à chacun de ses sommets de sorte que deux sommets adjacents ne portent pas la même couleur. 
  • Le nombre chromatique d’un graphe est le plus petit nombre de couleurs permettant de le colorer.

Algorithme de coloriage de sommet  d’un graphe

Algorithme de coloriage de sommet  d’un graphe

Exemple :

Solution :

Arbres :

  • un arbre est un graphe non orienté, acyclique et connexe. Sa forme évoque en effet la ramification des branches d’un arbre.

Exemple:

Les arbres binaires 

Un arbre binaire est un arbre tel que les nœuds sont au plus deux fils (gauche et droit).

Exemple :

  Parcours d’arbres binaires :

  • On appelle parcours d’un arbre binaire tout algorithme permettant d’accéder une fois et une seule à tous les nœuds de l’arbre.
  • On distingue trois types de parcours:
    • Parcours en pré-ordre (préfixé) 
    • Parcours en post-ordre  (post fixé) 
    • Parcours en ordre (infixé) 

Parcours en pré-ordre (préfixé) :

Soit un arbre dont la racine est A et une référence gauche et droite à ses deux fils

VisiterPréfixe(Arbre A){

   Visiter(A)

  Si Non_Vide(gauche(A))      VisiterPréfixe(gauche(A))

   Si Non_Vide(droite(A))        VisiterPréfixe(droite(A))

}

     Dans cet ordre, chaque nœud est visité ainsi que chacun de ses fils

Exemple:

Parcours en pré-ordre (préfixé) :
Les graphes non orientés

Parcours en post-ordre (post fixé) :

VisiterPostfixe(Arbre A) {

  Si Non_Vide(gauche(A))         VisiterPostfixe(gauche(A))

  Si Non_Vide(droite(A))      VisiterPostfixe(droite(A))

  Visiter(A)

}

     Dans un parcours postfixé, on affiche chaque nœud après avoir affiché chacun de ses fils.

Exemple :

Parcours en post-ordre (post fixé)

Parcours en ordre (infixé) :

VisiterInfixe(Arbre A) {

  Si Non_Vide(gauche(A))

   VisiterInfixe(gauche(A))

  Visiter(A)

   Si Non_Vide(droite(A))

  VisiterInfixe(droite(A))

}

Exemple :

Les graphes non orientés Parcours en ordre (infixé)

Les graphes orientés

Définition des graphes orientés

     Un graphe orienté ou digraphe  est un graphe dont les arêtes sont orientées, à savoir qu’il est possible de distinguer l’extrémité initiale d’une arête de son extrémité finale.

orienté     non orienté

    arc ↔ arête

chemin ↔ chaîne

circuit ↔ cycle

Matrice d’adjacences

  On peut représenter un digraphe par une matrice d’adjacences. Une matrice (n x m) est un tableau de n lignes et m colonnes. (i,j) désigne l’intersection de la ligne i et de la colonne j.
Dans une matrice d’adjacences, les lignes et les colonnes représentent les sommets du graphe. Un 1 à la position (i,j) signifie qu’un arc part de i pour rejoindre j.

Exemple:

Matrice d'adjacences Les graphes orientés

Listes d’adjacences

  • On peut aussi représenter un digraphe en donnant pour chacun de ses sommets la liste des sommets qu’on peut atteindre directement en suivant un arc (dans le sens de la flèche).

Exemple :

Algorithme de parcours en largeur

Étapes de l’algorithme :

1.Mettre le nœud de départ dans la file.

2.Retirer le nœud du début de la file pour l’examiner.

3.Mettre tous les voisins non examinés dans la file (à la fin).

4.Si la file n’est pas vide reprendre à l’étape 2.

    Exemple:

•Exploration en largeur à partir de 4 :

   4, 2, 5, 3, 6, 1

•Exploration en largeur à partir de 5 :

  5, 6, 3, 1, 4, 2

Parcours en profondeur :

Principe de  l’algorithme :

1-Dans le parcours en profondeur, on utilise une pile. On empile le sommet de départ.

2-Si le sommet de la pile présente des voisins qui ne sont pas dans la pile, ni déjà passés dans la pile : •alors on sélectionne l’un de ces voisins et on l’empile, •sinon on dépile (c’est a dire on supprime l‘élément du sommet de la pile).

3- On recommence au point 2 (tant que la pile n’est pas vide).

    Exemple:

•Exploration en profondeur à partir de 4 :

  4, 2, 3, 1, 5, 6

•Exploration en profondeur à partir de 3 :

  3, 1, 2, 4, 5, 6

Les graphes Valués

Définition :

Graphe où chacune des arêtes a une valeur numérique.

Les graphes Valués

Poids de l’arête : Valeur attribuée à l’arête

Poids d’une chaîne : Somme des valeurs attribuées à chaque arête de la chaîne.

Poids du graphe : Somme des valeurs attribuées à chaque arête du graphe.

Ex. :  Le poids du graphe ABCDE est de 34.

Dijikstra : 

Enoncé:

Une association organise un rallye sportif en VTT : six zones de regroupement notées de A à F et sont reliées par des chemins représentés par les arêtes et pondérées par les distances, exprimées en km, nécessaires pour parcourir ces chemins.

  Un participant est actuellement au point de rendez-vous D et on lui signale qu’il a oublié son dossard au point B .

   Donner, le trajet correspondant à la distance la plus courte lui permettant d’aller récupérer son dossard .

Solution

Telecharger PDF