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
Oefeninstructies
- Importeer
combinationsuititertools. - Schrijf een functie
is_in_triangle()met twee parameters —Genn— die controleert of een gegeven node in een driehoeksrelatie zit of niet.combinations(iterable, n)geeft combinaties van groottenuititerableterug. Dat is hier handig, want je wilt combinaties van grootte2uitlist(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 jeTrueretourneren.
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