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
<Kurs>Einstieg in die Netzwerkanalyse mit Python</Kurs>Übungsanweisungen
- 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 praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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)