Hitta öppna trianglar
Nu är det dags att hitta öppna trianglar! Kom ihåg att de utgör grunden för vänskapsrekommendationssystem – om "A" känner "B" och "A" känner "C", är det troligt att "B" också känner "C".
Den här övningen är en del av kursen
Introduktion till nätverksanalys i Python
Övningsinstruktioner
- Skriv en funktion
node_in_open_triangle()med två parametrar –Gochn– som avgör om en nod ingår i en öppen triangel med sina grannar.- I
for-loopen, iterera över alla möjliga kombinationer av triangelrelationer. - Om noderna
n1ochn2inte har en kant mellan sig, sättin_open_triangletillTrue, bryt urif-satsen och returnerain_open_triangle.
- I
- Använd funktionen för att räkna antalet öppna trianglar som finns i
T.- I
for-loopen, iterera över alla noder iT. - Om den aktuella noden
ningår i en öppen triangel, ökanum_open_trianglesmed ett.
- I
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)