Marc Abboud
Séance Rennes et Maths
21 Novembre 2021
2 2
Exercice 1. Donner le nombre de graphes de taille n, dessiner tous les graphes de taille 3.
Définition 1.3. Soit G un graphe et v un sommet de G, le degré de v est le nombre d’arêtes
dont une des extrémités est v. On le note d(v).
Définition 1.4 (Sous-graphe). Soit G = (S, A) un graphe, un sous-graphe G0 = (S 0 , A0 ) est
un sous-graphe de G si S 0 ⊆ S, A0 ⊆ A.
Exemple 1.5. Cet exemple nous sera utile dans la suite, si G est un graphe et v un sommet,
on note G \ {v} le sous-graphe de G obtenu en enlevant le sommet v et toutes les arêtes de
G dont une des extrémités est v.
Exercice 2. On note Kn le graphe de taille n dont tous les sommets sont reliés entre eux.
Montrer que tout graphe de taille ≤ n est un sous-graphe de Kn .
Exercice 3. Montrer que pour tout graphe G = (S, A), on a
X
d(v) = 2 |A|
v∈S
1
Définition 1.6. Soit G = (S, A) un graphe, un chemin dans G est la donnée de sommets
v1 , ..., vk de sorte que pour tout i = 1, ..., k − 1, (vi , vi+1 ) ∈ A. Un chemin est un cycle si
v1 = vk .
Définition 1.7. Un graphe G est dit connexe si pour tous sommets u, v de G, il existe un
chemin reliant u et v.
Définition 1.8. Soit G un graphe et v un sommet de ce graphe. On appelle la composante
connexe de v l’ensemble défini par
2
(vi) A ne contient pas de cycle mais l’ajout quelconque d’une arête à G crée un cycle.
Exercice 7. Montrer la proposition en montrant les équivalences suivantes : (i) ⇒ (ii) ⇒
(iii) ⇒ (iv) ⇒ (v) ⇒ (vi) ⇒ (i).
Les arbres sont une structure de données très importante et très utilisée en pratique mais
nous n’aurons pas le temps de voir cela pendant la séance.
3
Exercice 9. Est-ce que le graphe suivant possède un circuit eulérien ?
Définition 1.14. Soit G un graphe un chemin est hamiltonien s’il passe une et une seule
fois par chaque sommet du graphe.
Cette question est en fait beaucoup plus dure et il n’y a pas à ce jour de critère simple et
général pour montrer qu’un graphe possède un chemin hamiltonien.
Exemple 1.15. On peut se demander si sur un échiquier, un cavalier peut parcourir toutes
les cases une et une seule fois en partant de la case a1.
8
0Z0Z0Z0Z Une solution est a1 c2 e3 g4 h6 g8 e7 c8
a7 b5 d6 f7 h8 g6 f8 d7 b8 a6 c7 e8 f6 h7 g5
7
Z0Z0Z0Z0 e6 g7 f5 d4 c6 d8 b7 a5 b3 c5 a4 b2 d1 c3 b1
6
0Z0Z0Z0Z a3 c4 e5 d3 e1 g2 h4 f3 h2 f1 d2 e4 f2 h1 g3
h5 f4 h3 g1 e2 c1 a2 b4 d5 b6 a8.
5
Z0Z0Z0Z0
4
0Z0Z0Z0Z
3
Z0Z0Z0Z0
2
0Z0Z0Z0Z
1
M0Z0Z0Z0
a b c d e f g h
Ce problème peut être représenté par le graphe où les sommets sont les cases de l’échiquier
et les arêtes relient deux sommets si un cavalier peut aller de l’un vers l’autre. La question
est alors de savoir si ce graphe possède un chemin hamiltonien. La réponse est en fait positive
mais le seul moyen que l’on a pour le prouver est d’exhiber un tel chemin et cela se fait par
des algorithmes de recherche dans les graphes que nous allons traiter en deuxième partie.
4
1.3 La formule d’Euler pour les graphes planaires
Définition 1.17. Un graphe planaire est un graphe que l’on peut représenter dans le plan
affine de sorte qu’aucune des arêtes du graphe ne se croise sauf en les sommets.
Exemple 1.18.
Exercice 10. Montrer qu’un graphe est sans cycle si et seulement si il n’a qu’une seule face.
(Un bon dessin suffira...)
Théorème 1.21 (Euler). Soit G un graphe planaire connexe, alors
|S| − |A| + |F | = 2
Exercice 11. Montrer le théorème en faisant une récurrence sur le nombre de faces du
graphe.
5
Définition 2.2. Soit f, g : N → R deux fonctions, on dit que f = O(g) si à partir d’un
certain rang, il existe une constante c > 0 telle que f (n) < c · g(n).
On utilise beaucoup cette notion car en pratique on ne s’intéresse pas au nombre exact
d’opérations mais on cherche à le borner pour savoir si notre algorithme est efficace ou non.
Exemple 2.3. Supposons avoir une liste non triée de n entiers, alors trouver l’élément
minimal se fait naïvement en O(n) opérations (en fait on peut avoir le minimum en O(log n)
opérations avec des algorithmes du type diviser pour régner).
Exemple 2.4. David Saulpic pendant sa séance sur l’algorithmique vous a montré que l’on
peut trier une liste de taille n en O(n log n) opérations.
6
A
B C
D E F G
alors le parcours en largeur de l’arbre va donner A,B,C,D,E,F,G.
Exercice 12. Montrer que l’algorithme parcourt bien toute la composante connexe du som-
met v et qu’il termine. Donner la complexité du parcours en largeur.
Exercice 13. Donner un algorithme pour déterminer si un graphe est connexe en utilisant
un parcours en largeur.
Exercice 14. On va montrer dans cet exercice que l’algorithme fait ce qu’on lui demande,
à noter que dans cette version minimaliste on ne garde pas en tête le chemin le plus court
mais juste la distance de ce chemin.
1. Montrer que l’algorithme termine.
2. Montrer par récurrence sur le cardinal de P qu’à chaque étape on a les deux propriétés
suivantes
(a) Pour tout v ∈ P, d(v) est la distance du plus court chemin reliant vdeb à v.
(b) Pour tout v 6∈ P , d(v) est la distance du plus court chemin reliant vdeb à v ne
passant que par des sommets de P à part v.
7
3. En déduire que l’algorithme est correct.
4. Montrer que la complexité de l’algorithme est en O(|S|2 ), on peut en fait descendre à
O((|S| + |A|) log |S|).
Remarque 3.2. C’est ce genre d’algorithme qu’utilise Google Maps par exemple pour vous
donnner le plus court chemin entre deux adresses.
A
B C
D E F G
Exemple 3.3. Si on reprend l’arbre précédent le parcours
en profondeur va donner A, B, D, E, C, F, G. Visuellement, on voit bien ce qu’il se passe, on
parcourt chaque branche de l’arbre et une fois qu’on est arrivé au bout, on remonte et on
redescend par une autre branche jusqu’à ce que l’on ait tout parcouru.
Exemple 3.4. Si on revient au problème du cavalier sur l’échiquier, une première étape
peut déjà être de trouver un chemin entre deux cases. C’est ce que l’on fait avec ce genre
d’algorithme.
Exercice 17. Donner un algorithme utilisant un parcours en profondeur qui, étant donné
un graphe connexe, donne un chemin hamiltonien s’il en existe et retourne faux sinon.