Revision sheet: Introduction aux graphes et parcours efficaces

Plan du Cours

  1. Définitions fondamentales des graphes, graphes orientés et non orientés
  2. Concepts de voisinage, degré, chemin, cycle, distance et connexité dans les graphes
  3. Représentations des graphes en Python : matrices et listes d'adjacence
  4. ModĂ©lisation des graphes avec dictionnaires et listes d'arĂȘtes
  5. Principes généraux des parcours de graphes et gestion des ensembles de sommets
  6. Parcours en largeur (BFS) dans les graphes
  7. Parcours en profondeur (DFS) dans les graphes
  8. Recherche du plus court chemin et algorithme de Dijkstra sur graphes pondérés

1. Définitions fondamentales des graphes, graphes orientés et non orientés

Notions clés & Définitions

  • Graphe : Une structure composĂ©e d'un ensemble de sommets reliĂ©s par des arĂȘtes, oĂč seule la relation entre les sommets importe, indĂ©pendamment de leur disposition spatiale.

Points essentiels

  • Un graphe est un ensemble de sommets reliĂ©s par des arĂȘtes, sans importance de disposition spatiale.
  • Dans un graphe orientĂ©, les liens sont appelĂ©s arcs et ont un sens unique.
  • Dans un graphe non orientĂ©, deux sommets sont adjacents s'ils sont reliĂ©s par une arĂȘte sans orientation.
  • La disposition spatiale des sommets n'a pas d'importance, seul le lien entre sommets compte.
  • OrientĂ© / Non orientĂ© Lorsque les sommets sont reliĂ©s dans un seul sens, on dit que le graphe est orientĂ©, et les liens sont appelĂ©s arcs. Dans un graphe non orientĂ©, on dit que deux sommets sont adjacents s'ils sont reliĂ©s par une arĂȘte.

À retenir

Les graphes sont des ensembles de sommets reliĂ©s par des arĂȘtes ou arcs, avec une distinction essentielle entre graphes orientĂ©s et non orientĂ©s basĂ©e sur la direction des liens.

2. Concepts de voisinage, degré, chemin, cycle, distance et connexité dans les graphes

Notions clés & Définitions

  • Voisinage : En thĂ©orie des graphes, le voisinage d'un sommet est l'ensemble des sommets qui lui sont directement reliĂ©s par une arĂȘte.
  • DegrĂ© : Le degrĂ© d'un sommet correspond au nombre total de sommets adjacents Ă  ce sommet ; dans un graphe orientĂ©, le degrĂ© entrant compte les arcs arrivant au sommet, tandis que le degrĂ© sortant compte les arcs partant de ce sommet.
  • Chemin : Un chemin est une sĂ©quence ordonnĂ©e de sommets telle que chaque paire consĂ©cutive est reliĂ©e par une arĂȘte ou un arc ; un chemin est simple s'il ne traverse aucune arĂȘte ou arc plus d'une fois.

Points essentiels

  • Deux sommets reliĂ©s par une arĂȘte sont voisins.
  • La distance entre deux sommets est la longueur du plus court chemin entre eux, mesurĂ©e en nombre d'arĂȘtes ou en somme des poids si pondĂ©rĂ©.
  • Chemin Un chemin dans un graphe est une suite de noeuds possible en suivant les arĂȘtes ou les arcs du graphe. Exemple : Il existe un chemin reliant 5 Ă  1 qui est 5 - 4 - 6 - 1 Un chemin est dit simple s'il ne passe pas deux fois par la mĂȘme arĂȘte ou le mĂȘme arc.

À retenir

La distance entre deux sommets est la longueur du plus court chemin entre eux, mesurĂ©e en nombre d'arĂȘtes ou en somme des poids si pondĂ©rĂ©.

3. Représentations des graphes en Python : matrices et listes d'adjacence

Notions clés & Définitions

  • Matrice d'adjacence : Structure de donnĂ©es sous forme de tableau Ă  deux dimensions (liste de listes en Python) oĂč le nombre de lignes et de colonnes correspond au nombre de sommets du graphe, chaque case valant 0 ou 1 selon l'absence ou la prĂ©sence d'une arĂȘte entre les sommets.
  • Liste d'adjacence : Structure de donnĂ©es constituĂ©e d'une liste contenant autant de sous-listes qu'il y a de sommets, chaque sous-liste Ă©numĂ©rant les sommets voisins du sommet correspondant, avec une numĂ©rotation des sommets gĂ©nĂ©ralement dĂ©calĂ©e pour commencer Ă  0.

