Znajdowanie węzłów tworzących trójkąty
NetworkX udostępnia API do zliczania trójkątów, w których uczestniczy każdy węzeł: nx.triangles(G). Funkcja zwraca słownik, w którym kluczami są węzły, a wartościami – liczba trójkątów. Twoim zadaniem w tym ćwiczeniu jest zmodyfikowanie wcześniej zdefiniowanej funkcji tak, aby wyodrębniała wszystkie węzły powiązane trójkątem z danym węzłem.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy sieci w Pythonie
Instrukcje do ćwiczenia
- Napisz funkcję
nodes_in_triangle()przyjmującą dwa parametry –Gin– która znajdzie wszystkie węzły powiązane trójkątem z danym węzłem.- W pętli
foriteruj po wszystkich możliwych kombinacjach tworzących trójkąt. - Sprawdź, czy między węzłami
n1an2istnieje krawędź. Jeśli tak, dodaj oba węzły do zbiorutriangle_nodes.
- W pętli
- Użyj swojej funkcji w instrukcji
assert, aby sprawdzić, czy liczba węzłów powiązanych trójkątem z węzłem1grafuTjest równa35.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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(____(____, ____)) == ____