igraph中的直径计算

时间:2014-09-10 18:23:27

标签: python igraph

我是Python和igraph的新手,我希望模拟针对网络的针对性攻击。具体来说,给定有向图G,我想根据它们的度数逐步从G中删除顶点 我的函数将要从G加上图G的顶点列表(vertices_to_delete)作为输入。 它创建G的副本,从G中删除vertices_to_delete中的顶点,并在新的G实例上计算WCC的大小和新图的直径。因此,对于vertices_to_delete的不同实例重复这样的过程(因此在每次迭代时我重新计算WCC和直径的大小)。

我在下面报告我的代码。我得到的WCC结果符合我的预期,而D的值非常奇怪(我希望D增加,但没有明确的模式出现)。 我已经在从维基百科(Wiki-Vote - https://snap.stanford.edu/data/wiki-Vote.html)中提取的数据集上尝试了我的代码。我认为我没有使用正确的函数来计算直径,这可能取决于G的指向。

非常感谢您的帮助,感谢igraph的开发者/贡献者为这个精彩的包裹!

def attack(graph, vertices_to_delete):
    gc = graph.copy()
    gc.delete_vertices(vertices_to_delete)
    largest_connected_component = gc.clusters(mode = WEAK).giant() 
    wcc_size=largest_connected_component.vcount()
    diameter = gc.diameter()
    return wcc_size, diameter

0 个答案:

没有答案