最接近的 3 点组

2024-01-10

是否有一种已知的、有效的算法来查找最接近的组three云中的点?

这类似于最近点对问题 http://en.wikipedia.org/wiki/Closest_pair_of_points_problem但我正在寻找三点而不是两点。


Edit
“最接近”的定义会影响算法的复杂度。作为Jack https://stackoverflow.com/questions/7539623/closest-group-of-3-points/7540179#7540179指出,找到最小值area三角形是 3sum-hard 的,无论如何都不太适合我的应用程序。

我希望有一个更有效的算法来找到最小值周长(即|AB|+|AC|+|BC|)三角形或类似的东西(例如最小|AB|²+|AC|²+|BC|²。)我不知道为什么这应该是3sum-hard,因为其他地方存在 3 个共线点不会影响结果。


注意:我的点有八个维度,因此任何仅限于更少维度的算法都不适合。


这个问题类似于在一组点中寻找最接近的点对的经典问题。你可以适应最坏的情况O(n log n)解决最近对问题的算法来解决这个问题。

这个具体问题在 Google 的 Code Jam 竞赛中得到了重点关注。 以下是分析的简历:

点数可能非常大,因此我们需要一种有效的算法。我们可以解决这个问题O(n log n)时间使用分而治之。我们将通过一条垂直线将点集分成大小相等的两组。现在最小周长三角形有三种情况:它的三个点可以完全在左集中,完全在右集中,或者可以使用每一半的点。

Further:

“求第三种情况的最小周长(如果小于 p)”:

  1. 我们选择距垂直分隔线 p/2 距离内的点。
  2. 然后我们从上到下迭代这些点,并维护一个大小为 p x p/2 的框中所有点的列表,框的底部边缘位于最近考虑的点。
  3. 当我们将每个点添加到框中时,我们使用该点和框中的每对点来计算所有三角形的周长。 (我们可以完全排除分界线左侧或右侧的三角形,因为这些已经被考虑在内。)

我们可以证明盒子里的点的数量最多是16个,所以我们只需要考虑每个点最多有一个小的常数个三角形。

在我看来,您甚至可以调整该方法以在 |AB|²+|AC|²+|BC|² 情况下工作。

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

