Graphes - Séance 71 Graphes - Séance 7 G. Richomme gwenael.richomme@univ-montp3.fr Université...

Post on 06-Feb-2021

4 views 0 download

Transcript of Graphes - Séance 71 Graphes - Séance 7 G. Richomme gwenael.richomme@univ-montp3.fr Université...

  • 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