有向无环图中的最长路径

2023-12-09

如何找到没有权重的 DAG 中的最长路径?

我知道如果 DAG 是拓扑排序的,则可以在线性时间内找到从 A 到 B 的最长路径,但我需要找到所有图中的最长路径。有没有比搜索所有顶点对之间的最长路径(这将是 O(n^3))更快的方法?


这与寻找关键路径相同。

有一个简单的 O(n) DP 解决方案:

  • 对顶点进行拓扑排序。
  • 对于每个顶点i我们将记录earliest(i),最早可能的开始时间(所有顶点最初为 0)。处理每个顶点i按拓扑排序顺序,更新(增加)earliest(j)对于任何后继顶点j of i每当earliest(i) + length(i, j) > earliest(j).

完成此操作后,最大值earliest(i)所有顶点上的长度将是关键路径(最长路径)的长度。您可以通过从该顶点向后追踪来构造一条(通常可能有多个)最长路径,查看其前辈,看看它们中的哪一个可以将其产生为后继(即它们中的哪一个具有earliest(i) + length(i, j) == earliest(j)),迭代直到到达没有前趋的顶点。

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

有向无环图中的最长路径 的相关文章

  • 比 BMH (Boyer–Moore–Horspool) 更快的算法

    您会使用哪种算法来搜索短文本中的短子字符串 简而言之 我的意思是子字符串有 5 10 个字符 字符串有 255 个字符 我正在考虑根据输入数据长度选择算法 哪种算法对于较长的输入更好 Try Turbo BM http www igm un
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 如何提高洪水填充例程的性能?

    我正在我的应用程序中实现四路洪水填充 伪代码如下 Flood fill node target color replacement color 1 If the color of node is not equal to target co
  • 基于 2 个输入的伪随机数生成器 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要根据 2 个输入值 X 和 Y 生成一个伪随机数 给定相同的 X 和 Y 值 我需要得到相同的结果 结果应介于 0 和 1 之间 含
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 生成 2D 中的非简并点集 - C++

    我想在 2D 平面中创建一大组非退化的随机点云 整个集合中没有 3 个点在一条直线上 我有一个简单的解决方案 它生成一个随机浮点对 P new x y 并检查到目前为止生成的每对点 P1 P2 是否位于同一行 这需要 O n 2 检查添加到
  • 字符串的渐进单词组合

    我需要获得字符串的渐进单词组合 例如 这是字符串 输出 这是字符串 这是 这个字符串 是字符串 这 是 细绳 你知道类似的算法吗 我需要php语言 谢谢 这是解决您问题的简单代码 我将每个字符串递归地连接到数组中的其余字符串 string
  • 逐字遍历句子

    如何逐字遍历任何给定的句子 java中有内置函数吗 我不知道如何开始 像这样的事情 String sentence Your sentence here String words sentence split s splits by whi
  • 在哪里可以找到有关双三次插值和 Lanczos 重采样的好读物?

    我想用 C 实现上述两种图像重采样算法 双三次和 Lanczos 我知道现有的实现有几十种 但我仍然想制作自己的实现 我之所以这么做 部分原因是我想了解它们是如何工作的 部分原因是我想为它们提供一些主流实现中没有的功能 例如可配置的多 CP
  • 对列表中的相邻元素进行分组

    假设我想编写一个函数来执行此操作 输入 1 1 3 3 4 2 2 5 6 6 输出 1 1 3 3 4 2 2 5 6 6 它将相同的相邻元素分组 这个方法的名称应该是什么 此操作有标准名称吗 In 1 1 3 3 4 2 2 5 6 6
  • 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

    我正在学习Paxos算法 http research microsoft com en us um people lamport pubs paxos simple pdf http research microsoft com en us
  • 读取4个点的坐标。他们做一个正方形吗?

    我计算点之间的距离 如果距离相等 则点构成一个正方形 否则不 仅当我按以下顺序读取坐标 A x y B x y C x y D x y 或相反时 我的代码才有效 但是如果我这样读 例如 A x y B x y D x y C x y 它将不
  • 查找数组中 2 个缺失数字的最快方法

    这个问题的存在只是出于纯粹的好奇心 不是作业 找到在数组 1 n 中找到两个缺失数字的最快方法 因此 在相关帖子中 查找数字数组中缺失数字的最快方法 https stackoverflow com questions 2113795 qui
  • CSR 矩阵 - 矩阵乘法

    我有两个方阵A and B 我必须转换B to CSR Format并确定产品C A B csr C 我在网上找到了很多关于CSR 矩阵 向量乘法 http www mathcs emory edu cheung Courses 561 S
  • 模式识别算法

    过去我必须开发一个充当规则评估器的程序 你有一个先行词和一些后续词 动作 所以如果先行词评估为真 则执行的动作 当时我用的是修改版RETE算法 http en wikipedia org wiki Rete algorithm RETE 有
  • 为什么 n 按位和 -n 总是返回最右边的位(最后一位)

    这是Python代码片段 1 1 1 2 2 2 3 3 1 看来任何n n总是返回最右边 最后 位 我真的不知道为什么 有人可以帮助我理解这一点吗 这是由于负数以二进制表示的方式 称为二进制补码表示 创建某个数字 n 的补码 换句话说 创
  • 在 O(n) 时间内对列表中的数字方块进行排序?

    给定一个按排序顺序排列的整数列表 例如 9 2 0 2 3 我们必须对每个元素进行平方并按排序顺序返回结果 所以 输出将是 0 4 4 9 81 我可以找出两种方法 O NlogN 方法 我们将每个元素的平方插入哈希集中 然后将元素复制到列
  • 单词预测算法

    我确信有一篇关于此问题的帖子 但我找不到提出这个确切问题的帖子 考虑以下 我们有字典可供使用 我们收到了许多单词段落 我希望能够根据此输入预测句子中的下一个单词 假设我们有几个句子 例如 你好 我的名字是汤姆 他的名字是杰瑞 他去了没有水的
  • 沿着长数据序列在固定大小的移动窗口中查找中值

    给定一个数据序列 可能有重复项 一个固定大小的移动 窗口 从数据开始处每次迭代时移动窗口 序列 使得 1 从窗口中删除最旧的数据元素并添加新数据 元素被推入窗口 2 求每次移动时窗口内数据的中位数 以下帖子没有帮助 有效地找到随机序列的中值
  • 有向无环图的人类可读文本表示

    一棵树有一堆人类和机器可读的文本表示 例如嵌套列表 以各种表示形式 例如 JSON 和 YAML 和 XML 与缩进相结合 它们使我们很容易想象得到的结构 但我没有看到任何具有相同水平可读性的东西有向无环图 https en wikiped

随机推荐

  • python 有排序列表吗?

    我的意思是一个结构 O log n 复杂度x push 运营 查找元素的复杂度为 O log n 计算复杂度为 O n list x 将被排序 我还有一个关于性能的相关问题list insert 现在是here 您的大 O 要求有什么特殊原
  • Python Unittest:打开并等待程序关闭

    目前 我尝试创建一个打开文件 使用相应的应用程序 的单元测试 然后测试运行应该等到程序关闭 def test HFG self print please edit this file os chdir r C test a os start
  • Excel VBA 比较列数据复制行

    好吧 在这里许多编码专家的帮助下 我设法以某种方式编写了这段代码 我需要创建一个宏来比较两个工作表中的数据 在我的两个工作表中 都有一个名为 eRequest ID 的列 我必须复制以下记录行 DO NOT有一个 eRequest ID 两
  • Magento 免费送货和优惠券折扣

    我有一个免费送货价格规则 其配置如下 所有客户群体 无优惠券 每个客户的使用次数 0 条件 购物车总数 gt 100 发货国家 地区 NL 或 BE 或 DE 免费送货 与配套商品一起发货 然而 当我输入具有固定折扣金额的优惠券时 免费送货
  • RestTemplate + ConnectionPoolTimeoutException:等待来自池的连接超时

    当应用程序没有任何负载时 我在生产中突然遇到此错误 当我的代码尝试使用 Spring Rest 模板发送 PUT 消息时出现问题 这是我如何初始化restTemplate的代码 private static final RestTempla
  • 实体框架中的缓存如何工作?

    我看到大量关于人们努力让 EF 不发送缓存数据的帖子 我坐在这里想知道他们如何让它发送缓存数据 详细信息如下 使用 Entity Framework Core 6 0 6 的 NET 6 0 上的 ASP NET Core 最新版本 通过
  • 为什么我的图像加载在 Firefox 和 Internet Explorer 中没有触发?

    我正在尝试使用该解决方案检测几张图像何时完成加载在这里找到 该解决方案在 Chrome 和 Safari 中运行良好 但在 Firefox 和 IE 中失败 没有错误 预加载函数如下 var preloadPictures function
  • Tensorflow 警告 - 无法加载动态库“cupti64_101.dll”; dlerror:找不到 cupti64_101.dll

    我见过与 cupti dll 错误相关的其他类似问题 然而 答案似乎是dll位置需要在路径中 嗯 我的 dll 在路径中 标题中列出的警告后面是几个与未加载 cupti dll 相关的错误 venv PS D Projects tensor
  • Grails 多数据源域问题

    我有一个项目 表分布在两个数据源之间 我正在配置代码以按照 grails 文档中的 3 3 6 主题访问表http grails org doc 2 0 0 M2 guide conf html dataSourcesAndEnvironm
  • 使用 cordova 1.5 的 xcode 没有准备好设备且没有 console.log

    这是我拥有的所有代码 我既没有得到 xcode 中的日志 也没有得到 deviceReady 事件 我在任何其他平台上也没有得到该事件 在 Ubuntu Android Eclipse 上 我确实得到了控制台日志 但没有 deviceRea
  • 检测时间线上的冲突,第 2 部分:隔离“真实”重叠

    这是我关于绘制重叠时间冲突的时间轴调度算法的原始问题的延续 PART 1 检测调度程序时间线上的冲突 算法 我得到了正确的算法 如下所示 在 24 小时时间轴上分割 冲突 事件 使冲突组中的每个项目占据窗口的 N 我当前的问题 第 2 部分
  • 相当于

    与 css 的 valign=center

    我的页面上有以下代码 p align left style font size 10pt display block height 200px Content p 我希望文本在中心垂直对齐p tag Using vertical align
  • protobuf-net :不支持 IExtensible 继承

    似乎无法实施protobuf net通过定义其子类型的类的序列化 ProtoInclude 并实施ProtoBuf IExtensible ProtoBuf ProtoInclude 1000 typeof DerivedClass pub
  • HTML 表单值和“后退”按钮

    如何在点击后退按钮时保留 HTML 表单信息 这是默认的 HTML 或浏览器行为吗 或者它依赖于浏览器 这是默认的浏览器行为 但仅当包含表单的页面可缓存时 例如设置了标头 以便允许浏览器缓存它 SO 的形式如何记住以前的输入值
  • JasperReports:如何在jsp页面中调用报表

    我使用 做了一份 jasper 报告iReport 3 7 4 version 现在我必须在我的 java 应用程序中使用它或调用该报告 我使用 servlet jsp 和 struts 框架 apache tomcat 作为服务器 我想要
  • 比较过程的内容,而不是结果

    使用 Ruby 1 9 2 Problem比较两个过程的内容 而不是结果 我了解结果无法测试 因为停止问题但没关系 反正我也不想测试结果 例如 proc x x proc x x gt false doh 这会返回 false 因为过程中的
  • 使用节流(“gopkg.in/throttled/throttled.v2”)库时出现错误

    当我尝试使用安装节流时go get命令 go get github com throttled throttled 我收到错误 can t load package package github com throttled throttle
  • 为什么 `object.__init__` 不带参数

    为什么不object init take args kwargs作为论据 据我所知 这以一种非常烦人的方式破坏了一些简单的代码 没有任何好处 假设我们要确保所有 init 调用所有父类的 只要每个 init 遵循调用的简单约定super i
  • 文本输入中的最小最大数字 - Jquery/javascript

    我想设置在文本输入中输入的最小和最大允许数字我知道我可以使用范围输入来做到这一点 但在不兼容的浏览器中使用时它仍然有最大和最小吗 如果没有 请为我指出正确的方向 感谢您的阅读 Use jquery 验证器插件 它有一组很好的功能 还有最小最
  • 有向无环图中的最长路径

    如何找到没有权重的 DAG 中的最长路径 我知道如果 DAG 是拓扑排序的 则可以在线性时间内找到从 A 到 B 的最长路径 但我需要找到所有图中的最长路径 有没有比搜索所有顶点对之间的最长路径 这将是 O n 3 更快的方法 这与寻找关键