谁能告诉我为什么我的算法是错误的?

2024-01-28

我正在研究单源最短路径问题,我对 bfs 进行了修改,可以解决该问题。该算法运行时间为 O(2E) 次,我只是不明白为什么它是错误的(一定是这样,否则 dijstra 不会是最有效的算法)。

def bfs_modified(G,src,des):
    intialize d(src)=0, and d(!src) = inf
    visited[all_vertex]=False
    q=queue(src)

    while q is not empty: 
        u=q.pop()
        if(not visited[u]):
            visited[u]=True
            for all v connected to u:
                  q.insert(v)
                  if(d[v]>d[u]+adj[u][v]):
                      d[v]=d[u]+adj[u][v]
    return d[des]

在 Dijkstra 算法中,优先级队列确保您在知道顶点与源的距离之前不会处理该顶点。

BFS没有这个属性。如果到顶点的最短路径的边数多于边数最少的路径,那么它将被过早处理。

例如,当您想要从S to T:

S--5--C--1--T
|     |
1     1
|     |
A--1--B

Vertex C将在顶点之前被访问B。你会认为距离C是 5,因为你还没有发现更短的路径。什么时候C被访问时,它会分配距离 6 给T。这是不正确的,并且永远不会被修复,因为C不会再被访问。

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

谁能告诉我为什么我的算法是错误的? 的相关文章

  • 生成 2D 中的非简并点集 - C++

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

    我需要确定 Python 句子中两个单词之间的接近度 例如 在下面的句子中 the foo and the bar is foo bar 我想确定单词之间的距离foo and bar 确定之间出现的单词数foo and bar 请注意 该词
  • 求一根棒可以切割的最大片数

    这是完整的问题陈述 给定一根长度为n的绳子 你需要找到最大的绳子数你可以让每一段的长度都在集合 a b c 中给定三个值a b c 我知道可以通过动态规划来实现最优解 但是 我还没有学过这个主题 我需要递归地解决这个问题 对于递归 主要的事
  • 整数除法性质

    下面的整数算术性质成立吗 m n l m n l 起初我以为我知道答案 不成立 但现在不确定 它适用于所有数字还是仅适用于某些条件 即n gt l 该问题涉及计算机算术 即q n m q m n 忽略溢出 Case1 assume m kn
  • 查找重叠事件/时间的算法

    在处理自定义日历时 我不知道如何找到与任何其他时间段重叠的时间段 时段从 0 点至 720 点 上午 9 点至晚上 9 点 每个像素代表一分钟 var events id 1 start 0 end 40 an event from 9 0
  • 最低共同祖先算法

    所以我一直在研究实现最低共同祖先算法 我研究了许多不同的算法 主要是 Trajan 解决方案的变体或 RMQ 的变体 我正在使用非二叉树 我的树经常会在查询之间发生变化 因此预处理不一定值得 树的节点数不应超过 50 75 个 我想知道的是
  • 如何使用networkx删除有向图中的所有相关节点?

    我不确定我的问题的正确术语是什么 所以我只会解释我想做的事情 我有一个有向图 删除节点后我希望所有独立相关的节点也被删除 这是一个例子 假设我删除节点 11 我希望节点 2 也被删除 在我自己的示例中 它们将是 2 以下的节点 现在也必须删
  • 如何确定字符串的最小公约数?

    我在面试时被问到以下问题 并被它难住了 我遇到的部分问题是要下定决心要解决什么问题 起初我并不认为这个问题在内部是一致的 但后来我意识到它要求你解决两个不同的问题 第一个任务是弄清楚一个字符串是否包含另一个字符串的倍数 但第二个任务是在两个
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • 如何计算一组字符串的最短唯一前缀?

    这是一个非常常见的算法命令行解析 给定一组预定义的长选项名称 计算唯一标识这些选项之一的最短前缀 例如 对于以下选项 help hostname portnumber name polymorphic 这将是输出 he ho por n p
  • n的渐近增长选择下限(n/2)

    如何找到 n select Floor n 2 的渐近增长 我试过 使用扩展并得到它等于 n n 1 floor n 2 1 n floor n 2 知道我该如何从那里去吗 感谢任何帮助 更喜欢提示而不是答案 我同意上面的答案 但想提供更多
  • 大小为 n 的数组,其中一个元素 n/2 次

    给定一个由 n 个整数组成的数组 其中一个元素出现超过 n 2 次 我们需要在线性时间和恒定的额外空间中找到该元素 YAAQ 又一个数组问题 我有一种偷偷的怀疑 这类似于 在 C 中 We don t need an array publi
  • 寻找 5 字节 PRNG 的种子

    这是一个古老的想法 但从那时起我就无法找到一些相当好的方法来解决它提出的问题 所以我 发明 了 见下文 一个非常紧凑的 在我看来 性能相当好的 PRNG 但我无法找出算法来为其在大位深度上构建合适的种子值 我当前的解决方案只是暴力破解 它的
  • javascript - 找到在一定限制下给出最大总和的子集(子集总和)

    我有一个包含一些整数值的数组 我需要获取它们的子集 该子集给出小于给定值的最大总和 假设我有这个数组 40 138 29 450 我想获得该数组的一个子集 使总和最大化 但低于用户给出的限制 比如说 250 在这种情况下 它应该返回 139
  • 线性问题和非线性问题之间的区别?点积和核技巧的本质

    核技巧将非线性问题映射为线性问题 我的问题是 1 线性问题和非线性问题的主要区别是什么 这两类问题的差异背后的直觉是什么 核技巧如何帮助在非线性问题上使用线性分类器 2 为什么点积在这两种情况下如此重要 Thanks 当人们说到分类问题的线
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 期望最大化算法的数值示例[重复]

    这个问题在这里已经有答案了 由于我不确定给出的公式 有人可以提供 EM 算法的简单数字示例吗 一个非常简单的具有 4 或 5 个笛卡尔坐标的坐标就可以了 那这个呢 http en wikibooks org wiki Data Mining
  • 将所有奇数位置的元素移动到左半部分,将偶数位置的元素移动到右半部分

    给定一个包含正整数和负整数的数组 将所有奇数索引元素移动到左侧 将偶数索引元素移动到右侧 问题的难点是在维持秩序的同时就地做 e g 7 5 6 3 8 4 2 1 输出应该是 5 3 4 1 7 6 8 2 如果顺序不重要 我们可以使用快
  • 查找重叠间隔序列中最大和的算法

    我试图解决的问题在数轴上有一个间隔列表 每个间隔都有一个预定义的分数 我需要返回最大可能的总分 问题是间隔重叠 并且重叠间隔中我只能使用一个 这是一个例子 Intervals Score 0 5 15 4 9 18 10 15 12 8 2

