MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Definisikan fungsi bernama find_selfloop_nodes() yang menerima satu argumen: G.
    • Dengan for loop, iterasi semua edge dalam G (mengabaikan metadata).
    • Jika node u sama dengan node v:
      • Tambahkan u ke daftar nodes_in_selfloops.
      • Kembalikan daftar nodes_in_selfloops.
  • 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))
Edit dan Jalankan Kode