Articles

DiGraph – Grafuri dirijate cu bucle proprii¶

Overview¶

classDiGraph(incoming_graph_data=None, **attr)¶

Clasă de bază pentru grafuri dirijate.

Un DiGraph stochează noduri și muchii cu date opționale, sau atribute.

DiGraphs deține muchii direcționate. Buclele proprii sunt permise, dar marginile multiple (paralele) nu sunt permise.

Nodurile pot fi obiecte Python arbitrare (hashable) cu atribute opționale cheie/valoare. Prin convenție, None nu este utilizat ca nod.

Bordurile sunt reprezentate ca legături între noduri cu atribute opționale cheie/valoare.

Parametri

  • incoming_graph_data (graf de intrare (opțional, implicit: None)) – Date pentru inițializarea grafului. Dacă None (implicit) se creează un graf gol. Datele pot fi în orice format care este suportat de funcția to_networkx_graph(), incluzând în prezent lista de muchii, dict de dicte, dict de liste, graf NetworkX, matrice NumPy sau 2d ndarray, matrice sparse SciPy sau graf PyGraphviz.

  • attr (argumente prin cuvinte cheie, opțional (implicit= nici un atribut)) – Atribute de adăugat la graf ca perechi cheie=valoare.

Vezi și

Graph, MultiGraph, MultiDiGraph, OrderedDiGraph

Exemple

Creați o structură grafică goală (un „graf nul”) fără noduri și fără muchii.

>>> G = nx.DiGraph()

G poate fi crescut în mai multe moduri.

Noduri:

Adaugați câte un nod pe rând:

>>> G.add_node(1)

Adaugați nodurile din orice container (o listă, un dict, un set sau chiar liniile dintr-un fișier sau nodurile dintr-un alt graf).

>>> G.add_nodes_from()>>> G.add_nodes_from(range(100, 110))>>> H = nx.path_graph(10)>>> G.add_nodes_from(H)

În plus față de șiruri de caractere și numere întregi, orice obiect Python hașurabil (cu excepția None) poate reprezenta un nod, de exemplu un obiect de nod personalizat,sau chiar un alt Graph.

>>> G.add_node(H)

Edges:

G poate fi, de asemenea, mărit prin adăugarea de muchii.

Adaugați o muchie,

>>> G.add_edge(1, 2)

o listă de muchii,

>>> G.add_edges_from()

sau o colecție de muchii,

>>> G.add_edges_from(H.edges)

Dacă unele muchii conectează noduri care nu sunt încă în graf, nodurile sunt adăugate automat. Nu există erori atunci când se adaugă noduri sau muchii care există deja.

Atribute:

Care graf, nod și muchie poate conține perechi de atribute cheie/valoare într-un dicționar de atribute asociat (cheile trebuie să fie hashabile).În mod implicit, acestea sunt goale, dar pot fi adăugate sau modificate folosindadd_edge, add_node sau manipularea directă a dicționarelor de atribute numite graph, node și respectiv edge.

>>> G = nx.DiGraph(day="Friday")>>> G.graph{'day': 'Friday'}

Adaugați atribute de nod folosind add_node(), add_nodes_from() sau G.nodes

Adaugați atribute de muchie folosind add_edge(), add_edges_from(), subscriptnotation, sau G.edges.

Shortcuts:

Multe caracteristici comune ale grafurilor permit sintaxa python pentru a accelera raportarea.

>>> 1 in G # check if node in graphTrue>>> # iterate through nodes>>> len(G) # number of nodes in graph5

De multe ori, cel mai bun mod de a parcurge toate marginile unui graf este prin intermediul vecinilor.Vecinii sunt raportați ca un adiacent-dict G.adj sau G.adjacency()

>>> for n, nbrsdict in G.adjacency():... for nbr, eattr in nbrsdict.items():... if "weight" in eattr:... # Do something useful with the edges... pass

Dar obiectul de raportare a marginilor este adesea mai convenabil:

>>> for u, v, weight in G.edges(data="weight"):... if weight is not None:... # Do something useful with the edges... pass

Raportare:

Pentru detalii despre aceste metode și alte metode diverse, vezi mai jos.

Subclase (Avansat):

Clasa Graph utilizează o structură de date de tip dict-of-dict-of-dict.Dictul exterior (node_dict) conține informații de adiacență în funcție de nod.Următorul dict (adjlist_dict) reprezintă informațiile de adiacență și conține date de adiacență în funcție de vecin. Dictul interior (edge_attr_dict) reprezintă datele de muchie și conține valorile atributelor de muchie codificate prin nume de atribute.

Care dintre aceste trei dicte poate fi înlocuit într-o subclasă cu un obiect de tip dict definit de utilizator. În general, caracteristicile de tip dict ar trebui să fie menținute, dar pot fi adăugate caracteristici suplimentare. Pentru a înlocui unul dintre dicte, se creează o nouă clasă de grafuri prin modificarea variabilei class(!) care conține fabrica pentru acea structură de tip dict. Numele variabilelor arenode_dict_factory, node_attr_dict_factory, adjlist_inner_dict_factory,adjlist_outer_dict_factory, edge_attr_dict_factory ș i graph_attr_dict_factory.

node_dict_factoryfunction, (implicit: dict)

Funcția de fabrică care trebuie utilizată pentru a crea dict-ul care conține atributele nodurilor, în funcție de id-ul nodului.Nu ar trebui să necesite argumente și să returneze un obiect de tip dict

node_attr_dict_factory: function, (default: dict)

Funcție de fabrică care trebuie utilizată pentru a crea atributul de nod care conține valorile atributelor codificate după numele atributului.Nu trebuie să necesite argumente și returnează un obiect de tip dict

adjlist_outer_dict_factory function, (default: dict)

Funcție de fabrică care se utilizează pentru a crea cel mai exterior dict din structura de date care conține informații de adiacență în funcție de nod.Nu trebuie să necesite argumente și returnează un obiect de tip dict.

adjlist_inner_dict_factoryfunction, opțional (valoare implicită: dict)

Funcție de fabrică care se utilizează pentru a crea un dict de listă de adiacență care conține date despre muchii, codificate în funcție de vecin; nu trebuie să necesite argumente și trebuie să returneze un obiect de tip dict

edge_attr_dict_factoryfunction, opțional (valoare implicită: dict)

Funcție de fabrică care se utilizează pentru a crea atributul de muchie care conține valori de atribut codificate în funcție de numele atributului.Ar trebui să nu necesite argumente și să returneze un obiect de tip dict.

graph_attr_dict_factoryfunction, (implicit: dict)

Funcție de fabrică care se utilizează pentru a crea graficul attributedict care conține valori de atribut codificate de numele atributului.Ar trebui să nu necesite argumente și să returneze un obiect de tip dict.

În mod normal, dacă extensia dvs. nu afectează structura de date, toate metodele vor fi moștenite fără probleme, cu excepția: to_directed/to_undirected.În mod implicit, aceste metode creează o clasă DiGraph/Graph și probabil că doriți ca ele să creeze extensia dvs. a unui DiGraph/Graph. Pentru a facilita acest lucru, definim două variabile de clasă pe care le puteți seta în subclasa dumneavoastră.

to_directed_classcallable, (implicit: DiGraph sau MultiDiGraph)

Clasa pentru a crea o nouă structură de graf în metoda to_directed.Dacă None, se utilizează o clasă NetworkX (DiGraph sau MultiDiGraph).

to_undirected_classcallable, (default: Graph sau MultiGraph)

Clasă pentru a crea o nouă structură de graf în metoda to_undirected.Dacă , se utilizează o clasă NetworkX (Graph sau MultiGraph).

Exemple

Creați o clasă de graf cu memorie redusă care efectiv nu permite atribuirea de atribute de muchie prin utilizarea unui singur dict de atribute pentru toate muchiile.Acest lucru reduce memoria utilizată, dar pierdeți atributele de muchie.

Vezi ordered pentru mai multe exemple de creare de subclase de graf prin suprascrierea clasei de bază dict cu un obiect de tip dicționar.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.