Encontrar nodos que forman triángulos
NetworkX proporciona una API para contar el número de triángulos en los que participa cada nodo: nx.triangles(G). Devuelve un diccionario con los nodos como claves y el número de triángulos como valores. Tu tarea en este ejercicio es modificar la función definida antes para extraer todos los nodos que están en una relación de triángulo con un nodo dado.
Este ejercicio forma parte del curso
Introducción al análisis de redes en Python
Instrucciones del ejercicio
- Escribe una función
nodes_in_triangle()con dos parámetros —Gyn— que identifique todos los nodos en una relación de triángulo con un nodo dado.- En el bucle
for, itera por todas las combinaciones posibles de relaciones en triángulo. - Comprueba si los nodos
n1yn2tienen una arista entre ellos. Si la tienen, añade ambos nodos al conjuntotriangle_nodes.
- En el bucle
- Usa tu función en una instrucción
assertpara comprobar que el número de nodos en una relación de triángulo con el nodo1del grafoTes igual a35.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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(____(____, ____)) == ____