高效找到 50k 2D 坐标的 n 个最近邻?

2024-01-11

我有一个包含纬度和经度的数组。任务是找到所有坐标的5个最近的坐标,而不是每次都循环遍历所有坐标。


有几种解决方案,具体取决于您的数据(您对此一无所知)以及您想要的确定程度。

  • 如果您的数据是均匀分布的,那么您可以在数据之上创建一个网格并将点分配给该网格。之后,对于每个元素,您找出它属于哪个网格,并比较该网格(以及最近的网格)中的距离。通过良好的网格选择并假设网格中平均有 k 个元素,这可以为您提供潜在的O(n * k^2)运行时间。看看这个答案更多解释 https://stackoverflow.com/a/4172378/1090562.
  • 对数据一无所知,您可以构造一个2-d tree https://en.wikipedia.org/wiki/K-d_tree在 O(n log n) 时间内,然后对于数据库中的每个点询问距它最近的点是什么(您在 O(logn) 中询问总共 n 个点)。所以总复杂度是O(n log n )
  • 另一种方法是使用概率方法,称为局部敏感度散列 https://en.wikipedia.org/wiki/Locality-sensitive_hashing#LSH_algorithm_for_nearest_neighbor_search。维基页面太复杂了,即使知道这是什么,我也很难阅读该页面。看一眼这个描述 http://infolab.stanford.edu/~ullman/mmds/ch3a.pdf为了更好地理解它。
  • @Gene 建议使用另一种方法quadtree https://en.wikipedia.org/wiki/Quadtree(没有听说过这种树,所以将其留空)

所以正如你所看到的,有可能比O(n^2)这项任务的复杂性。

所有方法都描述了如何找到距离您正在搜索的点最近的点。很明显,找到最近的点后,您可以将其删除并找到另一个最近的点,依此类推,直到找到与您的点最接近的 5 个点。

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

