具体图和需要更有创意的解决方案

2024-02-10

有向图(|V|=a, |E|=b)给出。 每个顶点都有特定的权重。我们想要每个顶点(1..a)找到从该顶点可以到达的具有最大权重的顶点。

更新 1:@Paul 在 O(b + a log a) 中准备了一个很好的答案。但是我 搜索 O(a + b) 算法(如果有)?

有没有其他有效或最快的方法来做到这一点?


是的,可以修改 Tarjan 的 SCC 算法来在线性时间内解决这个问题。

Tarjan 的算法使用两个节点字段来驱动其 SCC 查找逻辑:index,表示算法发现节点的顺序;和lowlink, 最低index通过一系列树弧和后面的弧可以到达。作为同一深度优先遍历的一部分,我们可以计算另一个字段,maxweight,它具有以下两种含义之一:

  • 对于尚未包含在完成的 SCC 中的节点,它表示一系列树弧可达到的最大权重,可选地后跟到另一个 SCC 的交叉弧,然后是任何后续路径。

  • 对于已完成的 SCC 中的节点,它表示可达到的最大权重。

计算逻辑maxweight如下。如果我们发现一条弧v到一个新节点w, then vw是一个树弧,所以我们计算w.maxweight递归并更新v.maxweight = max(v.maxweight, w.maxweight). If w在堆栈上,那么我们什么都不做,因为vw是一个后弧并且不包含在定义中maxweight。否则,vw是一个交叉弧,我们对树弧进行相同的更新,只是没有递归调用。

当Tarjan的算法识别出SCC时,是因为它有一个节点r with r.lowlink == r.index. Since r是该SCC的深度优先搜索根,其值为maxweight对于整个 SCC 来说是正确的。我们不记录 SCC 中的每个节点,而是简单地更新其maxweight to r.maxweight.

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

