Post on 06-Feb-2021
1
Graphes - Séance 7
G. Richommegwenael.richomme@univ-montp3.fr
Université Paul Valéry Montpellier 3
Licence AES parcours Misahs
cours 2012-2013
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
2
Complexité d'un parcours
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Complexité en espace
Fonction qui exprime l'espace mémoire nécessaire pour l'exécutiond'un algorithme par rapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.de la structure des données :→ estimation dans le pire des cas.de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)
→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :
→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :
→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)
→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
3
Complexité d'un algorithme ?
Complexité en temps
Fonction qui exprime le temps d'exécution d'un algorithme parrapport à la taille des données.
Cette complexité en temps dépend potentiellement :
de l'implémentation (donc du programmeur)→ on supposera une implémentation au meilleur coût.
de la structure des données :→ estimation dans le pire des cas.
de la machine :→ on se donnera un modèle de machine (RAM)→ on essaiera juste de donner l'ordre de grandeur.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
4
Modèle de machine (RAM simpli�é et imprécis)
RAM = Random Access Machine
Fonctionnement séquentiel
Mémoire centrale partagée
Chaque instruction "élémentaire" de la machine coûte 1
accès à la mémoire aux variables (a�ectation ou lecture)opération numérique de base (+, -, . . . ). . .
Remarque : déterminer si une opération peut être considéréecomme élémentaire est souvent source de discussion.
Important : dans ce modèle, on peut supposer que les opérationssur les piles et sur les �les sont élémentaires
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
5
Instructions élémentaires
Dire que Chaque instruction "élémentaire" de la machine coûte 1est à comprendre par :
Le coût de chacune de ces instructions est inférieur à uneborne �xe commune.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
6
Exemple
Algo :
for i in range(0, len( L ) ):print( L[i] )
Posons n = len( L).Nombre d'opérations bornées par C .n pour une constante C .Le temps d'exécution est de l'ordre de n.
Type d'information apportée :si n double, grosso-modo le temps d'exécution aussi.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
6
Exemple
Algo :
for i in range(0, len( L ) ):print( L[i] )
Posons n = len( L).Nombre d'opérations bornées par C .n pour une constante C .Le temps d'exécution est de l'ordre de n.
Type d'information apportée :si n double, grosso-modo le temps d'exécution aussi.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
6
Exemple
Algo :
for i in range(0, len( L ) ):print( L[i] )
Posons n = len( L).Nombre d'opérations bornées par C .n pour une constante C .Le temps d'exécution est de l'ordre de n.
Type d'information apportée :si n double, grosso-modo le temps d'exécution aussi.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
7
Exemple
Algo :
num = 0for i in range(0, len( M ) ):
for j in range(0, M[i]):if M[i][j] = 1:
num = num + 1
Posons n = len(M) et m = max{ M[i] | i = 0, . . . , n − 1}.Nombre d'opérations majoré par 1 + Cnm pour une constante C .Nombre d'opérations majoré par C ′nm pour une constante C ′.Le temps d'exécution est de l'ordre de nm.Quand n = m, le temps d'exécution est de l'ordre de n2.
Type d'information apportée :si n double, grosso-modo le temps d'exécution est multiplié par 4.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
7
Exemple
Algo :
num = 0for i in range(0, len( M ) ):
for j in range(0, M[i]):if M[i][j] = 1:
num = num + 1
Posons n = len(M) et m = max{ M[i] | i = 0, . . . , n − 1}.Nombre d'opérations majoré par 1 + Cnm pour une constante C .
Nombre d'opérations majoré par C ′nm pour une constante C ′.Le temps d'exécution est de l'ordre de nm.Quand n = m, le temps d'exécution est de l'ordre de n2.
Type d'information apportée :si n double, grosso-modo le temps d'exécution est multiplié par 4.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
7
Exemple
Algo :
num = 0for i in range(0, len( M ) ):
for j in range(0, M[i]):if M[i][j] = 1:
num = num + 1
Posons n = len(M) et m = max{ M[i] | i = 0, . . . , n − 1}.Nombre d'opérations majoré par 1 + Cnm pour une constante C .Nombre d'opérations majoré par C ′nm pour une constante C ′.
Le temps d'exécution est de l'ordre de nm.Quand n = m, le temps d'exécution est de l'ordre de n2.
Type d'information apportée :si n double, grosso-modo le temps d'exécution est multiplié par 4.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
7
Exemple
Algo :
num = 0for i in range(0, len( M ) ):
for j in range(0, M[i]):if M[i][j] = 1:
num = num + 1
Posons n = len(M) et m = max{ M[i] | i = 0, . . . , n − 1}.Nombre d'opérations majoré par 1 + Cnm pour une constante C .Nombre d'opérations majoré par C ′nm pour une constante C ′.Le temps d'exécution est de l'ordre de nm.
Quand n = m, le temps d'exécution est de l'ordre de n2.
Type d'information apportée :si n double, grosso-modo le temps d'exécution est multiplié par 4.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
7
Exemple
Algo :
num = 0for i in range(0, len( M ) ):
for j in range(0, M[i]):if M[i][j] = 1:
num = num + 1
Posons n = len(M) et m = max{ M[i] | i = 0, . . . , n − 1}.Nombre d'opérations majoré par 1 + Cnm pour une constante C .Nombre d'opérations majoré par C ′nm pour une constante C ′.Le temps d'exécution est de l'ordre de nm.Quand n = m, le temps d'exécution est de l'ordre de n2.
Type d'information apportée :si n double, grosso-modo le temps d'exécution est multiplié par 4.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
7
Exemple
Algo :
num = 0for i in range(0, len( M ) ):
for j in range(0, M[i]):if M[i][j] = 1:
num = num + 1
Posons n = len(M) et m = max{ M[i] | i = 0, . . . , n − 1}.Nombre d'opérations majoré par 1 + Cnm pour une constante C .Nombre d'opérations majoré par C ′nm pour une constante C ′.Le temps d'exécution est de l'ordre de nm.Quand n = m, le temps d'exécution est de l'ordre de n2.
Type d'information apportée :si n double, grosso-modo le temps d'exécution est multiplié par 4.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
8
Ordre de grandeur
Majoration asymptotique
Soient f et g deux fonctions telles que :
il existe un entier N et une constante C > 0 tels que
pour tout n ≥ N, f (n) ≤ Cg(n).
On dit que f est majorée asymptotiquement par g.On note f = O(g).
Les opérations élémentaires ont une complexité en temps enO(1).
Notre premier exemple a une complexité en temps en O(n).
Notre deuxième exemple a une complexité en temps en O(nm)et O(n2) quand n = m.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
8
Ordre de grandeur
Majoration asymptotique
Soient f et g deux fonctions telles que :
il existe un entier N et une constante C > 0 tels que
pour tout n ≥ N, f (n) ≤ Cg(n).
On dit que f est majorée asymptotiquement par g.On note f = O(g).
Les opérations élémentaires ont une complexité en temps enO(1).
Notre premier exemple a une complexité en temps en O(n).
Notre deuxième exemple a une complexité en temps en O(nm)et O(n2) quand n = m.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
8
Ordre de grandeur
Majoration asymptotique
Soient f et g deux fonctions telles que :
il existe un entier N et une constante C > 0 tels que
pour tout n ≥ N, f (n) ≤ Cg(n).
On dit que f est majorée asymptotiquement par g.On note f = O(g).
Les opérations élémentaires ont une complexité en temps enO(1).
Notre premier exemple a une complexité en temps en O(n).
Notre deuxième exemple a une complexité en temps en O(nm)et O(n2) quand n = m.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
8
Ordre de grandeur
Majoration asymptotique
Soient f et g deux fonctions telles que :
il existe un entier N et une constante C > 0 tels que
pour tout n ≥ N, f (n) ≤ Cg(n).
On dit que f est majorée asymptotiquement par g.On note f = O(g).
Les opérations élémentaires ont une complexité en temps enO(1).
Notre premier exemple a une complexité en temps en O(n).
Notre deuxième exemple a une complexité en temps en O(nm)et O(n2) quand n = m.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
9
Quelques propriétés utiles
si f = O(g) et g = O(h) alors f = O(h).
si P(n) = aknk + ak−1n
k−1 + . . . + ak , alors P = O(nk)
si f = O(h) et g = O(h) alors f + g = O(h)
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
9
Quelques propriétés utiles
si f = O(g) et g = O(h) alors f = O(h).
si P(n) = aknk + ak−1n
k−1 + . . . + ak , alors P = O(nk)
si f = O(h) et g = O(h) alors f + g = O(h)
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
9
Quelques propriétés utiles
si f = O(g) et g = O(h) alors f = O(h).
si P(n) = aknk + ak−1n
k−1 + . . . + ak , alors P = O(nk)
si f = O(h) et g = O(h) alors f + g = O(h)
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
10
Complexité en temps de l'algorithme de parcours
O(n + m)où n est le nombre de sommets et m est le nombre d'arcs !
fonction Graphe_Accessible( G, x )ens_som_acc = { x } # ensemble des sommets accessiblesens_arcs = vide # ensemble des arcs résultatsens_arcs_a_voir = vide # ensemble des arcs à visiterPour chaque successeur y de x faire
ajouter (x, y) dans ens_arcs_a_voirtant que ens_arcs_a_voir n'est pas vide faire
(i, f) = un arc retiré de ens_arcs_a_voirsi f n'est pas dans ens_som_acc alors
ajouter (i, f) dans ens_arcsajouter f dans ens_som_accPour chaque successeur y de f faire
ajouter (f, y) dans ens_arcs_a_voirretourner le graphe (ens_som_acc, ens_arcs)
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
10
Complexité en temps de l'algorithme de parcours
O(n + m)où n est le nombre de sommets et m est le nombre d'arcs !
fonction Graphe_Accessible( G, x )ens_som_acc = { x } # ensemble des sommets accessiblesens_arcs = vide # ensemble des arcs résultatsens_arcs_a_voir = vide # ensemble des arcs à visiterPour chaque successeur y de x faire
ajouter (x, y) dans ens_arcs_a_voirtant que ens_arcs_a_voir n'est pas vide faire
(i, f) = un arc retiré de ens_arcs_a_voirsi f n'est pas dans ens_som_acc alors
ajouter (i, f) dans ens_arcsajouter f dans ens_som_accPour chaque successeur y de f faire
ajouter (f, y) dans ens_arcs_a_voirretourner le graphe (ens_som_acc, ens_arcs)
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
11
Degré d'un sommet
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
12
Degrés
b��
a
55
d ee
c
ZZ
SS
CC
b
a
yyyyyyyyyyd
c
GGGGGGGGGG
wwwwwwwwww
Le degré d'un sommet s d'un graphe non orienté est le nombred'arêtes incidentes. Notation d(s).
Le degré extérieur d'un sommet s d'un graphe orienté est lenombre d'arcs sortant de s. Notation d+(s).
Le degré intérieur d'un sommet s d'un graphe orienté est lenombre d'arcs entrant de s. Notation d−(s).
Le degré d'un sommet s d'un graphe orienté est la sommed+(s) + d−(s).
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
12
Degrés
b��
a
55
d ee
c
ZZ
SS
CC
b
a
yyyyyyyyyyd
c
GGGGGGGGGG
wwwwwwwwww
Le degré d'un sommet s d'un graphe non orienté est le nombred'arêtes incidentes. Notation d(s).
Le degré extérieur d'un sommet s d'un graphe orienté est lenombre d'arcs sortant de s. Notation d+(s).
Le degré intérieur d'un sommet s d'un graphe orienté est lenombre d'arcs entrant de s. Notation d−(s).
Le degré d'un sommet s d'un graphe orienté est la sommed+(s) + d−(s).
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
12
Degrés
b��
a
55
d ee
c
ZZ
SS
CC
b
a
yyyyyyyyyyd
c
GGGGGGGGGG
wwwwwwwwww
Le degré d'un sommet s d'un graphe non orienté est le nombred'arêtes incidentes. Notation d(s).
Le degré extérieur d'un sommet s d'un graphe orienté est lenombre d'arcs sortant de s. Notation d+(s).
Le degré intérieur d'un sommet s d'un graphe orienté est lenombre d'arcs entrant de s. Notation d−(s).
Le degré d'un sommet s d'un graphe orienté est la sommed+(s) + d−(s).
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
13
Liens degrés - nombre d'arcs
Théorème
Dans n'importe quel graphe orienté les trois valeurs suivantes sontégales :
la somme des degrés extérieurs ;
la somme des degrés intérieurs ;
le nombre d'arcs.
Conséquence :
dans un graphe orienté, la somme des degrés est égale audouble du nombre d'arcs du graphe.
idem dans un graphe non orienté.
Exercice : Dans un graphe non orienté,montrer que le nombre de sommets de degré impair est pair.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
13
Liens degrés - nombre d'arcs
Théorème
Dans n'importe quel graphe orienté les trois valeurs suivantes sontégales :
la somme des degrés extérieurs ;
la somme des degrés intérieurs ;
le nombre d'arcs.
Conséquence :
dans un graphe orienté, la somme des degrés est égale audouble du nombre d'arcs du graphe.
idem dans un graphe non orienté.
Exercice : Dans un graphe non orienté,montrer que le nombre de sommets de degré impair est pair.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
13
Liens degrés - nombre d'arcs
Théorème
Dans n'importe quel graphe orienté les trois valeurs suivantes sontégales :
la somme des degrés extérieurs ;
la somme des degrés intérieurs ;
le nombre d'arcs.
Conséquence :
dans un graphe orienté, la somme des degrés est égale audouble du nombre d'arcs du graphe.
idem dans un graphe non orienté.
Exercice : Dans un graphe non orienté,montrer que le nombre de sommets de degré impair est pair.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
13
Liens degrés - nombre d'arcs
Théorème
Dans n'importe quel graphe orienté les trois valeurs suivantes sontégales :
la somme des degrés extérieurs ;
la somme des degrés intérieurs ;
le nombre d'arcs.
Conséquence :
dans un graphe orienté, la somme des degrés est égale audouble du nombre d'arcs du graphe.
idem dans un graphe non orienté.
Exercice : Dans un graphe non orienté,montrer que le nombre de sommets de degré impair est pair.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
14
Exercice
Euler : les ponts de K÷nisberg
Source image = wikipedia commons (domaine public)
Prouver qu'il n'existe pas de chemin partant d'un point, passantune fois et une seule par tous les ponts, et revenant au point dedépart ?
Comment généraliser le raisonnement ?
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
http://commons.wikimedia.org/wiki/File:Konigsberg_bridges.png?uselang=fr
14
Exercice
Euler : les ponts de K÷nisberg
Source image = wikipedia commons (domaine public)
Prouver qu'il n'existe pas de chemin partant d'un point, passantune fois et une seule par tous les ponts, et revenant au point dedépart ?Comment généraliser le raisonnement ?
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
http://commons.wikimedia.org/wiki/File:Konigsberg_bridges.png?uselang=fr
15
Graphe eulérien
Dé�nition
Un graphe non orienté est eulérien s'il existe un cycle qui passe unefois et une seule par toutes les arêtes (un tel cycle sera appeléeulérien).
Exemple d'application : élaboration d'une tournée de facteur.
Théorème d'Euler
Un graphe connexe d'au moins deux sommets est eulérien si etseulement si tous les sommets sont de degrés pairs.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
15
Graphe eulérien
Dé�nition
Un graphe non orienté est eulérien s'il existe un cycle qui passe unefois et une seule par toutes les arêtes (un tel cycle sera appeléeulérien).
Exemple d'application : élaboration d'une tournée de facteur.
Théorème d'Euler
Un graphe connexe d'au moins deux sommets est eulérien si etseulement si tous les sommets sont de degrés pairs.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
15
Graphe eulérien
Dé�nition
Un graphe non orienté est eulérien s'il existe un cycle qui passe unefois et une seule par toutes les arêtes (un tel cycle sera appeléeulérien).
Exemple d'application : élaboration d'une tournée de facteur.
Théorème d'Euler
Un graphe connexe d'au moins deux sommets est eulérien si etseulement si tous les sommets sont de degrés pairs.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
16
Une preuve en 3 étapes
Si un graphe possède un cycle eulérien, alors tous les sommetssont de degrés pairs.
Si un graphe connexe d'au moins 2 sommets a tous sessommets de degrés pairs, alors il contient un cycle passant auplus une fois par chaque arête.
Si un graphe connexe d'au moins 2 sommets a tous sessommets de degrés pairs, alors il contient un cycle eulérien.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
16
Une preuve en 3 étapes
Si un graphe possède un cycle eulérien, alors tous les sommetssont de degrés pairs.
Si un graphe connexe d'au moins 2 sommets a tous sessommets de degrés pairs, alors il contient un cycle passant auplus une fois par chaque arête.
Si un graphe connexe d'au moins 2 sommets a tous sessommets de degrés pairs, alors il contient un cycle eulérien.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
16
Une preuve en 3 étapes
Si un graphe possède un cycle eulérien, alors tous les sommetssont de degrés pairs.
Si un graphe connexe d'au moins 2 sommets a tous sessommets de degrés pairs, alors il contient un cycle passant auplus une fois par chaque arête.
Si un graphe connexe d'au moins 2 sommets a tous sessommets de degrés pairs, alors il contient un cycle eulérien.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
17
Éléments de preuve (2/5)
Si un graphe connexe d'au moins 2 sommets a tous ses sommets dedegrés pairs, alors il contient un cycle passant au plus une fois parchaque arête.
Preuve constructive par algorithme glouton suivant qui cherche uncycle (non nécessairement eulérien) dans le graphe
Choisir un sommet x0Considérer un successeur y 6= x0Marquer l'arête [x0, y ]x ← yTant que x 6= x0 faire
Considérer un successeur y de x avec [x , y ] non marquéMarquer [x , y ]x ← y
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
18
Éléments de preuve (3/5)
Remarques le graphe obtenu en enlevant les arêtes marquées à la�n de l'algorithme précédent :
véri�e encore : le degré de chaque sommet est pair ;
pas nécessairement connexe ;
chaque composante connexe a moins d'arêtes que le grapheinitial.
Il est donc possible pour chaque composante connexe d'appliquerl'algorithme glouton précédent.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
19
Éléments de preuve (4/5)
Fusion de cycle
Considérons deux cycles passant par un sommet x ,
l'un partant de x suivant un chemin c et
l'autre partant de x suivant un chemin c ′,
alorsil existe un cycle partant de x suivant le chemin c puis le chemin c ′.
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
20
Éléments de preuve (5/5)
Si un graphe connexe d'au moins 2 sommets a tous ses sommets dedegrés pairs, alors il contient un cycle eulérien.
Algorithme récursif :Construire un cycle C dans G avec algo glouton précédentConsidérer le graphe G ′ des arêtes non marquéesEnlever de G ′ les sommets isolésPour chaque composante connexe G ′
construire un cycle eulérien C ′
fusionner C ′ à C et prendre pour C le résultat
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
21
Exercices
Les graphes suivants sont-ils eulériens ? Si oui, proposer uncycle eulérien. A terminer
a
b
wwwwwwwwwwc
FFFFFFFFFF
d
************
�������������������
~~~~~~~~~~~~~~~~~e
AAAAAAAAAAAAAAAAA
&&&&&&&&&&&&&&&&&&&&
�������������
a
b
oooooooooooooo c
OOOOOOOOOOOOOO
f
pppppppppppppp
NNNNNNNNNNNNNN
0000
0000
0000
0
�������������
d
********************
���������������������������
e
@@@@@@@@@@@@@@@@@@@@@@@@@@@
''''''''''''''''''''''''''''
���������������������
A quelle condition un graphe complet est-il eulérien ? A faire
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
21
Exercices
Les graphes suivants sont-ils eulériens ? Si oui, proposer uncycle eulérien. A terminer
a
b
wwwwwwwwwwc
FFFFFFFFFF
d
************
�������������������
~~~~~~~~~~~~~~~~~e
AAAAAAAAAAAAAAAAA
&&&&&&&&&&&&&&&&&&&&
�������������
a
b
oooooooooooooo c
OOOOOOOOOOOOOO
f
pppppppppppppp
NNNNNNNNNNNNNN
0000
0000
0000
0
�������������
d
********************
���������������������������
e
@@@@@@@@@@@@@@@@@@@@@@@@@@@
''''''''''''''''''''''''''''
���������������������
A quelle condition un graphe complet est-il eulérien ? A faire
gwenael.richomme@univ-montp3.fr Graphes - Séance 7
22
Exercice
A faire Peut-on adapter la recherche d'un parcours eulérien à ungraphe orienté ? Si oui, comment ?
gwenael.richomme@univ-montp3.fr Graphes - Séance 7