ComeçarComece de graça

Identificando relacionamentos em triângulo

Agora que você aprendeu sobre cliques, é hora de usar esse conhecimento para encontrar estruturas em uma rede. Vamos começar pelos triângulos. Podemos nos interessar por triângulos porque eles são o clique complexo mais simples. Vamos escrever algumas funções; estes exercícios vão guiar você pela lógica fundamental por trás de algoritmos em redes.

Na rede do Twitter, cada nó tem um rótulo 'occupation' associado, no qual a ocupação profissional do usuário do Twitter é dividida em celebrity, politician e scientist. Uma possível aplicação de algoritmos que encontram triângulos é descobrir se usuários com ocupações similares têm mais probabilidade de formar um clique entre si.

Este exercício faz parte do curso

Introdução à Análise de Redes em Python

Ver curso

Instruções do exercício

  • Importe combinations de itertools.
  • Escreva uma função is_in_triangle() que tenha dois parâmetros — G e n — e verifique se um nó dado está ou não em um relacionamento em triângulo.
    • combinations(iterable, n) retorna combinações de tamanho n a partir de iterable. Isso será útil aqui, pois você quer combinações de tamanho 2 de list(G.neighbors(n)).
    • Para verificar se existe uma aresta entre dois nós, use o método .has_edge(node1, node2). Se existir uma aresta, então o nó informado está em um relacionamento em triângulo, e você deve retornar True.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

____

# 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 e executar o código