![](//s1.studylibfr.com/store/data-gzf/a510ebc697cda16c66fca8486f481739/1/000585044.htmlex.zip/bg3.jpg)
(a) Constater que c’est vrai si Gn’a pas d’arête.
(b) Soit m≥1. Supposons la propriété vraie pour tous les graphes ayant strictement moins de m
arêtes. Soit Gun graphe ayant marêtes.
i. Soit P= (u0, . . . , uk)un chemin de longueur maximale kdans le graphe G. En considérant
le degré de u0dans G, prouver que Gcontient un cycle.
ii. Soit G0le graphe obtenu en enlevant à Gles arêtes d’un cycle de G(il en existe d’après
2bi). Montrer que l’hypothèse de récurrence s’applique à G0et conclure.
3. Montrer par récurrence sur le nombre d’arêtes que tout graphe connexe dont les sommets sont de
degré pair est eulérien.
4. Quels sont les graphes complets eulériens ? Quels sont les hypercubes eulériens ? L’exemple 1 est-il
eulérien ? Et l’exemple 2 ?
On suppose jusqu’à la fin de cette partie que Gest eulérien. La partie III montre comment trouver
efficacement des cycles dans le graphe Get ainsi, en utilisant les idées de la question précédente,
créer un tour eulérien de G. Nous allons plutôt utiliser l’algorithme suivant (que nous ne prouverons
que partiellement) dans lequel sest un sommet de G:
01 T <- l’arbre couvrant obtenu par dfs(G, s)
02 ordonner les listes d’adjacence de G en mettant pour chaque sommet
de G ses voisins dans T (père, fils) en fin de liste
03 Tour <- liste vide
04 u <- s
05 tant que u a un voisin:
06 v <- le premier élément de la liste des voisins de u
07 ajouter (v, u) à Tour
08 supprimer l’arête {u, v} du graphe G
09 u <- v
10 renvoyer Tour
5. Écrire la fonction tour_eulerien : graphe -> sommet -> arete list implémentant l’algorith-
me ci-dessus. Tester cette fonction sur l’exemple 2, sur le graphe complet K5, sur l’hypercube Q4.
Qu’arrive-t-il si on exécute cette fonction sur l’exemple 1 ? Sur l’hypercube Q3? Sur le graphe
complet K4?
6. Montrer que le nombre d’itérations de la boucle « tant que » est inférieur ou égal à m. En particulier,
l’algorithme termine.
7. Évaluer la complexité de l’algorithme. On discutera en particulier des lignes 02 et 08.
8. Une preuve partielle de correction ... On peut remarquer que l’algorithme enlève à chaque itération
un voisin du sommet courant et un voisin du sommet qui suit le sommet courant dans le chemin
créé. Ainsi, mis à part le premier et le dernier sommet du chemin, l’algorithme enlève deux voisins
dans le graphe à chacun des sommets du chemin.
(a) Montrer que l’algorithme termine sur le sommet s.
(b) Montrer que dans le graphe restant à la fin de la boucle, tous les sommets sont de degré pair.
III- L’espace des cycles
Ici encore, G= (S, A)est un graphe connexe non orienté possédant nsommets et marêtes. On munit
l’ensemble P(A)des parties de Ad’une structure d’espace vectoriel sur le corps Z/2Z={0,1}en posant :
•Pour toutes parties A0et A00 de A,A0+A00 est la différence symétrique de A0et A00, définie par
A0+A00 = (A0\A00)∪(A00 \A0).
•Pour toute partie A0de A,0.A0=∅et 1.A0=A0.
La vérification des propriétés d’espace vectoriel est sans difficulté. On remarquera que :
•L’opposé de A0∈ P(A)pour l’addition est A0lui-même.
•Si A1, . . . , Aksont des parties de Aet a∈A, alors a∈A1+. . . +Aksi et seulement si aest dans
un nombre impair des ensembles A1, . . . , Ak.
3