我是2天大的python和一般的编码,我一直在做一个随机几何图形,这是2mode的工作。我一直在看网络代码
我开始使用以下逻辑
import networkx as nx
def my_bipartite_geom_graph(a, b, radius, dim):
G=nx.Graph()
A=nx.Graph()
A.name="a node set"
A.add_nodes_from(range(a))
for n in A:
A.node[n]['pos']=[random.random() for i in range(0,dim)]
B=nx.Graph()
B.name="b node set"
B.add_nodes_from(range(b))
for n in B:
B.node[n]['pos']=[random.random() for i in range(0,dim)]
G=nx.disjoint_union(A,B)
nodesa = A.nodes(data=True)
nodesb = B.nodes(data=True)
while nodesa:
u,du = nodesa.pop()
pu = du['pos']
for v,dv in nodesb:
pv = dv['pos']
d = sum(((a-b)**2 for a,b in zip(pu,pv)))
if d <= radius**2:
G.add_edge(u,v)
return G
这返回一个图表,但显然不是我所希望的。任何关于如何更好地解决这个问题的建议都将不胜感激。你知道吗
致以最良好的祝愿
问题是
nx.disjoint_union
对节点重新编号,以便它们是不同的。意思是B[n] != G[n]
。因此B
中的节点标签包含G
图中A
的节点。你知道吗有一种方法可以解决这个问题:
相关问题 更多 >
编程相关推荐