Revision sheet: Introduction aux graphes et parcours

Plan du Cours

  1. Exemples introductifs
  2. Définitions graphes
  3. Représentation en Python
  4. Parcours en largeur
  5. Parcours en profondeur
  6. Recherche de cycles

1. Exemples introductifs

Notions clés & Définitions

  • RĂ©seaux sociaux : ReprĂ©sentĂ©s par un graphe oĂč les sommets sont des individus ou entitĂ©s, et les arĂȘtes (ou arcs) indiquent des relations ou interactions entre eux. Exemple : un graphe avec une grosse composante connexe montre une communautĂ© fortement reliĂ©e.

  • RĂ©seau routier, carte : ModĂ©lisation d’un espace gĂ©ographique sous forme de graphe oĂč chaque sommet reprĂ©sente un lieu, et chaque arĂȘte une route reliant deux lieux. Si les routes ont un sens, le graphe est orientĂ©.

  • Labyrinthe : ModĂ©lisĂ© par un graphe dont les sommets sont des points ou intersections, et les arĂȘtes reprĂ©sentent les passages possibles. La modĂ©lisation peut rĂ©vĂ©ler des Ăźlots ou zones inaccessibles, et permet d’appliquer des parcours pour rĂ©soudre des problĂšmes d’évasion ou de navigation.

  • Graphe de positions : Graphe oĂč chaque sommet reprĂ©sente une configuration ou une position dans un jeu. Si aucune position ne se rĂ©pĂšte, ce graphe est un arbre sans cycle. Les feuilles correspondent Ă  des Ă©tats finaux (victoire, dĂ©faite, nul). La stratĂ©gie consiste Ă  remonter depuis ces feuilles pour dĂ©terminer le rĂ©sultat optimal.

  • Graphe de dĂ©pendances : Graphe orientĂ© oĂč chaque sommet est un module ou une Ă©tape, et chaque arc indique une dĂ©pendance ou un prĂ©requis. UtilisĂ© notamment en compilation ou en gestion de projets, il doit ĂȘtre exempt de cycles pour assurer une progression logique.

Points essentiels

  • Les exemples illustrent comment modĂ©liser des situations concrĂštes par des graphes : rĂ©seaux sociaux, routiers, labyrinthes, positions de jeu, dĂ©pendances.
  • La modĂ©lisation par graphe permet d’appliquer des parcours (en largeur ou en profondeur) pour rĂ©soudre des problĂšmes spĂ©cifiques.
  • La prĂ©sence ou absence de cycle dans un graphe de positions ou de dĂ©pendances influence la faisabilitĂ© ou la stratĂ©gie Ă  adopter.
  • La modĂ©lisation sous forme de graphe de positions dans un jeu permet de prouver l’existence d’un rĂ©sultat (victoire, dĂ©faite, nul) en utilisant la structure arborescente.

À retenir

Les exemples introductifs montrent que la modĂ©lisation par graphe est une mĂ©thode puissante pour reprĂ©senter et analyser des situations variĂ©es, en utilisant des parcours et en vĂ©rifiant l’absence de cycles pour garantir la cohĂ©rence ou la stratĂ©gie optimale.

2. Définitions graphes

Notions clés & Définitions

  • Graphe non orientĂ© : Un ensemble fini de sommets reliĂ©s entre eux par des arĂȘtes, notĂ© đș=(𝑉,𝐾), oĂč 𝑉 est l'ensemble des sommets et 𝐾 l'ensemble des arĂȘtes, chaque arĂȘte Ă©tant une paire de sommets distincts {s, t}.
  • Graphe orientĂ© : Un ensemble fini de sommets reliĂ©s par des arcs, notĂ© đș=(𝑉,𝐾), oĂč 𝑉 est l'ensemble des sommets et 𝐾 un ensemble de couples (s, t) reprĂ©sentant un arc allant de s Ă  t.
  • Sommet : Un Ă©lĂ©ment de l'ensemble 𝑉, reprĂ©sentant un point ou un nƓud dans le graphe.
  • ArĂȘte : Une paire de sommets {s, t} dans un graphe non orientĂ©, reprĂ©sentant une connexion sans sens prĂ©cis.
  • Arc : Un couple (s, t) dans un graphe orientĂ©, reprĂ©sentant une connexion avec un sens allant de s vers t.

