You are on page 1of 42

Hind ELOUEDI

1
Plan
 Introduction
 Les arbres
 Structure arborescente
 Terminologie de base
 Parcours des arbres
 Arbres binaires
 Arbres binaires de recherche

 Les graphes
 Concepts de base
 Représentation des graphes
 Graphes Eulériens et Hamiltoniens
 Exercice: Chèvre – Choux - Loup

2
Introduction
 Pour représenter les données, on peut utiliser:
 Des structures de données statiques, simples (entier, réel, caractère,
etc.) et composées (enregistrements, tableaux, matrices, etc.).
 Des structures de données dynamiques (se basant sur les pointeurs)
linéaires (listes simplement chaînées, listes doublement chaînées,
piles, files, etc.).
 Des structures de données non linéaires, sujet de notre cours:
 Les arbres.
 Les graphes.

3
Les arbres
 Structure arborescente
 De nombreuses informations peuvent être organisées sous forme arborescente, par
exemple, un arbre généalogique, un dictionnaire, une structure syntaxique, etc.
 Exemple 1: Une expression arithmétique peut se représenter sous forme d’une
arborescence.
Par exemple, en utilisant les priorités usuelles d’opérateurs, l’expression A+ (B-1) * C a
pour représentation :

A *

- C

B 1
4
Les arbres (2)
 Structure arborescente (2)
 Exemple 2: Un type composé peut être représentée sous forme d’un arbre. Par exemple le
type Etudiant peut être représentée par l’arborescence suivante :
Type
Adresse = Enregistrement
Rue: Chaîne[15]
CPost: Entier Etudiant
Ville: Chaîne[15]
FinEnregistrement
Classe = Enregistrement
Code: Chaîne[6]
Spéc: Chaîne[30] NCE Nomp Adr Cl
Niv: Entier
Grp: Entier
FinEnregistrement
Etudiant = Enregistrement
NCE: Chaîne[8] Rue CPost Ville Code Spéc Niv Grp
Nomp: Chaîne[30]
Adr: Adresse
Cl: Classe
FinEnregistrement 5
Les arbres (3)
 Terminologie de base
 La terminologie de base sur les arbres va être définie à partir de l’exemple suivant.
 Soit l’arbre suivant représentant une table de matières d’un livre:

TM

T1 T2 T3

T11 T12 T21 T22 T23 T31 T32

T211 T212 T321 T322 T323

6
Les arbres (4)
 Terminologie de base (2)
 Un arbre est composé d’un ensemble d’éléments appelés nœuds.
 Un arbre est définie d’une manière récursive comme suit, un arbre est: soit
vide, soit constituée d’un élément auquel sont chaînés un ou plusieurs
arbres.
 Le nœud de départ d’un arbre est appelé racine (dans l’exemple c’est TM).
 TM a trois sous-arbres dont les racines correspondent aux chapitres T1, T2
et T3. Cette relation est représentée par les branches (segments) reliant TM
à T1, T2 et T3. TM est le père de T1, T2 et T3 et ces nœuds sont les trois fils
de TM.
 Chaque nœud peut avoir 0 ou plusieurs descendants (fils). Si un nœud n’a
pas de descendant, il est appelé feuille.

7
Les arbres (5)
 Terminologie de base (3)
 Chaque nœud de l’arbre possède un ascendant direct (père), sauf la
racine.
 Entre la racine et n’importe quel nœud de l’arbre, il y a un chemin qui a
une longueur qui est le nombre d’arcs (branches) entre les deux nœuds.
 La profondeur d’un nœud est la longueur du chemin entre la racine et ce
nœud. Par exemple, la profondeur de T21 est 2.
 Le plus long chemin reliant la racine à une feuille est appelé hauteur de
l’arbre.
 La taille d’un arbre est le nombre de nœuds de cet arbre.
 Lorsqu’un arbre admet, pour chaque nœud, au plus n fils, l’arbre est dit
n-aire. Si n=2, l’arbre est dit binaire.

