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
Instructions de l’exercice
- Écrivez une fonction
nodes_in_triangle()qui prend deux paramètres —Getn— 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
n1etn2ont une arête entre eux. Si oui, ajoutez les deux nœuds à l'ensembletriangle_nodes.
- Dans la boucle
- Utilisez votre fonction dans une instruction
assertpour vérifier que le nombre de nœuds en relation de triangle avec le nœud1du grapheTest é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(____(____, ____)) == ____