Encontrando triângulos abertos
Agora vamos avançar para encontrar triângulos abertos! Lembre-se de que eles são a base dos sistemas de recomendação de amigos; se "A" conhece "B" e "A" conhece "C", é provável que "B" também conheça "C".
Este exercício faz parte do curso
Introdução à Análise de Redes em Python
Instruções do exercício
- Escreva uma função
node_in_open_triangle()com dois parâmetros —Gen— que identifique se um nó está presente em um triângulo aberto com seus vizinhos.- No loop
for, itere por todas as combinações possíveis de relacionamentos de triângulo. - Se os nós
n1en2não tiverem uma aresta entre eles, definain_open_trianglecomoTrue, saia doife retornein_open_triangle.
- No loop
- Use essa função para contar quantos triângulos abertos existem em
T.- No loop
for, itere por todos os nós emT. - Se o nó atual
nestiver em um triângulo aberto, incrementenum_open_triangles.
- No loop
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
from itertools import combinations
# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
"""
Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
"""
in_open_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if n1 and n2 do NOT have an edge between them
if not ____:
in_open_triangle = ____
break
return ____
# Compute the number of open triangles in T
num_open_triangles = 0
# Iterate over all the nodes in T
for n in ____:
# Check if the current node is in an open triangle
if ____:
# Increment num_open_triangles
____ += 1
print(num_open_triangles)