【发布时间】:2020-06-17 04:09:36
【问题描述】:
我正在使用带有 BFS 和 DFS 的 Python 的 networkx 库。我需要获取一棵树,然后对其进行探索以获取从开始节点到结束节点的路径。
对于 BFS 部分,我使用的是 bfs_successors,它从源代码返回广度优先搜索中的后继迭代器。
对于我正在使用的 DFS 部分:dfs_successors,它会从源代码中返回深度优先搜索的继承者字典。
我需要从两种算法中获取从源到端的节点列表。每个节点是 (x, y) 并且是网格中的一个单元格。
这是我到目前为止所做的:
BFS = nx.bfs_successors(mazePRIM, start)
print(dict(BFS))
DFS = nx.dfs_successors(mazePRIM, start)
print(DFS)
我明白了:
{(0, 0): [(0, 1), (1, 0)], (1, 0): [(1, 1)], (1, 1): [(1, 2)], (1, 2): [(0, 2), (1, 3)], (0, 2): [(0, 3)]}
{(0, 0): [(0, 1), (1, 0)], (1, 0): [(1, 1)], (1, 1): [(1, 2)], (1, 2): [(0, 2), (1, 3)], (0, 2): [(0, 3)]}
但我需要这样的输出:
[(0, 0), (1, 0), (1, 1), (1, 2), (1, 3)]
这是从头到尾的节点列表。
您对如何操作有什么建议吗?你能帮帮我吗?
【问题讨论】:
-
看起来您在这里问的问题与stackoverflow.com/questions/62412222 中的问题相同。
bfs_successors或dfs_successors本身不会为您提供从start到end的路径。为此,您可以使用shortest_path或all_simple_paths。 -
嗨@rkersh!是的,我做到了,但后来我发现答案并不适合我的需要。我试图更改帖子并取消它,但我不能,所以我写了一个新的(this)并得到了我需要的答案
-
下面的答案不会为您提供您在问题中所要求的内容。相反,他们使用广度优先搜索或深度优先搜索提供从
start可以到达的每个节点。 -
嗯,它对完成我的代码很有帮助...
标签: python dictionary networkx depth-first-search breadth-first-search