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
Instrukcje do ćwiczenia
- Napisz funkcję
node_in_open_triangle()przyjmującą dwa parametry –Gin– która sprawdza, czy dany węzeł należy do otwartego trójkąta z sąsiadami.- W pętli
foriteruj po wszystkich możliwych kombinacjach relacji trójkątnych. - Jeśli węzły
n1in2nie są połączone krawędzią, ustawin_open_trianglenaTrue, wyjdź z blokuifi zwróćin_open_triangle.
- W pętli
- Użyj tej funkcji, aby policzyć liczbę otwartych trójkątów w
T.- W pętli
foriteruj po wszystkich węzłach wT. - Jeśli bieżący węzeł
nnależy do otwartego trójkąta, zwiększnum_open_triangleso 1.
- W pętli
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)