有没有办法在一系列顶点删除后保留或跟踪顶点对应关系



在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]

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

最简单的方法是使用 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 字典查找相同的时间复杂性。

就其价值而言,顶点重新编号是底层 C 库的一个属性,因此 Python 接口对此无能为力。

最新更新