图中边缘的随机删除

时间:2019-06-05 21:13:46

标签: python python-3.x graph networkx

我试图根据p的函数在图形的随机过程中删除边,其中p从0到1。在第一次迭代中,从图形中随机删除了0.1或10%的节点。在第二次迭代中,剩余边的20%被删除,依此类推。 当已删除的边缘再次出现在随机函数中时,发生了我的错误。

我的尝试

<span>

错误-

.text()

2 个答案:

答案 0 :(得分:0)

您可以在for循环开始之前获得一组边。您需要从该集合中删除这些边缘,因为它们已从图形中删除,以免在以后的迭代中再次选择它们。

或者,在选择要删除的边之前,在每次迭代中从图形中获取边集。

答案 1 :(得分:0)

可能有以下解决方案。
在每次迭代中,您都要考虑当前百分比p并删除p*number_of_remaining_edges边。

import random
import networkx as nx

g = nx.fast_gnp_random_graph(20,0.3)
p_values = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]

for p in p_values:
    g.remove_edges_from(random.sample(g.edges(),k=int(p*g.number_of_edges())))