dag有向无环图全称,dag有向无环图应用

  dag有向无环图全称,dag有向无环图应用

  有向图没有基类。

  用图表的可选数据或属性保存节点和边。

  没有方向边。允许自循环,但不允许多条“平行”边。

  该节点可以是任何带有可选键/值属性的“散列”python对象。传统上,None不作为节点使用。

  边被表示为具有可选键/值属性的节点之间的链接。

  参数

  Incoming_graph_data(可选,默认值:none)-用于初始化图形的数据。如果没有(默认),将创建一个空形状。数据可以是to-networkx-graph()函数支持的任何格式。包括当前边列表、字典列表、字典列表、网络x图、数字矩阵或2d-ndarrrrrrist。

  ATTR(关键字参数,可选)default=noattributes是作为键=值对添加到图表中的属性。

  它在哪里

  创建一个没有节点和边的空形状结构“空形状”。

  G=nx。图表(

  g可以用几种方法生长。

  节点:

  一次添加一个节点:

  添加节点(1)).

  在容器中添加节点(列表、字典、集合,甚至是文件或其他图表中某一行的节点)。

  g.add _ nodes _ from ([ 2,3 ]).

  g.add _ nodes _ from(范围(100,110))

  h=NX.path_graph(10)).

  g .添加节点来自(H)

  除了字符串和整数,所有的jzdhf python对象都可以表示自定义节点对象或节点(比如其他图),除了没有对象。

  g.add_node(h))。

  边缘:

  g也可以通过加边来增长。

  添加一条边,然后单击,

  g.add _ edge ((1,2))))))))))))))))).

  边缘列表,

  g.add _ edges _ from ([ (1,2),)1,3 ) ]

  或者一系列边缘,

  g.add_Edges_from(h.Edges)).

  如果图形中没有连接某些边的节点,将自动添加这些节点。添加现有节点或边时没有错误。

  属性:

  每个图、节点和边都可以在相关属性字典中存储键值属性对。密钥必须是jzdhf。默认情况下,这些值为空,但可以通过添加边、添加节点或使用名为graph、node和edge的直接操作属性字典来添加或更改它们。

  g=NX.graph(day=Friday ).

  g .图表

  { 日:星期五 }

  使用add_node(,add_nodes_from)或g.nodes添加节点属性。

  g.add_node(1,time=5pm ).

  g.add_nodes_from([3],time=2pm ).

  G.nodes[1]

  { 时间: 下午5点 }

  g . nodes[1][ room ]=714 # nodemstexistalreadytouseg . nodes

  delg.nodes [1] [ room ] #删除属性

  列表(g.nodes(data=true))

  [(1,)时间(:(5pm ) }],(3,)时间(:)2pm ) ]

  使用add_edge(、add_edges_from)、下标或g.edges添加边属性。

  g.add _ edge (1,2,weight=4.7))))))))))))))).

  g . add _ edges _ from((3,4,4,5 ) color=red ))))))))))))))).

  g.add _ edges _ from ([ (1,2,{color: blue},)2,3,{weight: 8}))

  G[1][2][权重]=4.7

  g.edges [ 1,2 ] [ weight ]=4

  警告:我们有一个像dict到G.edges这样的只读结构,例如G. Edges [1,2]。在…里

  这里,使用两组括号来添加/更改数据属性:G.edges[1,2][weight]=4(对于多个图表:MG.edges[u,v,key][name]=value)

  快捷方式:

  许多常见的图形特性允许Python语法加快报告速度。

  1 in G #检查图中的节点

  真实的

  [n for n in G if n 3] #遍历节点

  [1, 2]

  len(G) #图中的节点数

  五

  通常,遍历一个图的所有边的最好方法是通过邻居。据介绍,邻居之间都是相邻听写。形容词或形容词()

  对于n,G.adjacency()中的nbrsdict:

  .对于nbr,nbrsdict.items()中的eattr:

  .如果“重量”用eattr表示:

  .#用边缘做些有用的事情

  .及格

  但是,edges()方法通常更方便:

  对于u,v,G.edges.data中的重量(“重量”):

  .如果重量不为无:

  .#用边缘做些有用的事情

  .及格

  报告:

  使用对象属性和方法获取简单的图形信息。报告通常提供视图而不是容器来减少内存使用。视图将随着图形的更新而更新,类似于dict视图。Objects nodes、edges和adj提供对数据属性(如nodes[n]、edges[u,v]、adj[u][v])和迭代(如nodes.items()、nodes.data(color )、nodes.data(color )、Default=blue )的访问,同样,edges视图存在于nodes、edges、neighbors() adj 和degree中。

  有关这些方法和其他各种方法的详细信息,请参见下文。

  子类(高级):

  Graph类使用dict数据结构的dict。外部dict(节点dict)存储由节点键控的相邻信息。下一个字典(adjlist-dict)表示相邻信息,并存储由邻居键控的边缘数据。Internal dict (edge attr u dict)表示边数据,并存储由属性名键控的边属性值。

  这三个dict中的每一个都可以被子类中用户定义的类似dict的对象替换。一般来说,像dict这样的功能应该保持,但是可以增加额外的功能。要替换其中一个dict,请更改类(!idspnonenote)。)创建一个新的图形类。变量为这种类似字典的结构保留了工厂。变量名为节点dict_factory、节点attr_dict_factory、adjlist_inner dict_factory、adjlist_outer dict_factory、边attr_dict_factory和图attr_dict。

  Node_dict_factory function(默认:dict)工厂函数,用于创建包含节点属性的dict,并以节点ID为键。它不带参数,返回一个类似dict的对象

  node u attr _ dict _ factory:function,(默认:dict)用于创建节点属性dict的工厂函数,其中保存了属性名所键入的属性值。它不带参数,返回一个类似dict的对象

  Adjlist_outer_dict_factory函数(默认:dict)factory函数用于创建数据结构中最外层的dict,其中保存了节点键控的相邻信息。它不带参数,返回一个类似dict的对象。

  Adjlist_inner_dict_factory函数(默认:dict)factory函数用于创建邻接表dict,其中保存了邻居输入的边数据。它不带参数,返回一个类似dict的对象

  Edge_attr_dict_factory函数(默认:dict)用于创建Edge属性dict的工厂函数,存放属性名类型化的属性值。它不带参数,返回一个类似dict的对象。

  Graph_attr_dict_factory函数(默认:dict)用于创建图形属性dict的工厂函数,其中保存了按属性名类型化的属性值。它不带参数,返回一个类似dict的对象。

  一般来说,如果扩展不影响数据结构,所有方法都会继承,不会有问题,除了:to _ directed/to _ unexpired。默认情况下,这些方法创建一个有向图/图类,您可能希望它们创建一个有向图/图的扩展。为了方便起见,我们定义了两个类变量,可以在子类中设置。

  To_directed_class可以调用(默认:有向图或多图)类来使用To_directed方法。如果没有,使用networkx类(有向图或多图)。

  To _ unexpired _ class可以调用(默认:图或多图)class来调用To _ unexpired方法。如果没有,使用networkx类(图形或多图形)。

  实际案例

  创建一个内存不足的图形类,通过对所有边使用一个属性字典来有效地禁用边属性。这将减少使用的内存,但会丢失边属性。

  class thing graph(NX。图表):

  .all_edge_dict={weight: 1}

  .

  .def single_edge_dict(self):

  .return self.all_edge_dict

  .

  .edge _ attr _字典_工厂=single _ edge _字典

  G=ThinGraph()

  G.add_edge(2,1)

  G[2][1]

  {weight: 1}

  G.add_edge(2,2)

  G[2][1]是G[2][2]

  真实的

  关于通过覆盖基类来创建graph子类的更多例子,请参见ordered。字典就像一本字典。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: