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
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 dinG(excluzând metadatele). - Dacă nodul
ueste egal cu nodulv:- Adaugă
ula listanodes_in_selfloops. - Returnează lista
nodes_in_selfloops.
- Adaugă
- Folosind o buclă
- 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))