Points essentiels

  • Dans un graphe non orientĂ©, chaque arĂȘte {s, t} relie deux sommets sans direction. La somme des degrĂ©s des sommets est Ă©gale Ă  deux fois le nombre d’arĂȘtes (∑𝑠∈𝑉 𝑑(𝑠) = 2 * |𝐾|).
  • Dans un graphe orientĂ©, chaque arc (s, t) a une origine s et une cible t. Le degrĂ© sortant 𝑑+(𝑠) correspond au nombre de successeurs de s, et le degrĂ© entrant 𝑑−(𝑠) au nombre de prĂ©dĂ©cesseurs.
  • La reprĂ©sentation d’un graphe peut se faire via une matrice d’adjacence (liste de listes) ou un dictionnaire d’adjacence (clĂ© : sommet, valeur : liste des successeurs).
  • La matrice d’adjacence 𝑀[𝑖][𝑗] est un boolĂ©en indiquant la prĂ©sence ou l’absence d’une arĂȘte ou arc entre les sommets 𝑖 et 𝑗.
  • Le dictionnaire d’adjacence đ· associe chaque sommet Ă  la liste de ses successeurs (pour un graphe orientĂ©) ou voisins (pour un graphe non orientĂ©).

À retenir

Un graphe est une structure composĂ©e de sommets et d’arĂȘtes ou arcs, dont la reprĂ©sentation peut varier (matrice ou dictionnaire), et dont la nature orientĂ©e ou non orientĂ©e influence la dĂ©finition des relations entre sommets.

3. Représentation en Python

Notions clés & Définitions

  • ReprĂ©sentation en Python : mĂ©thode de modĂ©lisation d’un graphe en utilisant des structures de donnĂ©es Python, telles que listes ou dictionnaires, pour faciliter l’implĂ©mentation des algorithmes de parcours ou d’analyse.

  • Matrice d’adjacence : liste de listes en Python oĂč chaque Ă©lĂ©ment M[i][j] indique la prĂ©sence ou l’absence d’une arĂȘte ou d’un arc entre le sommet i et le sommet j. Si une arĂȘte existe, la valeur est True ou une valeur Ă©quivalente ; sinon, False.

  • Dictionnaire d’adjacence : dictionnaire Python oĂč chaque clĂ© est un sommet du graphe, et la valeur associĂ©e est la liste des successeurs (pour un graphe orientĂ©) ou des voisins (pour un graphe non orientĂ©).

  • Liste des voisins : liste contenant tous les sommets adjacents Ă  un sommet donnĂ© dans un graphe non orientĂ©, ou tous les successeurs/prĂ©dĂ©cesseurs dans un graphe orientĂ©, selon la structure de reprĂ©sentation.

  • Liste des successeurs : liste des sommets accessibles directement depuis un sommet donnĂ© dans un graphe orientĂ©, c’est-Ă -dire tous v tels que (s, v) appartient Ă  E.

  • Liste des prĂ©dĂ©cesseurs : liste des sommets ayant une arĂȘte ou un arc allant vers un sommet donnĂ© dans un graphe orientĂ©, c’est-Ă -dire tous v tels que (v, s) appartient Ă  E.

Points essentiels

  • La matrice d’adjacence est reprĂ©sentĂ©e par une liste de listes, oĂč chaque Ă©lĂ©ment M[i][j] vaut True si une arĂȘte ou un arc relie i Ă  j, sinon False. La commande len(M) donne l’ordre du graphe (nombre de sommets).

  • Le dictionnaire d’adjacence associe Ă  chaque sommet une liste de ses successeurs ou voisins, facilitant l’accĂšs direct aux successeurs d’un sommet donnĂ©.

  • La liste des voisins s’obtient en parcourant la ligne correspondante dans la matrice d’adjacence ou en accĂ©dant Ă  la liste dans le dictionnaire d’adjacence.

  • La liste des successeurs dans un dictionnaire d’adjacence est directement la valeur associĂ©e Ă  la clĂ© du sommet dans le dictionnaire.

  • La liste des prĂ©dĂ©cesseurs dans un graphe orientĂ© se construit en parcourant le dictionnaire d’adjacence : pour chaque sommet, on vĂ©rifie dans tous les autres si ce sommet apparaĂźt dans leur liste de successeurs.

À retenir

Les reprĂ©sentations en Python, telles que la matrice d’adjacence et le dictionnaire d’adjacence, offrent deux approches complĂ©mentaires pour modĂ©liser un graphe : la premiĂšre privilĂ©gie la simplicitĂ© d’accĂšs par indices, la seconde facilite la gestion dynamique et l’accĂšs direct aux successeurs ou voisins.

4. Parcours en largeur

Notions clés & Définitions

  • Parcours en largeur : mĂ©thode d'exploration d'un graphe consistant Ă  visiter tous les sommets Ă  un mĂȘme niveau avant de passer au niveau suivant, en utilisant une structure de file d'attente.

  • Coloriage des sommets : technique pour marquer l'Ă©tat d'un sommet durant l'exploration, avec trois couleurs possibles :

    • Blanc : sommet non dĂ©couvert,
    • Gris : sommet dĂ©couvert mais dont tous les successeurs ne sont pas encore explorĂ©s,
    • Noir : sommet entiĂšrement explorĂ©.
  • Liste d'attente : structure FIFO (First In First Out) utilisĂ©e pour gĂ©rer les sommets Ă  explorer dans le parcours en largeur. Elle stocke les sommets gris Ă  traiter.

  • Arborescence de dĂ©couverte : arbre ou graphe partiel constituĂ© des arcs qui relient chaque sommet dĂ©couvert Ă  son prĂ©dĂ©cesseur lors du parcours, reprĂ©sentant la structure de l'exploration.

  • Tableau des prĂ©dĂ©cesseurs : tableau oĂč chaque Ă©lĂ©ment indique le sommet qui a permis de dĂ©couvrir le sommet correspondant lors du parcours, initialisĂ© Ă  -1 pour les sommets racines ou non encore dĂ©couverts.

Points essentiels

  • Le parcours en largeur commence par un sommet initial, qui est mis dans la file d'attente, coloriĂ© en gris, et dont le prĂ©dĂ©cesseur est -1.
  • À chaque Ă©tape, on retire le sommet en tĂȘte de la file, puis on explore ses successeurs.
  • Si un successeur est blanc, il devient gris, son prĂ©dĂ©cesseur est mis Ă  jour, et il est ajoutĂ© Ă  la fin de la file.
  • Une fois tous ses successeurs explorĂ©s, le sommet courant est coloriĂ© en noir.
  • La structure de l'arborescence de dĂ©couverte est construite Ă  partir du tableau des prĂ©dĂ©cesseurs.
  • La distance (niveau) d’un sommet par rapport au sommet de dĂ©part peut ĂȘtre stockĂ©e dans un tableau dĂ©diĂ©, initialisĂ© Ă  -1, puis mise Ă  jour lors de l'exploration.
  • Le parcours garantit la visite de tous les sommets accessibles depuis le sommet initial dans l'ordre croissant de leur niveau.

À retenir

Le parcours en largeur explore un graphe niveau par niveau en utilisant une file d'attente, permettant de déterminer la connectivité, les distances minimales, et de construire une arborescence de découverte.

5. Parcours en profondeur

