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 interattivo pratico
Prova questo esercizio completando questo 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(____(____, ____)) == ____