Points essentiels

  • La matrice d'adjacence est une liste de listes carrĂ©e indiquant la prĂ©sence (1) ou l'absence (0) d'arĂȘtes entre sommets.
  • La matrice peut aussi contenir le nombre d'arĂȘtes ou le poids des arĂȘtes en variante.
  • La liste d'adjacence est une liste oĂč chaque Ă©lĂ©ment est une sous-liste des sommets voisins du sommet correspondant.
  • La numĂ©rotation des sommets dans la liste d'adjacence commence gĂ©nĂ©ralement Ă  0 pour correspondre aux indices.
  • Matrice d'adjacence On utilise une matrice (comprenez un tableau Ă  deux dimensions) pour reprĂ©senter les liaisons entre les sommets du graphe. On utilise une liste de listes en Python.
  • Listes d'adjacence La liste d'adjacence d'une matrice indique pour chaque sommet avec quel autre sommet il est reliĂ©.

À retenir

Savoir représenter efficacement un graphe en Python via deux structures fondamentales adaptées à différents besoins.

4. ModĂ©lisation des graphes avec dictionnaires et listes d'arĂȘtes

Notions clés & Définitions

  • Dictionnaire : Structure permettant de conserver les libellĂ©s des sommets tout en listant leurs voisins, facilitant la manipulation de graphes avec des sommets non numĂ©riques ou non contigus.

Points essentiels

  • La liste d'arĂȘtes est particuliĂšrement adaptĂ©e Ă  certains algorithmes comme Bellman-Ford.
  • Le dictionnaire permet de conserver les libellĂ©s des sommets tout en listant leurs voisins.

À retenir

Utiliser des structures flexibles pour modéliser des graphes avec des sommets étiquetés ou pour certains algorithmes spécifiques.

5. Principes généraux des parcours de graphes et gestion des ensembles de sommets

Notions clés & Définitions

  • La coupe : L'ensemble de sommet connus mais non encore visitĂ©s
  • Sommets non encore rencontrĂ©s : Ce sont les sommets du graphe qui n'ont pas encore Ă©tĂ© dĂ©couverts ou inclus dans aucun des ensembles de parcours.

Points essentiels

  • Le parcours d'un graphe nĂ©cessite un sommet de dĂ©part.
  • Les sommets sont divisĂ©s en trois ensembles : visitĂ©s, coupe, non rencontrĂ©s.
  • La gestion de la coupe est centrale pour contrĂŽler le dĂ©roulement du parcours.

À retenir

Comprendre la structure commune Ă  tous les parcours de graphes via la gestion dynamique des ensembles de sommets.

6. Parcours en largeur (BFS) dans les graphes

Notions clés & Définitions

  • Parcours en largeur (BFS) : Le parcours en largeur explore d'abord tous les sommets Ă  distance 1 du dĂ©part, puis ceux Ă  distance 2, etc., en utilisant une file pour gĂ©rer la coupe.

Points essentiels

  • La coupe est gĂ©rĂ©e comme une file : le premier sommet ajoutĂ© est le premier visitĂ©.
  • Le parcours BFS n'est pas unique, plusieurs ordres de visite sont possibles.
  • Le BFS est similaire au parcours en largeur des arbres.

À retenir

Appréhender le BFS comme un parcours ordonné par la distance croissante au sommet de départ, géré par une file.

7. Parcours en profondeur (DFS) dans les graphes

Notions clés & Définitions

  • Parcours en profondeur (DFS) : Le parcours en profondeur explore un graphe en allant aussi loin que possible le long d'un chemin avant de revenir en arriĂšre, en utilisant une structure de pile pour gĂ©rer la coupe.

Points essentiels

  • La coupe est gĂ©rĂ©e comme une pile : le dernier sommet ajoutĂ© est le premier visitĂ©.
  • Le DFS est analogue au parcours prĂ©fixe des arbres.

À retenir

Visualiser le DFS comme un parcours qui plonge au maximum dans le graphe, contrÎlé par une pile.

8. Recherche du plus court chemin et algorithme de Dijkstra sur graphes pondérés

Notions clés & Définitions

  • ItĂ©ration : Une Ă©tape rĂ©pĂ©tĂ©e dans l'exĂ©cution d'un algorithme au cours de laquelle une sĂ©lection et une mise Ă  jour des donnĂ©es sont effectuĂ©es.
  • Plus court chemin : Un chemin entre deux sommets d'un graphe qui minimise la somme des poids des arcs empruntĂ©s.

