Python 代码找出列表中的所有路径 - 深度优先搜索算法
本文将介绍如何使用 Python 代码找出列表中所有路径,列表中每个元素表示有向路径,例如:
'ceduan_list = [['a','b'],['b','a'],['c','d'],['f','i'],['d','e'],['e','f'],['m','g'],['c','g'],['m','n']]'
无需输入起止点,需要找出 ceduan_list 中存在的所有路径。
要找出 ceduan_list 中存在的所有路径,可以使用深度优先搜索算法 (DFS) 来实现。
首先,我们可以将 ceduan_list 中的路径表示为一个有向图。然后,从图中的任意一个节点开始,使用 DFS 来遍历图中的所有路径。
下面是使用 DFS 来找出所有路径的 Python 代码实现:
def find_all_paths(graph, start, end, path=[]):
# 将当前节点添加到路径中
path = path + [start]
# 如果当前节点就是目标节点,那么将路径添加到结果列表中
if start == end:
return [path]
# 如果当前节点不在图中,直接返回空列表
if start not in graph:
return []
# 递归查找当前节点的邻居节点的路径
paths = []
for node in graph[start]:
if node not in path:
new_paths = find_all_paths(graph, node, end, path)
for new_path in new_paths:
paths.append(new_path)
return paths
# 创建有向图
graph = {}
for path in ceduan_list:
start, end = path
if start not in graph:
graph[start] = []
graph[start].append(end)
# 打印所有路径
for start in graph:
for end in graph[start]:
paths = find_all_paths(graph, start, end)
for path in paths:
print(path)
运行以上代码,将输出所有存在的路径。
例如,对于给定的 ceduan_list,代码将输出以下路径:
['a', 'b']
['b', 'a']
['c', 'd']
['d', 'e']
['e', 'f']
['f', 'i']
['c', 'g']
['m', 'g']
['m', 'n']
希望本文能够帮助您理解如何使用 Python 代码找出列表中所有路径。
原文地址: https://www.cveoy.top/t/topic/bObZ 著作权归作者所有。请勿转载和采集!