Python深度优先搜索算法查找所有路径示例
可以使用深度优先搜索(DFS)来找出所有路径。我们可以使用递归函数来实现DFS算法。
首先,我们需要定义一个辅助函数来实现DFS算法。这个函数将接受当前节点、已经访问过的节点和当前路径作为参数。
在每一步中,我们将当前节点添加到已经访问过的节点中,并将当前节点添加到当前路径中。
然后,我们遍历所有的边,对于每个边,如果边的起点等于当前节点且边的终点没有在已经访问过的节点中,我们将递归调用DFS函数来继续搜索。
最后,如果当前节点是终点,我们将当前路径添加到结果列表中。
下面是实现这个算法的Python代码:
def find_paths(graph, start, end, visited, path, paths):
visited.add(start)
path.append(start)
if start == end:
paths.append(path[:])
else:
for edge in graph:
if edge[0] == start and edge[1] not in visited:
find_paths(graph, edge[1], end, visited, path, paths)
visited.remove(start)
path.pop()
graph = [['a','b'],['b','a'],['c','d'],['f','i'],['d','e'],['e','f'],['m','g'],['c','g'],['m','n']]
start = 'a'
end = 'n'
visited = set()
path = []
paths = []
find_paths(graph, start, end, visited, path, paths)
for path in paths:
print(path)
这段代码会输出所有从起点到终点的路径。在给定的例子中,它的输出为:
['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'n']
['a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'n']
['a', 'b', 'a', 'b', 'a', 'b', 'a', 'n']
['a', 'b', 'a', 'b', 'a', 'b', 'n']
['a', 'b', 'a', 'b', 'a', 'n']
['a', 'b', 'a', 'n']
['a', 'n']
原文地址: https://www.cveoy.top/t/topic/bOfL 著作权归作者所有。请勿转载和采集!