Hledání otevřených trojúhelníků
Teď se zaměříme na hledání otevřených trojúhelníků! Připomeň si, že tvoří základ systémů pro doporučování přátel: pokud „A" zná „B" a „A" zná „C", je pravděpodobné, že „B" zná také „C".
Toto cvičení je součástí kurzu
Úvod do analýzy sítí v Pythonu
Pokyny k cvičení
- Napiš funkci
node_in_open_triangle()se dvěma parametry –Gan–, která zjistí, jestli se daný uzel nachází v otevřeném trojúhelníku se svými sousedy.- V cyklu
foriteruj přes všechny možné kombinace trojúhelníkových vztahů. - Pokud mezi uzly
n1an2neexistuje hrana, nastavin_open_trianglenaTrue, ukončiifblok a vrať hodnotuin_open_triangle.
- V cyklu
- Pomocí této funkce spočítej, kolik otevřených trojúhelníků v grafu
Texistuje.- V cyklu
foriteruj přes všechny uzly vT. - Pokud se aktuální uzel
nnachází v otevřeném trojúhelníku, zvyš hodnotunum_open_triangleso jedna.
- V cyklu
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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)