Găsirea triunghiurilor deschise
Să trecem acum la găsirea triunghiurilor deschise! Reamintește-ți că acestea stau la baza sistemelor de recomandare a prietenilor: dacă „A" îl cunoaște pe „B" și „A" îl cunoaște pe „C", atunci există probabilitatea ca „B" să îl cunoască și pe „C".
Acest exercițiu face parte din cursul
Introducere în analiza rețelelor în Python
Instrucțiuni pentru exercițiu
- Scrie o funcție
node_in_open_triangle()cu doi parametri –Gșin– care identifică dacă un nod se află într-un triunghi deschis împreună cu vecinii săi.- În bucla
for, iterează peste toate combinațiile posibile de relații triunghiulare. - Dacă nodurile
n1șin2nu au o muchie între ele, seteazăin_open_trianglelaTrue, ieși din instrucțiuneaifși returneazăin_open_triangle.
- În bucla
- Folosește această funcție pentru a număra triunghiurile deschise existente în
T.- În bucla
for, iterează peste toate nodurile dinT. - Dacă nodul curent
nse află într-un triunghi deschis, incrementeazănum_open_triangles.
- În bucla
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)