Identificare relazioni a triangolo
Ora che hai imparato cosa sono le clique, è il momento di mettere a frutto ciò che sai per trovare strutture in una rete. Partiremo dai triangoli: ci interessano perché rappresentano la più semplice clique “complessa”. Scriveremo alcune funzioni; questi esercizi ti guideranno nella logica di base degli algoritmi su reti.
Nel network di Twitter, ogni nodo ha un'etichetta 'occupation' associata, in cui la professione dell'utente Twitter è suddivisa in celebrity, politician e scientist. Una possibile applicazione degli algoritmi per trovare triangoli è verificare se utenti con occupazioni simili hanno maggiore probabilità di formare una clique tra loro.
Questo esercizio fa parte del corso
Introduzione all'analisi delle reti in Python
Istruzioni dell'esercizio
- Importa
combinationsdaitertools. - Scrivi una funzione
is_in_triangle()con due parametri,Gen, che verifichi se un dato nodo fa parte di una relazione a triangolo.combinations(iterable, n)restituisce le combinazioni di dimensionendaiterable. Qui sarà utile perché ti servono combinazioni di dimensione2dalist(G.neighbors(n)).- Per controllare se esiste un arco tra due nodi, usa il metodo
.has_edge(node1, node2). Se l'arco esiste, allora il nodo dato è in una relazione a triangolo e dovresti restituireTrue.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
____
# 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