最接近的 3 点组 的相关文章

  • 数字求和的算法?

    我正在寻找一种数字求和的算法 让我概述一下基本原则 假设你有一个号码 18268 1 8 2 6 8 25 2 5 7 7 是我们的最终数字 它基本上是将整个数字中的每个数字相加 直到我们得到一个 也称为 核心 数字 它经常被命理学家使用
  • 计算移动的球与移动的线/多边形碰撞的时间(2D)

    我有一个多边形 里面有一个移动的球 如果球撞到边界 它应该反弹回来 My current solution I split the polygon in lines and calculate when the ball hits the
  • 查找重叠事件/时间的算法

    在处理自定义日历时 我不知道如何找到与任何其他时间段重叠的时间段 时段从 0 点至 720 点 上午 9 点至晚上 9 点 每个像素代表一分钟 var events id 1 start 0 end 40 an event from 9 0
  • 为什么我们需要检测链表中的循环

    我看到很多关于如何检测链表中的循环的问答 但我想了解的是我们为什么要这样做 换句话说 检测链表中的循环的实际用例是什么 在现实生活中 您可能永远不需要检测链表中的循环 但是执行此操作的算法很重要 我在现实生活中多次使用它们 例如 我经常会递
  • O(n^2) 与 O (n(logn)^2)

    时间复杂度是O n 2 or O n logn 2 better 我知道当我们简化它时 它就变成了 O n vs O logn 2 and logn lt n 但是关于logn 2 n is only less than log n 2 f
  • 在哪里可以找到有关双三次插值和 Lanczos 重采样的好读物?

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

    我正在努力加快我的网站速度 谷歌洞察 https developers google com speed pagespeed insights https developers google com speed pagespeed insi
  • 使用 stl sort 对表进行排序

    我有一个巨大的表 约 50Gb 格式为 i j k 来自稀疏矩阵 存储为 uint32 t idx1 idx2 float vals uint32 t tablesize 我想使用给定的比较函数 即 idx1 和 idx2 的函数 对其进行
  • 如何计算一组字符串的最短唯一前缀?

    这是一个非常常见的算法命令行解析 给定一组预定义的长选项名称 计算唯一标识这些选项之一的最短前缀 例如 对于以下选项 help hostname portnumber name polymorphic 这将是输出 he ho por n p
  • 查找两个大小为 n 的数组中第 n 大数的算法

    我有这个问题 给定两个大小为 n 的排序列表 存储在数组中 找到 O log n 计算并集中第 n 大元素的算法 两个列表 我可以看到这里可能有一个技巧 因为它需要第 n 个最大的元素 并且数组的大小也是 n 但我不知道它是什么 我在想我可
  • 如何在大空间尺度上加速A*算法?

    From http ccl northwestern edu netlogo models community Astardemo http ccl northwestern edu netlogo models community Ast
  • 广度优先搜索:检查访问状态的时机

    在有向图的广度优先搜索中 可能循环 当一个节点出队时 其所有尚未访问的子节点都会入队 并且该过程将继续 直到队列为空 有一次 我以相反的方式实现它 将节点的所有子节点排队 并在节点出队时检查访问状态 如果正在出队的节点之前已被访问过 则该节
  • Python 将字符串组合成尽可能短的字符串?

    如果我有一个字符串列表 我想将它们组合成一个具有重叠字符的字符串 如果没有剩余的重叠字符串 请将其添加到末尾 这是一个过于简化的版本 input one two output twone 我正在寻找一种方法来对输入列表中的任意数量的字符串执
  • 创建将 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
  • 带孔的多边形三角剖分

    我正在寻找一种算法或库 更好 将多边形分解为三角形 我将在 Direct3D 应用程序中使用这些三角形 最好的可用选项是什么 这是我到目前为止发现的 本 迪斯科的笔记 http www vterrain org Implementation
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • 我该如何解决? KnapSack - 值完全相同,但每个对象都有三个权重

    我在解决我的练习时遇到问题 我读到了动态规划和算法 我认为我的练习是 特定背包问题 我用暴力法解决了它 但我无法用动态规划解决它 我有一艘重300吨的船 背包 有些晶体本身含有 3 种物质 X Y Z 每种物质都有重量 并且所有晶体都具有相
  • 运行时高压缩的 AS3 视频编码(H.264?)

    我需要在运行时将 AS3 中的视频图像数据 比如说显示对象 压缩为高压缩的字节数组 帧速率只需在 5 左右 但 1024x768 视频需要达到 使用 JPG 或 PNG 编码器可提供更高的 KB s 有没有开源方法可以在运行时对 as3 中
  • 从基本矩阵中查找单应矩阵

    我正在尝试计算单应性矩阵H给定一组对应关系和基本矩阵F 根据对极几何原理 我知道这可以通过对极线和对极线的叉积来完成F from 极点几何 http www cs unc edu marc tutorial node44 html e ij
  • 二分查找问题? [复制]

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