具体图和需要更有创意的解决方案 的相关文章

  • 将 0 更改为 1 或反之亦然的最优雅的方式

    做接下来的事情最优雅的方式是什么 int i oneOrZero if i 0 i 1 else i 0 你可以假设i只能有 1 或 0 值 i 1 XOR https en wikipedia org wiki Exclusive or值
  • 协作投票算法的用户分布

    我的应用程序 实际上是一个游戏 的用户回答问题即可获得积分 问题由其他用户提供 由于数量有限 我无法亲自检查所有内容 因此我决定将过滤过程众包给用户 玩家 规则很简单 每个用户都会看到一个问题来评价好 坏 不确定 当问题被评为 差 5 次时
  • .NET 中通过字符串键或数字索引查找的最佳数据结构是什么?

    我正在寻找最理想的数据结构 为了性能和易用性 可以通过字符串键或索引检索值 字典不起作用 因为您无法真正通过索引进行检索 有任何想法吗 你想要的有序字典 http msdn microsoft com en us library syste
  • Python 中聚类相似字符串的算法?

    我正在编写一个脚本 该脚本当前包含多个 DNA 序列列表 每个列表都有不同数量的 DNA 序列 并且我需要根据汉明距离相似性对每个列表中的序列进行聚类 我当前的实现 目前非常粗糙 提取列表中的第一个序列并计算每个后续序列的汉明距离 如果它在
  • 什么是日历队列?

    我正在致力于构建一个离散事件模拟器 维基百科提到有几种通用优先级队列非常适合在 DES 中使用 具体来说 它提到日历队列是一个很好的结构 我找到了一份 pdf 1988 年的 其中提到了日历队列 但在大多数情况下我找不到关于它们的任何其他内
  • 如何使用 nltk.containers.Trie?

    我想使用 nltk containers Trie 执行简单的操作 例如将单词插入到 trie 中 检索具有给定前缀的所有单词 查找具有最多后代的节点 即最常见的前缀 以图形方式查看 trie 等等 我找不到任何有关使用此结构的文档 这是我
  • 解决复发问题

    我被给予F 0 X and F i A F i 1 2 B F i 1 C 1000000 for 1 i N 现在给出N A B C and X 如何找到所有N元素有效吗 我需要将这 N 个元素分成 2 个集合 其中最大的元素在第一个集合
  • Deflate 压缩 - 数值示例

    我真的很想看看一个数字示例 手动压缩如何进行压缩 以下非常短的文本 abc 已使用 deflate 算法进行压缩 输出 eJxLTEoGAAJNASc 其二进制表示法为 01100101 01001010 01111000 01001100
  • 无限循环:确定并打破无限循环

    你如何判断一个循环是无限循环并且会跳出它 有没有人有算法或者可以帮助我解决这个问题 Thanks 没有通用的算法可以确定程序是否处于无限循环中图灵完备 http en wikipedia org wiki Turing completene
  • 统一成本搜索和 Dijkstra 算法有什么区别?

    我想知道有什么区别统一成本搜索 and 迪杰斯特拉算法 它们似乎是相同的算法 Dijkstra 算法可能更为人所知 可以视为 作为统一成本搜索的变体 其中没有目标状态并且 处理继续 直到所有节点都已从 优先级队列 即直到到达所有节点 不仅仅
  • 根据 cron 规范计算下一个计划时间

    在给定当前时间和 cron 规范的情况下 计算事件下一次运行时间的有效方法是什么 我正在寻找 每分钟循环检查是否符合规范 以外的东西 规格示例可能是 每月1日 15日15 01 每小时整点的 10 20 30 40 50 分钟 Python
  • 高效找到圆和网格的交点

    找到由圆心和半径定义的圆与任意网格的交点的好方法是什么 An illustration of the points I am trying to find 到目前为止我想到的可能的解决方案 找到位于中心 半径之间的所有线 对于每条线计算交点
  • LRU、FIFO、随机

    当出现页面错误或缓存未命中时 我们可以使用最近最少使用 LRU 先入先出 FIFO 或随机替换算法 我想知道 哪一个提供了最好的性能 也称为未来缓存丢失 页面错误最少的可能性 架构 Coldfire 处理器 没有愚蠢的问题 这句话非常适合这
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • 将 diff 转换为带有删除线的 Markdown?

    我想转换输出diff 在 Markdown 文件上 降价与
  • 聚类算法采用哪种编程结构

    我正在尝试实现以下 分裂 聚类算法 下面是该算法的简短形式 完整的描述可用here https dl dropboxusercontent com u 540963 diana pdf 从样本 x i 1 n 开始 将其视为由 n 个数据点
  • 查找预排序数组中给定值的最低索引

    嘿 我在采访中遇到了这个问题 想知道解决它的最佳方法是什么 假设给定一个已经排序的数组 并且您想要找到某个值 x 的最低索引 这是我想出的 python 伪代码 我只是想知道是否有更好的方法来实现它 def findLowestIndex
  • 如何决定权重?

    对于我的工作 我需要某种具有以下输入和输出的算法 输入 一组日期 过去的日期 输出 一组权重 每个给定日期一个权重 所有权重的总和 1 基本思想是 距离今天日期最近的日期应该获得最高的权重 第二个最接近的日期将获得第二高的权重 依此类推 有
  • 如何随机打乱一个比 PRNG 周期更多排列的列表?

    我有一个包含大约 3900 个元素的列表 我需要对其进行随机排列以产生统计分布 我环顾四周 发现了这个使用 Python random shuffle 进行随机播放的列表的最大长度 https stackoverflow com quest
  • 从邻接表计算图的入度

    我遇到了这个问题 其中需要根据邻接列表表示来计算图的每个节点的入度 for each u for each Adj i where i u if i u E in degree u 1 现在根据我的说法 它的时间复杂度应该是O V E V

随机推荐

  • count(distinct) over(按...范围函数分区)

    我想计算不同的yyyydd超过mm 日期 2 天 但是 distinct 函数不能与 over 一起使用 如果我删除不同的 它会给我总计数yyyydd but yyyydd可以有很多重复的 这就是为什么我想添加不同的 这有点类似于count
  • iOS 的 AudioContext.createMediaStreamSource 替代品?

    我使用 Cordova 和 Web Audio API 开发了一个应用程序 允许用户插入耳机 将手机按在心脏上 然后听到自己的心跳 它通过使用音频过滤器节点来实现这一点 Setup userMedia context new window
  • env 在 Bash 中到底做了什么?

    使用 Bash 在 Cygwin 下 时出现此行为 printf u00d5 u00d5 env printf u00d5 This results in the behavior I want 我在终端中使用 UTF 8 或 ISO 88
  • gcc 的自动矢量化消息是什么意思?

    我有一些代码想要快速运行 所以我希望我可以说服 gcc g 对我的一些内部循环进行矢量化 我的编译器标志包括 O3 msse2 ffast math ftree vectorize ftree vectorizer verbose 5 但是
  • 如何在wpf中通过行和列获取网格子项?

  • 如何解析单个 TFrecord 文件

    读取 tfrecords reader tf TFRecordReader serialized example reader read filename queue features tf parse single example TFR
  • 抛出异常时获取堆栈跟踪

    我现在正在调试一个使用许多不同线程的程序 有时会抛出异常 问题是无法知道哪个线程导致了问题 有没有一种简单的方法可以在抛出异常后获取堆栈跟踪 我想过简单地编写一条调试消息 但这将是一个巨大的 我想有比这个更好的技术 我正在使用 Visual
  • 如何将 BigQuery 脚本上传到 Github?

    需要一些帮助 因为 bigquery 脚本没有保存在本地 并且无法将其上传到 Github 您可以使用支持 GitHub 的 BigQuery 第三方 IDE这是歌利亚 一部分Potens io https potensio zendesk
  • 如何在flask应用程序的同一页面上发布输出结果?

    我有一个 Flask 应用程序 它接受一些文本作为输入 运行 python 脚本并在同一 html 页面上输出输出 但它会转到一个新页面 我不明白为什么它会转到新页面 这是我的 app py 文件 usr bin env python3 f
  • 如何确定 Pandas/NumPy 中的列/变量是否为数字?

    有没有更好的方法来确定变量是否在Pandas and or NumPy is numeric或不 我有一个自定义的dictionary with dtypes作为钥匙和numeric not作为价值观 In pandas 0 20 2你可以
  • Errno 13 运行 virtualenv 时权限被拒绝

    当尝试在 Mac OS X 上使用brew安装的 Python 2 7 创建 virtualenv 时 出现以下错误 Could not install packages due to an EnvironmentError Errno 1
  • 使用 Lucene 和 Java 进行分词、删除停用词

    我正在尝试使用 Lucene 从 txt 文件中标记并删除停用词 我有这个 public String removeStopWords String string throws IOException Set
  • AngularJS:根据条件ng-grid更改单元格的颜色

    这里是plnkr http plnkr co edit rPYJ1tGmnarEjf3io1d6 p preview代码 我想改变颜色age其所有行的单元格alert财产是真实的 我不知道该怎么做 我没有单独的警报列 Here you go
  • ViewPager 上的 onClick 未触发

    我在 a 上设置了一个点击侦听器ViewPager 但 onClick 事件永远不会被调用 我猜触摸事件检测ViewPager很干扰 但我不知道如何解决它 有人可以帮忙吗 Thanks mViewPager setOnClickListen
  • 生成数字序列[重复]

    这个问题在这里已经有答案了 我想在 asp net mvc2 中创建序列号 那么数字应该从 0 to 1000 我尝试如下 var seq Enumerable Range 1 1000 ViewData OrderNo seq In vi
  • 如何设置 Apache mod_rewrite 以重定向除一个子文件夹之外的所有子文件夹

    我刚刚创建了一个新网站 并准备从当前的网络服务器切换到新的网络服务器 当前的网络服务器将更名为 www2 新的网络服务器将被称为 www 我想将所有流量从 www2 重定向到 wwwexcept对于一个目录 我的目录结构如下所示 var w
  • 我们可以只提供@2x 图像吗?

    我们知道我们应该为 iphone ipad 应用程序提供正常尺寸的图像和 2x 尺寸的图像 但为一张图像提供双倍尺寸是一件无聊的事情 我做了一些测试 如果只有 2x图像 如果需要 系统会自动将 2x图像缩小到正常大小 所以在这种情况下 非视
  • Tensorflow - LSTM - “张量”对象不可迭代

    您好 我正在对 lstm rnn 单元使用以下函数 def LSTM RNN X istate weights biases Function returns a tensorflow LSTM RNN artificial neural
  • 以编程方式设置 LinearLayout 的重力

    我已按照说明为 Unity 制作新的 AdMob 插件 广告显示正确 但底部位置有问题 它们显示在屏幕顶部 我已将重力设置为底部 对于 FrameLayout 但横幅广告再次显示在屏幕顶部 我没有任何带有 LinearLayout Fram
  • 具体图和需要更有创意的解决方案

    有向图 V a E b 给出 每个顶点都有特定的权重 我们想要每个顶点 1 a 找到从该顶点可以到达的具有最大权重的顶点 更新 1 Paul 在 O b a log a 中准备了一个很好的答案 但是我 搜索 O a b 算法 如果有 有没有