随机推荐

  • Windows Phone 锁屏下连接插座

    我尝试编写使用套接字连接到服务器的应用程序 一切正常 但是当应用程序在锁屏下运行时 套接字无法连接 它正在等待锁屏被删除 设备连接到 PC 因此 WiFi 不应影响 自动关闭 以节省电池电量 如何重现 代码如下 1 启动应用程序并等待 30
  • 是否可以创建一些 IGrouping 对象

    I have List
  • 无法导入“D”:FLASK_APP

    from flask import Flask app Flask name app route def hello world return Hello World 我是烧瓶新手 我编写了这个基本代码并将其保存在 D Cat vs Dog
  • 原始类型、无界通配符和有界通配符

    我有一个简单的问题如下 这是关于整个问题的简单示例 List a new ArrayList List
  • 通过连续的字符串替换来提高循环的性能?

    我有 html 文本 我想更改 ouml 事物到真正的字符 如 等 否则 xml 包不接受它 所以我写了一个小函数来循环替换表 link1 http www w3schools com tags ref entities asp link2
  • 了解控制台应用程序中的 .net Core 依赖注入

    控制台应用程序不像网络应用程序那样将启动文件与配置服务一起使用 我正在努力理解依赖注入的关键概念 请注意以下示例无法编译 这是我认为它应该如何工作的基本示例 请指出任何非常规或错误的内容 static void Main string ar
  • SQL 将列转换为逗号分隔的行

    如果名称相同 我尝试将用户名字段组合成逗号分隔的字符串 电流输出 由于 Name Admin 有 4 个用户链接到它 我试图显示为 电子邮件受保护 cdn cgi l email protection 电子邮件受保护 cdn cgi l e
  • 如何从地址调用不同的合约?

    在 Solidity 以太坊 中 人们需要合约地址来调用该合约 contract KittyInterface function getKitty uint256 id external view returns bool isGestat
  • 从 8 位转换为 1 字节

    我有一个 8 位的字符串 我想将其转换为 1 个字节 我不确定为什么我的功能无法正常工作 我将 8 位存储到 8 个无符号字符的数组中 到目前为止 这是我的方法 unsigned int bitsToBytes unsigned char
  • 设置默认区域 - 避免在网站上的每个链接上使用 `, new {area = ""}`

    此代码位于母版页内 li a href gt Main site link a li li a href gt Area link a li 所有链接都运行良好 直到我转到区域链接 当我去那里时 主要区域的所有路线都不起作用 为了解决这个问
  • 无法在 nunit 测试中打开 sqlconnection

    我有一个奇怪的问题 我无法弄清楚 我试图围绕一些数据库代码编写一些集成测试 但我的单元测试因奇怪的异常而失败 在控制台应用程序下正常运行代码效果很好 public static class DatabaseManager public st
  • 在 MATLAB 中在轴外添加图例而不重新缩放

    我在 MATLAB 中有一个 GUI 其中预先放置了一组轴 我使用图例的位置属性将其放置在轴的右侧 但是 通过这样做 轴会重新缩放 以便轴 图例占据轴的原始宽度 有什么办法可以避免重新调整大小吗 Example x 0 1 10 y sin
  • 哈希迭代不返回子目录内容

    我有一个方法可以查找给定父目录的子目录 我将父目录存储在哈希中 然后将哈希作为参数传递 我试图将子目录的内容收集到一个数组中 然后将其输出到报告中 我遇到了一个问题 数组的内容仅将目录存储在哈希的最后一个值中 我很快意识到内容在循环的每次迭
  • NUnit 无法构建测试 - 未发现测试

    我正在研究selenium网络驱动程序项目 我能够在中构建测试Test Explorer并执行 重建解决方案时 我立即收到以下错误 Unit Adapter 3 2 0 0 Test discovery starting NUnit VS
  • 缩小 Octave / gnuplot

    我在 Windows 下使用 Octave 和 gnuplot 我可以使用鼠标右键进行放大 但如何缩小用户界面呢 I found 纳布尔上的这篇文章 http old nabble com zoom td16353082 html 紧迫p带
  • 向 UITableViewCell 添加边距

    I am trying to achieve a view I mocked out on sketch I ve replicated it on Android cause I m really good on that platfor
  • Delphi - Graphics32,绘制抗锯齿圆角矩形

    如何使用 Graphics32 绘制抗锯齿圆角矩形 我设法在 bitmap32 画布上使用 TPolygon 制作了一个普通矩形 但我找不到任何绘制圆角的参考 希望有一些代码 function GetRoundedFixedRectangl
  • 致命:提交时无法解析 HEAD 错误

    每当我尝试提交工作时 都会收到此错误 fatal could not parse HEAD 如果我想保留我的更改 该怎么办 你知道什么分行吗HEAD应该指向 是吗master Run git symbolic ref HEAD refs h
  • Concourse:通过 HTTP 请求触发作业

    我正在尝试使用 Git 服务器上的 Web 挂钩触发 Concourse 作业 按照此Github 上的问题 https github com concourse concourse issues 331我找到了一个端点定义 https g
  • 谁能告诉我为什么我的算法是错误的?

    我正在研究单源最短路径问题 我对 bfs 进行了修改 可以解决该问题 该算法运行时间为 O 2E 次 我只是不明白为什么它是错误的 一定是这样 否则 dijstra 不会是最有效的算法 def bfs modified G src des