贝尔曼-福特算法的正确性,我们还能做得更好吗?

2024-02-05

我了解到贝尔曼-福特算法的运行时间为O(|E|*|V|),其中E是边数,V是顶点数。假设该图没有任何负加权循环。

我的第一个问题是,我们如何证明在 (|V|-1) 次迭代(每次迭代检查 E 中的每条边)内,给定特定的起始节点,它更新到每个可能节点的最短路径?有没有可能我们已经迭代了 (|V|-1) 次但仍然没有得到到每个节点的最短路径?

假设算法是正确的,我们实际上可以做得更好吗?我突然想到,在特定的图中,并非所有边都具有负权重。贝尔曼-福特算法看起来很昂贵,因为每次迭代都会遍历每条边。


从源到任何顶点的最长可能路径将最多涉及图中的所有其他顶点。换句话说 - 您不会有一条多次经过同一顶点的路径,因为这必然会增加权重(这只是由于不存在负循环这一事实而成立)。
在每次迭代中,您将更新该路径中下一个顶点的最短路径权重,直到 |V|-1 次迭代之后,您的更新必须到达该路径的末尾。之后,将不会有任何具有非紧值的顶点,因为您的更新已覆盖达到该长度的所有最短路径。

这种复杂性是很严格的(至少对于 BF 而言),想象一下一长串相连的顶点。选择最左边的作为源 - 您的更新过程必须一次从那里到另一边一个顶点。现在你可能会说你不必以这种方式检查每条边,所以让我们加入一些具有非常大权重的随机边(N > |V|*max-weight) - 它们无法帮助你,但是您的算法无法确定这一点,因此必须经历使用这些权重更新顶点的过程(它们仍然比初始无穷大更好)。

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

贝尔曼-福特算法的正确性,我们还能做得更好吗? 的相关文章

  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 测量数组的“无序”程度

    给定一个值数组 我想找到总 分数 其中每个元素的分数是数组中出现在其之前的具有较小值的元素的数量 e g values 4 1 3 2 5 scores 0 0 1 1 4 total score 6 O n 2 算法很简单 但我怀疑可以通
  • 数字求和的算法?

    我正在寻找一种数字求和的算法 让我概述一下基本原则 假设你有一个号码 18268 1 8 2 6 8 25 2 5 7 7 是我们的最终数字 它基本上是将整个数字中的每个数字相加 直到我们得到一个 也称为 核心 数字 它经常被命理学家使用
  • 生成 2D 中的非简并点集 - C++

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

    我正在使用菱形方形算法来生成随机地形 它工作得很好 除了我让这些大圆锥形状要么伸出或伸入地形 问题似乎在于 时不时会有一个点被设置得太高或太低 Here is a picture of the problem And it can be b
  • 在Python中确定句子中2个单词之间的邻近度

    我需要确定 Python 句子中两个单词之间的接近度 例如 在下面的句子中 the foo and the bar is foo bar 我想确定单词之间的距离foo and bar 确定之间出现的单词数foo and bar 请注意 该词
  • 为什么Python中pop()的大O与pop(0)不同[重复]

    这个问题在这里已经有答案了 他们不应该都是O 1 因为从 Python 列表中的任何位置弹出一个元素涉及销毁该列表并在新的内存位置创建一个元素 蟒蛇的list实现使用动态调整大小的 Carray在引擎盖下 删除元素usually要求您移动后
  • 如何在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
  • 比较两棵树的伪代码

    这是我遇到过几次的问题 并且不确信我使用了最有效的逻辑 例如 假设我有两棵树 一棵是文件夹结构 另一棵是该文件夹结构的内存 模型 我希望比较两棵树 并生成一棵树中存在的节点列表 而不是另一棵树中存在的节点列表 反之亦然 是否有公认的算法来处
  • 加权图的 BFS 算法 - 寻找最短距离

    我看过很多帖子 即 post1 https stackoverflow com questions 30409493 using bfs for weighted graphs post2 https cs stackexchange co
  • 算法 - 树中所有节点的最大距离

    所以 找到树中两个节点之间的最长路径相当容易 但我想要的是找到从节点出发的最长路径x到树中的另一个节点 对于所有x 这个问题也可以用以下方式表达 计算从给定的树中可以生成的所有有根树的高度 One way of course is to j
  • 计算总和等于 k ​​的子集数量

    给定一个数组 我们需要找出总和恰好等于给定整数 k 的子集的数量 请针对这个问题提出一个最佳算法 这里不需要实际的子集 只需计数即可 该数组由整数组成 可以是负数也可以是非负数 例子 数组 gt 1 4 1 10 5 绝对值总和 gt 9
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s
  • 递归:n项级数之和

    需要递归函数 系列是 1 2 3 3 4 5 4 5 6 7 递归求 n 的级数之和 我无法想到应该在函数中传递哪些参数 我的方法 我认为我应该传递 n 要相乘的项数 但我无法想到的是我应该如何在同一个函数中 和 以及我的 return 语
  • RNG 技术的可移植性和可重复性

    我可以使用两种方法之一来创建一个伪随机数序列 该序列具有两个重要特征 1 它可以在不同的机器上重现 2 该序列永远不会重复范围内的数字 直到所有数字都被发出 我的问题是 这两种方法在可移植性 操作系统 Python 版本等 方面是否存在潜在
  • 插入排序 - 如何接受输入并打印排序后的数组

    我试图做一个插入排序程序 它接受任何数据类型 Int Double String 然后打印排序后的数组 我知道我的代码可以工作 但我无法找出真正的问题 import java util public class MyInsertionSor
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • 在 O(n) 时间内对列表中的数字方块进行排序?

    给定一个按排序顺序排列的整数列表 例如 9 2 0 2 3 我们必须对每个元素进行平方并按排序顺序返回结果 所以 输出将是 0 4 4 9 81 我可以找出两种方法 O NlogN 方法 我们将每个元素的平方插入哈希集中 然后将元素复制到列
  • 沿着长数据序列在固定大小的移动窗口中查找中值

    给定一个数据序列 可能有重复项 一个固定大小的移动 窗口 从数据开始处每次迭代时移动窗口 序列 使得 1 从窗口中删除最旧的数据元素并添加新数据 元素被推入窗口 2 求每次移动时窗口内数据的中位数 以下帖子没有帮助 有效地找到随机序列的中值
  • 竞争性编码 - 以最低成本清除所有级别:未通过所有测试用例

    当我遇到这个问题时 我正在一个竞争性编码网站上解决问题 问题指出 游戏中有 N 个关卡和 M 种可用武器 等级编号从 0 到 N 1 武器编号从 0 到 M 1 您可以按任意顺序清除这些级别 在每个关卡中 需要这些 M 武器的某些子集才能通

