用于移动物体的近似增量最近邻算法

2024-02-11

Bounty

这个问题提出了几个问题。赏金将用于全面解决这些问题的答案。


这是我一直在玩的一个问题。

NOTE我对以下解决方案特别感兴趣不基于欧几里得空间。

有一组 Actor 形成大小为 K 的人群。距离d(ActorA,ActorB)对于任何两个参与者来说,都很容易计算(解决方案应该适用于“距离”的各种定义),并且我们可以使用多种已建立的算法中的任何一种来找到任何给定参与者的 N 个最近邻居的集合。

这个邻居集在第一时刻是正确的,但是演员们总是在移动我想为每个 Actor 维护 N 个最近邻居的不断演变的列表。我感兴趣的是近似比完美解决方案更有效的解决方案。

  1. 解决方案应该收敛到正确性引入错误后。
  2. 如果错误变得太大,有时执行完整的重新计算是可以接受的,但是检测这些错误应该很便宜.

到目前为止我一直在使用朋友的朋友算法:

recompute_nearest (Actor A)
{
    Actor f_o_f [N*N];
    for each Actor n in A.neighbours
        append n to f_o_f if n != A and n not in f_o_f

    Distance distances [N*N];
    for 0 <= i < f_o_f.size
        distances [i] = distance (A, f_o_f [i])

    sort (f_o_f, distances)
    A .neighbours = first N from f_o_f
}

当人群移动缓慢并且 N 适当大时,这种方法表现得相当好。它在小错误后收敛,满足第一个标准,但是

  • 我没有好的方法来检测大错误,
  • 我没有对错误的大小和频率进行定量描述,
  • 它在实践中收敛,但我不能prove永远都会如此。

您能在以下几点方面提供帮助吗?

另外,您是否知道任何表现良好的替代方法

  • 当人群快速流动时,
  • when some演员动作迅速,
  • 当 N 较小时,
  • 当有的地方人流稀疏,有的地方人流稠密时,
  • 或者使用特定的空间索引算法?

我目前正在研究的扩展是在邻居快速移动的情况下将朋友的朋友概括为朋友的朋友的朋友。我怀疑这不能很好地扩展,并且在不量化错误的情况下很难得出正确的参数。

我欢迎所有建议!这是一个有趣的小问题:-)


迄今为止值得注意的建议

Fexvez:随机抽取额外邻居,样本大小取决于代理的速度。从即将进入的区域进行采样可能也会有所帮助。

当代理重新采样邻居speed*delta_time超过了到已知最远邻居的距离。

维持德劳内三角剖分 http://en.wikipedia.org/wiki/Delaunay_triangulation这是最近邻图的超集。仅占one最近的邻居。

大卫·芒特人工神经网络库 http://www.cs.umd.edu/~mount/ANN/ 似乎无法处理moving bodies.


统计学中一种非常简单且非常快速的方法是使用随机线性投影。这些可以帮助您快速确定集群和邻居。通过更多的预测,您可以获得更高的准确性(我相信解决了您关于错误的问题)。

这张纸 http://faculty.cua.edu/plaku/papers/PaperWAFR_DPES-h.pdf提供了多种方法的广泛定量分析,包括与 RLP 相关的新方法 (DPES)。

这张纸 http://valis.cs.uiuc.edu/~sariel/papers/06/embed/embed.ps解决了 RLP 的使用,包括即使在以下情况下也能保持距离移动点.

这张纸 http://www.kavrakilab.org/sites/default/files/randomprojections_iros09.pdf解决了运动规划的 RLP 问题并详细介绍了几种启发式方法。

RLP 方法有:

  1. 非常快
  2. 得出可调整精度和速度的近似值
  3. 距离和角度保持(可证明)
  4. 轻松缩放到大尺寸和大量对象
  5. 对于降维很有用
  6. 导致紧凑的投影(例如,可以投影到分层的二进制分区中)
  7. 灵活:您可以投影到您认为对您有利的任何空间 - 通常为 R^d,但投影到 2^d(即维度 d 的二进制空间)也是允许的,只是会降低给定 # 的精度的预测。
  8. 统计上很有趣

嵌入到较低维度的空间后,邻居计算非常容易,因为在相同区域中合并的投影(如果将投影合并到网格中)很可能在原始空间中接近。

尽管原始数据的维数很小(即使 10 也很小),但快速投影到预先选择的网格中的能力对于识别和计数邻居非常有用。

最后,您只需要更新那些位置(或相对位置,如果您要居中和缩放数据)已更改的对象。

对于相关作品,请查看 Johnson-Lindenstrauss 引理。

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

