Python从图中获取所有路径

2024-03-25

我正在尝试找到用户可以通过网站访问的路径。我使用以下格式表示我的图表:

graph = { 0 : [1, 2],
          1 : [3, 6, 0],
          2 : [4, 5, 0],
          3 : [1],
          4 : [6, 2],
          5 : [6, 2],
          6 : [1, 4, 5]}

我已经实现了深度优先算法,但需要对其进行更改才能发挥作用。它需要返回路径,而不仅仅是按其到达节点的顺序返回节点。

visitedList = [[]]
def depthFirst(graph, currentVertex, visited):
    visited.append(currentVertex)
    for vertex in graph[currentVertex]:
        if vertex not in visited:
            depthFirst(graph, vertex, visited)
    return visited

traversal = depthFirst(graph, 0, visitedList)
print('Nodes visited in this order:')
print(visitedList)

该函数返回:

[[], 0, 1, 3, 6, 4, 2, 5]

而我想要这样的东西:

[[0, 1, 3], [0, 1, 6], [0, 2, 4, 6], [0, 2, 5, 6]] 

在 python 中传递列表时,它不会进行深复制。使用 list.copy() 在这里确实很有帮助。我不确定这是否是您想要的,但这是代码:

visitedList = [[]]

def depthFirst(graph, currentVertex, visited):
    visited.append(currentVertex)
    for vertex in graph[currentVertex]:
        if vertex not in visited:
            depthFirst(graph, vertex, visited.copy())
    visitedList.append(visited)

depthFirst(graph, 0, [])

print(visitedList)

它返回所有路径。

[[], [0, 1, 3], [0, 1, 6, 4, 2, 5], [0, 1, 6, 4, 2], [0, 1, 6, 4], [0, 1, 6, 5, 2, 4], [0, 1, 6, 5, 2], [0, 1, 6, 5], [0, 1, 6], [0, 1], [0, 2, 4, 6, 1, 3], [0, 2, 4, 6, 1], [0, 2, 4, 6, 5], [0, 2, 4, 6], [0, 2, 4], [0, 2, 5, 6, 1, 3], [0, 2, 5, 6, 1], [0, 2, 5, 6, 4], [0, 2, 5, 6], [0, 2, 5], [0, 2], [0]]

列表副本在 python3 中对我有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python从图中获取所有路径 的相关文章

