Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Importera combinations från itertools.
  • Skriv en funktion is_in_triangle() med två parametrar – G och n – som kontrollerar om en given nod ingår i en triangelrelation eller inte.
    • combinations(iterable, n) returnerar kombinationer av storleken n från iterable. Det är användbart här, eftersom du vill ha kombinationer av storleken 2 från list(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 returnera True.

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
Redigera och kör kod