用于移动物体的近似增量最近邻算法 的相关文章

  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • 适用于多应用项目的 Grunt 和 requirejs 优化器

    我在让 Grunt 对具有以下结构的项目执行 requirejs 优化时遇到问题 static js apps app js dash js news js many more app files build collections lib
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • 异或交换可以扩展到两个以上的变量吗?

    我一直在尝试将异或交换扩展到两个以上的变量 例如n变量 但我没有得到比这更好的地方3 n 1 对于两个整型变量x1 and x2你可以像这样交换它们 swap x1 x2 x1 x1 x2 x2 x1 x2 x1 x1 x2 所以 假设你有
  • 在常数空间中创建 1..N 的随机排列

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

    有什么区别直接选择排序 vs 交换选择排序 今天我陷入了一场争论 我的教授在他的讲义中使用了这两个术语 维基百科和任何教科书或网站都会为您提供的选择排序就是他所说的 交换选择排序 我以前从未听说过 交换选择排序 这个术语 仅 选择排序 并且
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 需要一种将网络块范围折叠为超集范围列表的算法

    我的数学不及格 我需要一种有效的方法将网络范围缩小为超集 例如如果我输入 IP 范围列表 1 1 1 1至2 2 2 5 1 1 1 2至2 2 2 4 10 5 5 5至155 5 5 5 10 5 5 6至10 5 5 7 我想返回以下
  • Florian 的 Grisu2 算法如何工作?

    我遇到了一个关于将 double 转换为 ascii 的问题 经过搜索 我得到了 Florian 的论文 使用整数快速准确地打印浮点数 http www cs tufts edu nr cs257 archive florian loits
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 什么是大O表示法?你用它吗? [复制]

    这个问题在这里已经有答案了 什么是大O表示法 你用它吗 我想我错过了这门大学课程 D 有人使用过它并给出一些现实生活中使用它的例子吗 也可以看看 八岁孩子的大O https stackoverflow com questions 10716
  • 举例解释bpe(字节对编码)?

    有人可以帮忙解释一下背后的基本概念吗BPE模型 除了这张纸 https arxiv org abs 1508 07909 目前还没有那么多解释 到目前为止我所知道的是 它通过将罕见和未知的单词编码为子词单元序列来实现开放词汇表上的 NMT
  • gcc 与 clang:符号剥离

    gcc 和 AMD Open64 opencc 都有一个 s选项 剥离符号表和重定位信息 到目前为止我还没能在 Clang LLVM 中找到相同的选项 它存在吗 您可以使用stripbinutils 中的实用程序 实际上 llvm ld 有
  • 模块化算术和 NTT(有限域 DFT)优化

    我想使用 NTT 进行快速平方 参见快速大数平方计算 https stackoverflow com q 18465326 2521214 但即使对于非常大的数字 结果也很慢 超过 12000 位 所以我的问题是 有没有办法优化我的 NTT
  • 平铺单纯形噪声?

    我 作为业余爱好者 对伪随机噪声生成很感兴趣 特别是 Perlin 和 Simplex 算法 Simplex 的优点是速度 尤其是在更高的维度上 但 Perlin 可以相对容易地平铺 我想知道是否有人知道平铺单纯形算法 固定维度就好 泛型更
  • 为什么将模块级代码放入函数中然后调用该函数在Python中速度更快?

    在亚历克斯 马尔泰利的回应中使 Python 脚本面向对象 https stackoverflow com questions 1813117 making a python script object oriented 他提到在 Pyth
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我

