Articles

DiGraph-suuntautuneet graafit itsesilmukoilla¶

Yleiskatsaus¶

classDiGraph(incoming_graph_data=None, **attr)¶

Suuntautuneiden graafien perusluokka.

DiGraafi tallentaa solmuja ja reunoja valinnaisilla tiedoilla eli attribuuteilla.

DiGraafit sisältävät suunnattuja reunoja. Itsesilmukat ovat sallittuja, mutta moninkertaiset (rinnakkaiset) reunat eivät.

Solmut voivat olla mielivaltaisia (hashattavia) Python-objekteja, joilla on valinnaisetavain/arvo-attribuutit. Konvention mukaan None ei käytetä solmuna.

Särmät esitetään solmujen välisinä linkkeinä, joilla on valinnaisetkey/value-attribuutit.

Parametrit

  • incoming_graph_data (input graph (valinnainen, oletusasetus: None)) – Graafin alustava data. Jos None (oletusarvo), luodaan tyhjägrafi. Data voi olla missä tahansa muodossa, jota to_networkx_graph()-funktio tukee, tällä hetkellä mm. reunaluettelo,dict of dicts, dict of lists, NetworkX-graafi, NumPy matrixor 2d ndarray, SciPy sparse matrix tai PyGraphviz-graafi.

  • attr (avainsana-argumentit, valinnainen (oletusarvo= ei attribuutteja)) – Attribuutit, jotka halutaan lisätä graafiin avain=arvo-pareina.

Katso myös

Graph, MultiGraph, MultiDiGraph, OrderedDiGraph

Esimerkkejä

Luo tyhjän graafirakenteen (”nollagraafi”), jossa ei ole solmuja eikä reunoja.

>>> G = nx.DiGraph()

G voidaan kasvattaa usealla eri tavalla.

Solmut:

Lisää yksi solmu kerrallaan:

>>> G.add_node(1)

Lisää solmuja mistä tahansa säiliöstä (listasta, diktaattorista, joukosta tai vaikkapa rivejä tiedostosta tai solmuja toisesta graafista).

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

Merkkijonojen ja kokonaislukujen lisäksi mikä tahansa hashattavissa oleva Python-objekti(paitsi None) voi edustaa solmua, esim. räätälöity solmu-objekti,tai jopa toinen graafi.

>>> G.add_node(H)

Särmät:

G:tä voidaan kasvattaa myös lisäämällä siihen särmiä.

Lisää yksi särmä,

>>> G.add_edge(1, 2)

luettelo särmistä,

>>> G.add_edges_from()

tai kokoelma särmiä,

>>> G.add_edges_from(H.edges)

Jos jotkin särmät yhdistävät solmuja, joita ei ole vielä graafissa, solmut lisätään automaattisesti. Jo olemassa olevia solmuja tai reunoja lisättäessä ei tule virheitä.

Attribuutit:

Kullakin graafilla, solmulla ja reunalla voi olla avain/arvo -attribuuttipareja niihin liittyvässä attribuuttisanakirjassa (avainten on oltava hash-kelpoisia).Oletusarvoisesti nämä ovat tyhjiä, mutta niitä voidaan lisätä tai muuttaa komennoillaadd_edge, add_node tai manipuloimalla suoraan attribuuttisanakirjoja nimeltä graafi (graph), nimeltä solmu (node) ja nimeltä reuna (edge).

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

Lisää solmuattribuutteja käyttämällä add_node(), add_nodes_from() tai G.nodes

Lisää reunaattribuutteja käyttämällä add_edge(), add_edges_from(), subscriptnotation tai G.edges.

Lyhenteet:

Monien yleisten graafiominaisuuksien avulla python-syntaksi nopeuttaa raportointia.

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

Usein paras tapa käydä graafin kaikki särmät läpi on naapurien kautta.Naapurit raportoidaan adjacency-dictinä G.adj tai 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

Mutta reunojen raportointiobjekti on usein kätevämpi:

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

Raportointi:

Tarkemmat tiedot näistä ja muista sekalaisista metodeista ovat alla.

Alaluokat (Edistyneet):

Graafi-luokka käyttää dict-of-dict-of-dict-tietorakennetta.ulompi dict (node_dict) pitää sisällään vierekkäisyystietoja solmun mukaan avautuneena.seuraava dict (adjlist_dict) edustaa vierekkäisyystietoja ja pitää sisällään vierekkäisyystietoja naapurin mukaan avautuneena. Sisempi dict (edge_attr_dict) edustaa reunatietoja ja pitää sisällään reuna-attribuuttiarvoja attribuuttien nimien mukaan.

Jokainen näistä kolmesta dictistä voidaan korvata aliluokassa käyttäjän määrittelemällä dictin kaltaisella objektilla. Yleensä diktin kaltaiset ominaisuudet on säilytettävä, mutta niihin voidaan lisätä lisäominaisuuksia. Korvataksesi jonkin dikotomian luodaan uusi graafiluokka muuttamalla class(!)-muuttujaa, joka sisältää kyseisen dikotomian kaltaisen rakenteen tehtaan. Muuttujien nimet arenode_dict_factory, node_attr_dict_factory, adjlist_inner_dict_factory,adjlist_outer_dict_factory, edge_attr_dict_factory ja graph_attr_dict_factory.

node_dict_factoryfunction, (oletusarvo: dict)

Factory-funktio, jolla luodaan dict, joka sisältää dict:in sisältämät nodeattribuutit, avaimena solmun id.Sen ei pitäisi vaatia argumentteja ja palauttaa dict:n kaltainen objekti

node_attr_dict_factory: function, (oletus: dict)

Tehdasfunktio, jota käytetään luomaan solmun attribuuttiattribuuttiict, joka sisältää attribuuttiarvot attribuutin nimen mukaan avautuneena.Sen ei pitäisi vaatia argumentteja ja palauttaa dict:n kaltainen objekti

adjlist_outer_dict_factoryfunction, (default: dict)

Tehdasfunktio, jota käytetään luomaan datarakenteen uloin dict, joka pitää sisällään solmun mukaan avautuvaa vierekkäisyystietoa.Sen ei pitäisi vaatia argumentteja ja palauttaa dict:n kaltainen objekti.

adjlist_inner_dict_factoryfunction, valinnainen (oletus: dict)

Tehdasfunktio, jota käytetään luomaan adjacency listdict, joka pitää sisällään edge-tiedot avaimena naapuri.Sen ei pitäisi vaatia argumentteja ja palauttaa dict:n kaltainen objekti

edge_attr_dict_factoryfunction, valinnainen (oletus: dict)

Tehdasfunktio, jota käytetään luomaan edge-attribuutti-dict, joka pitää sisällään attribuuttiarvot avaimena attribuutin nimi.Sen ei pitäisi vaatia argumentteja ja palauttaa diktin kaltainen objekti.

graph_attr_dict_factoryfunction, (oletus: dict)

Tehdasfunktio, jota käytetään luomaan graafin attributedict, joka pitää attribuuttiarvoja avaimena attribuutin nimi.Sen ei pitäisi vaatia argumentteja ja palauttaa diktin kaltainen objekti.

Tyypillisesti, jos laajentamisesi ei vaikuta tietorakenteeseen, kaikki metodit periytyvät ilman ongelmia paitsi: to_directed/to_undirected.Oletusarvoisesti nämä metodit luovat DiGraph/Graph-luokan ja luultavasti haluat niiden luovan DiGraph/Graph-laajennuksesi. Tämän helpottamiseksi määrittelemme kaksi luokkamuuttujaa, jotka voit asettaa alaluokassasi.

to_directed_classcallable, (oletusarvo: DiGraph tai MultiDiGraph)

Luokka, jolla luodaan uusi graafirakenne to_directed-metodissa.Jos None, käytetään NetworkX-luokkaa (DiGraph tai MultiDiGraph).

to_undirected_classcallable, (oletus: Graph tai MultiGraph)

Luokka, jolla luodaan uusi graafirakenne to_undirected-metodissa.Jos None, käytetään NetworkX-luokkaa (Graph tai MultiGraph).

Esimerkkejä

Luo vähämuistisen graafiluokan, joka tehokkaasti kieltää reunaattribuutit käyttämällä yhtä attribuutti-diktiota kaikille reunoille.Tämä vähentää käytettävää muistia, mutta menetät reunaattribuutit.

Katso ordered lisää esimerkkejägrafiikan alaluokkien luomisesta korvaamalla perus-luokka dict sanakirjan kaltaisella objektiyksilöllä.

Vastaa

Sähköpostiosoitettasi ei julkaista.