高效找到 50k 2D 坐标的 n 个最近邻? 的相关文章

  • 如何确定算法函数的复杂度?

    您如何知道算法函数对于特定操作是否需要线性 常数 对数时间 它取决于CPU周期吗 您可以通过三种方式 至少 做到这一点 在网上查找算法 看看它是如何描述其时间复杂度的 根据输入大小 自己检查算法 查看嵌套循环和递归条件等内容 以及每个循环运
  • 最慢的计算复杂度(Big-O)

    在这些算法中 我知道 Alg1 是最快的 因为它是 n 平方的 接下来是 Alg4 因为它是 n 的立方 然后 Alg2 可能是最慢的 因为它是 2 n 这应该具有非常差的性能 然而Alg3和Alg5在我的阅读速度方面还没有遇到过 这两种算
  • 点集子集的最小周长凸包

    给定平面上的 n 个点 没有 3 个共线 给定数字 k 找到 k 个点的子集 使得 k 个点的凸包在 k 个点的子集的任何凸包中具有最小周长 我可以想到一个简单的方法 运行时间为 O n k k log k 找到大小为 k 的每个子集的凸包
  • 有人可以解释以下异或属性

    我的一个论坛提到给定的数组n数字 arr 0 n 1 以下条件成立 is the xor运算符 f l r f 0 r f 0 l 1 where f l r arr l arr l 1 arr r 我检查了上面的数组数量和不同的值l an
  • 在 C++ 中通过引用传递 std 算法谓词

    我正在尝试从 a 中删除元素std list并保留已删除元素的一些统计信息 为此 我使用列表中的remove if 函数 并且我有一个谓词 我想使用这个谓词来收集统计数据 这是谓词的代码 class TestPredicate privat
  • 无需构建树即可预测霍夫曼压缩比

    我有一个二进制文件 我知道其中每个符号出现的次数 如果我要使用霍夫曼算法压缩它 我需要预测压缩文件的长度 我只对假设的输出长度感兴趣 而不对单个符号的代码感兴趣 因此构建霍夫曼树似乎是多余的 作为一个例子 我需要得到类似的东西 包含 4 个
  • URL路径相似度/字符串相似度算法

    我的问题是我需要比较 URL 路径并推断它们是否相似 下面我提供了要处理的示例数据 GROUP 1 robots txt GROUP 2 bot html GROUP 3 phpMyAdmin 2 5 6 rc1 scripts setup
  • 7 张牌扑克手牌评估器

    有谁知道评估 7 张牌扑克牌的快速算法吗 这比简单地暴力检查 7 张牌中每 21 个 5 张牌的组合更有效 Cheers Pete 我写了一篇JavaScript 核心评估方法仅使用位操作 因此速度非常快 考虑到这一点 查看 21 种组合还
  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • shell脚本中关联数组的时间复杂度

    我想知道在 shell 脚本中使用关联数组时如何构造 实现 另外 我想知道基于 shell 脚本的关联数组的时间复杂度是否是最佳的 因为我们可以使用字母和数字作为它们各自的键 编辑 他们使用什么哈希函数 如果您使用关联数组 则不能通过 使用
  • 给定一个具有多个重复条目的数组,找到一个重复条目 O(N) 时间和常数空间

    我们得到了一个大小为 N 的数组 其中包含 0 到 N 2 范围内的整数 包括 0 和 N 2 该数组可以有多个重复的条目 我们需要在 O N 时间和常量空间中找到重复条目之一 我正在考虑取数组中所有条目的乘积和总和 以及 0 到 N 2
  • 从一种数字系统转换为另一种数字系统后会有多少位数字

    主要问题 有多少位数字 让我解释 我有一个二进制数 11000000 十进制数是192 转换为十进制后 它有多少位 以十进制表示 在我的示例中 它是 3 位数字 但是 这不是问题 我在互联网上搜索并找到了一种用于整数部分的算法和一种用于小数
  • 举例解释bpe(字节对编码)?

    有人可以帮忙解释一下背后的基本概念吗BPE模型 除了这张纸 https arxiv org abs 1508 07909 目前还没有那么多解释 到目前为止我所知道的是 它通过将罕见和未知的单词编码为子词单元序列来实现开放词汇表上的 NMT
  • 以 O(1) 计算汉明权重 [重复]

    这个问题在这里已经有答案了 在二进制表示中 汉明权重是 1 的数量 我偶然发现了网络并找到了一个 O 1 的答案 v v v gt gt 1 0x55555555 v v 0x33333333 v gt gt 2 0x33333333 in
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • 照片马赛克算法。如何在给定基本图像和瓷砖列表的情况下创建马赛克照片?

    Hy 我要做的是创建一个程序 使用 C 或 C 它将 24 位 像素位图和图像集合作为输入 我必须创建一个马赛克图像 类似于使用库的输入图像给定的图像 创建与输入类似的马赛克照片 到目前为止 我可以访问输入的图像像素及其颜色 但我有点卡住了
  • 动态规划 (DP) 中的重叠子问题是什么?

    为了使动态规划适用 问题必须具有两个关键属性 最优子结构 and 重叠子问题 1 https en wikipedia org wiki Dynamic programming 对于这个问题 我们只关注后一个属性 有各种不同的定义重叠子问题
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出