8
Les arbres (6)
 Parcours des arbres
 Il existe plusieurs moyens de parcourir les nœuds d’un arbre. Les trois parcours les
plus importants sont: le parcours préfixé ou pré-ordre (preorder), infixé ou in-ordre (inorder) et
postfixé ou post-ordre (postorder).
 Ces parcours sont définis récursivement de la manière suivante:
 Si un arbre R est vide, la liste vide constitue le parcours préfixé, infixé et postfixé de R.
 Si R consiste en un seul nœud, la liste composée de ce nœud constitue le parcours pré-ordre, en-ordre et
post-ordre de R.
 Sinon, supposons que A est un arbre de racine R à k sous-arbres A1, A2, …, Ak:
 Pour effectuer le parcours préfixé des nœuds de A (RGD), on commence par la racine R puis on
entreprend le parcours préfixé des nœuds de A1, de ceux de A2 et ainsi de suite jusqu’aux nœuds de
Ak (Racine puis à partir de la gauche en allant vers la droite).
 Pour effectuer le parcours infixé des nœuds de A (GRD), on commence par le parcours infixé des
nœuds de A1, puis on passe par la racine R, puis on effectue le parcours infixé des nœuds de A2
jusqu’à Ak.
 Pour effectuer le parcours postfixé des nœuds de A (GDR), on effectue le parcours postfixé des
nœuds de A1 puis de A2 et ainsi de suite jusqu’à Ak, et on termine par la racine R.

9
Les arbres (7)
 Parcours des arbres (2)
 Application: On va appliquer ces trois types de parcours sur l’arbre de la
table des matière présenté précédemment.
 Parcours préfixé:
TM, T1, T11, T12, T2, T21, T211, T212, T22, T23, T3, T31, T32, T321, T322, T323
 Parcours infixé:
T11, T1, T12, TM, T211, T21, T212, T2, T22, T23, T31, T3, T321, T32, T322, T323
 Parcours infixé:
T11, T12, T1, T211, T212, T21, T22, T23, T2, T31, T321, T322, T323, T32, T3, TM

10
Les arbres (8)
 Arbres binaires
 Définition: Un Arbre binaire est un ensemble de nœuds ayant la structure
suivante:
 Une donnée de type TypeElem appelée racine de l'arbre binaire.
 Un pointeur gauche sur un nœud indiquant le sous-arbre gauche (SAG) de l'arbre
binaire (il peut pointer vers Nil).
 Un pointeur droit indiquant le sous-arbre droit (SAD) de l'arbre binaire (il peut
pointer vers Nil).
 Déclaration: La déclaration d’un arbre binaire se présente comme suit:

Type
TypeElem = … -- Type à définir
Noeud = Enregistrement
gauche : @Noeud -- Comme pour les listes chaînées, on constate que
Info : TypeElem -- l’accès à l’arbre est réalisé par une variable que nous
droit : @Noeud -- appellerons très souvent R et dont il faudra ne pas perdre le contenu
FinEnregistrement
Arbre = @Noeud -- Définition du type Arbre
11
Les arbres (9)
 Arbres binaires (2)
 Représentation: Un Arbre binaire R est représentée graphiquement comme suit:

R
A

B E

C D F H

 On peut noter un arbre binaire sous forme parenthésée. Par exemple l’arbre R ci-
dessus se note ainsi : A (B (C, D), E (F (G,), H))
12
Les arbres (10)
 Arbres binaires (3): Opérations de base (primitives d’accès)