Points essentiels

  • La recherche du plus court chemin s'applique souvent sur des graphes orientĂ©s pondĂ©rĂ©s mais l'algorithme est gĂ©nĂ©ral.
  • L'algorithme de Dijkstra initialise les distances Ă  l'infini sauf pour le sommet de dĂ©part Ă  zĂ©ro.
  • À chaque itĂ©ration, Dijkstra choisit le sommet non inclus au sous-graphe avec la distance minimale et met Ă  jour les distances de ses voisins.
  • L'algorithme s'arrĂȘte lorsque le sommet d'arrivĂ©e est inclus ou que tous les sommets ont Ă©tĂ© traitĂ©s.
  • Quels graphes La majoritĂ© du temps, la recherche du plus court chemin entre deux sommets se rĂ©alise sur un graphe orientĂ© pondĂ©rĂ©. Dans les autres cas cependant, l'algorithme restera toujours le mĂȘme !

À retenir

L'algorithme de Dijkstra exploite de maniÚre itérative les distances minimales pour construire efficacement le plus court chemin entre deux sommets dans un graphe pondéré.

Tableaux de SynthĂšse

Comparaison des représentations de graphes en Python

Type de structureAvantagesInconvénients
Matrice d'adjacenceFacile à implémenter, efficace pour graphes densesConsomme beaucoup de mémoire pour graphes clairsemés, difficile à manipuler pour de grands graphes
Liste d'adjacenceEfficace pour graphes clairsemĂ©s, facile Ă  parcourirMoins efficace pour vĂ©rifier la prĂ©sence d'une arĂȘte entre deux sommets

Parcours de graphes : BFS vs DFS

CritĂšreBFSDFS
Type de parcoursExploration par niveauxExploration en profondeur
Structure de gestionFile (queue)Pile (stack)
Application typiqueRecherche du plus court chemin dans un graphe non pondéréExploration exhaustive, détection de cycles

PiÚges & Confusions Fréquentes

  1. Confondre graphes orientés et non orientés lors de la modélisation.
  2. Utiliser la mauvaise représentation (matrice ou liste) selon la densité du graphe.
  3. Oublier de gérer la mémoire lors de l'utilisation de matrices pour de grands graphes.
  4. Confondre la gestion de la coupe dans BFS et DFS, menant Ă  des parcours incorrects.
  5. Ne pas mettre Ă  jour correctement les distances dans l'algorithme de Dijkstra.
  6. Supposer que tous les graphes pondérés ont des poids positifs, ce qui n'est pas toujours le cas.
  7. Confondre chemin simple et chemin avec cycles dans la définition.

Checklist Examen

  1. Vérifier la distinction entre graphes orientés et non orientés.
  2. Savoir choisir entre matrice et liste d'adjacence selon le contexte.
  3. Comprendre la logique de l'algorithme de Dijkstra.
  4. Savoir reprĂ©senter un graphe avec dictionnaires ou listes d'arĂȘtes.
  5. Identifier la différence entre voisinage, degré, chemin, cycle.
  6. Calculer la distance minimale entre deux sommets.
  7. Utiliser efficacement les structures de données pour le parcours.
  8. ReconnaĂźtre les situations oĂč utiliser un algorithme spĂ©cifique.
  9. Gérer les cas de graphes pondérés avec poids négatifs.

Test your knowledge

Test your knowledge on Introduction aux graphes et parcours efficaces with 8 multiple-choice questions with detailed corrections.

1. Comment peut-on utiliser la différence entre un graphe orienté et un graphe non orienté pour modéliser un réseau de transport ?

2. Comment utiliser la notion de distance pour déterminer la proximité entre deux sommets dans un graphe ?

Take the quiz →

Review with flashcards

Memorize the key concepts of Introduction aux graphes et parcours efficaces with 16 interactive flashcards.

Graphe — dĂ©finition ?

Ensemble de sommets reliĂ©s par des arĂȘtes.

Graphe orientĂ© — rĂŽle ?

Les arĂȘtes ont une direction spĂ©cifique.

Graphe non orientĂ© — rĂŽle ?

Les arĂȘtes relient deux sommets sans direction.

See flashcards →

Similar courses

Create your own revision sheets

Import your course and AI generates sheets, quizzes and flashcards in 30 seconds.

Sheet generator