Identifiera triangelrelationer
Nu när du har lärt dig om kliker är det dags att använda den kunskapen för att hitta strukturer i ett nätverk. Vi börjar med trianglar – den enklaste formen av komplex klik. Vi skriver några funktioner, och dessa övningar leder dig igenom den grundläggande logiken bakom nätverksalgoritmer.
I Twitter-nätverket har varje nod en 'occupation'-etikett, där Twitter-användarens yrke är indelat i celebrity, politician och scientist. En möjlig tillämpning av triangelsökningsalgoritmer är att undersöka om användare med liknande yrken är mer benägna att ingå i en klik med varandra.
Den här övningen är en del av kursen
Introduktion till nätverksanalys i Python
Övningsinstruktioner
- Importera
combinationsfrånitertools. - Skriv en funktion
is_in_triangle()med två parametrar –Gochn– som kontrollerar om en given nod ingår i en triangelrelation eller inte.combinations(iterable, n)returnerar kombinationer av storlekennfråniterable. Det är användbart här, eftersom du vill ha kombinationer av storleken2frånlist(G.neighbors(n)).- Använd metoden
.has_edge(node1, node2)för att kontrollera om en kant finns mellan två noder. Om en kant finns är den givna noden del av en triangelrelation, och du ska returneraTrue.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
____
# 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