有一种方法可以在一系列顶点删除后保留或跟踪顶点对应关系

问题描述 投票:1回答:1

在python-igraph中,在我看来,当你从图形中删除顶点时,顶点被重命名为使用从0到n的连续顶点。

要了解我的意思,请考虑以下程序:

from igraph import Graph

g=Graph.Full(4) # Vertex set is {0..3}

print g.neighbors(2) # Prints [0,1,3]
g.delete_vertices([1])
print g.neighbors(2) # Prints [0,1], but I'd want [0,3]

我可以自己动手簿记,但这已经在图书馆得到了支持吗?基本上,我想知道在一系列顶点删除之后,新重命名的顶点在原始图中对应的内容(就像上面的代码片段一样)。

python igraph
1个回答
0
投票

最简单的方法是使用name顶点属性来跟踪对应关系。基本上,如果为顶点指定名称,则可以在以后igraph要求数字顶点ID的位置使用名称:

>>> g.vs["name"] = ["V{0}".format(i) for i in range(4)]
>>> g.vs[g.neighbors("V2")]["name"]
['V0', 'V1', 'V3']
>>> g.delete_vertices(["V1"])
>>> g.vs[g.neighbors("V2")]["name"]
['V0', 'V3']

name属性在幕后索引,因此按名称查找顶点应具有与典型Python dict查找相同的时间复杂度。

对于它的价值,顶点重新编号是底层C库的一个属性,因此Python接口可以做的事情并不多。

© www.soinside.com 2019 - 2024. All rights reserved.