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
Instruções do exercício
- Importe
combinationsdeitertools. - Escreva uma função
is_in_triangle()que tenha dois parâmetros —Gen— e verifique se um nó dado está ou não em um relacionamento em triângulo.combinations(iterable, n)retorna combinações de tamanhona partir deiterable. Isso será útil aqui, pois você quer combinações de tamanho2delist(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 retornarTrue.
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