如何解决在NetworkX中生成邻接列表-如何包括以前的节点?
根据NetworkX documentation,函数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 1 2 3)的0链接到节点2,它也不包括0。
如何包含之前省略的节点?
解决方法
这仅适用于无向图。根据邻接表中的定义,已经提到的边不需要重复。创建图形时,如果要放弃具有重复连接的文件,则它们将被忽略,因为它们是多余的。您的选择是创建自己的函数,该函数列出所有节点,而不管它们是否已被提及。看起来像这样(对原始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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。