Пошук вузлів, що входять до трикутників
NetworkX надає API для підрахунку кількості трикутників, у яких бере участь кожен вузол: nx.triangles(G). Воно повертає словник, де ключі — це вузли, а значення — кількість трикутників. Ваше завдання у цій вправі — змінити раніше визначену функцію так, щоб вона повертала всі вузли, які утворюють трикутний зв'язок із заданим вузлом.
Ця вправа є частиною курсу
Вступ до аналізу мереж у Python
Інструкції до вправи
- Напишіть функцію
nodes_in_triangle()з двома параметрами —Gіn— яка знаходить усі вузли, що утворюють трикутний зв'язок із заданим вузлом.- У циклі
forпереберіть усі можливі комбінації для трикутних зв'язків. - Перевірте, чи мають вузли
n1іn2ребро між собою. Якщо так, додайте обидва вузли до множиниtriangle_nodes.
- У циклі
- Використайте вашу функцію в операторі
assert, щоб перевірити, що кількість вузлів, які утворюють трикутний зв'язок із вузлом1графаT, дорівнює35.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
from itertools import combinations
# Write a function that identifies all nodes in a triangle relationship with a given node.
def nodes_in_triangle(G, n):
"""
Returns the nodes in a graph `G` that are involved in a triangle relationship with the node `n`.
"""
triangle_nodes = set([n])
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if n1 and n2 have an edge between them
if ____:
# Add n1 to triangle_nodes
____
# Add n2 to triangle_nodes
____
return triangle_nodes
# Write the assertion statement
assert len(____(____, ____)) == ____