IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Importa combinations da itertools.
  • Scrivi una funzione is_in_triangle() con due parametri, G e n, che verifichi se un dato nodo fa parte di una relazione a triangolo.
    • combinations(iterable, n) restituisce le combinazioni di dimensione n da iterable. Qui sarà utile perché ti servono combinazioni di dimensione 2 da list(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 restituire True.

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
Modifica ed esegui il codice