【发布时间】:2018-09-05 18:59:32
【问题描述】:
我正在玩一个游戏,要进入下一个关卡,我们必须先击败每个关卡。每个级别对应一个特定的字母。
我已将其表示为图遍历问题,但我试图在没有开始或结束节点的图中查找所有路径。
我的图表表示为字典,键是字符串,值是字符串列表。
{
'A2': ['A1', 'B'],
'A1': [],
'B': [],
'C': ['A2'],
}
要进入A2级,我们必须完成A1和B。
例如,示例路径是 A1、B、A2、C。 另一条路径可能是 B、A1、A2、C。
深度优先搜索或广度优先搜索的实现需要一个起始节点。我认为一个好的起始节点将是任何值为空的键:在本例中为 A1 和 B,但我不确定如何使用两个起始节点实现 dfs 或 bfs。
我一直在调整查找路径的实现,但这仅适用于开始级别和结束级别。
def find_path(graph, start, end, path=[]):
path = path + [start]
if start == end:
return path
if start not in graph:
return None
for node in graph[start]:
if node not in path:
newpath = find_path(graph, node, end, path)
if newpath: return newpath
return None
print(find_path(course_dict, 'A1', 'PC'))
但我的答案没有得到。
【问题讨论】:
-
只是用python练习。
-
这是作业题吗?
-
but I'm trying to find all paths in a graph without a start or end node。查看所有将您带到最终关卡的路径会不会更有意义?