Identyfikowanie relacji trójkątnych
Teraz, gdy wiesz już, czym są kliki, czas wykorzystać tę wiedzę do znajdowania struktur w sieci. Zaczniesz od trójkątów – to najprostsza złożona klika. Napiszemy kilka funkcji; te ćwiczenia przeprowadzą cię przez podstawową logikę algorytmów sieciowych.
W sieci Twitterowej każdy węzeł ma przypisaną etykietę 'occupation', która określa zawód użytkownika – może to być celebrity, politician lub scientist. Jednym z możliwych zastosowań algorytmów wyszukiwania trójkątów jest sprawdzenie, czy użytkownicy o podobnych zawodach częściej tworzą kliki.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy sieci w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
combinationsz bibliotekiitertools. - Napisz funkcję
is_in_triangle(), która przyjmuje dwa parametry –Gin– i sprawdza, czy dany węzeł należy do relacji trójkątnej.combinations(iterable, n)zwraca kombinacje rozmiarunziterable. Przyda się tutaj, ponieważ potrzebujesz kombinacji rozmiaru2zlist(G.neighbors(n)).- Aby sprawdzić, czy między dwoma węzłami istnieje krawędź, użyj metody
.has_edge(node1, node2). Jeśli krawędź istnieje, dany węzeł należy do relacji trójkątnej – zwróć wtedyTrue.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
____
# 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