随机推荐

  • Java 中处理循环事件的优雅方法?

    我认为这对我来说不是一个特定的问题 每个人以前可能都遇到过这个问题 为了正确地说明它 这里有一个简单的 UI 正如您所看到的 这两个旋转器控制着一个变量 A 唯一的区别是他们使用不同的视图来控制它 由于这两个旋钮的显示值是同步的 因此会出现
  • 信号处理程序不会看到全局变量

    问题是 这个程序应该接收来自 stdin 的输入并计算插入的字节数 SIGUSR1 信号将停止主程序 并在文件标准错误上打印当我发送 SIGUSR1 时已复制了多少字节 这就是我的老师希望我这样做的方式 在一个终端运行中 cat dev z
  • 为什么在使用 Javassist 更改方法体后必须调用 .toClass()?

    我修改getMessage 我的方法体TestClass由Javassist这样写 ClassPool cp new ClassPool true CtClass ctClass cp get my test javassist TestC
  • CSS:使 iframe 充满高度,没有滚动条

    我怎样才能在 iframe 上拥有完整的高度 这样如果超过指定的高度 我就没有滚动条height 500px 我只想让页面滚动条存在 而不是 iframe 滚动条 我知道你可以隐藏滚动条 但这样你就看不到 iframe 中的所有内容 你怎么
  • Sparklyr 与 S3 存储桶的连接抛出错误

    我正在尝试从 R Sparklyr 连接到 S3 存储桶 我能够将本地文件读取到 Spark 上下文中 然而尝试连接 s3 似乎是个问题 抛出一大堆错误 这是所使用的代码列表 注意 单个 s3 存储桶有多个 csv 文件 遵循相同的模式 l
  • 如何将 C 联合转换为 Delphi?

    typedef struct FILE OBJECTID INFORMATION LONGLONG FileReference UCHAR ObjectId 16 union struct UCHAR BirthVolumeId 16 UC
  • 如何在 Flutter 中使用 fl_chart 在折线图中水平滚动?

    我想用折线图显示列表中的数据 问题是宽度太小 所以我希望你可以水平滚动来查看所有内容 如何使用 fl chart 包执行此操作 这是我的代码 我从列表中构建点 override Widget build BuildContext conte
  • 使用php获取字符串中的第一个图像

    我正在尝试从我的每篇文章中获取第一张图片 如果我只有一张图像 下面的代码效果很好 但如果我有多个 它会给我一个图像 但并不总是第一个 我真的只想要第一张图片 很多时候第二张图片是下一个按钮 texthtml Who is Sara Bare
  • 根据 R 中的名称向量删除列

    我有一个data frame called DATA Using BASE R 我想知道如何删除中的任何变量DATA被命名为以下任意一个 ar c out Name mdif stder mpre 目前 我使用DATA names DATA
  • 如何自定义 jquery 自动完成以在 DIV 中显示

    我只是想知道 我以前使用过自动完成插件 但 jquery 网站上的示例似乎非常简单且有用 function var availableTags ActionScript AppleScript Asp BASIC C C Clojure C
  • CSS 参数“如果第一个孩子是”

    我需要一个用于 div 内部的 CSS 选择器 但我希望它仅选择该 div 内特定类的第一个元素 正如您的标题所暗示的 如果第一个孩子是 div gt test first child将选择任何的第一个孩子 div if它有类test 但如
  • 如何将事件记录到 ASP.NET Core Web API 中的事件查看器?

    我正在尝试登录到托管在 Windows Server 2016 Standard 上的 ASP NET Core 2 1 Web API 中的事件查看器 我的控制器中有这个 private readonly ILogger
  • azure服务结构可靠字典linq查询非常慢

    我在服务结构有状态服务中有一本可靠的字典 我有一个简单的 linq 表达式 我正在使用 Ix Async 包来构建异步枚举 using ITransaction tx this StateManager CreateTransaction
  • Cocoa:当光标位于 NSButton 上时更改光标

    当光标位于 NSButton 上时如何更改光标 您应该首先子类化 NSButton 然后添加以下代码 void resetCursorRects if self cursor self addCursorRect self bounds c
  • 更改asp.net core 2.2 IdentityUser的Id类型

    我是 dot net core 2 x 的新手 所以 我想将 asp net core 2 2 IdentityUser 中的 Id 类型从 string 更改为 int 我通过google 和stackoverflow搜索工具 找到的所有
  • 垂直对齐图像旁边的文本?

    为什么不会vertical align middle工作 但是 vertical align top does work span vertical align middle div img src https via placeholde
  • 如何用 ImageMagick 的命令覆盖 Windows 的转换命令?

    In Windows 一个名为convert用于转换文件系统 当您输入时convert 它会要求您指定一个文件系统 In 图像魔术师 convert命令用于图像处理 问题是 即使设置了 ImageMagick 的环境变量convert 该工
  • 创建对象的成本高吗?

    我刚刚重构了一位同事的代码 大致看起来像这样 public class Utility public void AddHistoryEntry int userID HistoryType Historytype int companyID
  • 在 MapView 中搜索注释

    我关注了一个如何使用 apples mapkit 搜索位置 https www thorntech com 2016 01 how to search for location using apples mapkit 关于搜索annotat
  • 高效找到 50k 2D 坐标的 n 个最近邻?

    我有一个包含纬度和经度的数组 任务是找到所有坐标的5个最近的坐标 而不是每次都循环遍历所有坐标 有几种解决方案 具体取决于您的数据 您对此一无所知 以及您想要的确定程度 如果您的数据是均匀分布的 那么您可以在数据之上创建一个网格并将点分配给