随机推荐

  • 检查字符串中的字符是否都是唯一的

    我正在尝试使用 JS 通过数组来解决这个问题 var str abcdefgh for i 0 i lt 255 i arr i false function check for i 0 i lt str length i if arr s
  • 如何从实体管理器获取 jpa 数据源属性

    大家好 我想知道是否可以通过实体管理器获取数据库连接属性 我的 persistence xml 看起来像这样
  • 暂停事件在 PhoneGap iPhone 中无法正常工作?

    这是我的代码 This is an event that fires when a PhoneGap application is put into the background document addEventListener paus
  • Go 语言中的打印格式列表

    只是想知道使用 fmt 包的功能的打印格式列表 例如 v 用于打印值 T 可以打印值的类型 还有什么 动词 格式列表可在fmt 包的文档 http golang org pkg fmt General v the value in a de
  • 如何在.net6中使用WebApplicationFactory(没有可讲的入口点)

    在 ASP NET Core 6 中 默认模板将所有内容从Startup cs into Program cs 并使用 Program cs 中的顶级语句 因此不再有 可以说的 Program乙醚类 这看起来很棒 但现在 我需要测试所有这些
  • 在快速解析 Json 时无法将“NSNull”类型的值转换为“NSString”

    我有以下课程 class BannerResponse NSObject let URL Url let CONTACT NO ContactNo let IMAGE Image let BIG IMAGE BigImage let ID
  • 为什么 Evan 的调试器说我要转向 eax 而不是 rax?

    我正在将一些值移至 rax 但调试器显示它正在移至 eax 这是怎么回事 是用调试器 nasm 还是我的知识 无论如何 代码当然可以完美运行 我使用的调试器是 Evan s Debugger 简而言之 您和调试器都是正确的 当您将某物移动到
  • C++ 风格与性能?

    C 风格与性能 使用 C 风格的东西 比某些 C 等价物更快 这是不好的做法吗 例如 不要使用atoi itoa atol ETC 使用std stringstream 永远不要使用原始指针 而是使用智能指针 好吧 它们真的很有用 每个人都
  • QMediaplayer 无法在无框和半透明背景 PyQt5 上工作

    我正在使用 QMediaplayer 制作视频播放器 但它无法在无框和半透明背景窗口上工作 我想制作圆角窗口 所以我需要无框和半透明窗口 这是我的代码 from PyQt5 QtCore import Qt QUrl from PyQt5
  • Node.js 将图像通过管道传输到内存中并显示它

    我正在制作一个下载和显示图像的 Node js Electron 应用程序 我正在使用请求从互联网下载图像 我想将此图像保存在内存中并显示它 而不将文件保存在本地硬盘上 我知道我可以通过插入来完成我在这里提出的要求 img src url
  • 为什么初始化程序不能处理返回 list 的属性?

    找不到这个问题的答案 这一定是显而易见的 但仍然如此 我尝试在这个简化的示例中使用初始化程序 MyNode newNode new MyNode NodeName newNode Children Add smth mistake is h
  • 以串行对象作为参数的多进程

    我在使用 Python 并将串行对象作为参数传递给单独的进程时遇到问题 该程序在 Windows 8 中运行 因此不能选择使用全局变量 from multiprocessing import Queue from multiprocessi
  • 如何隐藏AG-Grid中的列?

    如何隐藏 AG Grid 中的列 并且它不应显示在工具面板中 var columnDefs headerName Stone ID field Stone ID width 100 hide true 您可以设置列属性抑制工具面板 http
  • 强制 VSProps 设置覆盖项目设置

    我有一个 vsprops 文件 它定义了针对 Visual Studio 2008 构建所有项目时应使用的优化 如果我将项目的属性设置为 从项目默认值的父级继承 它将起作用 并将它们填充到 vcproj 文件中 但是 这并不能保护我免受开发
  • R - 复制组内的值

    我有一个数据框 其中有某人在过去 3 年 2016 年 2017 年 2018 年 中获得的总分 还有他们每年的得分列 我的数据框如下所示 myDF lt data frame ID c 1 1 1 2 2 3 4 Dates c 2016
  • Rails 3 无效多字节字符 (US-ASCII)

    我发现了一个类似的帖子here https stackoverflow com questions 1739836 invalid multibyte char us ascii with ruby on rails但无论如何我都无法解决问
  • 斐波那契搜索

    有人请解释一下斐波那契搜索算法 我尝试了很多资源并进行了很多搜索 但算法仍然不清楚 大多数资源都在与二分搜索的链接中描述了它 但我不明白它们 我知道斐波那契搜索算法是二分搜索的扩展 我对此非常了解 我的书也未能解释 我知道斐波那契数定义为
  • 我们可以在MySql中为UPPERCASE和LOWERCASE函数创建函数索引吗

    我们可以在MySql中创建功能索引吗UPPERCASE and LOWERCASE功能 我已经搜索过 但在互联网上找不到任何相关的内容 如果有人实现了这样的事情 是的 添加了 MySQL 8 0 13索引表达式 https dev mysq
  • 带有左连接的 LINQ 和枚举

    我有一个枚举 public enum Status New InProgress Processed InComplete 我有以下查询要查询 以根据状态提供列表计数 但现在我只知道它是否存在 因此 如果已处理计数为零 我将不会获得任何值
  • Python从图中获取所有路径

    我正在尝试找到用户可以通过网站访问的路径 我使用以下格式表示我的图表 graph 0 1 2 1 3 6 0 2 4 5 0 3 1 4 6 2 5 6 2 6 1 4 5 我已经实现了深度优先算法 但需要对其进行更改才能发挥作用 它需要返