什么是拓扑排序

2023-12-13

我在网上查找了很多例子并观看了 YouTube 视频,但我仍然对拓扑排序是什么有点迷失。据我了解,您应该从已访问和未访问的队列开始,并在访问完节点的所有子节点后获取拓扑排序顺序?


拓扑排序意味着你会得到一份工作列表和先决条件列表,你必须弄清楚工作的顺序。

职位 = [1,2,3] 先决条件 = [[1,2], [1, 3], [3,2]]

result = [1,3,2] 应该是作业执行的顺序。 这里 [1,2] 表示作业 2 在作业 1 完成之前无法启动(作业 1 是先决条件)。

因此,为此,您可以使用简单的深度优先搜索(图遍历算法)。其中您可以有一个以 JobVertex 命名的自定义类

class JobVertex {
   int job;
   List<JobVertex> preRequisites;
   boolean inProgress; 
   boolean visited;}

最初,inProgress 和visited 标志都可以设置为 false。 inProgress 标志用于检测循环(因为要使拓扑排序工作图必须是 DAG)

List<Integer> result = new ArrayList<>();

result 是将添加我们订购的作业的最终列表。 dfs(node, result) 方法可以如下所示,其中您可以从任何节点开始,然后以递归方式遍历其先决条件,并在每次迭代时更新标志。

时间复杂度可以与 dfs (v + e) 的时间复杂度相同,其中 v 对应于顶点,e 分别对应于边。

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

什么是拓扑排序 的相关文章

  • 匈牙利算法的最少行数

    我想知道匈牙利算法覆盖所有零的最少行数 我已经关注了这个链接 但是那里的代码是一个贪婪的代码 匈牙利算法 如何用最少的行数覆盖0个元素 https stackoverflow com questions 14795111 hungarian
  • 如何使用 RDFLib 解析大数据集?

    我正在尝试使用 RDFLib 3 0 解析几个大图 显然它处理第一个图并在第二个图上死掉 MemoryError 看起来 MySQL 不再支持作为存储 您能建议一种以某种方式解析这些图的方法吗 Traceback most recent c
  • NetworkX:翻转图

    有没有办法以相反的顺序生成图形 即我想生成垂直翻转的图形 或者如果我可以在绘制之前用一些 matplotlib 子例程翻转它 F e 我希望 357 和 358 位于顶部 1 6 位于底部 只需交换您的位置坐标即可 import netwo
  • 用均匀的彩色表面替换颜色点

    这是我的数据和当前的绘图 require ggplot2 a rep c 2 5 10 15 20 30 40 50 75 100 each 7 b rep c 0 001 0 005 0 01 0 05 0 5 5 50 10 c c T
  • 如何在 Excel 中创建时间范围图表

    Can anyone help me create graph of time ranges of all elements in Excel My data looks like this 连接时间和断开连接时间数据值采用 24 小时格式
  • 通过 DFS 查找图中的强连通分量

    我正在阅读有关 BFS 和 DFS 的图算法 当我分析通过DFS在图中查找强连通分量的算法时 我想到了一个疑问 为了找到强连通分量 书 Coremen 做了什么 首先它在图上运行 DFS 以获得顶点的完成时间 然后再次以完成时间的降序在图的
  • 向图节点添加标签

    我使用 visnetwork 库制作了下图 library tidyverse library igraph set seed 123 n 15 data data frame tibble d paste 1 n relations da
  • Gremlin 中的广度优先枚举

    我正在尝试使用 Gremlin 进行广度优先枚举 但是我无法找到一种方法来输出枚举期间观察到的所有步骤 我只能打印出最后一次迭代的结果 我的问题是 给定这样的起始节点 我如何使用 Gremlin 跟踪所有路径 不知道整体深度 并打印出我沿途
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • 为什么图的 C++ 数据结构隐藏连续的整数索引?

    有向图和无向图的数据结构至关重要 众所周知且广泛使用的实现 例如Boost图库 http www boost org doc libs 1 56 0 libs graph doc table of contents html and Lem
  • 用于计算有向图上非循环路径数量的快速算法

    简而言之 我需要一个fast计算简单有向图中有多少条非循环路径的算法 By simple我的意思是没有自环或多重边的图 Apath可以从任何节点开始 并且必须在没有传出边的节点上结束 一条路径是acyclic如果没有边出现两次 我的图 经验
  • Facebook Workplace API 身份验证

    我正在开发一个与 Facebook 的 Workplace 集成的 Web 应用程序 我花了一整天的时间试图弄清楚如何使用 OAUTH 身份验证机制进行成员身份验证 由于我拥有应用程序访问令牌 我能够获取用于模拟的成员访问令牌 但是 我如何
  • GNUPLOT:尝试提高质量

    如何提高 gnuplot 的质量 看起来这是一个非常低分辨率的图像 这是我正在使用的文件的内容 linkage plot set terminal pdf set out linkage pdf set title Distribution
  • 如何在matplotlib中部分填充之间,如不同值的不同颜色

    I m trying to color the space between the graph line and the x axis The color should be based on the value of the corres
  • 使用 Haskell 绘制图表

    是否可以使用 Haskell 绘制一个简单的图表 你们中的任何人都可以告诉我该怎么做吗 该图应至少包含 3 个点 Haskell 图表 https github com timbod7 haskell chart似乎不错 The wiki
  • 加权图的 BFS 算法 - 寻找最短距离

    我看过很多帖子 即 post1 https stackoverflow com questions 30409493 using bfs for weighted graphs post2 https cs stackexchange co
  • 广度优先搜索:检查访问状态的时机

    在有向图的广度优先搜索中 可能循环 当一个节点出队时 其所有尚未访问的子节点都会入队 并且该过程将继续 直到队列为空 有一次 我以相反的方式实现它 将节点的所有子节点排队 并在节点出队时检查访问状态 如果正在出队的节点之前已被访问过 则该节
  • 使用 matplotlib.animation 从 CSV 文件实时绘图 - 数据绘制到第一个输入错误

    我正在尝试绘制来自不断写入 CSV 文件的传感器的数据 虽然成功创建实时绘图 但每个新数据条目都会创建一条延伸到第一个数据条目的附加线 见下文 Python 3 4 脚本 import matplotlib pyplot as plt im
  • 如何将图数据结构持久化到关系数据库中?

    我考虑过创建一个顶点表和一个边表 但是在内存中构建图和遍历子图是否需要大量查找 我想避免过多的数据库读取 还有其他方法可以保存图表吗 旁注 我听说过 Neo4j 但我的问题实际上是如何在概念上表示标准数据库中的图形 不过 我对一些 NoSQ

