Détecter des relations en triangle
Maintenant que vous avez vu les cliques, mettez vos nouvelles connaissances à profit pour repérer des structures dans un réseau. Commencez par les triangles. Ils nous intéressent parce qu'ils représentent la clique complexe la plus simple. Écrivons quelques fonctions ; ces exercices vous feront parcourir la logique de base des algorithmes de réseaux.
Dans le réseau Twitter, chaque nœud possède une étiquette 'occupation' où le type d'emploi de l'utilisateur Twitter est classé en celebrity, politician et scientist. Une application possible des algorithmes de détection de triangles consiste à vérifier si des utilisateurs ayant des occupations similaires sont plus susceptibles de former une clique entre eux.
Cette activité fait partie du cours
Introduction à l'analyse des réseaux en Python
Instructions de l’exercice
- Importez
combinationsdepuisitertools. - Écrivez une fonction
is_in_triangle()qui prend deux paramètres —Getn— et vérifie si un nœud donné fait partie d'une relation en triangle ou non.combinations(iterable, n)retourne les combinaisons de taillenà partir deiterable. C'est utile ici, car vous voulez des combinaisons de taille2à partir delist(G.neighbors(n)).- Pour vérifier si une arête existe entre deux nœuds, utilisez la méthode
.has_edge(node1, node2). Si une arête existe, alors le nœud donné fait partie d'un triangle et vous devez retournerTrue.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
____
# 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