1. Initialisation d’un arbre binaire:
4. Sous-arbre gauche d’un arbre bnaire:
Procédure InitArbre (Var R: Arbre)
-- Précondition: - Fonction SAG (Don R: Arbre) : TypeElem
-- Postcondition: transforme l’arbre R en arbre vide -- Précondition: Non ArbreVide (F)
Début -- Postcondition: retourne le sous-arbre gauche de R
R  Nil Début
Fin SAG  R.@.gauche
Fin
2. Test d’arbre vide:
Fonction ArbreVide (Don R: Arbre) : Booléen 5. Sous-arbre droit d’un arbre bnaire:
-- Précondition: -
Fonction SAD (Don R: Arbre) : TypeElem
-- Postcondition: retourne vrai si R est vide et faux sinon
-- Précondition: Non ArbreVide (F)
Début
-- Postcondition: retourne le sous-arbre droit de R
ArbreVide  (R = Nil)
Début
Fin
SAD  R.@.droit
3. Racine d’un arbre binaire: Fin
Fonction Racine (Don R: Arbre) : TypeElem
-- Précondition: Non ArbreVide (R)
-- Postcondition: retourne la racine de l’arbre R
Début
Racine  R@.Info
Fin 13
Les arbres (11)
 Arbres binaires (4): Algorithmes de parcours
1. Parcours Préfixé: Ce parcours consiste à traiter la racine Début
d’abord puis parcourir le sous-arbre gauche et ensuite le sous- Si (Non ArbreVide (R)) -- Si (R ≠ Nil)
arbre droit. Alors
Procédure Prefixe (Don R: Arbre) Infixe (SAG (R)) -- Infixe (R@.gauche)
-- Précondition: - Traiter (Racine (R)) -- Traiter (R@.Info)
-- Postcondition: Parcours en préfixé de l’arbre R Infixe (SAD (R)) -- Infixe (R@.droit)
Début FinSi
Si (Non ArbreVide (R)) -- Si (R ≠ Nil) Fin
Alors 3. Parcours Postfixé: Ce parcours consiste parcourir le sous-
Traiter (Racine (R)) -- Traiter (R@.Info) arbre gauche, puis le sous-arbre droit et ensuite traiter la racine.
Prefixe (SAG (R)) -- Prefixe (R@.gauche)
Procédure Infixe (Don R: Arbre)
Prefixe (SAD (R)) -- Prefixe (R@.droit)
-- Précondition: -
FinSi
-- Postcondition: Parcours en postfixé de l’arbre R
Fin
Début
2. Parcours Infixé: Ce parcours consiste parcourir le sous-arbre Si (Non ArbreVide (R)) -- Si (R ≠ Nil)
gauche, puis traiter la racine et ensuite parcourir le sous-arbre Alors
droit. Postfixe (SAG (R)) -- Postfixe (R@.gauche)
Procédure Infixe (Don R: Arbre) Postfixe (SAD (R)) -- Postfixe (R@.droit)
-- Précondition: - Traiter (Racine (R)) -- Traiter (R@.Info)
-- Postcondition: Parcours en infixé de l’arbre R FinSi
Fin 14
Les arbres (12)
 Arbres binaires (5): Exercices
Exercice 1: Calcul de la taille d’un arbre binaire. Exercice 2: Calcul de nombre de feuilles d’un arbre binaire.
La taille d’un arbre est le nombre de nœuds de l’arbre. Une feuille dans un arbre est un nœud qui n’a pas de fils.
Voici la fonction Taille qui calcule d’une manière récursive Voici la fonction NbFeuilles qui calcule d’une manière récursive le
la taille d’un arbre binaire R. nombre de feuilles d’un arbre binaire R.
Fonction Taille (Don R: Arbre): Entier Fonction NbFeuilles (Don R: Arbre): Entier
-- Précondition: - -- Précondition: -
-- Postcondition: Retourne la taille de l’arbre R -- Postcondition: Retourne le nombre de feuilles de l’arbre R
Début Début
Si ArbreVide (R)) -- Si (R = Nil) Si ArbreVide (R)) -- Si (R = Nil)
Alors Alors
Taille  0 NbFeuilles  0
Sinon Sinon
Taille  1 + Taille (R@.gauche) + Taille (R@.droit) NbFeuilles  NbFeuilles(R@.gauche) + NbFeuilles(R@.droit)
FinSi FinSi
Fin Fin

