ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Importa combinations de itertools.
  • Escribe una función is_in_triangle() que tenga dos parámetros —G y n— y compruebe si un nodo dado está o no en una relación de triángulo.
    • combinations(iterable, n) devuelve combinaciones de tamaño n a partir de iterable. Esto te será útil aquí, ya que quieres combinaciones de tamaño 2 de list(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 devolver True.

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
Editar y ejecutar código