Python 是否可以对一组邻居执行广度优先搜索?

Python 是否可以对一组邻居执行广度优先搜索?,python,list,graph,networkx,graph-theory,Python,List,Graph,Networkx,Graph Theory,程序的输入如下: 1 2 2 3 2 5 5 1 3 4 4 5 4 6 第一个数字表示顶点1,第二个数字表示顶点2。这意味着有一条边连接两个顶点,这意味着它们是相邻的。 1[ 我的问题是,是否可以只使用邻居列表执行BFS?或者我需要将数据转换为图形 任何帮助都将不胜感激!最简单的方法是构建一个图,并使用可用的算法。例如,在NetworkX foe中,您有一套基本算法,用于在中广度优先搜索图的节点。因此,您可以执行以下操作: s = '''1 2 2 3 2 5 5 1 3 4 4 5 4 6

程序的输入如下:

1 2
2 3
2 5
5 1
3 4
4 5
4 6
第一个数字表示顶点1,第二个数字表示顶点2。这意味着有一条边连接两个顶点,这意味着它们是相邻的。 1[ 我的问题是,是否可以只使用邻居列表执行BFS?或者我需要将数据转换为图形


任何帮助都将不胜感激!

最简单的方法是构建一个图,并使用可用的算法。例如,在NetworkX foe中,您有一套基本算法,用于在中广度优先搜索图的节点。因此,您可以执行以下操作:

s = '''1 2
2 3
2 5
5 1
3 4
4 5
4 6'''

l = [i.split() for i in s.splitlines()]
然后从边列表中构建一个图形:

import networkx as nx

G = nx.from_edgelist(l)
并使用上述模块中的可用方法,例如在从源开始的广度优先搜索中迭代边:

list(nx.algorithms.traversal.breadth_first_search.bfs_edges(G, '2'))
# [('2', '1'), ('2', '3'), ('2', '5'), ('3', '4'), ('4', '6')]
是否可以仅使用邻居列表执行BFS

邻域列表是BFS问题的完美输入

(我们称之为邻接列表)

是否将列表转换为图形是一个解释问题

您可以使用向量或其他一些简单的数据结构,使用列表对BFS进行编码

没有显式地将列表转换为“图形类”或其他内容

但是,为了验证输入和输出,您可以很容易地绘制概念图