zch19960603 2022-12-11 22:58 采纳率: 46.7%
浏览 104
已结题

python 任意俩点满足步长要求的所有路径,求指导

如字典表示该节点与其他节点的连通关系,
dct={
'A':['B','C','D','E'],
'B':['C','F','H'],
'C':['F'],
'D',['H','I'],
'E',['K'],
'K',['F']

如何运用深度遍历算法,输入始发点,目的点,最大步长,得出俩点间的所有路径?
例:输入始发点A,目的点F,步长4,得出路径A-B-F、A-C-F、A-E-K-F
输入始发点A,目的点F,步长3,得出路径A-B-F、A-C-F
输入始发点A,目的点C,步长任意,得出路径A-C

  • 写回答

4条回答 默认 最新

  • |__WhoAmI__| 2022-12-12 09:46
    关注
    # 定义函数find_path,它接受四个参数:起点、终点、步长、字典
    def find_path(start, end, max_steps, dct):
      # 定义变量paths,用来存储所有满足要求的路径
      paths = []
    
      # 定义函数dfs,它接受三个参数:当前节点、当前步数、当前路径
      def dfs(node, steps, path):
        # 如果当前步数已经超过最大步长,直接返回
        if steps > max_steps:
          return
    
        # 如果当前节点已经是终点,把当前路径添加到
    
    所有满足要求的路径中
    if node == end:
    paths.append(path)
    return
    
    # 遍历当前节点的所有相邻节点
    for next_node in dct[node]:
      # 如果下一个节点已经在当前路径中出现过,跳过它
      if next_node in path:
        continue
    
      # 如果没有出现过,继续搜索下一个节点
      dfs(next_node, steps + 1, path + [next_node])
    开始搜索
    dfs(start, 0, [start])
    
    返回所有满足要求的路径
    return paths
    
    测试函数
    dct = {
    'A': ['B', 'C', 'D', 'E'],
    'B': ['C', 'F', 'H'],
    'C': ['F'],
    'D': ['H', 'I'],
    'E': ['K'],
    'K': ['F']
    }
    
    print(find_path('A', 'F', 4, dct)) # 输出 [['A', 'B', 'F'], ['A', 'C', 'F'], ['A', 'E', 'K', 'F']]
    print(find_path('A', 'F', 3, dct)) # 输出 [['A', 'B', 'F'], ['A', 'C', 'F']]
    print(find_path('A', 'C', 100, dct)) # 输出 [['A', 'C']]
    

    上面的代码实现了一个深度优先搜索算法,它可以用来搜索从起点到终点的路径,并根据给定的最大步长筛选符合要求的路径。希望这些内容能够帮助到你。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月22日
  • 已采纳回答 12月19日
  • 赞助了问题酬金15元 12月12日
  • 修改了问题 12月11日
  • 展开全部

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答