Aan de slagGa gratis aan de slag

Open driehoeken vinden

Laten we nu open driehoeken gaan vinden! Onthoud dat ze de basis vormen van systemen voor vriendaanbevelingen; als "A" "B" kent en "A" "C" kent, is het waarschijnlijk dat "B" ook "C" kent.

Deze oefening maakt deel uit van de cursus

Introductie tot netwerkanalyse in Python

Cursus bekijken

Oefeninstructies

  • Schrijf een functie node_in_open_triangle() met twee parameters - G en n - die bepaalt of een knoop zich in een open driehoek met zijn buren bevindt.
    • Itereer in de for-lus over alle mogelijke combinaties voor driehoeksrelaties.
    • Als de knopen n1 en n2 geen edge tussen zich hebben, zet in_open_triangle op True, breek uit het if-statement en return in_open_triangle.
  • Gebruik deze functie om het aantal open driehoeken in T te tellen.
    • Itereer in de for-lus over alle knopen in T.
    • Als de huidige knoop n in een open driehoek zit, verhoog dan num_open_triangles.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren