ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Escreva uma função node_in_open_triangle() com dois parâmetros — G e n — 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 n1 e n2 não tiverem uma aresta entre eles, defina in_open_triangle como True, saia do if e retorne in_open_triangle.
  • Use essa função para contar quantos triângulos abertos existem em T.
    • No loop for, itere por todos os nós em T.
    • Se o nó atual n estiver em um triângulo aberto, incremente num_open_triangles.

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