15
Les arbres (13)
 Arbres binaires de recherche (ABR)
 Définition: Appelé aussi arbre binaire ordonné (ABO), si pour chaque racine de
l’arbre, toutes les valeurs dans le sous-arbre gauche sont inférieures à celles du
sous-arbre droit. L’intérêt de cet arbre est d’accélérer la recherche d’un élément.
Il est à noter qu’il n’y a pas de répétition de valeurs dans un arbre binaire de
recherche. Les valeurs sont uniques.
15
 Exemple: Voici un arbre binaire de recherche:
 A chaque fois qu’on se fixe une racine, toutes les valeurs
du sous-arbre gauche sont inférieures à la valeur de la
6 18
racine et toutes les valeurs du sous-arbre droit sont
supérieures à la valeur de la racine. 4 10 16 25
 Cette règle doit être vérifiée à tous les niveaux.
 Remarque: Toutes les primitives utilisées pour un 20 30
Binaires sont utilisées pour les ABR.

16
Les arbres (14)
 Arbres binaires de recherche (ABR) (2)
 Algorithme de recherche dans un ABR: Cette recherche se fait d’une manière
récursive en se basant sur la propriété d’un arbre binaire de recherche (les valeurs du
sous-arbre gauche sont inférieures à celles du sous-arbre droit et elles sont uniques.

Fonction Recherche_ABR (Don R : Arbre, Don val : TypeElem) : Arbre


Début -- Cette fonction retourne le pointeur sur la valeur val si elle existe, Nil sinon.
Si (R = Nil) ou (Racine (R) = val)
Alors
Recherche_ABR  R
Sinon
Si (Racine(R) > val)
Alors Recherche_ABR  Recherche_ABR (R@.gauche, val)
Sinon Recherche_ABR  Recherche_ABR (R@.droit, val)
Finsi
Finsi
Fin

17
Les arbres (15)
 Arbres binaires de recherche (ABR) (3)
 Algorithme d’insertion dans un ABR: L’insertion se fait de la même manière que la
recherche, il faut chercher le bon endroit pour insérer le nouvel élément.

Procédure Inserer_ABR (Var R: Arbre, Don val: TypeElem)


Variable
Nd: Arbre
Début
Si (ArbreVide (R)) Alors
Allouer (nd)
nd@.Info  val
nd@.gauche  Nil
nd@.droit  Nil
R  nd
Sinon
Si (R@.Info > val)
Alors Inserer_ABR (R@.gauche, val)
Sinon Inserer_ABR (R@.droit, val)
FinSi
FinSi
Fin
18
Les arbres (16)
 Arbres binaires de recherche (ABR) (4)
 Algorithme de suppression d’un élément dans un ABR: Le principe consiste
à retrouver l’élément à supprimer, puis de distinguer différents cas :
 Si le nœud a 0 ou 1 fils, l’élément sera supprimé en le remplaçant par la racine de son sous-
arbre gauche ou droit ou Nil, ou,
 S’il a deux fils, dans ce cas le nœud à supprimer sera changé par le plus grand élément se
trouvant dans son sous arbre gauche pour garder la propriété d’un arbre binaire ordonné.
 Dans ce qui suit la procédure Suppr_ABR, permettant de supprimer un
élément e de l’arbre R, en étudiant les différents cas.
 La procédure SupprMax est utilisée dans Suppr_ABR afin de déterminer le
maximum dans le sous-arbre gauche, dans le cas où le nœud à supprimer a
deux fils.

19
Les arbres (17)
 Arbres binaires de recherche (ABR) (5)
 Algorithme de suppression d’un élément dans un ABR (2):
Procédure Suppr_ABR (Var R : Arbre, Don e :TypeElem) FinSi
Variable FinSi
MAX : Entier Sinon Ecrire ("Elément inexistant")
Début FinSi
Si (Non ArbreVide (R)) Fin
Alors
Si (e < Racine (R)) Procédure SupprMax (Var R : Arbre, Var MAX : TypeElem)
Alors Suppr_ABR (SAG (R), e) Début
Sinon Si (ArbreVide (SAD (R)))
Si (e > Racine (R)) Alors
Alors Suppr_ABR (SAD (R), e) MAX  Racine (R)
Sinon -- On a trouvé l’élément e R  SAG (R)
Si (ArbreVide (SAG (R))) -- 0 ou 1 fils Sinon
Alors R  SAD (R) SupprMax (SAD (R), MAX)
Sinon FinSi
Si (ArbreVide (SAD (R))) Fin
Alors R  SAG (R)
Sinon -- 2 fils
SupprMax (SAG (R), MAX)
R@.Info  MAX
FinSi 20
Les arbres (18)
 Arbres binaires de recherche (ABR) (6)
 Algorithme de calcul de la hauteur d’un arbre binaire: C’est le nombre de nœuds qui
constituent le plus long chemin de la racine à une feuille. Un arbre vide a une hauteur
nulle.

Fonction Hauteur (Don R : Arbre) : Entier


-- Précondition: R est un arbre binaire
-- Postcondition: retourne la hauteur de l’arbre
Variable
hg, hd, max : Entier
Début
Si (Non ArbreVide (R)) Alors
hg  Hauteur (SAG (R)) -- Hauteur du sous-arbre gauche
hd  Hauteur (SAD (R)) -- Hauteur du sous-arbre droit
Si (hg > hd) -- Maximum entre les deux hauteurs
Alors max  hg
Sinon max  hd
FinSi
Hauteur  max + 1
Sinon Hauteur  0
FinSi
Fin
21
Les graphes
 Concepts de base – Graphe
 Un graphe G = (V, E) est constitué d’un ensemble de points appelés
sommets ou nœuds (noté V).
 Les sommets sont reliés par des arcs ou des arêtes (noté E) selon que
le graphe est orienté (diagraphe) ou non orienté.

Graphe non orienté Graphe orienté

 Remarque: Deux arcs orientés, AB, B A constituent une même


arête.
22
Les graphes (2)
 Concepts de base (2) - Arc - Arête
Graphe non orienté Graphe orienté
Une arête est définie par une paire non-ordonnée Un arc est définie par une paire ordonnée de
de sommets. sommets. Dans l'arc (A, B):
- A est prédécesseur de B
A B - B est successeur de A
A B
Deux sommets sont adjacents (ou incidents) s'il
existe un une arête les reliant. Deux sommets sont adjacents (ou incidents) s'il
existe un arc les reliant.

Boucle: arête reliant un sommet à lui-même. Boucle: arc reliant un sommet à lui-même.

A A

23
Les graphes (3)
 Concepts de base (3) – Degré d’un sommet
 Le degré d’un sommet A (noté d(A)):
 Graphe non orienté: nombre d'arêtes dont le sommet A est une extrémité (Les boucles sont comptées deux fois).
 Graphe orienté: nombre d’arcs arrivant ou partant de A (Les boucles sont comptées deux fois).
 Un sommet de degré 1 est appelé sommet pendant.
 Un puits est un sommet d'un graphe orienté dont le degré sortant est égal à 0.
 Une source est un sommet d'un graphe orienté dont le degré entrant est égal à 0.
 Exemples:

A e2 A e1
e3 e2 e3
e1 D B e5 D B

e4 e4
C C

Sommet A B C D Sommet A B C D
Degré 2 3 2 3 Degré 3 3 2 4
24
Les graphes (4)
 Concepts de base (4) – Propriétés
 P1: Poignées de mains: La somme des degrés des sommets d’un graphe (orienté ou
non) est égale à deux fois le nombre de ses arcs (ou arêtes).
 P2: Dans un graphe, le nombre de sommets de degré impair est toujours pair (on ne
peut donc pas avoir de graphe ayant un seul sommet de degré impair).

A A

D B D B

C C

Sommet A B C D Sommet A B C D
Degré 2 3 2 3 Degré 3 3 2 4

10 = 5 * 2  5 étant le nombre d’arêtes 12 = 6 * 2  6 étant le nombre d’arcs


25
Les graphes (5)
 Concepts de base (5) – Chaîne – Cycle (graphe non orienté)
 Chaîne: suite de sommets adjacents formant une suite d'arêtes connexes reliant un
sommet à un autre (par convention tout chemin contient au moins une arête).
 Chaîne élémentaire: chaîne où chaque sommet y apparaît au plus une fois.
 Chaîne simple: si chaque arête apparaît au plus une fois.
 Chaîne fermée: si son sommet de départ est égal au sommet d’arrivée.
 Cycle: est une chaîne fermée où seul le sommet de départ apparaît deux fois.
 Longueur d'une chaîne: nombre de ses arêtes.
 Distance entre deux sommets: longueur de la chaine la plus courte les reliant.
 Exemples:
 Remarque: Les sommets en rouge les arêtes en bleu.
 (v1, e1, v2, e2, v3) : une chaîne simple et élémentaire de longueur 2
 (v2, e2, v3, e4, v4, e4, v3, e2, v2) : une chaîne fermée
 (v2, e2, v3, e4, v4, e5, v2) : un cycle
 La distance entre v1 et v4 est de 2

26
Les graphes (6)
 Concepts de base (6) – Chemin – Circuit (graphe orienté)
 Chemin: suite de sommets adjacents formant une suite d’arcs connexes reliant un
sommet à un autre (par convention tout chemin contient au moins un arc).
 Circuit: (souvent référencé par cycle par abus de langage): chemin dont le sommet de
départ est égal à son sommet d’arrivée.
 Longueur d'une chaîne: nombre de ses arcs.
 Distance entre deux sommets: longueur du chemin le plus court les reliant.
 Exemples:
 Remarque: Les sommets en rouge les arêtes en bleu.
 Le chemin (v3, e3, v4, e4, v5) est de longueur 2 (on le note aussi (v3, v4, v5))
 (v1, v6, v2, v1) est un circuit
 la distance entre v3 et v5 est de 2

27
Les graphes (7)
 Concepts de base (7) – Ordre – Degré – Diamètre d’un graphe
 Ordre d’un graphe: (orienté ou non), est le nombre des sommets du graphe.
 Degré d’un graphe: (orienté ou non), est le degré maximum de tous ses sommet.
 Diamètre d’un graphe: (orienté ou non), est la plus grande de toutes les distances entre
deux sommets quelconques du graphe.

A A

D B D B

C C

• Ordre du graphe = 4
• Ordre du graphe = 4
• Degré du graphe = 3
• Degré du graphe = 3
• Diamètre du graphe = 3
• Diamètre du graphe = 2
(distance entre A et B = 3, ACDB)
28
Les graphes (8)
 Concepts de base (8) – Graphe valué
 Un graphe G = (S,A) est dit valué (ou pondéré) si on affecte à tous ses arcs (cas orienté)
ou ses arêtes (cas non orienté) des valeurs (poids).

5 B
A

E
4
2
4
12

1 D
C

Le poids d’une chaîne est la somme des poids des arêtes qui Le poids d’un chemin est la somme des poids des arcs qui le
la composent. composent.
La plus courte chaîne entre deux sommets est celle qui a le La plus court chemin entre deux sommets est celui qui a le
poids minimum (parmi toutes les chaînes qui les relient). poids minimum (parmi tous les chemins qui les relient).
La distance entre deux sommets est égale au poids de la La distance entre deux sommet est égale au poids du chemin
chaîne la plus courte les reliant le plus court les reliant
29
Les graphes (9)
 Représentation des graphes – Matrice d’adjacence
 On peut représenter un graphe (orienté ou non) de n sommets par une matrice
d’adjacence (matrice de connexité) carrée n*n.
A B C D E F
A E B A A 0 1 0 1 0 1
A B C D E
D A 0 0 1 1 1 B 0 0 0 1 1 0
M= B 0 0 1 0 0 C M= C 0 0 0 1 0 0
C C 1 1 0 1 1 F
D 0 0 0 0 1 0
D 1 0 1 0 1 E 0 0 0 0 0 0
B E 1 0 1 1 0 D E F 0 1 0 0 0 0

M(i,j)=1 signifie que le sommet i M(i,j)=1 signifie que le sommet i


est adjacent au sommet j. est prédécesseur du sommet j.

 Il n’ya que des 0 sur la diagonale sauf s’il y une boucle (=1)
 La matrice est symétrique
30
Les graphes (10)
 Représentation des graphes (2) – Matrice d’adjacence (2)
 Les graphes valués sont représentés à l’aide des matrices d’adjacence en spécifiant le
poids au niveau de la matrice (au lieu de 1).
 Deux graphes sont isomorphes s’ils correspondent à la même matrice d’adjacence.
 Exemples:

A B

0 0 1 1 0 1 1 1
0 0 0 1 C D 1 0 1 1
A
1 0 0 1 1 1 0 1
1 1 1 0 1 1 1 0
B
C D

31
Les graphes (11)
 Représentation des graphes (3) – Matrice d’adjacence (3)
 Un intérêt de cette représentation est que la détermination de chemins revient au calcul
des puissances successives de la matrice M comme le montre le théorème suivant:
Théorème: Soit MP la p-ième puissance de la matrice M, le coefficient Mp(i,j) est
égal au nombre de chemins de longueur p de G dont l’origine est le sommet i et
dont l’extrémité est le sommet j.
 On effectue un récurrence sur p. Pour p=1 le résultat est immédiat car un chemin de
longueur 1 est un arc du graphe. Le calcul de MP, pour p> 1 donne:

 Or tout chemin de longueur p entre i et j se décompose en un chemin de longueur p-1


entre xi et un certain k suivi d'un arc reliant k et j. Le résultat découle alors de
l’hypothèse de récurrence suivant laquelle Mp(i,j) est le nombre de chemins de
longueur p-1 joignant i à k.
32
Les graphes (12)
 Représentation des graphes (4) – Matrice d’adjacence (4)
 Exemples:
A E

D
M2 = MM=

C
 M(1,1)=3 signifie qu’il existe 3 chemins de longueur
2 entre A et A: (A, E, A) - (A, D, A) - (A, C, A)
B
 M(1,2)=1 signifie qu’il existe 1 chemins de longueur
2 entre A et B: (A, C, B)

 M(1,4)=7 signifie qu’il existe 7 chemins de longueur 3 entre


M3 = M2  M= A et D: (A, E, C, D) - (A, C, E, D) - (A, E, A, D) - (A, C, A, D)
- (A, D, A, D) - (A, D, C, D) - (A, D, E, D)
33
Les graphes (13)
 Représentation des graphes (5) – Liste d’adjacence
 On peut représenter un graphe (orienté ou non) de n sommets par une liste
d’adjacence.

A E B A
A: B, D, F
D A: C, D, E B: D, E
B: C C: D
C
C: A, B, D, E F D: E
C
D: A, C, E E: -
E: A, C, D F: B
B D E

On associe à chaque sommet la liste des


On associe à chaque sommet la liste sommets qu’on peut atteindre directement en
des sommets auxquels il est adjacent. suivant un arc (dans le sens de la flèche).
 Pour les graphes valués, dans la liste d’adjacence, on doit sauvegarder le poids de l’arc
(ou de l’arête).
34
Les graphes (14)
 Graphes Eulériens – Euler (1707 – 1783)
 Chaîne Eulérienne: chaîne passant une et une seule fois par toutes les arêtes d’un
graphe.
 Chemin Eulérien : chemin passant une et une seule fois par tous les arcs d’un graphe.
 Cycle Eulérien: cycle passant une et une seule fois par toutes les arêtes d’un graphe
(non orienté).
 Circuit Eulérien: circuit passant une et une seule fois par tous les arcs d’un graphe
(orienté).
 Définitions: Un graphe G = (S,A) est Eulérien s’il admet un cycle (cas non orienté) ou
un circuit (cas orienté) Eulérien.
 Un graphe G = (S,A) est semi-Eulérien s’il admet une chaîne (cas non orienté) ou un
chemin (cas orienté) Eulérien.

35
Les graphes (15)
 Graphes Eulériens (2)
 Exemples:

Graphe eulérien Graphe semi-eulérien Graphe semi-eulérien


CDBCABEC DABCEBDCA 717566235344

36
Les graphes (16)
 Graphes Hamiltoniens – Hamilton (1805 – 1865)
 Chaîne Hamiltonienne: Chaîne passant une et une seule fois par tous les sommets
d’un graphe.
 Chemin Hamiltonien : chemin passant une et une seule fois par tous les sommets
d’un graphe.
 Cycle (circuit) Hamiltonien : cycle (circuit) passant une et une seule fois par tous les
sommets d’un graphe.
 Définitions: Un graphe G = (S,A) est Hamiltonien s’il admet un cycle (cas non orienté)
ou un circuit (cas orienté) Hamiltonien.
 Un graphe G = (S,A) est semi-Hamiltonien s’il s’il admet une chaîne (cas non orienté)
ou un chemin (cas orienté) Hamiltonien.

37
Les graphes (17)
 Graphes Hamiltoniens (2)
 Exemples:

a c
b

a: non Hamiltonien
b: semi-Hamiltonien Ce graphe orienté est
c: Hamiltonien. Hamiltonien en suivant les
flèches rouges on trouve le
circuit Hamiltonien

38
Les graphes (18)
 Exercice – Chèvre - Chou - Loup
Une chèvre (C), un chou (X) et un loup (L) se trouvent sur la
rive d’un fleuve ; un passeur (P) souhaite les transporter sur
l’autre rive mais, sa barque étant trop petite, il ne peut
transporter qu’un seul d’entre eux à la fois.
Comment doit-il procéder afin de ne jamais laisser ensemble
et sans surveillance le loup et la chèvre, ainsi que la chèvre
et le choux ?

39
Les graphes (19)
 Exercice (2) – Chèvre - Chou - Loup
 Cette situation peut être modélisée à l’aide d’un graphe. Désignons par :
 P le passeur,
 C la chèvre,
 X le chou,
 L le loup.
 Les sommets du graphe sont des couples précisant qui est sur la rive initiale, qui est
sur l’autre rive. Ainsi, le couple (PCX,L) signifie que le passeur est sur la rive initiale
avec la chèvre et le chou (qui sont donc sous surveillance), alors que le loup est sur
l’autre rive.
 Une arête relie deux sommets lorsque le passeur peut passer d’une situation à l’autre.
En transportant la chèvre, le passeur passe par exemple du sommet (PCX,L) au
sommet (X,PCL).
 Naturellement, on ne considèrera pas les sommets dont l’une des composantes est CX
ou LC car ces situations sont interdites.

40
Les graphes (20)
 Exercice (3) – Chèvre - Chou - Loup
 Il suffit ensuite de trouver un chemin (le plus court par exemple) entre la situation
initiale (PCXL,-) et la situation finale souhaitée (-,PCXL). La figure suivante donne un
tel chemin :

 Le passeur prend la chèvre


(PCXL, -) (PCL, X) (PCX, L) (PXL, C) (PC, XL)  Puis retour en laissant chèvre
 Le passeur prend le loup
 Puis retour en laissant loup et en ramenant chèvre
 Puis il prend le chou
 Puis retour en laissant chou avec le loup
 Puis retour en laissant le loup et chou
(XL, PC) (C, PXL) (L, PCX) (X, PCL) (-, PCXL)
 Puis il prend la chèvre

41
A Suivre…

42

You might also like