S-RS Modéliser les réseaux sociaux

Nous allons reprendre l'exemple d'un petit réseau social vu en classe :

Alban, Béatrice, Charles, Déborah, Éric, Fatima, Gérald, Hélène sont inscrits sur Facebook.

  • Alban est ami avec Béatrice, Déborah, Éric et Fatima.
  • Béatrice est amie avec Alban, Charles, Déborah, Éric et Gérald.
  • Charles est ami avec Béatrice, Déborah et Hélène.
  • Déborah est amie avec Charles, Béatrice, Alban et Gérald.
  • Éric est ami avec Béatrice et Alban
  • Fatima, avec Alban, Gérald et Hélène.
  • Gérald est ami avec Béatrice, Fatima et Hélène
  • Hélène est amie avec Fatima, Gérald et Charles.

Pour modéliser cette situation nous pouvons utiliser une matrice, c'est à dire un tableau à deux dimension. En python on dira une liste de listes, c'est à dire une liste dont les éléments sont des listes. Par exemple, la liste des amis de Alban s'écrira : [0,1,0,1,1,1,0] car ses relation sont :

Alban : 0 Béatrice : 1 Charles : 0 Déborah 1 Eric : 1 Fatima :1 Gérald : 0 Hélène : 0

De même les amis de Béatrice s'écriront : [1,0,1,1,1,0,1,0] et ainsi de suite pour les autres.

Le graphe sera donc :

Exercice de code

Cette représentation n'est pas idéale, nous verrons plus tard dans l'année un autre type de donnée en python qui permet de conserver le nom du nœud associé à sa liste, pour le moment nous nous en tiendrons à l'utilisation de listes de listes.

Nous pouvons néanmoins, sans aller plus loin à ce stade, utiliser la matrice ci-dessus en ajoutant les noms des nœuds, dans un tuple (nom,listeAmi) :

Exercice de code