【发布时间】:2016-07-11 04:41:24
【问题描述】:
按照我之前关于在图中查找两个未连接节点及其接受的响应 (How to find two randoms nodes with no edges between them in graph?) 的问题。我想在 python/igraph 中做同样的事情。 我想使用此代码制作图形或在图形中查找两个未连接的节点,然后在它们之间添加一条边。我在 python/igraph 中编写了函数 def select_2_random_unconnected_nodes(node_list, G):
selected_node = random.choice(node_list)
# obtain all the nodes connected to the selected node
connected_nodes1 = [n for _, n in G.es.select(_source=selected_node)]
connected_nodes2 = [n for _, n in G.es.select(_target=selected_node)]
#connected_nodes1 = [n for n in G.neighbors(selected_node, mode='out')]
#connected_nodes2 = [n for n in G.neighbors(selected_node, mode='in')]
#print(connected_nodes + [selected_node])
# a feasible node is one not in connected_nodes and also not the first selected_node
feasible_nodes = [feasible_n for feasible_n in node_list if feasible_n not in connected_nodes1 + connected_nodes2 + [selected_node]]
# select a second node from the feasible_nodes list
select_second_node = random.choice(feasible_nodes)
return selected_node, select_second_node
我尝试了 G.es.select 和 G.neighbors 函数。但它会返回两个节点或自循环之间的多条边!有谁知道解决方案?
【问题讨论】: