Identificar relaciones de triángulo
Ahora que has aprendido sobre cliques, es momento de aprovechar lo que sabes para encontrar estructuras en una red. Empezarás por los triángulos. Nos interesan los triángulos porque son el cliqué complejo más sencillo. Vamos a escribir algunas funciones; estos ejercicios te guiarán por la lógica fundamental detrás de los algoritmos de redes.
En la red de Twitter, cada nodo tiene una etiqueta 'occupation' asociada, donde la ocupación del usuario de Twitter se clasifica como celebrity, politician y scientist. Una posible aplicación de los algoritmos para encontrar triángulos es averiguar si los usuarios con ocupaciones similares tienen más probabilidades de formar un cliqué entre sí.
Este ejercicio forma parte del curso
Introducción al análisis de redes en Python
Instrucciones del ejercicio
- Importa
combinationsdeitertools. - Escribe una función
is_in_triangle()que tenga dos parámetros —Gyn— y compruebe si un nodo dado está o no en una relación de triángulo.combinations(iterable, n)devuelve combinaciones de tamañona partir deiterable. Esto te será útil aquí, ya que quieres combinaciones de tamaño2delist(G.neighbors(n)).- Para comprobar si existe una arista entre dos nodos, usa el método
.has_edge(node1, node2). Si existe una arista, entonces el nodo dado está en una relación de triángulo y debes devolverTrue.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
____
# Define is_in_triangle()
def is_in_triangle(G, n):
"""
Checks whether a node `n` in graph `G` is in a triangle relationship or not.
Returns a boolean.
"""
in_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if an edge exists between n1 and n2
if ____:
in_triangle = ____
break
return in_triangle