ÎncepețiÎncepe gratuit

Verificarea existenței buclelor proprii în graf

Așa cum a explicat Eric, NetworkX permite și muchii care încep și se termină în același nod. Deși acest lucru ar părea contraintuitiv pentru un graf de rețea socială, este util pentru modelarea unor date precum rețelele de trasee, în care persoanele pornesc dintr-o locație și ajung în alta.

Este bine să verifici acest aspect înainte de a continua cu analizele ulterioare. NetworkX oferă o metodă specială în acest scop: nx.number_of_selfloops(G).

În acest exercițiu, ca și în cele care urmează, instrucțiunea assert îți va fi de folos. O instrucțiune assert verifică dacă expresia plasată după ea este evaluată ca True; în caz contrar, va genera un AssertionError.

Pentru început, apelează funcția nx.number_of_selfloops() în Shell-ul IPython, pasând T ca argument, pentru a obține numărul de muchii care încep și se termină în același nod. Un număr de bucle proprii au fost adăugate sintetic în graf. Sarcina ta în acest exercițiu este să scrii o funcție care returnează aceste muchii.

Acest exercițiu face parte din cursul

Introducere în analiza rețelelor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește o funcție numită find_selfloop_nodes() care primește un singur argument: G.
    • Folosind o buclă for, iterează peste toate muchiile din G (excluzând metadatele).
    • Dacă nodul u este egal cu nodul v:
      • Adaugă u la lista nodes_in_selfloops.
      • Returnează lista nodes_in_selfloops.
  • Verifică că numărul de bucle proprii din graf este egal cu numărul de noduri implicate în bucle proprii. Această verificare a fost deja realizată pentru tine, deci apasă „Trimite răspunsul" pentru a vedea rezultatul!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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))
Editează și rulează codul