Memeriksa apakah ada self-loop dalam graf
Seperti yang dibahas Eric, NetworkX juga memungkinkan adanya edge yang mulai dan berakhir pada node yang sama; meskipun ini tidak intuitif untuk graf jejaring sosial, hal ini berguna untuk memodelkan data seperti jaringan perjalanan, di mana individu memulai di satu lokasi dan berakhir di lokasi lain.
Ada baiknya memeriksa hal ini sebelum melanjutkan analisis lebih lanjut, dan NetworkX menyediakan metode untuk tujuan tersebut: nx.number_of_selfloops(G).
Dalam latihan ini dan latihan-latihan berikutnya, Anda akan menemukan pernyataan assert bermanfaat. Sebuah assert memeriksa apakah pernyataan setelahnya bernilai True; jika tidak, akan memunculkan AssertionError.
Untuk memulai, panggil fungsi nx.number_of_selfloops(), dengan memberikan T, di IPython Shell untuk mendapatkan jumlah edge yang mulai dan berakhir pada node yang sama. Sejumlah self-loop telah ditambahkan secara sintetis ke graf. Tugas Anda dalam latihan ini adalah menulis sebuah fungsi yang mengembalikan edge-edge tersebut.
Latihan ini adalah bagian dari kursus
Pengantar Analisis Jaringan di Python
Petunjuk latihan
- Definisikan fungsi bernama
find_selfloop_nodes()yang menerima satu argumen:G.- Dengan
forloop, iterasi semua edge dalamG(mengabaikan metadata). - Jika node
usama dengan nodev:- Tambahkan
uke daftarnodes_in_selfloops. - Kembalikan daftar
nodes_in_selfloops.
- Tambahkan
- Dengan
- Periksa bahwa jumlah self-loop dalam graf sama dengan jumlah node dalam self-loop. Ini sudah dilakukan untuk Anda, jadi tekan 'Kirim Jawaban' untuk melihat hasilnya!
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Define find_selfloop_nodes()
def ____:
"""
Finds all nodes that have self-loops in the graph G.
"""
nodes_in_selfloops = []
# Iterate over all the edges of G
for u, v in ____:
# Check if node u and node v are the same
if ____:
# Append node u to nodes_in_selfloops
____
return nodes_in_selfloops
# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))