IniziaInizia gratis

Trovare i nodi coinvolti in triangoli

NetworkX fornisce un'API per contare il numero di triangoli a cui partecipa ciascun nodo: nx.triangles(G). Restituisce un dizionario con i nodi come chiavi e il numero di triangoli come valori. Il tuo compito in questo esercizio è modificare la funzione definita in precedenza per estrarre tutti i nodi coinvolti in un triangolo con un nodo specifico.

Questo esercizio fa parte del corso

Introduzione all'analisi delle reti in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Scrivi una funzione nodes_in_triangle() che ha due parametri - G e n - e identifica tutti i nodi che formano un triangolo con un dato nodo.
    • Nel ciclo for, itera su tutte le possibili combinazioni di triangoli.
    • Verifica se i nodi n1 e n2 hanno un arco tra loro. In caso affermativo, aggiungi entrambi i nodi all'insieme triangle_nodes.
  • Usa la tua funzione in un'istruzione assert per verificare che il numero di nodi che formano un triangolo con il nodo 1 del grafo T sia uguale a 35.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

from itertools import combinations

# Write a function that identifies all nodes in a triangle relationship with a given node.
def nodes_in_triangle(G, n):
    """
    Returns the nodes in a graph `G` that are involved in a triangle relationship with the node `n`.
    """
    triangle_nodes = set([n])

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____:

        # Check if n1 and n2 have an edge between them
        if ____:

            # Add n1 to triangle_nodes
            ____

            # Add n2 to triangle_nodes
            ____

    return triangle_nodes

# Write the assertion statement
assert len(____(____, ____)) == ____
Modifica ed esegui il codice