Aan de slagGa gratis aan de slag

Driehoeksrelaties herkennen

Nu je over cliques hebt geleerd, is het tijd om toe te passen wat je weet om structuren in een netwerk te vinden. Je begint met driehoeken. Driehoeken zijn interessant omdat het de eenvoudigste complexe clique zijn. Laten we een paar functies schrijven; deze oefeningen leiden je door de basislogica achter netwerkalgoritmen.

In het Twitter-netwerk heeft elke node een label 'occupation', waarin het beroep van de Twitter-gebruiker is ingedeeld als celebrity, politician en scientist. Een mogelijke toepassing van algoritmen die driehoeken vinden, is nagaan of gebruikers met vergelijkbare beroepen vaker samen in een clique zitten.

Deze oefening maakt deel uit van de cursus

Introductie tot netwerkanalyse in Python

Cursus bekijken

Oefeninstructies

  • Importeer combinations uit itertools.
  • Schrijf een functie is_in_triangle() met twee parameters — G en n — die controleert of een gegeven node in een driehoeksrelatie zit of niet.
    • combinations(iterable, n) geeft combinaties van grootte n uit iterable terug. Dat is hier handig, want je wilt combinaties van grootte 2 uit list(G.neighbors(n)).
    • Gebruik de methode .has_edge(node1, node2) om te controleren of er een rand tussen twee nodes bestaat. Als er een rand bestaat, zit de gegeven node in een driehoeksrelatie en moet je True retourneren.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

____

# 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 bewerken en uitvoeren