Offene Dreiecke finden
Kommen wir nun zum Finden offener Dreiecke! Denk daran: Sie sind die Grundlage von Freundschaftsempfehlungen. Wenn „A“ „B“ kennt und „A“ „C“ kennt, ist es wahrscheinlich, dass „B“ auch „C“ kennt.
Diese Übung ist Teil des Kurses
Einstieg in die Netzwerkanalyse mit Python
Anleitung zur Übung
- Schreib eine Funktion
node_in_open_triangle()mit zwei Parametern –Gundn–, die erkennt, ob ein Knoten zusammen mit seinen Nachbarn in einem offenen Dreieck liegt.- Iteriere in der
for-Schleife über alle möglichen Dreiecksbeziehungs-Kombinationen. - Wenn die Knoten
n1undn2keine Kante zwischen sich haben, setzein_open_triangleaufTrue, brich aus derif-Abfrage aus und gibin_open_trianglezurück.
- Iteriere in der
- Verwende diese Funktion, um die Anzahl der offenen Dreiecke in
Tzu zählen.- Iteriere in der
for-Schleife über alle Knoten inT. - Befindet sich der aktuelle Knoten
nin einem offenen Dreieck, erhöhenum_open_triangles.
- Iteriere in der
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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)