IniziaInizia gratis

Trovare triangoli aperti

Passiamo ora a individuare i triangoli aperti! Ricorda che sono alla base dei sistemi di raccomandazione delle amicizie: se "A" conosce "B" e "A" conosce "C", è probabile che anche "B" conosca "C".

Questo esercizio fa parte del corso

Introduzione all'analisi delle reti in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Scrivi una funzione node_in_open_triangle() che ha due parametri - G e n - e identifica se un nodo è presente in un triangolo aperto con i suoi vicini.
    • Nel ciclo for, itera su tutte le possibili combinazioni di relazioni a triangolo.
    • Se i nodi n1 e n2 non hanno un arco tra loro, imposta in_open_triangle su True, esci dall'istruzione if e restituisci in_open_triangle.
  • Usa questa funzione per contare il numero di triangoli aperti presenti in T.
    • Nel ciclo for, itera su tutti i nodi in T.
    • Se il nodo corrente n è in un triangolo aperto, incrementa num_open_triangles.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

from itertools import combinations

# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
    """
    Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
    """
    in_open_triangle = False

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

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

            in_open_triangle = ____

            break

    return ____

# Compute the number of open triangles in T
num_open_triangles = 0

# Iterate over all the nodes in T
for n in ____:

    # Check if the current node is in an open triangle
    if ____:

        # Increment num_open_triangles
        ____ += 1

print(num_open_triangles)
Modifica ed esegui il codice