Fiche de cours

Passer d'une représentation d'un graphe à une autre

Lycée   >   Terminale   >   NSI   >   Passer d'une représentation d'un graphe à une autre

  • Fiche de cours
  • Quiz et exercices
  • Vidéos et podcasts
Objectif

Passer de la liste d’adjacence d’un graphe à la matrice d’adjacence de ce graphe, et inversement.

Points clés
  • À partir de la liste d’adjacence d’un graphe, on obtient sa matrice d’adjacence en commençant par créer une matrice carrée remplie de zéro, puis on la parcourt ligne par ligne. Lorsqu’on a un sommet adjacent, le coefficient devient 1.
  • À partir de la matrice d’adjacence d’un graphe, on obtient la liste d’adjacence en étudiant la matrice d’adjacence ligne par ligne. On crée une liste vide pour chaque sommet (ligne) et on ajoute à chaque liste le ou les sommets adjacents lorsque le coefficient vaut 1 dans la matrice.
Pour bien comprendre
  • Structure de données : dictionnaire
  • Implémenter un graphe par sa matrice d'adjacence.
  • Implémenter un graphe par sa liste d'adjacence.
1. Les implémentations d'un graphe
a. Représentation sagittale, matrice d'adjacence et liste d'adjacence (rappels)
Représentation sagittale
Dans la représentation sagittale d’un graphe, les sommets du graphes sont représentés par des points et les arcs sont représentés par des segments qui vont d’un point à un autre.
Matrice d’adjacence

Pour représenter un graphe, on peut utiliser une matrice d’adjacence, dont les éléments permettent de repérer les sommets qui sont liés (valeur non nulle) ou non (valeur nulle) par un arc.

Une matrice d’adjacence est un tableau à double entrée dans lequel les lignes représentent les sommets de départ et les colonnes les sommets d’arrivée.
Liste d’adjacence

Pour représenter un graphe, on peut aussi utiliser la structure de dictionnaire avec la liste d’adjacence.

La liste d’adjacence a une structure de dictionnaire qui a pour clés les sommets du graphe et pour valeurs associées aux clés les listes des sommets adjacents.
Les couples d’une liste d’adjacence sont ("sommet","liste des sommets adjacents"). Il faut utiliser des crochets pour définir la liste des sommets adjacents.
Exemple

Voici les différentes représentations d’un graphe G : représentation sagittale, matrice d’adjacence et liste d’adjacence.

Représentation sagittale Matrice d’adjacence Liste d’adjacence
G={'A':['B','C'],
'B':['A','C'],
'C':['A','B']}
b. Choisir entre la matrice d'adjacence et la liste d'adjacence

Le choix de la représentation du graphe dépend du contexte. La matrice d’adjacence est en effet facile à lire et à interpréter par rapport à la liste d’adjacence, mais c’est la liste d’adjacence que l’on va privilégier du point de vue de la complexité temporelle (temps d’exécution).

La recherche d’une valeur

Il y a une n2 éléments dans une matrice, il faut donc tous les parcourir pour chercher une valeur. Du point de vue de la complexité temporelle (temps d’exécution), on est de l’ordre de O(n2) pour cette opération.

La structure de dictionnaire permet d’éviter cela puisqu’on accède directement à une valeur grâce à sa clé : la recherche d’une valeur dans une liste d'adjacence se fait donc en un temps constant (O(1)).

La recherche d’un élément est plus efficace dans une liste d’adjacence.
La modification d’une valeur

Un dictionnaire est un objet immuable. La structure de dictionnaire de la liste d’adjacence n’est donc pas adaptée à une situation où l’on doit changer ou supprimer des valeurs.

On choisit une matrice d’adjacence pour modifier une valeur.
2. Passer de la liste d'adjacence d'un graphe à sa matrice d'adjacence

On souhaite passer de la liste d’adjacence d’un graphe à sa matrice d’adjacence.

a. Algorithme

On considère le graphe G donné par sa liste d’adjacence, on a donc une structure de dictionnaire.

On connait le nombre de ses sommets, qui correspond au nombre de clés présentes dans la liste d’adjacence. On note n ce nombre.

