Knoten finden, die an Dreiecken beteiligt sind
NetworkX stellt mit nx.triangles(G) eine API bereit, um zu zählen, an wie vielen Dreiecken jeder Knoten beteiligt ist. Sie liefert ein Dictionary mit Knoten als Keys und der Anzahl der Dreiecke als Werten. Deine Aufgabe in dieser Übung ist es, die zuvor definierte Funktion so zu ändern, dass alle Knoten ermittelt werden, die mit einem gegebenen Knoten in einer Dreiecksbeziehung stehen.
Diese Übung ist Teil des Kurses
Einstieg in die Netzwerkanalyse mit Python
Anleitung zur Übung
- Schreibe eine Funktion
nodes_in_triangle()mit zwei Parametern –Gundn–, die alle Knoten identifiziert, die mit einem gegebenen Knoten in einer Dreiecksbeziehung stehen.- Iteriere in der
for-Schleife über alle möglichen Dreiecks-Kombinationen. - Prüfe, ob zwischen den Knoten
n1undn2eine Kante existiert. Falls ja, füge beide Knoten zur Mengetriangle_nodeshinzu.
- Iteriere in der
- Verwende deine Funktion in einem
assert-Statement, um zu prüfen, dass die Anzahl der Knoten, die mit Knoten1des GraphenTin einer Dreiecksbeziehung stehen, gleich35ist.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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(____(____, ____)) == ____