Articles

DiGraph-irányított gráfok önhurokkal¶

Áttekintés¶

classDiGraph(incoming_graph_data=None, **attr)¶

Az irányított gráfok alaposztálya.

A DiGraph csomópontokat és éleket tárol opcionális adatokkal, vagyis attribútumokkal.

A DiGraphok irányított éleket tartanak. Az önhurkok megengedettek, de a többszörös (párhuzamos) élek nem.

A csomópontok tetszőleges (hashelhető) Python objektumok lehetnek opcionális kulcs/érték attribútumokkal. A konvenció szerint a None nem használatos csomópontként.

Az élek a csomópontok közötti linkekként jelennek meg opcionális kulcs/érték attribútumokkal.

Paraméterek

  • incoming_graph_data (input graph (opcionális, alapértelmezett: None)) – A gráf inicializálására szolgáló adatok. Ha nincs (alapértelmezett), akkor egy üresgráf jön létre. Az adat lehet bármilyen formátum, amelyet a to_networkx_graph() függvény támogat, jelenleg beleértve az éllistát,dict of dicts, dict of lists, NetworkX gráf, NumPy mátrixor 2d ndarray, SciPy sparse mátrix, vagy PyGraphviz gráf.

  • attr (kulcsszó argumentumok, opcionális (alapértelmezett= no attributes)) – Attribútumok, amelyeket kulcs=érték párok formájában hozzá kell adni a gráfhoz.

See also

Graph, MultiGraph, MultiDiGraph, OrderedDiGraph

Examples

Create an empty graph structure (“null graph”) with no nodes andno edges.

>>> G = nx.DiGraph()

G többféleképpen növelhető.

Csomópontok:

Egyszerre egy csomópont hozzáadása:

>>> G.add_node(1)

A csomópontokat bármely tárolóból (listából, dictből, halmazból vagy akár egy fájlból származó vonalakból vagy egy másik gráf csomópontjaiból) hozzáadhatjuk.

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

A karakterláncokon és egész számokon kívül bármely hashelhető Python objektum(kivéve None) reprezentálhat egy csomópontot, pl. egy testreszabott node objektum,vagy akár egy másik Graph.

>>> G.add_node(H)

Élek:

G élek hozzáadásával is növelhető.

Egy él hozzáadása,

>>> G.add_edge(1, 2)

Élek listája,

>>> G.add_edges_from()

vagy élek gyűjteménye,

>>> G.add_edges_from(H.edges)

Ha néhány él a gráfban még nem szereplő csomópontokat köt össze, a csomópontokat automatikusan hozzáadjuk. A már létező csomópontok vagy élek hozzáadásakor nincs hiba.

Attribútumok:

Minden gráf, csomópont és él tartalmazhat kulcs/érték attribútumpárokat egy kapcsolódó attribútumszótárban (a kulcsoknak hashelhetőnek kell lenniük).Alapértelmezés szerint ezek üresek, de hozzáadhatók vagy módosíthatók azadd_edge, add_node vagy a graph, node és edge nevű attribútumszótárak közvetlen manipulálásával.

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

Csomópontattribútumok hozzáadása az add_node(), add_nodes_from() vagy G.nodes használatával

Élattribútumok hozzáadása az add_edge(), add_edges_from(), subscriptnotation vagy G.edges.

Rövidítések:

Sok gyakori gráfjellemző lehetővé teszi a python szintaxis gyorsabb jelentését.

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

Gyakran a legjobb módja egy gráf összes élének bejárásának a szomszédokon keresztül.A szomszédok jelentése egy szomszédsági-dictumként G.adj vagy 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

De az élek jelentése objektum gyakran kényelmesebb:

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

Beszámoló:

Ezeknek és más különféle módszereknek a részleteit lásd alább.

Alosztályok (haladó):

A Graph osztály egy dict-of-dict-of-dict adatszerkezetet használ.A külső dict (node_dict) a node által kulcsolt szomszédsági információkat tartalmazza.A következő dict (adjlist_dict) a szomszédsági információkat és a szomszéd által kulcsolt holdsedge adatokat képviseli. A belső dict (edge_attr_dict) reprezentálja az éladatokat és tartalmazza az élattribútumértékeket az attribútumnevek kulcsával.

