Identifier les relations en triangle
Maintenant que vous connaissez les cliques, mettez ces connaissances à profit pour détecter des structures dans un réseau. Commencez par les triangles. Ils nous intéressent car ce sont les cliques complexes les plus simples. Nous allons écrire quelques fonctions ; ces exercices vous guideront à travers la logique fondamentale des algorithmes sur les réseaux.
Dans le réseau Twitter, chaque nœud possède une étiquette 'occupation' correspondant au métier de l’utilisateur Twitter, réparti en celebrity, politician et scientist. Une application possible des algorithmes de recherche de triangles est de déterminer si des utilisateurs ayant des métiers similaires ont davantage tendance à appartenir à une même clique.
Cet exercice fait partie du cours
Introduction à l’analyse de réseaux en Python
Instructions
- 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.combinations(iterable, n)renvoie les combinaisons de taillentirées deiterable. Cela sera utile ici, car vous voulez les combinaisons de taille2delist(G.neighbors(n)).- Pour vérifier l’existence d’une arête 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 cet exemple de code.
____
# 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