随机推荐

  • 在协程 close() 上运行代码

    我正在编写大量使用协程的代码 并且我希望在关闭时有可靠的行为 假设我有一个协程和一个上下文管理器 from contextlib import contextmanager contextmanager def print context
  • 在 Java 中向大字符串添加前导零

    我目前正在用 Java 制作一个拍卖程序 我正在尝试计算截止日期 但是我的日期一直显示为 7 04 2013 11 22 有没有办法使用 String format 添加前导零到今天为止什么时候是一位数的日期 String timeOne
  • 如何全局定义套接字变量

    我的里面有这段代码socketio文件 在这里我可以使用socket simply import from lodash import mongoose from mongoose exports register server optio
  • Twitterizer - 远程服务器返回错误:(401) 未经授权

    我正在关注瑞奇的Twitter 示例 https stackoverflow com questions 8003959 mvc3 c sharp beginner in twitterizer how to logon user via
  • 以编程方式在 Woocommerce 中创建新订单

    我在 WooCommerce 中以编程方式创建订单时遇到了最困难的时间 我正在使用下面的代码 并且确实创建了订单 但我无法获取添加到订单中的客户信息或产品系列项目 创建的新订单只是作为访客 没有商品 用户信息等 问题似乎是 一旦创建了订单对
  • Node.Js 错误“请求中不存在‘Access-Control-Allow-Origin’标头”

    这个问题和其他问题类似 然而 有一个差异使得它为什么不起作用非常令人困惑 我的 JavaScript 正在调用 6 个 json 文件 并且所有文件都工作正常 在 Node JS 中 我设置了 cors 和 headers 如下所示 var
  • refs 是否应该列为 useEffect 等的依赖项?

    据我了解 useRef 返回的容器始终相同 但在 useEffect 和类似函数中引用它们会导致 eslint exhausive deps 警告 在这种情况下忽略警告是否安全 有什么好方法可以避免警告堵塞输出日志以及禁用行注释堵塞我的代码
  • 使用 python libclang 检索评论

    在下面的头文件中我想得到相应的 reflect对类和成员变量的注释 ifndef HEADER FOO define HEADER FOO reflect class Foo public private int m int reflect
  • 了解模运算符

    我有一些代码循环遍历列表元素的集合和颜色的集合 它确保每个列表元素都指定有一种颜色 除了模数运算符之外 我了解有关此的所有内容 我知道它找到并使用剩余的数字 但我一生都无法理解它在做什么here var li document getEle
  • 如何更改 JFileChooser 中的默认 java 图标

    我想改变内置的java图标JFileChooser JFrame类有一个setIconImage 设置图标的方法 但我找不到类似的东西JFileChooser 无需更换咖啡杯 任何人都可以轻松识别出我的软件是用 java 编写的 谁能帮助我
  • Rails 和 RSpec:在不同命名空间(模块)中测试具有相同名称的控制器

    我有使用 RSpec 3 4 0 测试的 Rails 4 1 16 API 应用程序 并且在测试不同模块中调用相同名称的类时遇到问题 结构是 app controllers bar notifications controller rb c
  • Rust 宏:根据表达式调用函数

    我有三个不同的函数 我想根据宏参数调用其中一个函数 这个参数应该被预处理 这就是为什么我认为我需要把它写成expr 但是 我似乎找不到一种方法来区分不同的情况expr在宏中 这是我的代码 fn func 100 println Func 1
  • 限制 Laravel 日志文件大小

    我是 Laravel 的新手 我们使用的是 Laravel 5 8 我看过一些恐怖故事 其中日志设置为每日轮换 但仍然达到 1GB 以上 我看到有人的日志一夜之间达到了 400GB 以上 有没有办法分割日志文件和 限制可以创建的总日志大小
  • SSE 4 popcount 为 16 个 8 位值?

    我有以下代码 它使用标志与 GCC 进行编译 msse4但问题是弹出计数仅获取转换后的最后四个 8 位 m128i类型 基本上我想要的是计算里面的所有 16 个数字 m128i类型 但我不确定创建变量后要调用什么内部函数popA 不知何故p
  • 如果只使用一次本地函数,那么使用它们还有什么意义吗?

    想象一下我有这样的代码 public void Foo Do bar work Do baz work Do foobar work 我意识到我可以 而且应该因为它做了不止一件事 将其重构为 public void Foo bar baz
  • PHP - 从数组中选择随机值?

    PHP 如何从数组中选取随机值 Example trees appletree gt id gt 12378 age gt 15 height gt 6 bananatree gt id gt 344343453 age gt 16 hei
  • 使用 VB 写入大量记录以进行访问

    我目前正在 Visual Studio 中编写一些软件 以使用 SQL 分析来自 Access 数据库的大量数据 我有代码可以创建一个新的计算变量 但我很难解决将数据写回 Access 所需的时间 我目前正在使用一些 vb com 代码与在
  • Java 消息服务 (JMS) 的用途是什么?

    我目前正在评估 JMS 但不知道它可以用来做什么 目前 我相信这将是一个用例 我想创建一个 SalesInvoice PDF 并在 SalesOrder 离开仓库时打印它 因此在交付事务期间 我可以发送一个事务打印请求 该请求在 Sales
  • OkHttpClient 的 NoClassDefFoundError

    在 gradle 中添加 facebook 依赖项后 我收到此运行时错误 compile com facebook android facebook android sdk 4 6 0 请注意 我也在使用 okhttp compile co
  • 用于移动物体的近似增量最近邻算法

    Bounty 这个问题提出了几个问题 赏金将用于全面解决这些问题的答案 这是我一直在玩的一个问题 NOTE我对以下解决方案特别感兴趣不基于欧几里得空间 有一组 Actor 形成大小为 K 的人群 距离d ActorA ActorB 对于任何