Trovare triangoli aperti
Passiamo ora a individuare i triangoli aperti! Ricorda che sono alla base dei sistemi di raccomandazione delle amicizie: se "A" conosce "B" e "A" conosce "C", è probabile che anche "B" conosca "C".
Questo esercizio fa parte del corso
Introduzione all'analisi delle reti in Python
Istruzioni dell'esercizio
- Scrivi una funzione
node_in_open_triangle()che ha due parametri -Gen- e identifica se un nodo è presente in un triangolo aperto con i suoi vicini.- Nel ciclo
for, itera su tutte le possibili combinazioni di relazioni a triangolo. - Se i nodi
n1en2non hanno un arco tra loro, impostain_open_trianglesuTrue, esci dall'istruzioneife restituisciin_open_triangle.
- Nel ciclo
- Usa questa funzione per contare il numero di triangoli aperti presenti in
T.- Nel ciclo
for, itera su tutti i nodi inT. - Se il nodo corrente
nè in un triangolo aperto, incrementanum_open_triangles.
- Nel ciclo
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
from itertools import combinations
# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
"""
Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
"""
in_open_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if n1 and n2 do NOT have an edge between them
if not ____:
in_open_triangle = ____
break
return ____
# Compute the number of open triangles in T
num_open_triangles = 0
# Iterate over all the nodes in T
for n in ____:
# Check if the current node is in an open triangle
if ____:
# Increment num_open_triangles
____ += 1
print(num_open_triangles)