随机推荐

  • 在ggplot2facet_grid中旋转切换的facet标签

    我想使用facet grid 在彼此之上绘制一些条形图 library ggplot2 df lt group by mpg manufacturer gt summarise cty mean cty hwy mean hwy gt un
  • 我希望 shell 脚本可执行但不可读

    我创建了一个脚本 我希望其他用户使用我们的共享系统 to 执行但不读取 我将权限设置为所有可执行文件 但撤销了读 写权限 x x x 1 dilletante staff 0 2013 04 02 11 42 expect sh 然而脚本无
  • 使用 lambda 表达式参数调用泛型方法的反射

    我正在寻找一种使用 lambda 表达式调用通用方法的方法 该表达式在项目数组中调用 Contains 在本例中 我使用实体框架Where方法 但该场景可以应用于其他IEnumerables 我需要通过 Reflection 调用上面代码的
  • 如何检查 SQL Server 当前池大小

    有没有办法检查 SQL Server 中当前连接池的大小 我不是在谈论最大连接池大小 而是当前池大小 假设最大池大小为 100 并且有 49 个打开的连接 它现在应该显示 51 个可用连接或 49 个已消耗连接 那么 有这样的查询吗 其中很
  • Golang写入套接字而不用担心数据不完整

    我们都知道 Write 方法不能保证从缓冲区中写入高字节 因此 使用原始 Write 方法将字节写入套接字的规范方法如下所示 how many bytes we have written written 0 for written lt l
  • 无法让 QWindow::fromWinId 正常工作

    我的 Qt 5 9 程序 在 X11 Linux 上 使用以下命令启动其他应用程序QProcess 我想控制这些应用程序生成的窗口 所以我获得了它们winId价值和用途QWindow fromWinId得到一个QWindow实例 问题是这些
  • Laravel $request->expectsJson()

    我正在为我的 Laravel 应用程序进行 Ajax 登录 我正在使用角度 http method POST url admin login headers Content Type application json data email
  • 如何读取图像上的文字?

    我需要将一些扫描文档解析为文本数据 是否可以使用某些软件解析图像上写的文本 如果是 请推荐任何此类在线实用程序或软件 也许一些 OCR 软件会有帮助 http en wikipedia org wiki Optical character
  • 忽略“证书未知”警报

    我有以下简单的 Python 脚本 import socket import ssl if name main s socket socket socket AF INET socket SOCK STREAM s bind 443 s l
  • 销毁 Bootstrap 弹出窗口时出现 Javascript 错误

    尝试随时更改引导程序弹出窗口的标题和内容 我遇到了一些麻烦 我在销毁选择器中的弹出窗口内容时遇到此问题 错误是这样的 TypeError undefined is not a function evaluating data option
  • T-SQL删除插入的记录

    我知道标题可能看起来很奇怪 但这就是我想做的 我有很多记录的表 我想获取其中一些记录并将它们插入到其他表中 像这样的东西 INSERT INTO TableNew SELECT FROM TableOld WHERE 棘手的部分是我希望我插
  • Jquery UI 工具提示不支持 html 内容

    今天 我将所有 jQuery 插件升级为 jQuery 1 9 1 我开始将 jQueryUI 工具提示与 jquery ui 1 10 2 一起使用 一切都很好 但是当我在内容中使用 HTML 标签时 在title我正在应用工具提示的元素
  • 我怎样才能使这个模式持久化?

    我正在寻找一种方法 让这种模式在出现后持久存在 正如此处所示 用户只需在 div 外部单击一下即可将其关闭
  • 如何制作一个反应本机输入,向用户提供验证状态反馈。 [有效、Printine、错误、编辑]

    我希望输入能够随着用户键入而不断更新 然后失去焦点 反馈将是输入周围的边框 1 Green when valid 2 Amber when typing and is in error state Green when valid 3 Re
  • 一面一示例 T 测试 Python

    在 Python 中 我使用 SciPy 进行单样本 t 检验 from scipy import stats one sample data 177 3 182 7 169 6 176 3 180 3 179 4 178 5 177 2
  • Checkstyles + Gradle 抛出引起:java.lang.IllegalArgumentException:给定名称 COMPACT_CTOR_DEF

    我最近将 checkstyle 插件添加到项目中以进行静态代码分析 但更新之后google style xml从最新的大师那里 我开始收到以下异常 org gradle api tasks TaskExecutionException Ex
  • grails 2.0 - 正确使用 serverURL 进行生产?

    Grails 2 0 改变了它使用 grails serverURL 进行开发和测试环境的方式 如manual http grails org doc 2 0 x guide single html upgradingFromPreviou
  • Python从视频文件中提取wav

    Related 如何使用python从视频文件中提取音频 https stackoverflow com questions 19216450 how to extract audio from a video file using pyt
  • 如何在 Obj-C 类别中“伪造”ivars (iPhone)

    Update iPhone OS 3 1 有关联的对象 然而 iPhone 模拟器却没有 如果您想在模拟器中测试关联的对象代码 您应该提交错误 请参阅我的问题here https stackoverflow com questions 19
  • 最接近的 3 点组

    是否有一种已知的 有效的算法来查找最接近的组three云中的点 这类似于最近点对问题 http en wikipedia org wiki Closest pair of points problem但我正在寻找三点而不是两点 Edit 最