Поиск узлов, входящих в треугольники
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(____(____, ____)) == ____