Cours : Arbres et graphes
📌 1. Définitions & Cadre d’étude
Section titled “📌 1. Définitions & Cadre d’étude”Un graphe est une structure de données fondamentale en informatique, modélisant des relations binaires entre des entités.
A. Graphes non orientés
Section titled “A. Graphes non orientés”Un graphe non orienté est un couple où :
- est un ensemble fini dont les éléments sont appelés sommets (ou vertices).
- est un ensemble de paires de sommets distincts, appelés arêtes (ou edges). On note usuellement et .
B. Graphes orientés
Section titled “B. Graphes orientés”Un graphe orienté est un couple où :
- est l’ensemble des sommets.
- est un ensemble de couples de sommets, appelés arcs (ou directed edges). Un arc est orienté de (source) vers (but).
C. Vocabulaire de base
Section titled “C. Vocabulaire de base”- Adjacence : Deux sommets et sont adjacents s’il existe une arête (ou un arc ).
- Degré : Dans un graphe non orienté, le degré d’un sommet , noté , est le nombre de sommets adjacents à . Dans un graphe orienté, on distingue le demi-degré intérieur (nombre d’arcs entrant en ) et le demi-degré extérieur (nombre d’arcs sortants de ).
- Chemin : Une suite de sommets telle que pour tout , (ou ). La longueur du chemin est .
- Cycle : Un chemin dont l’origine et l’extrémité coïncident () avec .
D. Arbres
Section titled “D. Arbres”- Arbre non orienté : Un graphe non orienté, connexe et acyclique.
- Arbre enraciné : Un arbre non orienté muni d’un sommet distingué appelé racine. Cela induit une relation d’ordre partiel (parent/enfant, ancêtre/descendant).
- Arbre -aire / Arbre binaire : Un arbre enraciné où chaque sommet possède au plus enfants (exactement 2 pour un arbre binaire strict).
📐 2. Théorèmes fondamentaux & Démonstrations clés
Section titled “📐 2. Théorèmes fondamentaux & Démonstrations clés”Théorème 1 : Lemme des poignées de mains (Handshaking Lemma)
Section titled “Théorème 1 : Lemme des poignées de mains (Handshaking Lemma)”Énoncé : Soit un graphe non orienté. La somme des degrés de tous les sommets est égale au double du nombre d’arêtes :
Démonstration : Chaque arête relie exactement deux sommets et . Par conséquent, lors du calcul de la somme des degrés, chaque arête est comptée exactement deux fois : une fois dans le degré de et une fois dans le degré de . Corollaire: * Dans tout graphe, le nombre de sommets de degré impair est pair.
Théorème 2 : Caractérisations des arbres
Section titled “Théorème 2 : Caractérisations des arbres”Énoncé : Soit un graphe non orienté fini à sommets (). Les propositions suivantes sont équivalentes :
- est un arbre (connexe et acyclique).
- est acyclique et possède arêtes.
- est connexe et possède arêtes.
- est connexe, et toute arête est un isthme (sa suppression déconnecte le graphe).
- est acyclique, et l’ajout d’une arête entre deux sommets non adjacents crée un unique cycle.
- Il existe un unique chemin simple entre toute paire de sommets distincts.
Démonstrations partielles (Implication ) : Par récurrence sur le nombre de sommets .
- Initialisation () : Un arbre à 1 sommet possède 0 arête () et aucun cycle. La propriété est vraie.
- Hérédité : Soit tel que tout arbre à sommets a arêtes et est acyclique. Soit un arbre à sommets. Un arbre possède au moins une feuille (sommet de degré 1, car le graphe est fini, connexe et acyclique). Soit une feuille de et son unique voisin. Considérons le graphe .
- est connexe (la suppression d’une feuille et de son arête incidente ne déconnecte pas le reste du graphe).
- est acyclique (car l’est). Donc est un arbre à sommets. Par hypothèse de récurrence, possède arêtes. Le graphe est obtenu en ajoutant le sommet et l’arête à . Ainsi, possède arêtes, ce qui correspond à .
💡 3. Méthodes classiques de résolution
Section titled “💡 3. Méthodes classiques de résolution”A. Représentation en mémoire
Section titled “A. Représentation en mémoire”- Matrice d’adjacence :
- Matrice de taille où s’il y a une arête (ou un arc) entre et (0 sinon).
- Complexité spatiale : .
- Complexité pour tester l’adjacence : .
- Listes d’adjacence :
- Un tableau (ou une table de hachage) de taille où la case contient la liste chaînée des voisins du sommet .
- Complexité spatiale : .
- Complexité pour tester l’adjacence : dans le pire des cas.
B. Parcours fondamentaux
Section titled “B. Parcours fondamentaux”- Parcours en largeur (BFS - Breadth-First Search) :
- Utilise une file (FIFO).
- Permet de trouver les plus courts chemins dans un graphe non pondéré.
- Parcours en profondeur (DFS - Depth-First Search) :
- Utilise une pile (LIFO) ou la récursivité.
- Permet de détecter des cycles, de calculer les composantes connexes, ou d’effectuer un tri topologique (sur les DAG : Directed Acyclic Graphs).
⚠️ 4. Pièges classiques aux Concours
Section titled “⚠️ 4. Pièges classiques aux Concours”- Oubli de la connexité dans la caractérisation des arbres : Un graphe acyclique à sommets et arêtes est nécessairement un arbre (car la connexité en découle). Cependant, un graphe à arêtes et sans cycle n’est pas forcément connexe si est mal interprété, mais avec et l’acyclicité, la connexité est mathématiquement garantie. Attention toutefois : un graphe quelconque sans cycle et à arêtes n’est pas un arbre (il contient au moins une composante connexe unicyclique).
- Complexité des parcours sur les représentations : Parcourir tous les voisins d’un sommet en utilisant une matrice d’adjacence prend un temps , car il faut parcourir toute la ligne de la matrice. En revanche, cela prend avec des listes d’adjacence. Utiliser la matrice d’adjacence pour un algorithme de parcours (BFS/DFS) mène à une complexité temporelle de au lieu de .
- Puits et sources dans les graphes orientés : Ne pas confondre un sommet de degré sortant nul (puits) dans un graphe orienté avec une feuille d’un arbre. Un sommet isolé n’est pas nécessairement une feuille.
- Terminaison des parcours en présence de cycles :
Dans un graphe général (non arborescent), l’oubli d’un tableau/ensemble de marquage des sommets visités (
marcheouvisite) lors d’un DFS ou BFS mène à une boucle infinie.