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
Oefeninstructies
- Schrijf een functie
node_in_open_triangle()met twee parameters -Genn- 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
n1enn2geen edge tussen zich hebben, zetin_open_triangleopTrue, breek uit hetif-statement en returnin_open_triangle.
- Itereer in de
- Gebruik deze functie om het aantal open driehoeken in
Tte tellen.- Itereer in de
for-lus over alle knopen inT. - Als de huidige knoop
nin een open driehoek zit, verhoog dannum_open_triangles.
- Itereer in de
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)