Optimal_Network_Attack.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:PhD 作者: wutaoadeny 项目源码 文件源码
def Optimal_Percolation_Sequence_Attack(G, Centrality, r=0.025):
    print "Optimal_Percolation_Sequence_Attack"
    Step = int(r*G.number_of_nodes())
    print Step
    Gn = G.copy()
    Ranking = Ranking_methods.Nodes_Ranking(Gn, Centrality)
    Ranking = sorted(Ranking.iteritems(), key=lambda d:d[1], reverse = True)
    #print Ranking
    G.remove_node(Ranking[0][0])

    ### Get the Greatest Component of Networks #####
    Giant_Component_Size_List = []
    Components = sorted(nx.connected_components(G), key = len, reverse=True)
    Giant_Component_Size = len(Components[0])
    Giant_Component_Size_List.append(Giant_Component_Size)
    #print "Components[0]:",Components[0]

    while Giant_Component_Size_List[-1] > 2 and Ranking != {}:
        Gn = G.copy()
        Ranking = Ranking_methods.Nodes_Ranking(Gn, Centrality)
        Ranking = sorted(Ranking.iteritems(), key=lambda d:d[1], reverse = True)
        #print Ranking
        if len(Ranking) > Step:
            for i in range(0,Step):
                G.remove_node(Ranking[i][0])
        Components = sorted(nx.connected_components(G), key = len, reverse=True)
        Giant_Component_Size = len(Components[0])
        Giant_Component_Size_List.append(Giant_Component_Size)

        #print "Giant_Component_Size_List, Components[0], Ranking:",Centrality, Giant_Component_Size_List, Components,G.edges(), Ranking
        #print "Sequence_attack:", Centrality, Ranking[0][0]
    #end while

    return Giant_Component_Size_List
#===============================================================================================
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号