Dreiecksbeziehungen erkennen
Jetzt, da du cliques kennengelernt hast, kannst du dein Wissen nutzen, um Strukturen in einem Netzwerk zu finden. Als Erstes nimmst du dir Dreiecke vor. Dreiecke sind interessant, weil sie die einfachste Form einer komplexen clique sind. Lass uns ein paar Funktionen schreiben; diese Übungen führen dich durch die grundlegende Logik hinter Netzwerkalgorithmen.
Im Twitter-Netzwerk hat jeder Knoten ein 'occupation'-Label, das den Beruf der Twitter-Nutzerin bzw. des Nutzers in celebrity, politician und scientist einteilt. Eine mögliche Anwendung von Algorithmen zur Dreieckserkennung ist herauszufinden, ob Nutzer mit ähnlichen Berufen eher gemeinsam eine clique bilden.
Diese Übung ist Teil des Kurses
Einstieg in die Netzwerkanalyse mit Python
Anleitung zur Übung
- Importiere
combinationsausitertools. - Schreibe eine Funktion
is_in_triangle()mit zwei Parametern –Gundn–, die prüft, ob ein gegebener Knoten in einer Dreiecksbeziehung ist oder nicht.combinations(iterable, n)gibt Kombinationen der Größenausiterablezurück. Das ist hier hilfreich, da du Kombinationen der Größe2auslist(G.neighbors(n))brauchst.- Um zu prüfen, ob zwischen zwei Knoten eine Kante existiert, verwende die Methode
.has_edge(node1, node2). Wenn eine Kante existiert, ist der gegebene Knoten Teil einer Dreiecksbeziehung und du sollstTruezurückgeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
____
# Define is_in_triangle()
def is_in_triangle(G, n):
"""
Checks whether a node `n` in graph `G` is in a triangle relationship or not.
Returns a boolean.
"""
in_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if an edge exists between n1 and n2
if ____:
in_triangle = ____
break
return in_triangle