Trovare i nodi coinvolti in triangoli
NetworkX fornisce un'API per contare il numero di triangoli a cui partecipa ciascun nodo: nx.triangles(G). Restituisce un dizionario con i nodi come chiavi e il numero di triangoli come valori. Il tuo compito in questo esercizio è modificare la funzione definita in precedenza per estrarre tutti i nodi coinvolti in un triangolo con un nodo specifico.
Questo esercizio fa parte del corso
Introduzione all'analisi delle reti in Python
Istruzioni dell'esercizio
- Scrivi una funzione
nodes_in_triangle()che ha due parametri -Gen- e identifica tutti i nodi che formano un triangolo con un dato nodo.- Nel ciclo
for, itera su tutte le possibili combinazioni di triangoli. - Verifica se i nodi
n1en2hanno un arco tra loro. In caso affermativo, aggiungi entrambi i nodi all'insiemetriangle_nodes.
- Nel ciclo
- Usa la tua funzione in un'istruzione
assertper verificare che il numero di nodi che formano un triangolo con il nodo1del grafoTsia uguale a35.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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(____(____, ____)) == ____