邻接表中的Networkx BFS_Tree

问题描述

我是networkx的新手,我想要做的是从一个.txt邻接列表(成功)生成一个图形,然后在所述列表上执行bfs_tree。 dfs_tree有效,但是bfs返回错误,表明我的源节点不在图中。我知道为什么,我只需要知道如何使其工作即可。

import networkx as nx
import matplotlib.pyplot as plt
   
G = nx.read_adjlist("AL.txt")

nx.draw(G,with_labels=True)
plt.show()

T = nx.dfs_tree(G)
nx.draw(T,with_labels=True)
plt.show()

T2 = nx.bfs_tree(G,source=1)
nx.draw(T2,with_labels=True)
plt.show()

.txt文件中的数据为:

1 2 4 5
2 1 4 3
3 2 4 6
4 1 2 3 5 6 7
5 1 4 7 8
6 3 4 7 10
7 4 5 6 10 8
8 5 7 9
9 8 10
10 6 7 9

解决方法

如果您阅读文本文件,则节点的默认类型为字符串。因此,您可以通过添加节点类型来解决此问题,请参阅read_adjlist的文档:

G = nx.read_adjlist("AL.txt",nodetype=int)

或通过从bfs_tree构建"1"

T2 = nx.bfs_tree(G,source="1")