J'ai lu qu'il est idéal de représenter des graphes clairsemés par des listes d'adjacence et des graphiques denses par une matrice d'adjacence. Mais je voudrais comprendre la principale différence entre les graphiques clairsemés et denses.
Le graphe dense est un graphe dans lequel le nombre d'arêtes est proche du nombre maximal d'arêtes. Le graphe clairsemé est un graphe dans lequel le nombre d'arêtes est proche du nombre minimal d'arêtes. Le graphe clairsemé peut être un graphe déconnecté .
Comme les noms l'indiquent, les graphiques clairsemés sont peu connectés (par exemple: les arbres). Habituellement, le nombre d'arêtes est en O(n) où n est le nombre de sommets. Par conséquent, les listes d'adjacence sont préférées car elles nécessitent un espace constant pour chaque arête.
Les graphiques denses sont densément connectés. Ici, le nombre d'arêtes est généralement O (n ^ 2). Par conséquent, la matrice d'adjacence est préférée.
Pour donner une comparaison, supposons que le graphique a 1000 sommets.
Indépendamment du fait que le graphique soit dense ou clairsemé, la matrice d'adjacence nécessite de stocker 1 000 ^ 2 = 1 000 000 de valeurs.
Si le graphique est connecté de manière minimale (c'est-à-dire qu'il s'agit d'un arbre), la liste d'adjacence nécessite de stocker 2997 valeurs. Si le graphique est entièrement connecté, il doit stocker 3 000 000 de valeurs.
Extrait de Structures de données et algorithmes avec des modèles de conception orientés objet en C++, p. 534, par Bruno P. Reiss :
De manière informelle, un graphique avec relativement peu d'arêtes est clairsemé et un graphique avec plusieurs arêtes est dense.
Définition (graphique clairsemé): Un graphique clairsemé est un graphique G = (V, E) dans lequel | E | = O (| V |).
Définition (graphe dense) Un graphe dense est un graphe G = (V, E) dans lequel | E | = Θ (| V |2).
Les caractéristiques intégrales du graphique principal sont le nombre de sommets V et le nombre d'arêtes E. La relation de ces deux détermine si le graphique est clairsemé ou dense (page wiki ici ).
Toute la théorie derrière le choix de la représentation graphique en mémoire consiste à déterminer le temps d'accès optimal par rapport à l'empreinte mémoire, en tenant compte du domaine et des spécificités d'utilisation.
Généralement, vous voulez avoir O(1) temps d'accès (et donc stocker le graphique sous forme de matrice d'adjacence dense) sauf si vous ne pouvez pas tolérer l'empreinte mémoire, auquel cas vous choisissez le plus approprié le plus approprié représentation matricielle (page wiki ici ).
En mathématiques, un graphe dense est un graphe dans lequel le nombre d'arêtes est proche du nombre maximal d'arêtes. Le contraire, un graphique avec seulement quelques bords, est un graphique clairsemé. La distinction entre les graphiques clairsemés et denses est assez vague et dépend du contexte.