Encontrar triángulos abiertos
¡Pasemos ahora a encontrar triángulos abiertos! Recuerda que son la base de los sistemas de recomendación de amistades; si "A" conoce a "B" y "A" conoce a "C", es probable que "B" también conozca a "C".
Este ejercicio forma parte del curso
Introducción al análisis de redes en Python
Instrucciones del ejercicio
- Escribe una función
node_in_open_triangle()con dos parámetros,Gyn, que identifique si un nodo está en un triángulo abierto con sus vecinos.- En el bucle
for, itera por todas las posibles combinaciones de relaciones de triángulos. - Si los nodos
n1yn2no tienen una arista entre ellos, establecein_open_triangleaTrue, sal delify devuelvein_open_triangle.
- En el bucle
- Usa esta función para contar cuántos triángulos abiertos existen en
T.- En el bucle
for, itera por todos los nodos deT. - Si el nodo actual
nestá en un triángulo abierto, incrementanum_open_triangles.
- En el bucle
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)