我的最近对问题的分而治之算法的逻辑有什么问题?

2024-02-22

我一直在关注 Coursera 的算法课程,并提出了关于最近对问题的分治算法的想法,我想澄清这一点。

根据 Roughgarden 教授的算法(你可以看到here https://class.coursera.org/algo-2012-002/lecture/download.mp4?lecture_id=18如果你有兴趣): 对于给定的一组点 P,我们有两个副本 - 按 X 和 Y 方向排序 - Px 和 Py,算法可以给出为

最接近的对(Px,Py):

  1. 将点分为左半部分 - Q 和右半部分 - R,并沿 x 和 y 方向形成两半的排序副本 - Qx,Qy,Rx,Ry
  2. 令closestPair(Qx,Qy)为点p1和q1
  3. 令closestPair(Rx,Ry)为p2,q2
  4. 令 delta 为 dist(p1,q1) 和 dist(p2,q2) 中的最小值
  5. 这是不幸的情况,令 p3,q3 为最接近的SplitPair(Px,Py,delta)
  6. 返回最好的结果

现在,我想要的澄清与步骤 5 相关。 我应该事先说一下,我的建议几乎没有任何改进,但如果您仍然感兴趣,请继续阅读。

R 教授表示,由于点已经在 X 和 Y 方向上排序,为了在步骤 5 中找到最佳对,我们需要迭代宽度为 2*delta 的条带中的点,从下到上,并在内部循环我们只需要 7 次比较。这可以比只有一个更好吗?

我认为如何可能似乎很难用纯文本解释,所以我画了一个图表并将其写在纸上并上传到这里:

既然没有人想出这一点,我很确定我的思路有一些错误。 但我实际上已经思考这个问题几个小时了,我只是不得不发布这个。这就是我脑子里的一切。

有人可以指出我哪里出错了吗?


你在第 5 点中的结论是不正确的。尝试将点 A 画得更靠近分界线。

A 的 delta 内可以有两个点(一个在上面,一个在下面),但彼此不在 delta 之内。

  | B
  | 
 A|
  | 
  | C

Here, dist(A,B) = dist(A,C) < dist(B,C).

这是为什么图片有助于获得直觉的完美例子,但仍然需要证据来支持你的结论。

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

我的最近对问题的分而治之算法的逻辑有什么问题? 的相关文章

  • 贪心技术与穷举搜索有何不同?

    我正在为一些示例问题编写伪代码 并且我注意到贪婪技术和详尽搜索之间存在令人担忧的模式 Job 1 Job 2 Job 3 Job 4 Job 5 Person 1 9 2 7 8 Person 2 6 4 3 7 Person 3 5 8
  • 压缩很多小字符串的算法?

    我正在寻找一种压缩小 ASCII 字符串的算法 它们包含大量字母 但也可以包含数字和很少的特殊字符 它们很小 平均约为 50 100 字节 最多 250 个字节 例子 Android show EditText setError above
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 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
  • 融合元组以查找等价类

    假设我们有一个包含 k 个元素的有限域 D d1 dk 我们认为 S 是 D n 的子集 即一组 形式的元组 其中 ai 在 D 中 我们希望使用 S 2 D n 的子集 即一组 形式的元组 其中 Ai 是 D 的子集 来 紧凑地 表示它
  • 测量数组的“无序”程度

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

    我正在尝试为机器人设计一种算法 试图找到位于未知位置的旗帜 该旗帜位于一个包含障碍物的世界中 机器人的任务是夺取旗帜并将其带到他的基地 代表他的起始位置 机器人在每一步只能看到有限的邻域 他事先不知道世界是什么样子 但他有无限的内存来存储已
  • 在Python中确定句子中2个单词之间的邻近度

    我需要确定 Python 句子中两个单词之间的接近度 例如 在下面的句子中 the foo and the bar is foo bar 我想确定单词之间的距离foo and bar 确定之间出现的单词数foo and bar 请注意 该词
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要
  • 求一根棒可以切割的最大片数

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

    Given n排列成圆圈的整数显示了一种可以找到一个峰值的有效算法 峰值是不小于它旁边的两个数字的数字 一种方法是遍历所有整数并检查每个整数以查看它是否是峰值 这产生O n 时间 似乎应该有某种方法来分而治之 以提高效率 EDIT 好吧 基
  • 如何计算一组字符串的最短唯一前缀?

    这是一个非常常见的算法命令行解析 给定一组预定义的长选项名称 计算唯一标识这些选项之一的最短前缀 例如 对于以下选项 help hostname portnumber name polymorphic 这将是输出 he ho por n p
  • 加权图的 BFS 算法 - 寻找最短距离

    我看过很多帖子 即 post1 https stackoverflow com questions 30409493 using bfs for weighted graphs post2 https cs stackexchange co
  • 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
  • 插入排序 - 如何接受输入并打印排序后的数组

    我试图做一个插入排序程序 它接受任何数据类型 Int Double String 然后打印排序后的数组 我知道我的代码可以工作 但我无法找出真正的问题 import java util public class MyInsertionSor
  • 如何以最小化每个分区总和的最大值的方式对整数数组进行分区?

    输入是正整数或空整数的数组 A 和另一个整数 K 我们应该将 A 划分为 K 个连续元素块 我所说的 划分 是指 A 的每个元素都属于某个块 并且 2 个不同的块不包含任何共同元素 我们将块的总和定义为该块的元素的总和 目标是在 K 个块中
  • 创建将 n 个用户放入 k 个组的所有可能方法

    给定 n 个用户 u 1 u 2 u n 和 k 个组 g 1 g 2 g k 创建所有组的所有可能组合 基本上 最后每个组合都是一个Map 其中第一个Integer是用户ID 第二个Integer是组ID 例如 u 1 g 1 u 2 g
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • 哪种算法可以有效地找到路径一定距离内的一组点?

    给定一组点s 一组 x y 坐标 和由连接一组点的线段组成的路径l 描述一种有效的算法 可用于从s在指定距离内d路径的l 其实际应用可能是查找沿城市之间的公路旅行路径 10 英里内任意位置的餐馆列表 For example in the f
  • 二分查找问题? [复制]

    这个问题在这里已经有答案了 可能的重复 实施二分查找有哪些陷阱 https stackoverflow com questions 504335 what are the pitfalls in implementing binary se

随机推荐

  • 如何在Linux中设置CLASSPATH让java找到jar文件?

    在Linux下我尝试运行一个jar文件 如下所示 java jar plantuml jar testdot 当有CLASSPATH设置为以下任意一项 文件位于 home user plantuml jar export CLASSPATH
  • LabelPropagation - 如何避免被零除?

    使用时标签传播 http scikit learn org stable modules generated sklearn semi supervised LabelPropagation html 我经常遇到这个警告 恕我直言 这应该是
  • 在 flutter 中使用 new 关键字[重复]

    这个问题在这里已经有答案了 最近开始关注flutter优达学城课程 https classroom udacity com courses ud905在尝试创建基本应用程序时 我遇到了一些我不清楚的事情 添加小部件时 我注意到同时执行这两项
  • Jquery:将ajax调用的值返回给调用者函数?

    我试图从函数返回 ajax 调用返回的值 但它只返回 未定义 如果 ajax 调用发出警报 响应 它将返回正确的值 这是代码 我做错了什么 insertCandidate live click function e var ids this
  • 复杂的SQL查询建议请

    我有三个表 其架构如下 Table Apps ID bigint USERID Bigint START TIME datetime 1 13 2013 05 03 04 42 55 2 13 2013 05 12 06 22 45 3 1
  • 在python中检测并删除锁定的文件

    我想在 Unix 上使用 python 检测文件是否被锁定 删除该文件是可以的 假设它有助于检测该文件是否被锁定 该文件最初可能是由另一个进程独占打开的 文档似乎表明 如果文件被锁定 os unlink 不一定会返回错误 Ideas 检查文
  • 调用栈和反汇编疑问

    三大疑点 1 假设我得到如下调用堆栈 user32 dll InternalCallWinProc 20 0x28 bytes user32 dll UserCallWinProcCheckWow 32 0xb7 bytes user32
  • C++11 异步仅使用一个核心

    我正在尝试在 C 中并行化一个长时间运行的函数 并使用 std async 它只使用一个核心 并不是函数的运行时间太短 因为我目前使用的测试数据大约需要 10 分钟才能运行 根据我的逻辑 我创建了 NThreads 的 Futures 每个
  • 在个人网站上使用 Google Chrome 的 OmniBox [TAB] 功能?

    我认为标题解释了一切 但无论如何我都会更深入地探讨我的问题 如何在我的网站上使用 Chrome 的多功能框 TAB 功能 由于许多用户要求我在网站上实现该功能 我对 OpenSearchDescription 进行了研究 并且在 FireF
  • Scope_Identity()、Identity()、@@Identity 和 Ident_Current() 之间有什么区别?

    I know Scope Identity Identity Identity and Ident Current 所有人都获得身份列的值 但我很想知道其中的区别 我遇到的部分争议是 应用于上述这些函数的范围是什么意思 我还想要一个使用它们
  • 使用 AngularJs 处理 Play scala 发送的分块数据

    I send chunked data with Play Scala 2 2像这样的客户端 Ok chunked data 我想在客户端可用后立即使用它们 如果我只是获取数据并将其打印出来 success 它们同时打印 即收到最后一个数据
  • python:tkinter树视图颜色没有更新

    这是我的第一篇文章 如果格式有误 请原谅 如果需要 我很乐意更改 我正在使用 Tkinter 创建一个用于科学数据分析的界面 对于分子列表 可以在单独的图中表示四个分子 另一方面 我使用树视图显示有关所有分子的一些数字 不仅仅是显示的 当树
  • 在 Cartopy、Robinson 投影中绘制直线

    我正在玩 cartopy 试图了解它是如何工作的 我尝试的第一件事与中的示例非常相似the docs https scitools org uk cartopy docs v0 16 matplotlib intro html在 将数据添加
  • 如何防止点击子表单导致主表单更新

    我的预订系统中有一个表单 其中包含一个子表单 该子表单是 Access 2010 不再具有的旧 ActiveX 日历控件的复制品 一个特殊用途是创建新预订 这意味着该表单 位于 新记录上 但是 在我确定所有数据都经过正确验证之前 我不希望写
  • 发送带有附件的电子邮件

    我有一个邮件程序如下 class Payments LateNoticesMailer lt AsyncMailer def notice payment id payment PaymentDecorator find payment i
  • 按返回不会返回到上一个片段

    我在将片段事务添加到返回堆栈时遇到问题 我有一个主要活动 其中我使用菜单片段填充布局 public class MainActivity extends ActionBarActivity Override protected void o
  • 单个表的多个外键和指向多个表的单个键

    我需要数据库设计专家的一些建议 我在一个表中有大约六个外键 缺陷 它们都指向用户表中的主键 它像是 defect assigned to created by updated by closed by 如果我想获取有关缺陷的信息 我可以进行
  • Java中pom.xml文件有什么用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 POM 文件的主要特征是什么 为什么实际使用它 无论我们在其中提供什么 依赖项如何映射到 Java 虚拟机并在应用程序上变得灵活 项目对象
  • 如何在 MATLAB/Octave 中获得真正的整数溢出?

    我正在为 MATLAB Octave 中的一些 VHDL 代码开发验证工具 因此 我需要生成 真实 溢出的数据类型 intmax int32 1 ans 2147483648 稍后 如果我可以定义变量的位宽度 将会很有帮助 但现在这并不那么
  • 我的最近对问题的分而治之算法的逻辑有什么问题?

    我一直在关注 Coursera 的算法课程 并提出了关于最近对问题的分治算法的想法 我想澄清这一点 根据 Roughgarden 教授的算法 你可以看到here https class coursera org algo 2012 002