Hledání trojúhelníkových vztahů
Teď, když už víš, co jsou kliky, je čas využít tyto znalosti k hledání struktur v síti. Začneme trojúhelníky – jsou to nejjednodušší komplexní kliky. Napíšeme několik funkcí, které tě provedou základní logikou síťových algoritmů.
V síti Twitter má každý uzel přiřazený atribut 'occupation', který rozděluje uživatele podle jejich povolání na celebrity, politician a scientist. Algoritmy pro hledání trojúhelníků lze využít například k tomu, abys zjistil/a, jestli uživatelé se stejným povoláním mají větší tendenci tvořit spolu kliky.
Toto cvičení je součástí kurzu
Úvod do analýzy sítí v Pythonu
Pokyny k cvičení
- Importuj
combinationsz moduluitertools. - Napiš funkci
is_in_triangle()se dvěma parametry –Gan– která zkontroluje, jestli se daný uzel nachází v trojúhelníkovém vztahu.combinations(iterable, n)vrací kombinace velikostinziterable. Hodí se ti to zde, protože budeš chtít kombinace velikosti2zlist(G.neighbors(n)).- K ověření, jestli mezi dvěma uzly existuje hrana, použij metodu
.has_edge(node1, node2). Pokud hrana existuje, daný uzel je součástí trojúhelníkového vztahu a funkce by měla vrátitTrue.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
____
# 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