Python igraph中的直径计算

Python igraph中的直径计算,python,igraph,Python,Igraph,我不熟悉Python和igraph,我希望模拟对网络的目标攻击。具体地说,给定一个有向图G,我想根据它们的in度从G中逐步删除顶点。 我的函数将要从G中删除的顶点列表加上图G作为输入。 它创建G的副本,从G中删除顶点_到_delete中的顶点,并在新的G实例上计算WCC的大小和新图形的直径。因此,对于顶点的不同实例_到_delete重复这样的过程,因此在每次迭代中,我重新计算WCC的大小和直径 我在下面报告我的代码。我得到的WCC结果与我的预期一致,而D的值非常奇怪,我预计D会增加,但没有明确的

我不熟悉Python和igraph,我希望模拟对网络的目标攻击。具体地说,给定一个有向图G,我想根据它们的in度从G中逐步删除顶点。 我的函数将要从G中删除的顶点列表加上图G作为输入。 它创建G的副本,从G中删除顶点_到_delete中的顶点,并在新的G实例上计算WCC的大小和新图形的直径。因此,对于顶点的不同实例_到_delete重复这样的过程,因此在每次迭代中,我重新计算WCC的大小和直径

我在下面报告我的代码。我得到的WCC结果与我的预期一致,而D的值非常奇怪,我预计D会增加,但没有明确的模式出现。 我在从维基百科维基投票中提取的数据集上尝试了我的代码-。我认为我没有使用正确的函数来计算直径,这可能取决于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

代码没有问题-默认情况下,直径计算定向直径。如果您想在计算直径时忽略边缘方向,请使用diameterdirected=False。您好,谢谢!