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
graphe=[ 
1
graphe=[ 
2
[0,1,0,1,1,1,0,0] , 
3
[1,0,1,1,1,0,1,0] , 
4
....à vous de compléter !] 
5
 
6
for noeud in graphe :
7
    print(noeud)
8
 
 

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
# création de la matrice avec les noms des noeuds :
1
# création de la matrice avec les noms des noeuds :
2
graphe= [ 
3
('A',[0,1,0,1,1,1,0,0]) , 
4
('B',[1,0,1,1,1,0,1,0]) , 
5
... à vous de completer...
6
]
7
 
8
# affichage d'une ligne d en têtes
9
print('       A  B  C  D  E  F  G  H')
10
# affichage de tous les liens de chaque élément :
11
for elem in graphe :
12
    print(elem[0],' : ',elem[1])
13