随机推荐

  • 如何绕过Python中的Mechanize“AmbiguityError”

    我正在尝试通过填写 Web 表单并请求 POST 将图像上传到 ImageBam 我对 urllib2 httplib 多部分的东西不太了解 我正在尝试使用 MECHANIZE 模块 但我认为它不应该太复杂 因为它只是一个网络表单 我会填写
  • C2440 无法在 C++ WinApi 中将 LRESULT 转换为 WNDPROC

    我正在尝试使用 WinApi 编写这个 win32 程序 但我陷入了困境 因为我正在遵循的教程似乎有问题 主窗口 h class MainWindow public MainWindow HINSTANCE MainWindow void
  • 屏蔽掉c中不需要的位

    给定小数71744474在二进制中它是0100010001101011101111011010我试图从这个十进制中提取的是从低位开始的每七位 这七个位中的每一个都代表一个可打印的 ASCII 字符 该字符只能有 7 位 我总共拉出了四个角色
  • 如何为 PHPUnit 测试创建内存数据库?

    我是 PHPUnit 以及一般单元测试 的新手 我想要开发一个测试套件 开发人员可以在本地运行 但也可以在我们的集成系统 Codeship 中运行 我知道可以使用内存数据库 但似乎依赖于我们没有使用的迁移 似乎不能很好地处理视图 存储过程
  • 使用 Mono Touch 在循环中使用 CGImage.ScreenImage 时出现内存问题

    我正在尝试创建一个应用程序来使用 Monotouch 和 Zxing 的 C 端口读取 QR 码 但遇到了内存问题 当应用程序处理捕获的屏幕帧时 应用程序会收到内存警告 然后关闭 我删除了对 Zxing 的调用 以追踪内存问题的根源 并且只
  • 如何去除视频的绿色背景,使其透明?

    我有一个video https youtu be XfHJ57XIb4具有绿色背景 我想删除这个绿色部分 色度键 https wikipedia org wiki Chroma key 使其透明 然后将视频显示在网站背景上 我只能找到使用图
  • 文本颜色在 Material-UI 主题中不起作用

    使用 Material UI 创建颜色主题时 我将对比度文本设置为白色 fff 它适用于具有原色的按钮 但不适用于次要颜色 尝试了如下所述的覆盖 Material UI 无法更改主题中的按钮文本颜色 https stackoverflow
  • TOOLCHAIN_HOST_TASK 与 TOOLCHAIN_TARGET_TASK

    我很抱歉问了一个天真的问题 我无法理解这些 Yocto 变量之间的区别 手册说 TOOLCHAIN HOST TASK 列出构成主机部分的包 SDK 即在SDKMACHINE上运行的部分 当你使用bitbake时 c populate sd
  • 一个循环遍历多个 Lua 表

    是否可以使用同一个循环遍历多个 Lua 表 为了循环索引表 我可以这样做 local t1 a b c local t2 d e f local num t1 t2 for i 1 num do local j local val if i
  • 使用 jQuery 将 HTML 插入 iFrame Body 标记

    我正在使用托管 CMS 它在另一个 iFrame 中呈现一个 iFrame 这些 iFrame 是从同一域加载的 但由于这是托管 CMS 我无法直接访问这些 iFrame 是否可以使用 jQuery 将 HTML 内容插入到bodyiFra
  • 跳到一行并阅读它

    我必须处理大文件 许多 GB 并且需要快速查找以根据请求检索特定行 这个想法是维护一个映射 some key gt byte location 其中字节位置表示该行在文件中的起始位置 编辑 问题稍微改变了 首先我使用 FileInputSt
  • 在Delphi中加密/解密文本文件?

    您好 我想知道文本文件加密和解密的最佳加密技术 我的场景 我的软件有两种类型的用户 管理员和操作员 我们的要求是当管理员使用GUI输入数据并保存时加密文本文件 该加密文件将作为操作员的输入 他们只需选择它并使用该文件 当操作员选择这些文件时
  • 登录时自动运行 Bash 脚本

    我编写了一个脚本 它将登录者的日期和用户名发送到日志文件中 以记录登录者的记录 我想知道如何设置此脚本在用户登录时自动执行 而不是在用户登录时自动执行在终端中手动运行它 注意 用户名是当前登录的用户 my code bin bash pri
  • Xcode 可以在代码中使用“文件夹引用”吗?

    和许多人一样 我希望 Xcode 使用反映磁盘上文件夹结构的文件夹结构 但是 我无法将 文件夹引用 青色文件夹 中的代码显示在 编译源 下的项目目标中 有什么办法可以做到这一点吗 我什至设法将青色文件夹添加到 编译源 构建阶段 但这不会导致
  • 如何用 C++ 创建 OpenOffice 文档 [重复]

    这个问题在这里已经有答案了 可能的重复 从 C 创建 打开和打印 Word 文件 https stackoverflow com questions 145573 creating opening and printing a word f
  • 捕获 pygraphviz 图像渲染而不保存到文件?

    pygraphviz 是否允许您将图像渲染到变量 我想通过网页提供动态图像 而无需将图形渲染到磁盘 根据到源代码 https github com pygraphviz pygraphviz blob 1f7f314530080c152a4
  • 从Python中的国家/地区代码获取电话号码的国际前缀

    是否可以使用python 电话号码 https github com daviddrysdale python phonenumbers或另一个 python 库 用于从两个字母的国家 地区代码中获取国家 地区调用代码 ISO 3166 1
  • Windows 本地应用程序引擎用法:oauth2client ImportError

    我正在使用 App Engine Standard 开发 Python 后端服务 在某个时候 我告诉自己 嘿 为什么不尝试在使用远程数据存储时在本地运行服务器 我可以在本地运行此代码 但我无法弄清楚为什么 remote api stub 会
  • jquery密集文本阴影和模糊背景颜色

    我正在寻找一种方法 演示来制作额外密集的厚文本阴影jquery 像 jquery 一样跨浏览器兼容 这可能简单的CSS不可能实现 具有 IE 支持 不过 多个阴影遮盖了它一点 但问题是我认为旧的浏览器兼容性问题 jQuery 涵盖了它 这就
  • 贝尔曼-福特算法的正确性,我们还能做得更好吗?

    我了解到贝尔曼 福特算法的运行时间为O E V 其中E是边数 V是顶点数 假设该图没有任何负加权循环 我的第一个问题是 我们如何证明在 V 1 次迭代 每次迭代检查 E 中的每条边 内 给定特定的起始节点 它更新到每个可能节点的最短路径 有