Vérifier la présence de boucles sur soi dans le graphe
Comme Eric l'a expliqué, NetworkX permet aussi des arêtes qui commencent et finissent sur le même nœud. Même si cela est peu intuitif pour un réseau social, c'est utile pour modéliser des données comme des réseaux de trajets, où une personne part d'un endroit et arrive à un autre.
Il est utile de vérifier ce cas avant d'aller plus loin dans l'analyse, et NetworkX fournit une méthode à cet effet : nx.number_of_selfloops(G).
Dans cet exercice et les suivants, l'instruction assert vous sera utile. Une assertion vérifie si l'expression qui la suit s'évalue à True, sinon elle lève une AssertionError.
Pour commencer, appelez la fonction nx.number_of_selfloops(), en lui passant T, dans l'interface IPython pour obtenir le nombre d'arêtes qui commencent et finissent sur le même nœud. Un certain nombre de boucles sur soi ont été ajoutées artificiellement au graphe. Votre tâche ici est d'écrire une fonction qui retourne ces arêtes.
Cette activité fait partie du cours
Introduction à l'analyse des réseaux en Python
Instructions de l’exercice
- Définissez une fonction appelée
find_selfloop_nodes()qui prend un argument :G.- À l'aide d'une boucle
for, parcourez toutes les arêtes deG(en excluant les métadonnées). - Si le nœud
uest égal au nœudv:- Ajoutez
uà la listenodes_in_selfloopsavecappend(). - Retournez la liste
nodes_in_selfloops.
- Ajoutez
- À l'aide d'une boucle
- Vérifiez que le nombre de boucles sur soi dans le graphe est égal au nombre de nœuds ayant une boucle sur soi. Cela a déjà été fait pour vous, donc cliquez sur "Soumettre la réponse" pour voir le résultat !
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Define find_selfloop_nodes()
def ____:
"""
Finds all nodes that have self-loops in the graph G.
"""
nodes_in_selfloops = []
# Iterate over all the edges of G
for u, v in ____:
# Check if node u and node v are the same
if ____:
# Append node u to nodes_in_selfloops
____
return nodes_in_selfloops
# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))