索引顶点名称

Indexing vertex name

我正在使用 python igraph 版本 0.6.5。我不太清楚在下面的代码中:

g = igraph.Graph(directed=True)
g.add_vertex('A')
g.add_vertex('B')
g.add_vertex('A')
print g.vcount()

即使顶点名称 'A' 重复,这也使我的顶点计数为 3,为什么两个顶点名称 'A' 都被视为 2 个不同的顶点?我们如何索引顶点名称?

当您 运行 g.add_vertex('A') 时,igraph 不会 添加 "A" 作为图形的顶点 - 它会添加一个全新的顶点然后将 "A" 分配给它的 name 属性,但名称在 igraph 中不需要是唯一的。内部顶点由从零到 |V|-1 的整数表示,名称只是攻击到顶点的属性。所以,如果你想确保不创建重复的同名顶点,你需要检查是否存在同名的顶点:

try:
    vertex = g.vs.find("A")
except ValueError:
    g.add_vertex("A")

name 顶点属性由 igraph 特别处理,因为它始终由将顶点名称映射到具有此名称的 first 顶点的字典支持,所以g.vs.find("A") 是一个快速操作(不需要扫描整个图)。