python - 在 NetworkX 中生成邻接表 - 如何包含先前的节点?
问题描述
根据NetworkX 文档,该函数generate_adjlist()
生成如下所示的邻接列表:
>>> G = nx.lollipop_graph(4, 3)
>>> for line in nx.generate_adjlist(G):
... print(line)
0 1 2 3
1 2 3
2 3
3 4
4 5
5 6
6
但是,我注意到邻接列表不包括之前链接的节点。例如,如果您查看第三行 (2 3),它不包含 0,即使在第一行 (0 1 2 3),0 链接到节点 2。
如何包含先前省略的节点?
解决方案
这仅适用于无向图。根据定义,在邻接表中,已经提到的边不需要重复。创建图表时,如果您要放弃具有重复连接的文件,它们将被简单地忽略,因为它们是多余的。您的选择是创建自己的函数来列出所有节点,而不管它们是否已经被提及。它看起来像这样(代码从原始generate_adjlist
代码无耻地修改):
def generate_adjlist_with_all_edges():
for s, nbrs in G.adjacency():
line = str(s) + delimiter
for t, data in nbrs.items():
line += str(t) + delimiter
yield line[: -len(delimiter)]
G = nx.lollipop_graph(4, 3)
for line in generate_adjlist_with_all_edges(G):
print(line)
> 0 1 2 3
1 0 2 3
2 0 1 3
3 0 1 2 4
4 5 3
5 4 6
6 5
推荐阅读
- peewee - 如何在 peewee 中即时将 CharField 转换为 DateTimeField?
- mysql - 将 dockerized mysql 容器部署到边缘设备
- html - CSS下拉菜单不会消失
- reactjs - 如何计算 Firestore 中数组数据中的元素数?
- angular - Angular 7 库 - 如何捆绑依赖项而不将它们添加到主应用程序
- c# - 如何在 Windows 10 上的 UWP 应用和 iOS 设备上的 Xamarin.Forms 应用之间创建 TCP 套接字
- angular - AmCharts 4:网格步骤
- java - Junit 5,Spring 应用程序上下文未在 @DirtiesContext 上关闭
- html - html输入返回未定义的快递
- visual-studio-code - 为什么 VS Code 需要这么多内存?我怎样才能让它更有效地运行内存?