Açık üçgenleri bulma
Şimdi açık üçgenleri bulmaya geçelim! Hatırlarsan, arkadaş öneri sistemlerinin temelini oluştururlar; eğer "A" "B"yi tanıyor ve "A" "C"yi tanıyorsa, büyük olasılıkla "B" de "C"yi tanıyordur.
Bu egzersiz, kursun bir parçasıdır
Python ile Ağ Analizine Giriş
Egzersiz talimatları
Gvenolmak üzere iki parametre alan ve bir düğümün komşularıyla birlikte açık bir üçgen içinde olup olmadığını belirleyennode_in_open_triangle()adlı bir fonksiyon yaz.fordöngüsünde tüm olası üçgen ilişki kombinasyonlarını dolaş.- Eğer
n1ven2düğümleri arasında bir kenar yoksa,in_open_triangledeğeriniTrueyap,ififadesinden çık vein_open_triangledeğerini döndür.
- Bu fonksiyonu
Tiçinde var olan açık üçgenlerin sayısını bulmak için kullan.fordöngüsündeTiçindeki tüm düğümleri dolaş.- Eğer mevcut düğüm
naçık bir üçgen içindeyse,num_open_trianglesdeğerini artır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)