在NetworkX中生成邻接列表如何包含以前的节点?

2024-06-30 16:57:57 发布

您现在位置:Python中文网/ 问答频道 /正文

根据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

但是,我注意到邻接列表不包括以前链接的节点。例如,如果查看第三行(23),它不包含0,即使在第一行(01 2 3),0链接到节点2

如何包含之前省略的节点


Tags: 函数innetworkx列表for节点链接documentation
1条回答
网友
1楼 · 发布于 2024-06-30 16:57:57

这只适用于无向图。根据定义,在邻接列表中,已经提到的边不需要重复。在创建图形时,如果要放弃具有重复连接的文件,它们将被忽略,因为它们是冗余的。您可以选择创建自己的函数,列出所有节点,而不考虑它们已经被提及的事实。它看起来像这样(从原始^{}代码无耻地修改而来的代码):

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

相关问题 更多 >