CommencezCommencez gratuitement

Repérer les nœuds impliqués dans des triangles

NetworkX offre une API pour compter le nombre de triangles auxquels chaque nœud participe : nx.triangles(G). Cette fonction renvoie un dictionnaire où les clés sont les nœuds et les valeurs, le nombre de triangles. Votre tâche dans cet exercice est de modifier la fonction définie plus tôt pour extraire tous les nœuds qui sont en relation de triangle avec un nœud donné.

Cette activité fait partie du cours

Introduction à l'analyse des réseaux en Python

Voir le cours

Instructions de l’exercice

  • Écrivez une fonction nodes_in_triangle() qui prend deux paramètres — G et n — et qui repère tous les nœuds en relation de triangle avec un nœud donné.
    • Dans la boucle for, parcourez toutes les combinaisons possibles de relations de triangle.
    • Vérifiez si les nœuds n1 et n2 ont une arête entre eux. Si oui, ajoutez les deux nœuds à l'ensemble triangle_nodes.
  • Utilisez votre fonction dans une instruction assert pour vérifier que le nombre de nœuds en relation de triangle avec le nœud 1 du graphe T est égal à 35.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

from itertools import combinations

# Write a function that identifies all nodes in a triangle relationship with a given node.
def nodes_in_triangle(G, n):
    """
    Returns the nodes in a graph `G` that are involved in a triangle relationship with the node `n`.
    """
    triangle_nodes = set([n])

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____:

        # Check if n1 and n2 have an edge between them
        if ____:

            # Add n1 to triangle_nodes
            ____

            # Add n2 to triangle_nodes
            ____

    return triangle_nodes

# Write the assertion statement
assert len(____(____, ____)) == ____
Modifier et exécuter le code