如何连接 networkx 图中的节点?

How to connect nodes in a networkx graph?

左边是输入,右边是想要的输出:

输入:我得到了一些 n。我从 [0, 1] 随机均匀地生成 n 个点。所以,点是元组 (x, y).

然后我将这个节点列表添加到 NetworkX 图形对象中。现在,我想连接边缘,如右图所示。也就是说,该图是连通的(您可以使用一定数量的边从任何地方到达任何地方)但不一定是 Erdos Renyi 图。

我不确定这种图的术语是什么 - 无重叠边图?但是是否可以使用 Networkx 为这样的图生成边?

从欧几里德space 中的点导出的网络通常称为几何图。没有重叠边的图称为平面图。由于您已将所有边绘制为直线,因此我假设您对 planar, straight-line graphs (PSLGs).

特别感兴趣

several generators for geometric graphs in networkx,但是,我不确定它们中的任何一个是否必须遵守平面性约束(感觉如果您选择阈值参数,您可以强制 geographical_treshold_graph 这样做以一种聪明的方式,但我没有想到解决方案)。

就我个人而言,我会从我的随机点开始,然后通过计算 Delaunay triangulation, implemented in scipy.spatial 得到边缘。然后我会对边缘进行子采样(取决于任务)并在 networkx/igraph/graph-tool.

中创建我的图形对象