Structure des données graphiques et Algorithms (Exemple)

⚡ Résumé intelligent

Une structure de données de type graphe est un ensemble non linéaire de sommets et d'arêtes, chaque arête reliant deux sommets. Les graphes modélisent des réseaux du monde réel tels que les cartes, les réseaux sociaux et les pages web, et prennent en charge de nombreux algorithmes puissants.

  • (I.e. Structure: Un graphe G = (V, E) associe un ensemble de sommets (nœuds) à un ensemble d'arêtes (liens) entre eux.
  • 🔤 Terminologie: Les termes clés incluent sommet, arête, degré, degré entrant, degré sortant, boucle et adjacence.
  • 🇧🇷 Représentation : Les graphes sont stockés à l'aide d'une matrice d'adjacence ou d'une liste d'adjacence, chacune présentant des compromis d'espace différents.
  • 🧭 Types: Les graphes sont classés selon leur structure : orientés, non orientés, pondérés, cycliques, acycliques, complets, bipartites, etc.
  • 🌐 Applications : Google Le routage cartographique, les réseaux sociaux, le classement web et la dépendance des ressources reposent tous sur des graphes.

Structure des données graphiques et Algorithms

Qu’est-ce qu’un graphique dans la structure des données ?

Un graphe est une structure de données non linéaire composée de sommets et d'arêtes, les sommets contenant les informations ou les données, et les arêtes servant de lien entre deux sommets.

Il sert à résoudre des problèmes concrets, comme trouver le meilleur itinéraire pour atteindre une destination ou optimiser le réseau pour les télécommunications et les réseaux sociaux. Les utilisateurs sont représentés par des nœuds dans le graphe, et les liens entre eux par des arêtes.

Si les arêtes sont représentées par E et les sommets par V, alors le graphe G peut être écrit comme l'ensemble des sommets et des arêtes, tel que G (V, E).

Exemple de graphique dans la structure de données

Voici un exemple simple de structure de données graphique :

Exemple de graphique dans la structure de données

Il s'agit d'un graphe simple non orienté (un type de graphe). L'ensemble des sommets est : {A, B, C, D, E, F}. Deux sommets forment une arête. Par exemple, A et B sont reliés par une arête. En revanche, A et F ne sont reliés par aucune arête.

Terminologies graphiques dans la structure des données

Voici quelques termes importants utilisés dans la structure de données graphiques :

LongDescription
SommetChaque élément de données est appelé un sommet ou un nœud. Dans l'image ci-dessus, A, B, C, D et E sont les sommets.
Bord (Arc)Les liens reliant deux nœuds ou sommets sont appelés une arête (arc). Elle possède deux extrémités et est représentée par (sommet de départ, sommet d'arrivée).
Bord non orientéC'est un bord bidirectionnel.
Bord dirigéC'est un bord unidirectionnel.
Bord pondéréUne arête portant une valeur.
DegréDans un graphe, le nombre d'arêtes connectées à un sommet est appelé son degré.
DiplômeLe nombre total d’arêtes entrantes connectées à un sommet.
Degré supérieurLe nombre total d’arêtes sortantes connectées à un sommet.
Auto-boucleUne arête est appelée auto-boucle si ses deux extrémités coïncident.
ProximitéDeux sommets sont dits adjacents s'il existe une arête qui les relie.

Types de graphiques dans la structure des données

Voici la liste des plus courants types de graphiques dans la structure de données:

  • Graphique dirigé
  • Graphe non orienté
  • Graphique pondéré
  • Graphique bidirectionnel
  • Graphique infini
  • Graphique nul
  • Graphique trivial
  • Graphique multiple
  • Graphique complet
  • Graphique connecté
  • Graphique cyclique
  • Graphe acyclique dirigé (DAG)
  • Graphique cyclique
  • Graphique bipartite
  • Graphique d'Euler
  • Graphique de Hamilton

Comment représenter un graphe dans une structure de données ?

Un graphe est généralement stocké en mémoire selon l'une des deux représentations suivantes. Ce choix influe sur la quantité de mémoire utilisée par le graphe et sur la vitesse d'exécution des opérations courantes.

  • Matrice d'adjacence : Un tableau bidimensionnel V × V où la cellule [i][j] vaut 1 (ou le poids de l'arête) si une arête existe entre le sommet i et le sommet j, et 0 sinon. Il permet une recherche d'arête en O(1) mais utilise un espace mémoire de O(V²), ce qui le rend idéal pour les graphes denses.
  • Liste d'adjacence : Un tableau de listes où chaque sommet stocke une liste de ses sommets voisins. Il utilise un espace mémoire de O(V + E) et est efficace pour les graphes creux, ce qui explique pourquoi la plupart des graphes réels l'utilisent.

Vous pouvez en savoir plus à ce sujet dans le liste d'adjacence et représentation matricielle d'un graphe tutoriel.

Applications de la structure des données graphiques

Les graphes ont de nombreuses applications. De nombreux algorithmes les utilisent. Voici quelques exemples :

  • Google Les cartes utilisent des graphiques pour trouver l'intersection de deux routes et calculer la distance entre deux points. Par exemple, Dijkstra, pour trouver la distance la plus courte entre le lieu de départ et le lieu d'arrivée.
  • Facebook utilise des graphes pour trouver les amis communs des utilisateurs. Son algorithme considère chaque utilisateur comme un nœud d'un graphe.
  • Pour l'allocation des ressources, on utilise un DAG (graphe acyclique orienté). Celui-ci vérifie la dépendance des ressources.
  • Le Google Les moteurs de recherche utilisent des graphiques pour établir le classement des sites web.
  • Une carteping L'appareil utilise la structure de données graphiques.
  • A Toupie et son protocole utilise le graphe pour apprendre le chemin vers la destination.

FAQ

Les réseaux neuronaux graphiques apprennent à partir de données structurées en graphes pour la détection de fraudes, les recommandations et la découverte de médicaments. Les graphes de connaissances permettent aux systèmes d'IA de répondre aux questions, et les frameworks d'apprentissage profond modélisent chaque calcul comme un graphe d'opérations.

Oui. Les assistants IA comme GitHub Copilot peuvent générer des implémentations de parcours en largeur (BFS), en profondeur (DFS), de Dijkstra et de tri topologique à partir d'une simple description. Il est toutefois recommandé de tester les cas limites, tels que les nœuds non connectés, les cycles et les graphes vides, avant d'utiliser le code.

Un arbre est un type particulier de graphe connexe et sans cycle, avec un unique chemin entre deux nœuds quelconques. Un graphe est plus général : il peut contenir des cycles, des segments non connectés et des arêtes orientées ou pondérées.

Les deux principales méthodes de parcours sont le parcours en largeur (BFS), qui explore les niveaux un par un à l'aide d'une file d'attente, et le parcours en profondeur (DFS), qui explore aussi profondément que possible à l'aide d'une pile ou de la récursivité avant de revenir au point de départ.tracRoi.

Résumez cet article avec :