Menemukan segitiga terbuka
Sekarang mari kita beralih ke pencarian segitiga terbuka! Ingat bahwa ini menjadi dasar dari sistem rekomendasi teman; jika "A" mengenal "B" dan "A" mengenal "C", maka kemungkinan "B" juga mengenal "C".
Latihan ini adalah bagian dari kursus
Pengantar Analisis Jaringan di Python
Petunjuk latihan
- Tulis fungsi
node_in_open_triangle()yang memiliki dua parameter —Gdann— dan menentukan apakah suatu simpul berada dalam segitiga terbuka dengan para tetangganya.- Dalam loop
for, iterasi semua kemungkinan kombinasi relasi segitiga. - Jika simpul
n1dann2tidak memiliki sisi di antara keduanya, setelin_open_trianglemenjadiTrue, keluar dari pernyataanif, dan kembalikanin_open_triangle.
- Dalam loop
- Gunakan fungsi ini untuk menghitung jumlah segitiga terbuka yang ada di
T.- Dalam loop
for, iterasi semua simpul diT. - Jika simpul saat ini
nberada dalam segitiga terbuka, tingkatkannum_open_triangles.
- Dalam loop
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)