LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Importiere combinations aus itertools.
  • Schreibe eine Funktion is_in_triangle() mit zwei Parametern – G und n –, die prüft, ob ein gegebener Knoten in einer Dreiecksbeziehung ist oder nicht.
    • combinations(iterable, n) gibt Kombinationen der Größe n aus iterable zurück. Das ist hier hilfreich, da du Kombinationen der Größe 2 aus list(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 sollst True zurü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
Code bearbeiten und ausführen