Identifier les nœuds impliqués dans des triangles
NetworkX fournit une API pour compter le nombre de triangles dans lesquels chaque nœud est impliqué : nx.triangles(G). Elle renvoie un dictionnaire dont 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 impliqués dans une relation de triangle avec un nœud donné.
Cet exercice fait partie du cours
Introduction à l’analyse de réseaux en Python
Instructions
- Écrivez une fonction
nodes_in_triangle()avec deux paramètres —Getn— qui identifie tous les nœuds en relation de triangle avec un nœud donné.- Dans la boucle
for, itérez sur toutes les combinaisons possibles de relations de triangle. - Vérifiez si les nœuds
n1etn2ont une arête entre eux. Si c’est le cas, 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 impliqués dans une relation de triangle avec le nœud1du grapheTest égal à35.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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(____(____, ____)) == ____