随机推荐

  • Delphi 2010 对象检查器网格和 Windows dpi

    我在高分辨率宽屏上工作 并将 dpi 设置为 144 这样我可以更好地看到字体 Delphi 2010 对象检查网格中的问题我看不到属性或事件名称的文本 网格无法缩放 有什么解决办法吗 thank 读完你的文章后 我问 Uwe Schust
  • 通过字符串名称访问变量值(groovy)

    我做了一些研究 但还没有找到适合我的案例的工作代码 我有两个名为test and test2我想将它们放入以下格式的地图中 test valueof test test2 valueof test2 我的一段代码如下 def test HE
  • 如何将智能表“st-search”与 ng-model 集成?

    如何在Smart Table上设置不考虑用户输入的输入搜索值 这是我的代码 当用户单击复选框时 输入字段会自动输入 Sam 但表记录不会被过滤 并更新 这是我的代码 div class container table class table
  • Codeigniter:在非对象上调用成员函数 result_array()

    我正在使用 Codeigniter 构建 web 应用程序 但收到此错误 Fatal error Call to a member function result array on a non object in var www appli
  • 在其他下拉菜单中选择后禁用下拉选项

    我有 12 个下拉输入区域 一年中的每个月份都有 1 个 每个下拉菜单都有相同的 24 个选项 我需要这样做 例如 如果您在 一月 下拉框中选择了选项 4 则无法在任何其他下拉菜单中选择该选项 4 它仍然在下拉列表中 但只是被禁用 这将有一
  • ID 令牌中缺少 Azure AD v2.0 特定的可选声明

    我正在尝试使用 Microsoft Identity Web NuGet 添加可选声明 以在 NET Core 3 1 WebApp 中进行用户身份验证 阅读 MS 文档 似乎唯一需要的步骤是在 Azure 中的应用程序注册清单文件中声明可
  • 如何使用Data.Functor.Invariant?

    有人可以给我举个例子吗 invmap a gt b gt b gt a gt f a gt f b Invariant 有什么用呢 大多数情况下 人们don t use Invariant 您想要这样做的原因是 如果您正在使用其中变量同时出
  • iPhone利用进度条定时器实现流畅动画

    我试图本着学习的精神在iPhone上实现一个简单的测验应用程序 这个应用程序的一部分是一个计时器 我希望我的计时器从 10 倒数到 0 我有一个简单的 NSTimer 它每秒重复并调用一个方法 在这个方法中我更新了一个显示剩余时间的标签 效
  • 如何在Delphi中使用CCR.EXIF从JPG EXIF读取GPS坐标?

    使用 GPSLatitude 和 GPSLatitude 属性分配方法设置 GPS 坐标非常容易 但读取坐标却让我难住了 我试图访问 TGPSLongitude 类 但没有任何属性或方法可以为我呈现真实的 浮点的 甚至 DMS 的坐标 示例
  • 如何在没有单独的图标文件的情况下更改 Inno Setup 卸载程序快捷方式的图标?

    是否可以在不存储单独的图标文件 到应用程序文件夹 的情况下更改 开始 菜单中卸载程序快捷方式的图标 我看到这个 使用 Resource Hacker 在构建后更改图标 但我无法实现它 My code Icons Name group cm
  • 在 MacOS Big Sur 上安装 Netbeans 8.2 未找到 JDK

    我最近升级到 MacOS Big Sur 当尝试打开 NetBeans 8 2 时出现错误 缺少 JDK 并且需要运行某些 NetBeans 模块 请使用 JDK home命令行选项指定JDK安装 我尝试将 JAVA HOME 设置为 JD
  • Android - 触摸通知时提示对话框窗口

    我是 Android 应用程序开发新手 我正在为我的最后一年项目申请 我的应用程序将提醒用户预约 到目前为止 我设法在预约日期的通知栏上显示警报 我的主管要求添加一个功能 当用户在通知栏上单击选项卡时 将会出现一个对话框窗口并显示详细信息
  • ifelse 的意外结果

    我得到了意想不到的结果ifelse功能 vector lt factor c x x y z levels c x y z ifelse class vector factor yes levels vector no unique vec
  • 导航到 OnNavigedTo 的另一个页面?

    为什么该方法Navigate调用时不工作导航至该页面的事件 您可以重现这种行为吗 有什么想法如何避免这个问题 void LockScreenPage OnNavigatedTo Windows UI Xaml Navigation Navi
  • 如何将 div 覆盖在框架集上?

    我需要使用 jQuery 1 6 2 为现有 jsp 页面创建一个请等待页面 我能够使 div 覆盖正常工作 并在页面中心的模式窗口中显示 请稍候 动画 然而 覆盖层仅覆盖其中一个框架集 即中心框架集 html 结构基本上是 为了清楚起见
  • 关闭 AngularJS 中的 URL 操作

    我正在尝试使用 Angular 编写我的第一个网络应用程序 在正常模式下 html5模式关闭 Angular 强制地址的哈希部分看起来像 路径 添加前导 并对特殊字符进行编码 例如 它允许单个 和 在哈希中 并用 3F 和 23 替换其他
  • 如何从Python列表中删除所有重复元素?

    我有一个这样的清单 1 2 3 4 3 5 3 6 7 8 我想从列表中完全删除重复元素 此处 3 如下所示 1 2 4 5 6 7 8 如何在 python 中实现这一点 以便不仅删除第一次出现的重复元素 而且删除所有重复值 您可以使用C
  • 使用 Data studio 修剪 BigQuery 分区

    我对这个问题有一个几乎相同的场景 如何选择BigQuery表中最新的分区 还有一个额外的并发症 我需要在 Data Studio 中显示结果 设置 我有一系列以不同时间间隔出现的数据集 我需要获取最新的分区 因为它们之间的时间段不一致 所以
  • 如何在 SQL 和关系代数中无论列顺序如何只列出每对元组一次?

    我正在做一些书本练习 但找不到有关如何用关系代数表达以下内容的解释 我确实找到了一个不过 SQL 的答案但我感兴趣的是是否有其他方法可以解决这个问题 书中的问题是 找到那些具有相同速度和 RAM 的 PC 型号对 一对只能列出一次 例如 列
  • 什么是拓扑排序

    我在网上查找了很多例子并观看了 YouTube 视频 但我仍然对拓扑排序是什么有点迷失 据我了解 您应该从已访问和未访问的队列开始 并在访问完节点的所有子节点后获取拓扑排序顺序 拓扑排序意味着你会得到一份工作列表和先决条件列表 你必须弄清楚