我想从图中提取两个节点,问题是它们不应该连接,即它们之间不存在直接边。我知道我可以使用“random.choice(g.edges())”获得随机边缘,但这会给我连接的随机节点。我想要一对未连接的节点(一对未连接的边)。帮帮我吧伙计们...谢谢
简单的! :)
获取一个随机节点 - 然后从不包括邻居及其自身的节点列表中选择一个随机节点。说明的代码如下。 :)
import networkx as nx
from random import choice
# Consider this graph
#
# 3
# |
# 2 - 1 - 5 - 6
# |
# 4
g = nx.Graph()
g.add_edge(1,2)
g.add_edge(1,3)
g.add_edge(1,4)
g.add_edge(1,5)
g.add_edge(5,6)
first_node = choice(g.nodes()) # pick a random node
possible_nodes = set(g.nodes())
neighbours = g.neighbors(first_node) + [first_node]
possible_nodes.difference_update(neighbours) # remove the first node and all its neighbours from the candidates
second_node = choice(list(possible_nodes)) # pick second node
print first_node, second_node
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)