Voici l’algorithme qui permet d’obtenir la matrice d’adjacence associée à cette liste d’adjacence.

  1. Créer la liste des sommets.
  2. Créer une matrice carrée A d’ordre n qui ne contient que des 0.
    Cette matrice comporte donc n lignes et n colonnes.
  3. On fixe i (indice de la ligne étudiée) :
    pour parcourir les différentes colonnes, on fait prendre à j (indice de la colonne) les valeurs de 0 à n – 1 : si le sommet de la j-ème colonne est dans la liste des valeurs associées à la clé i dans la liste d’adjacence, alors A[i][j]=1 (on affecte 1 à l'élément placé à la i-ème ligne et à la j-ème colonne du tableau A).
Exemple
On étudie la liste d’adjacence du graphe G :
G={'A':['B','C'],'B':['A','C'],'C':['A','B']}
  1. On crée la liste des 3 sommets : A, B et C.
  2. On crée une matrice G d’ordre 3 qui ne contient que des 0.
  3. Pour i=0 (première ligne associé à A) on fait prendre à j les valeurs de 0 à 2 dans la liste d’adjacence.
    • Pour j=0, on regarde si A appartient à la liste associée à A,
      ce n’est pas le cas donc A[0][0]=0.
    • Pour j=1, on regarde si B appartient à la liste associée à A,
      c’est le cas, donc A[0][1]=1.
    • Pour j=2, on regarde si C appartient à la liste associée à A,
      c’est le cas donc A[0][2]=1.
    On poursuit de la même manière pour i=1 (deuxième ligne) et i=2 (troisième ligne), ce qui permet d’obtenir la matrice suivante.
b. L'implémentation en Python

La liste d’adjacence est notée G.

Voici ci-dessous le programme Python qui permet de passer de la liste d’adjacence G du graphe à sa matrice d’adjacence.


Voici l’explication ligne à ligne de ce code.

Python Explication
liste= LISTE DES SOMMETS A ENTRER On liste, à partir de la liste d’adjacence, les sommets du graphe.
n=len(liste) On obtient le nombre de sommets, qui correspond à la longueur de la liste d’adjacence fournie.
A=[[0]*n for i in range(n)] On crée une matrice carrée A de n lignes et n colonnes, qui ne comporte que des 0.
for i in range (n): On va parcourir la matrice ligne par ligne,
    for j in range(n): puis dans la ligne, on se déplace de colonne en colonne,
        if liste[j] 
        in G[liste[i]]:
si le sommet étudié est dans la liste de valeurs associées à la clé dans la liste d’adjacence,
            A[i][j]=1 alors le coefficient devient 1 (on affecte 1 à l’élément qui se trouve à la i-ème ligne et à la j-ème colonne du tableau).
Exemple
Voici l’exécution de ce code sur Python Tutor pour la liste d’adjacence :
G={'A':['B'],'B':['A'],'C':[]}.

On obtient la matrice d’adjacence (en ligne) associée à cette liste d’adjacence : [[0, 1, 0], [1, 0, 0], [0, 0, 0]].

Dans le graphe associé, les sommets A et B sont adjacents, et le sommet C est isolé.
3. Passer de la matrice d'adjacence d'un graphe à sa liste d'adjacence

On souhaite passer de la matrice d’adjacence d’un graphe à sa liste d’adjacence.

a. Algorithme

Le graphe est stocké à l’aide d’une matrice d’adjacence M. Les sommets sont stockés dans une liste.

Voici l’algorithme qui permet d’obtenir la liste d’adjacence associée à cette matrice d’adjacence.

  1. Créer le dictionnaire vide G.
  2. Obtenir le nombre de sommets du graphe.
  3. Parcourir la matrice d’adjacence M ligne par ligne.
    • Sur une ligne, qui correspond donc à un sommet, créer une liste vide qui va contenir les sommets adjacents.
    • Parcourir les éléments de cette ligne en ajoutant à la liste le ou les sommets qui correspondent lorsque le coefficient vaut 1.
    • Une fois arrivé au bout de la ligne, stocker la liste comme valeur associée à la clé.
Exemple
On étudie la matrice d’adjacence du graphe G.
  1. On crée le dictionnaire vide G : G={}
  2. On a 3 lignes et 3 colonnes : il y a donc 3 sommets.
    On nomme par exemple ces sommets A, B et C .
  3. On parcourt les éléments de chaque ligne :
    • On parcourt la première ligne, celle du sommet A :
      on ajoute les sommets qui correspondent lorsque le coefficient vaut 1. On a pour 'A' : ['B']
    • On parcourt de la même manière la deuxième ligne, celle du sommet B. On a pour 'B' : ['A','C']
    • On parcourt enfin la troisième ligne, celle du sommet C. On a pour 'C' : ['B']
On a donc la liste d’adjacence :
{'A':['B'],'B':['A','C'],'C':['B']}.
b. L'implémentation en Python

Voici ci-dessous le programme Python qui permet de passer de la matrice d’adjacence du graphe G à sa liste d’adjacence.

Voici l’explication ligne à ligne de ce code.

Python Explication
liste1= LISTE DES SOMMETS A COMPLETER La liste liste1 contient tous les sommets du graphe. Les sommets sont soit donnés par l’énoncé, soit on prend l’alphabet.
n=len(liste1) On obtient le nombre de sommets n, qui correspond à la longueur de la liste liste1.
G=dict() On crée un dictionnaire vide G.
for i in range (n): On parcoure la matrice ligne par ligne,
    liste=[] on crée une liste vide liste (qui va comporter la liste des sommets adjacents du sommet de la ligne i étudiée),
    for j in range(n): pour la ligne i fixée, on parcourt les différentes colonnes,
        if M[i][j]==1: si le coefficient de la i-ème ligne et de la j-ème colonne est 1,
            liste.append(liste1[j]) on ajoute le sommet qui correspond à la liste liste des sommets adjacents de la ligne i étudiée.
        G[liste1[i]]=liste Une fois arrivé au bout de la ligne, on ajoute la liste liste dans la valeur associée à la clé liste1[i].
Exemple
Voici l’exécution de ce code sur Python Tutor pour la matrice d’adjacence :
M=[[0,1,1],[1,0,1],[1,1,0]].

On obtient le résultat suivant.
Ce résultat indique qu’à la valeur « A » on associe la liste ['B','C'], qu’à la valeur « B » on associe la liste ['A','C'] et qu’à la valeur « C », on associe la liste ['A','B'].

On obtient donc la liste d’adjacence :
{'A':['B','C'],'B':['A','C'],'C':['A','B']}.

Dans le graphe associé, les sommets A, B et C sont adjacents.

Évalue ce cours !

 

Des quiz et exercices pour mieux assimiler sa leçon

La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.

S’abonner

 

Des exercices variés pour ne pas s’ennuyer

Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !

Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.

S’abonner

 

Des quiz pour une évaluation en direct

Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.

myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.

S’abonner

Des vidéos et des podcasts pour apprendre différemment

Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.

Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !

S’abonner

 

Des podcasts pour les révisions

La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.

Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.

S’abonner

 

Des vidéos de cours pour comprendre en image

Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !

S’abonner

Découvrez le soutien scolaire en ligne avec myMaxicours

Plongez dans l'univers de myMaxicours et découvrez une approche innovante du soutien scolaire en ligne, conçue pour captiver et éduquer les élèves de CP à la terminale. Notre plateforme se distingue par une riche sélection de contenus interactifs et ludiques, élaborés pour stimuler la concentration et la motivation à travers des parcours d'apprentissage adaptés à chaque tranche d'âge. Chez myMaxicours, nous croyons en une éducation où chaque élève trouve sa place, progresse à son rythme et développe sa confiance en soi dans un environnement bienveillant.

Profitez d'un accès direct à nos Profs en ligne pour une assistance personnalisée, ou explorez nos exercices et corrigés pour renforcer vos connaissances. Notre assistance scolaire en ligne est conçue pour vous accompagner à chaque étape de votre parcours éducatif, tandis que nos vidéos et fiches de cours offrent des explications claires et concises sur une multitude de sujets. Avec myMaxicours, avancez sereinement sur le chemin de la réussite scolaire, armé des meilleurs outils et du soutien de professionnels dédiés à votre épanouissement académique.

Fiches de cours les plus recherchées

NSI

Comprendre le modèle relationnel d'une base de données

NSI

Utiliser l'algèbre relationnel dans une base de données relationnelle

NSI

Repérer des anomalies dans une base de données relationnelle

NSI

Introduire la notion de système de gestion de base de données relationnelle

NSI

Découvrir le langage SQL

NSI

Administrer une base de données avec le langage SQL

NSI

Construire des requêtes d'interrogation à l'aide des clauses du langage SQL

NSI

Construire des requêtes d'insertion et de mise à jour à l'aide du langage SQL

NSI

Découvrir le système sur une puce

NSI

Comprendre la gestion de plusieurs processus