Ezek közül a három dict mindegyike helyettesíthető egy alosztályban egy felhasználó által definiáltdict-szerű objektummal. Általában a dict-szerű tulajdonságokat meg kell tartani, de további tulajdonságok hozzáadhatók. Az egyik dict helyettesítéséhez hozzunk létre egy új gráf osztályt a class(!) változó megváltoztatásával, amely az adott dict-szerű struktúra gyárát tartalmazza. A változó nevei arenode_dict_factory, node_attr_dict_factory, adjlist_inner_dict_factory,adjlist_outer_dict_factory, edge_attr_dict_factory és graph_attr_dict_factory.

node_dict_factoryfunction, (default: dict)

A nodeattribútumokat tartalmazó dict létrehozásához használandó függvény, a csomópont azonosítója alapján.Nem igényel argumentumokat, és egy dict-szerű objektumot ad vissza

node_attr_dict_factory: function, (alapértelmezett: dict)

Az attribútumértékeket tartalmazó, az attribútum neve által kulcsolt node attributedict létrehozására használandó gyári függvény.Nem igényel argumentumokat, és egy dict-szerű objektumot ad vissza

adjlist_outer_dict_factoryfunkció, (alapértelmezett: dict)

Gyári függvény, amely a legkülső dict létrehozására szolgál az adatstruktúrában, amely a csomópont által kulcsolt szomszédsági információkat tartalmazza.Nem igényel argumentumokat, és egy dict-szerű objektumot ad vissza.

adjlist_inner_dict_factoryfunction, opcionális (alapértelmezett: dict)

Gyári függvény, amelyet a szomszéd által kulcsolt éladatokat tartalmazó adjcency listdict létrehozására kell használni.Nem igényel argumentumokat és egy dict-szerű objektumot kell visszaadnia

edge_attr_dict_factoryfunction, opcionális (alapértelmezett: dict)

Gyári függvény, amelyet az attribútum neve által kulcsolt attribútumértékeket tartalmazó élattribútumict létrehozására kell használni.Nem igényel argumentumokat és egy dict-szerű objektumot ad vissza.

graph_attr_dict_factoryfunction, (alapértelmezett: dict)

Gyári függvény, amelyet a gráf attributedict létrehozására kell használni, amely az attribútumnév által kulcsolt attribútumértékeket tartalmazza.Nem igényel argumentumokat és egy dict-szerű objektumot ad vissza.

Tipikusan, ha a kiterjesztés nem befolyásolja az adatstruktúrát, minden módszer probléma nélkül öröklődik, kivéve: to_directed/to_undirected.Alapértelmezés szerint ezek a metódusok egy DiGraph/Graph osztályt hoznak létre, és valószínűleg azt akarod, hogy létrehozzák a DiGraph/Graph kiterjesztésedet. Ennek megkönnyítése érdekében két osztályváltozót definiálunk, amelyeket beállíthatsz az alosztályodban.

to_directed_classcallable, (alapértelmezett: DiGraph vagy MultiDiGraph)

Az to_directed metódusban egy új gráfstruktúra létrehozására szolgáló osztály.Ha None, akkor egy NetworkX osztály (DiGraph vagy MultiDiGraph) kerül felhasználásra.

to_undirected_classcallable, (alapértelmezett: Graph vagy MultiGraph)

Az to_undirected metódusban új gráfszerkezet létrehozására szolgáló osztály.Ha None, egy NetworkX osztály (Graph vagy MultiGraph) kerül felhasználásra.

Példák

Készítsen egy alacsony memóriájú gráfosztályt, amely hatékonyan letiltja az élattribútumokat azáltal, hogy egyetlen attribútumdiktumot használ az összes élhez.Ez csökkenti a felhasznált memóriát, de elveszíti az élattribútumokat.

Kérem, nézze meg a ordered további példákat gráf-alosztályok létrehozására az alaposztály dict szótárszerű objektummal való felülírásával.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.