random - 如何在networkx 2.1中生成一个完全连接的有向随机图?
问题描述
我需要在 networkx 2.1 中生成一个随机全连接有向图来评估不对称旅行商问题算法的性能。例如,生成一个有 100 个节点的图,它们是全连接的,边权重是随机分配的。图是有向的(从节点 i 到节点 j 的边权重不一定等于从节点 j 到节点 i 的边权重)
想知道是否有networkx函数可以生成这种有向图或一些示例代码可以参考。
我检查了networkx 2.1文档中的“定向生成器”部分(https://networkx.github.io/documentation/networkx-2.1/reference/generators.html?highlight=generator#module-networkx.generators.directed),但这些发电机似乎不符合我的要求。
解决方案
可能有几种方法可以做到这一点。在这里,我只是使用随机权重列出所有加权边的列表itertools
。然后我add_weighted_edges_from
用来创建有向图。所以它不会太长,我只使用 3 个节点。
import networkx as nx
import itertools
import random
G = nx.DiGraph()
weighted_edge_list = [(u,v,random.random()) for u,v in itertools.permutations(range(3),2)]
G.add_weighted_edges_from(weighted_edge_list)
G.edges(data=True)
> OutEdgeDataView([(0, 1, {'weight': 0.025851202944826346}), (0, 2, {'weight': 0.8067025754602839}), (1, 0, {'weight': 0.7729736390607577}), (1, 2, {'weight': 0.8724493159416196}), (2, 0, {'weight': 0.9049870220916731}), (2, 1, {'weight': 0.9636865700934618})])
推荐阅读
- html - Bootstrap 与行中的表单内联右对齐
- javascript - 如何使用 QWebEngineView 和 qtwebchannel.js 逐步加载 javascript?
- nginx - NGINX 作为 Wowza 前 HLS 实时流的暖缓存 - 获取每个流数据的持续时间和传输的数据?
- javascript - Javascript Datatable 动态数据
- database - 如何用 VueJS 修复这个提交?
- pdf-generation - 启动 chrome 失败!spawn ...node_modules/puppeteer/.../chrome ENOENT TROUBLESHOOTING 使用 Puppeteer
- dart - Flutter Dart - 在 StreamSubscription 中接收非静态成员变量
- javascript - 隐藏展开/折叠表jQuery上除第一列之外的列
- wordpress - 重复的 WordPress 网站
- c# - automapper ProjectTo 需要转换一个可为空的
变成一个布尔值