Welcome to graph-tool’s documentation!¶
graph-tool快速入门
该graph_tool模块提供了一个Graph类以及在其上进行操作的几种算法。此类的内部原理和大多数算法是使用Boost Graph Library用C ++编写的,以提高性能 。
当然,必须先导入该模块,然后才能使用它。该软件包分为几个子模块。要从所有人中导入所有内容,可以执行以下操作:
from graph_tool.all import *
创建和操作图
可以通过实例化一个Graph 类来创建一个空图:
g = Graph()
默认情况下,始终会定向新创建的图形。要构造无向图,必须将一个值传递给directed参数:
ug = Graph(directed=False)
使用set_directed()方法,可以随时将图形从有向切换到无向(反之亦然)。图形的“方向性”可以用is_directed() 方法查询
ug = Graph()
ug.set_directed(False)
assert ug.is_directed() == False
也可以通过提供另一个图来创建图,在这种情况下,复制整个图(及其内部属性映射,请参见属性映射):
g1 = Graph()
# ... construct g1 ...
g2 = Graph(g1) # g1 and g2 are copies
如上所述,g2是g1的“深度”拷贝,即g2的任何修改都不会影响g1。
一旦创建了一个图,就可以用顶点和边填充它。可以使用add_vertex()方法添加顶点,该方法返回顶点类的实例,也称为顶点描述符。例如,下面的代码创建两个顶点,并返回存储在变量v1和v2中的顶点描述符。
v1 = g.add_vertex()
v2 = g.add_vertex()
可以通过调用 add_edge()方法以类似的方式添加边,该方法返回边描述符(edge类的实例):
e = g.add_edge(v1, v2)
上面的代码创建了从v1到v2的定向边。我们可以用graph_draw()函数可视化到目前为止创建的图形。
graph_draw(g, vertex_text=g.vertex_index, output="two-nodes.pdf")
<...>
一个简单的有向图,有两个顶点和一条边,由上面的命令创建。
使用顶点和边描述符,可以以任意方式检查和操作图。例如,为了获得顶点的出度,我们可以简单地调用 out_degree()方法:
print(v1.out_degree())
1
类似地,我们可以使用in_degree()方法来查询入度。
注意
对于无向图,“出度”是度的同义词,在这种情况下,顶点的入度总是零。
边描述符有两个有用的方法,source()和target(),它们分别返回边的源顶点和目标顶点。
print(e.source(), e.target())
0 1
add_vertex()方法还接受一个可选参数,该参数指定要创建的顶点数。如果该值大于1,它将在添加的顶点描述符上返回一个迭代器:
vlist = g.add_vertex(10)
print(len(list(vlist)))
10
图中的每个顶点都有一个唯一的索引,它总是介于0和N−1之间,其中N是顶点数。该索引可以通过使用图的vertex_index属性(这是一个属性映射,请参见属性映射)或通过将顶点描述符转换为int来获得。
v =</