Визначення трикутних зв'язків
Тепер, коли ви дізналися про кліки, час застосувати знання, щоб знаходити структури в мережі. Спершу зосередимося на трикутниках. Вони цікаві тим, що це найпростіший приклад складної кліки. Напишімо кілька функцій; ці вправи проведуть вас крізь базову логіку мережевих алгоритмів.
У мережі Twitter кожен вузол має мітку 'occupation', де фах користувача Twitter поділено на celebrity, politician та scientist. Один із можливих застосунків алгоритмів пошуку трикутників — з'ясувати, чи користувачі зі схожими професіями частіше утворюють кліку один з одним.
Ця вправа є частиною курсу
Вступ до аналізу мереж у Python
Інструкції до вправи
- Імпортуйте
combinationsзitertools. - Напишіть функцію
is_in_triangle(), яка має два параметри —Gіn— та перевіряє, чи перебуває заданий вузол у трикутному зв'язку.combinations(iterable, n)повертає комбінації розміруnзiterable. Це стане в пригоді тут, адже вам потрібні комбінації розміру2зlist(G.neighbors(n)).- Щоб перевірити, чи існує ребро між двома вузлами, скористайтеся методом
.has_edge(node1, node2). Якщо ребро існує, то заданий вузол перебуває у трикутному зв'язку, і слід повернутиTrue.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
____
# 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