Пошук відкритих трикутників
Переходьте до пошуку відкритих трикутників! Нагадаємо, що вони лежать в основі систем рекомендацій друзів: якщо «A» знає «B» і «A» знає «C», то ймовірно, що «B» також знає «C».
Ця вправа є частиною курсу
Вступ до аналізу мереж у Python
Інструкції до вправи
- Напишіть функцію
node_in_open_triangle(), яка має два параметри —Gіn— і визначає, чи перебуває вузол у відкритому трикутнику зі своїми сусідами.- У
for-циклі пройдіть усі можливі комбінації зв'язків для трикутника. - Якщо вузли
n1іn2не мають між собою ребра, встановітьin_open_triangleуTrue, вийдіть зifі повернітьin_open_triangle.
- У
- Використайте цю функцію, щоб порахувати кількість відкритих трикутників у
T.- У
for-циклі пройдіть усі вузли вT. - Якщо поточний вузол
nвходить до відкритого трикутника, збільшітьnum_open_triangles.
- У
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)