CommencerCommencer gratuitement

Identifier les triangles ouverts

Passons maintenant à l’identification des triangles ouverts ! Rappelez-vous qu’ils sont à la base des systèmes de recommandation d’amis : si « A » connaît « B » et « A » connaît « C », il est probable que « B » connaisse aussi « C ».

Cet exercice fait partie du cours

Introduction à l’analyse de réseaux en Python

Afficher le cours

Instructions

  • Écrivez une fonction node_in_open_triangle() avec deux paramètres — G et n — qui détermine si un nœud fait partie d’un triangle ouvert avec ses voisins.
    • Dans la boucle for, parcourez toutes les combinaisons possibles de relations en triangle.
    • Si les nœuds n1 et n2 ne sont pas reliés par une arête, affectez True à in_open_triangle, sortez du if et retournez in_open_triangle.
  • Utilisez cette fonction pour compter le nombre de triangles ouverts dans T.
    • Dans la boucle for, itérez sur tous les nœuds de T.
    • Si le nœud courant n appartient à un triangle ouvert, incrémentez num_open_triangles.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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)
Modifier et exécuter le code