Notions clés & Définitions

  • Parcours en profondeur (Depth First Search, DFS) : mĂ©thode d'exploration d'un graphe qui consiste Ă  suivre un chemin le plus loin possible avant de revenir en arriĂšre pour explorer d'autres branches. La gestion de la liste d'attente se fait comme une pile (LIFO).

  • Pile (stack) : structure de donnĂ©es oĂč le dernier Ă©lĂ©ment ajoutĂ© est le premier Ă  ĂȘtre retirĂ©. UtilisĂ©e dans le parcours en profondeur pour gĂ©rer l'exploration des sommets.

  • Exploration chemin le plus long : concept liĂ© Ă  la recherche du plus long chemin dans un graphe, souvent abordĂ© en utilisant le parcours en profondeur pour explorer toutes les branches possibles.

Points essentiels

  • Le parcours en profondeur utilise une pile pour gĂ©rer la liste d'attente, ce qui permet d'explorer un chemin jusqu'Ă  sa fin avant de revenir en arriĂšre.
  • La gestion des couleurs (blanc, gris, noir) permet de suivre l'Ă©tat d'exploration des sommets : blanc (non dĂ©couvert), gris (en cours d'exploration), noir (terminĂ©).
  • La variable dec enregistre la date de dĂ©couverte d’un sommet, tandis que fin enregistre la date de fin de traitement.
  • Lorsqu’un sommet est dĂ©couvert, il est coloriĂ© en gris, puis ses successeurs sont explorĂ©s. Une fois tous ses successeurs traitĂ©s, il est coloriĂ© en noir.
  • La gestion de la date (tps) permet de suivre l’ordre d’exploration et de traitement des sommets.

À retenir

Le parcours en profondeur explore un graphe en suivant un chemin jusqu’à sa fin avant de revenir en arriĂšre, utilisant une pile pour gĂ©rer l’ordre d’exploration, ce qui permet de dĂ©couvrir en profondeur chaque branche du graphe.

6. Recherche de cycles

Notions clés & Définitions

  • Cycle : Un cycle est une chaĂźne de sommets reliĂ©s deux Ă  deux par des arĂȘtes ou arcs, qui commence et se termine au mĂȘme sommet, et dont tous les autres sommets sont distincts. Si une chaĂźne relie un sommet Ă  lui-mĂȘme, on parle aussi de cycle.

  • Cycle dans un graphe : Un cycle est une sĂ©quence finie de sommets reliĂ©s par des arĂȘtes ou arcs, formant une boucle fermĂ©e, sans rĂ©pĂ©tition de sommets sauf le dĂ©but et la fin.

  • Cycle orientĂ© : Un cycle dans un graphe orientĂ© est une chaĂźne fermĂ©e oĂč chaque arc est orientĂ© dans le mĂȘme sens que la chaĂźne, formant une boucle dans le sens de la direction des arcs.

  • Cycle non orientĂ© : Un cycle dans un graphe non orientĂ© est une chaĂźne fermĂ©e oĂč les arĂȘtes n'ont pas de sens, formant une boucle sans orientation spĂ©cifique.

  • Cycle simple : Un cycle qui ne passe pas deux fois par le mĂȘme sommet, sauf le sommet de dĂ©part/fin.

  • Cycle avec rĂ©pĂ©tition : Un cycle qui peut passer plusieurs fois par certains sommets, c'est-Ă -dire pas nĂ©cessairement simple, pouvant contenir des rĂ©pĂ©titions de sommets ou d'arĂȘtes.

Points essentiels

  • Lors du parcours en profondeur (DFS), si un successeur sjs_j d’un sommet courant sis_i est dĂ©jĂ  gris, cela indique l'existence d’un cycle, car cela signifie qu’il existe un chemin de sjs_j vers sis_i, formant une boucle.

  • La dĂ©tection de cycles dans un graphe orientĂ© se fait en vĂ©rifiant si, lors du DFS, un successeur gris est rencontrĂ©. Si oui, le graphe contient un cycle.

  • La dĂ©tection de cycles dans un graphe non orientĂ© repose aussi sur le DFS, mais en vĂ©rifiant si un successeur gris n’est pas le pĂšre dans l’arborescence, ce qui indique un cycle.

  • La fonction pour tester si un graphe est acyclique retourne False si un cycle est dĂ©tectĂ©, et True sinon.

À retenir

La prĂ©sence d’un successeur dĂ©jĂ  gris lors d’un parcours en profondeur indique un cycle dans le graphe, permettant de dĂ©tecter si le graphe est acyclique ou non.

Tableaux de SynthĂšse

CritÚreGraphe non orientéGraphe orientéAuteur / Référence
DĂ©finitionSommets reliĂ©s par des arĂȘtes sans sensSommets reliĂ©s par des arcs avec sensNotions clĂ©s & DĂ©finitions
ReprĂ©sentationMatrice d’adjacence ou dictionnaireMatrice d’adjacence ou dictionnaireReprĂ©sentation en Python
SommetÉlĂ©ment de VÉlĂ©ment de VNotions clĂ©s & DĂ©finitions
ArĂȘte / ArcPaire {s, t}Couple (s, t)Notions clĂ©s & DĂ©finitions
DegrĂ© (d(s))Somme des degrĂ©s (∑𝑠∈𝑉 𝑑(𝑠) = 2 *𝐾)
Parcours en largeurUtilise une file, couleurs (blanc, gris, noir)MĂȘme principe, avec gestion des successeursParcours en largeur

PiÚges & Confusions Fréquentes

  1. Confondre arĂȘte (non orientĂ©) et arc (orientĂ©) dans la reprĂ©sentation.
  2. Oublier que la somme des degrĂ©s dans un graphe non orientĂ© est Ă©gale Ă  2 fois le nombre d’arĂȘtes.
  3. Confondre liste des voisins et liste des successeurs dans la représentation Python.
  4. Négliger la différence entre degré entrant et degré sortant dans un graphe orienté.
  5. Utiliser une représentation matricielle pour un graphe trÚs dense sans optimiser la mémoire.
  6. Confondre sommet non dĂ©couvert (blanc) et sommet en cours d’exploration (gris) lors du parcours en largeur.
  7. Omettre de marquer un sommet comme entiÚrement exploré (noir) pour éviter des visites infinies.

Checklist Examen

  1. ConnaĂźtre la dĂ©finition d’un graphe non orientĂ© et orientĂ©, et leur diffĂ©rence.
  2. Savoir reprĂ©senter un graphe en Python via une matrice d’adjacence.
  3. Savoir reprĂ©senter un graphe en Python via un dictionnaire d’adjacence.
  4. Comprendre la notion de sommet, arĂȘte, arc, degrĂ© entrant et degrĂ© sortant.
  5. Maßtriser la procédure du parcours en largeur, y compris la gestion des couleurs.
  6. Savoir comment construire l’arborescence de dĂ©couverte lors d’un parcours en largeur.
  7. Connaßtre la différence entre parcours en largeur et parcours en profondeur.
  8. Comprendre la notion de cycle dans un graphe orienté et non orienté.
  9. Être capable de dĂ©tecter un cycle Ă  partir d’un parcours en largeur ou profondeur.
  10. ConnaĂźtre la dĂ©finition et l’utilitĂ© d’un graphe de dĂ©pendances.
  11. MaĂźtriser la modĂ©lisation d’un labyrinthe ou d’un rĂ©seau social par un graphe.
  12. Savoir utiliser la structure de données Python adaptée pour représenter un graphe selon le contexte.

Test your knowledge

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

1. Quel est l’effet principal de l’utilisation d’exemples introductifs pour la modĂ©lisation par graphe dans l’apprentissage ?

2. Qui est crédité d'avoir formulé ou introduit la notion de graphe en mathématiques et en informatique ?

Take the quiz →

Review with flashcards

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

Exemples introductifs — rĂ©seaux sociaux ?

Graphe avec sommets : individus, arĂȘtes : relations.

Graphe — dĂ©finition ?

Structure de sommets reliĂ©s par des arĂȘtes ou arcs.

ReprĂ©sentation Python — matrice ?

Liste de listes indiquant prĂ©sence d’arĂȘte par True/False.

See flashcards →

Similar courses

Create your own revision sheets

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

Sheet generator