CommencezCommencez gratuitement

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

Voir le cours

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 de G (en excluant les métadonnées).
    • Si le nœud u est égal au nœud v :
      • Ajoutez u à la liste nodes_in_selfloops avec append().
      • Retournez la liste nodes_in_selfloops.
  • 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))
Modifier et exécuter le code