Mengidentifikasi relasi segitiga
Sekarang setelah Anda mempelajari tentang clique, saatnya memanfaatkan pengetahuan tersebut untuk menemukan struktur dalam sebuah jaringan. Target pertama Anda adalah segitiga. Kita mungkin tertarik pada segitiga karena ini adalah clique kompleks yang paling sederhana. Mari menulis beberapa fungsi; latihan-latihan ini akan membawa Anda melalui logika dasar di balik algoritma jaringan.
Dalam jaringan Twitter, setiap node memiliki label 'occupation' yang menunjukkan pekerjaan pengguna Twitter, diklasifikasikan menjadi celebrity, politician, dan scientist. Salah satu penerapan potensial dari algoritma pencarian segitiga adalah mengetahui apakah pengguna dengan pekerjaan serupa lebih mungkin berada dalam sebuah clique satu sama lain.
Latihan ini adalah bagian dari kursus
Pengantar Analisis Jaringan di Python
Petunjuk latihan
- Impor
combinationsdariitertools. - Tulis fungsi
is_in_triangle()dengan dua parameter —Gdann— yang memeriksa apakah sebuah node berada dalam relasi segitiga atau tidak.combinations(iterable, n)mengembalikan kombinasi berukuranndariiterable. Ini akan berguna di sini, karena Anda memerlukan kombinasi berukuran2darilist(G.neighbors(n)).- Untuk memeriksa apakah ada sisi antara dua node, gunakan metode
.has_edge(node1, node2). Jika sisi ada, maka node tersebut berada dalam relasi segitiga, dan Anda harus mengembalikanTrue.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
____
# Define is_in_triangle()
def is_in_triangle(G, n):
"""
Checks whether a node `n` in graph `G` is in a triangle relationship or not.
Returns a boolean.
"""
in_triangle = False
# Iterate over all possible triangle relationship combinations
for n1, n2 in ____:
# Check if an edge exists between n1 and n2
if ____:
in_triangle = ____
break
return in_triangle