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

Generating Adjacency List in NetworkX - How to Include Previous Nodes?

根据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,即使在第一行 (0 1 2 3),0 链接到节点 2。

如何包含之前省略的节点?[​​=13=]

这仅适用于无向图。根据定义,在邻接表中已经提到的边不需要重复。在创建图形时,如果您要放弃具有重复连接的文件,它们将被忽略,因为它们是多余的。您的选择是创建自己的函数来列出所有节点,而不管它们是否已被提及。它看起来像这样(代码从原始 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