Zacznij terazZacznij za darmo

Znajdowanie otwartych trójkątów

Czas zająć się otwartymi trójkątami! Przypomnij sobie, że stanowią one podstawę systemów rekomendacji znajomych: jeśli „A" zna „B" i „A" zna „C", to prawdopodobnie „B" również zna „C".

To ćwiczenie jest częścią kursu

Wprowadzenie do analizy sieci w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Napisz funkcję node_in_open_triangle() przyjmującą dwa parametry – G i n – która sprawdza, czy dany węzeł należy do otwartego trójkąta z sąsiadami.
    • W pętli for iteruj po wszystkich możliwych kombinacjach relacji trójkątnych.
    • Jeśli węzły n1 i n2 nie są połączone krawędzią, ustaw in_open_triangle na True, wyjdź z bloku if i zwróć in_open_triangle.
  • Użyj tej funkcji, aby policzyć liczbę otwartych trójkątów w T.
    • W pętli for iteruj po wszystkich węzłach w T.
    • Jeśli bieżący węzeł n należy do otwartego trójkąta, zwiększ num_open_triangles o 1.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

from itertools import combinations

# Define node_in_open_triangle()
def node_in_open_triangle(G, n):
    """
    Checks whether pairs of neighbors of node `n` in graph `G` are in an 'open triangle' relationship with node `n`.
    """
    in_open_triangle = False

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____:

        # Check if n1 and n2 do NOT have an edge between them
        if not ____:

            in_open_triangle = ____

            break

    return ____

# Compute the number of open triangles in T
num_open_triangles = 0

# Iterate over all the nodes in T
for n in ____:

    # Check if the current node is in an open triangle
    if ____:

        # Increment num_open_triangles
        ____ += 1

print(num_open_triangles)
Edytuj i uruchom kod