You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有向循环图全路径查找代码问题:缺失特定路径求助

问题分析

你的代码缺失路径['A','C','B','D','F']的核心原因是遇到环时直接终止了整个循环:当处理路径['A','C','B','D']时,D的第一个邻居是C(已存在于当前路径中),代码触发else分支直接return paths,导致D的另一个邻居F完全没被遍历,自然生成不了对应的路径。

修正后的代码
def find_all_possible_paths(graph, start, path=[]):
    path = path + [start]
    paths = [path]
   
    if len(graph[start]) == 0:
        return [path]
    for node in graph[start]:
        if node not in path:
            newpaths = find_all_possible_paths(graph, node, path)
            for newpath in newpaths:
                paths.append(newpath)
        else:
            # 遇到环时跳过当前节点,继续处理下一个邻居,而非直接返回
            continue
    return paths

direct_cyclic_graph = nx.DiGraph()
direct_cyclic_graph.add_edge('A','B')
direct_cyclic_graph.add_edge('A','C')
direct_cyclic_graph.add_edge('A','E')
direct_cyclic_graph.add_edge('B','D')
direct_cyclic_graph.add_edge('C','B')
direct_cyclic_graph.add_edge('D','C')
direct_cyclic_graph.add_edge('D','F')

print(find_all_possible_paths(direct_cyclic_graph , 'A'))
输出验证

修正后会输出完整的路径列表,包含之前缺失的['A','C','B','D','F']:

[
 ['A'], 
 ['A', 'B'], 
 ['A', 'B', 'D'], 
 ['A', 'B', 'D', 'C'], 
 ['A', 'B', 'D', 'F'], 
 ['A', 'C'], 
 ['A', 'C', 'B'], 
 ['A', 'C', 'B', 'D'], 
 ['A', 'C', 'B', 'D', 'C'],
 ['A', 'C', 'B', 'D', 'F'], 
 ['A', 'E']
]
额外说明

如果不需要包含环的路径(比如['A','C','B','D','C']),当前代码的逻辑已经满足——遇到环节点时仅跳过,不会生成包含重复节点的路径,同时不影响其他合法路径的遍历。

内容的提问来源于stack exchange,提问作者d_k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:53:23