Knopen vinden die deel uitmaken van driehoeken
NetworkX biedt een API om het aantal driehoeken te tellen waarbij elke knoop betrokken is: nx.triangles(G). Deze geeft een dictionary terug met knopen als sleutels en het aantal driehoeken als waarden. Jouw taak in deze oefening is om de eerder gedefinieerde functie aan te passen zodat alle knopen worden opgehaald die een driehoeksrelatie hebben met een opgegeven knoop.
Deze oefening maakt deel uit van de cursus
Introductie tot netwerkanalyse in Python
Oefeninstructies
- Schrijf een functie
nodes_in_triangle()met twee parameters —Genn— die alle knopen identificeert met een driehoeksrelatie met een opgegeven knoop.- Itereer in de
for-lus over alle mogelijke combinaties voor driehoeksrelaties. - Controleer of de knopen
n1enn2een verbinding tussen zich hebben. Zo ja, voeg beide knopen toe aan de settriangle_nodes.
- Itereer in de
- Gebruik je functie in een
assert-statement om te controleren dat het aantal knopen met een driehoeksrelatie met knoop1van graafTgelijk is aan35.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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(____(____, ____)) == ____