递归。在给定起点和最大距离的情况下找到所有最长的路径

用户000

给定起点A和最大距离D,从A开始的最长路径是什么,长度大于或等于D。这段代码有什么问题?

def find_paths(graph, start, path, allpaths, dmax):
    if dmax == 0:
        allpaths.append([start])
    else:
        path.append(start)
        for edge in graph[start]:
            d = graph[start][edge]
            if dmax - d >= 0:
                find_paths(graph, edge, path, allpaths, dmax - d)
            else:
                allpaths.append(path)
    return allpaths

graph = { 
          1: {2: 33, 3: 15},
          2: {1: 33, 4: 57, 5: 7},
          3: {1: 15},
          4: {2: 57},
          5: {1: 89, 2: 7},
        }

print find_paths(graph, 1, [], [], 50)

这给出了:

[[1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3], [1, 2, 5, 2, 3, 1, 3]]

来自的输出find_paths(graph, 1, [], [], 50)应为(1、3)和(1、2、5)。也就是说,两条路径分别通过第一个顶点1和3,第二个顶点1、2和5。

谢谢你。

艾米·泰加登(Amy Teegarden)

一个大问题是您要追加到路径,然后将其传递给递归的下一个迭代。这就是为什么您在每条路径上都得到相同结果的原因。您每次都需要创建一个新路径。

def find_paths(graph, start, path, allpaths, dmax):
    if dmax == 0:
        allpaths.append([start])
    else:
        newpath = path + [start]
        for edge in graph[start]:
            d = graph[start][edge]
            if dmax - d >= 0:   
                find_paths(graph, edge, newpath, allpaths, dmax - d)
            else:
                allpaths.append(newpath + [edge])
    return allpaths

graph = { 
          1: {2: 33, 3: 15},
          2: {1: 33, 4: 57, 5: 7},
          3: {1: 15},
          4: {2: 57},
          5: {1: 89, 2: 7},
        }

print find_paths(graph, 1, [], [], 50)

此外,我不确定为什么您期望结果为(1、3)和(1、2、5)。在我看来(1,3)的长度为15。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在给定起点和终点的情况下检查字符串列表中的路径

来自分类Dev

在给定坐标和最大距离的情况下找到到特定点的最接近点-使用Mongoose和MEAN Stack查询结果不确定

来自分类Dev

在给定起点,方向四元数和行进距离的情况下查找下一个3D点

来自分类Dev

在给定条件的情况下,如何从递归层次结构返回节点的路径?

来自分类Dev

在给定条件的情况下,如何从递归层次结构返回节点的路径?

来自分类Dev

在给定径向距离的情况下绘制球坐标?

来自分类Dev

在给定最大长度的情况下,找到毕达哥拉斯三胞胎的总和

来自分类Dev

在给定卡车箱尺寸的情况下,找到可以装满卡车的最大单位数

来自分类Dev

在给定最大长度的情况下找到拟南芥三联体

来自分类Dev

如何在没有循环的情况下找到给定经度和纬度的两点之间的距离?

来自分类Dev

在给定n个盒子和x个球的情况下找到组合

来自分类Dev

在给定两个点和半径的情况下找到圆的中心

来自分类Dev

对于 RSA 加密,在给定 p、q 和 e 的情况下找到 d?

来自分类Dev

在给定尺寸的情况下最大的潜在PNG尺寸

来自分类Dev

在给定整数作为输入的情况下,打印所有唯一的整数分区

来自分类Dev

如何在给定行条件的情况下从表中选择所有行?

来自分类Dev

在python中,如何最好地在给定变量路径和值的情况下将key:value插入json

来自分类Dev

在给定总数和最大数组大小的情况下,如何获取数组树的深度?

来自分类Dev

OutputError:在给定约束的矩阵中找到最长的路径

来自分类Dev

在没有递归的情况下找到二叉树的最大深度

来自分类Dev

MYSQL-在给定父ID的情况下,在一列中检索所有子ID

来自分类Dev

如何在给定数组中关联表的任何值的情况下获得表中的所有记录?

来自分类Dev

Python 3.4:如何在给定完整路径的情况下导入模块?

来自分类Dev

在给定属性值的情况下,如何找到它的字符串值

来自分类Dev

在给定旋转矩阵的情况下找到顶点的新位置

来自分类Dev

在给定可变数据点的情况下如何找到曲线方程的理论

来自分类Dev

在给定GLIBCXX版本的情况下,如何找到已实现的C ++ 11功能

来自分类Dev

在MATLAB中,在给定数据向量的情况下,在阈值内找到零交叉

来自分类Dev

python-在给定条件的情况下找到列表中下一项的位置

Related 相关文章

  1. 1

    在给定起点和终点的情况下检查字符串列表中的路径

  2. 2

    在给定坐标和最大距离的情况下找到到特定点的最接近点-使用Mongoose和MEAN Stack查询结果不确定

  3. 3

    在给定起点,方向四元数和行进距离的情况下查找下一个3D点

  4. 4

    在给定条件的情况下,如何从递归层次结构返回节点的路径?

  5. 5

    在给定条件的情况下,如何从递归层次结构返回节点的路径?

  6. 6

    在给定径向距离的情况下绘制球坐标?

  7. 7

    在给定最大长度的情况下,找到毕达哥拉斯三胞胎的总和

  8. 8

    在给定卡车箱尺寸的情况下,找到可以装满卡车的最大单位数

  9. 9

    在给定最大长度的情况下找到拟南芥三联体

  10. 10

    如何在没有循环的情况下找到给定经度和纬度的两点之间的距离?

  11. 11

    在给定n个盒子和x个球的情况下找到组合

  12. 12

    在给定两个点和半径的情况下找到圆的中心

  13. 13

    对于 RSA 加密,在给定 p、q 和 e 的情况下找到 d?

  14. 14

    在给定尺寸的情况下最大的潜在PNG尺寸

  15. 15

    在给定整数作为输入的情况下,打印所有唯一的整数分区

  16. 16

    如何在给定行条件的情况下从表中选择所有行?

  17. 17

    在python中,如何最好地在给定变量路径和值的情况下将key:value插入json

  18. 18

    在给定总数和最大数组大小的情况下,如何获取数组树的深度?

  19. 19

    OutputError:在给定约束的矩阵中找到最长的路径

  20. 20

    在没有递归的情况下找到二叉树的最大深度

  21. 21

    MYSQL-在给定父ID的情况下,在一列中检索所有子ID

  22. 22

    如何在给定数组中关联表的任何值的情况下获得表中的所有记录?

  23. 23

    Python 3.4:如何在给定完整路径的情况下导入模块?

  24. 24

    在给定属性值的情况下,如何找到它的字符串值

  25. 25

    在给定旋转矩阵的情况下找到顶点的新位置

  26. 26

    在给定可变数据点的情况下如何找到曲线方程的理论

  27. 27

    在给定GLIBCXX版本的情况下,如何找到已实现的C ++ 11功能

  28. 28

    在MATLAB中,在给定数据向量的情况下,在阈值内找到零交叉

  29. 29

    python-在给定条件的情况下找到列表中下一项的位置

热门标签

归档