Graphes - Séance 71 Graphes - Séance 7 G. Richomme [email protected] Université...

55

Transcript of Graphes - Séance 71 Graphes - Séance 7 G. Richomme [email protected] Université...

  • 1

    Graphes - Séance 7

    G. [email protected]

    Université Paul Valéry Montpellier 3

    Licence AES parcours Misahs

    cours 2012-2013

    [email protected] Graphes - Séance 7

  • 2

    Complexité d'un parcours

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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)

    [email protected] 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)

    [email protected] 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)

    [email protected] 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)

    [email protected] 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)

    [email protected] Graphes - Séance 7

  • 11

    Degré d'un sommet

    [email protected] 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).

    [email protected] 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).

    [email protected] 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).

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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 ?

    [email protected] 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 ?

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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.

    [email protected] 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

    [email protected] 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.

    [email protected] 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 ′.

    [email protected] 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

    [email protected] 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

    [email protected] 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

    [email protected] Graphes - Séance 7

  • 22

    Exercice

    A faire Peut-on adapter la recherche d'un parcours eulérien à ungraphe orienté ? Si oui, comment ?

    [email protected] Graphes - Séance 7