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

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(使用前将#替换为@)

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

  • 将整数列表划分为总和相等的 K 个子列表

    类似的问题还有1 https stackoverflow com questions 27322804 partition of a set into k disjoint subsets with equal sum and 2 http
  • SQL 中的最佳 LIKE 搜索

    我有一个零件数据库 我将不断查询该数据库以获取报价系统 零件数据库有超过 1 400 000 条记录 用户将开始输入零件号 他们希望系统能够在仅几个字符后找到这些零件号 因此我需要能够进行通配符搜索 例如 SELECT NeededFiel
  • Google 文档如何处理编辑冲突?

    我一直在尝试编写自己的 Javascript 编辑器 其功能类似于 Google Docs 允许多人同时使用 我不明白一件事 假设用户 A 和用户 B 直接相互连接 网络延迟为 10 毫秒 我假设编辑器使用 diff 系统 据我了解 Doc
  • 神经网络的层和神经元

    我想更多地了解神经网络 我正在开发一个 C 程序来制作神经网络 但我坚持使用反向传播算法 很抱歉没有提供一些工作代码 我知道有很多库可以用多种语言创建神经网络 但我更喜欢自己制作一个 关键是我不知道要实现特定目标 例如模式识别或函数近似或其
  • javascript中的快捷方式融合优化

    我听说 lodash 和其他 javascript 库使用一种称为 快捷融合 的技术进行优化 但在任何地方都找不到该技术的详细解释 任何人都可以提供链接或举例解释 快捷方式融合 的含义吗 对于一个非常简短且不清楚的解释 https wiki
  • 查找文本中所有关键字的有效算法

    我有很多字符串 其中包含许多不同拼写的文本 我通过搜索关键字来标记这些字符串 如果找到关键字 我将使用该关键字的关联文本 假设搜索字符串可以包含文本 schw schwa 和 施瓦茨 我有三个关键字 全部解析为文本 schwarz 现在我正
  • 有效地合并两个数组 - 一个已排序,另一个未排序

    我正在解决一个问题 该问题有一个由 n 个元素组成的排序数组 后跟一个未排序的长度数组 O logn O 平方 n 如何最有效地对整个列表进行排序 在上述两种情况下我应该使用哪种排序 由于将单个元素插入数组并保持其排序是O n 你不可能变得
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 定点数学比浮点运算快吗?

    多年前 即 20 世纪 90 年代初期 我构建了图形软件包 该软件包基于定点算术和预先计算的 cos sin 表格以及使用牛顿近似方法进行 sqrt 和对数近似的缩放方程来优化计算 这些先进技术似乎已经成为图形和内置数学处理器的一部分 大约
  • 数独算法,暴力破解[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • Oracle 中的 SQL 调优 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何文章 链接可以让我找到 SQL 调优 Oracle 的示例 如果能用例子来解释那就太好了 我需
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • 如何在C中实现带连分数的自然对数?

    这里我有一个小问题 根据这个公式创建一些东西 这就是我所拥有的 但它不起作用 弗兰基 我真的不明白它应该如何工作 我尝试用一 些错误的指令对其进行编码 N 是迭代次数和分数部分 我认为它会以某种方式导致递归 但不知道如何 谢谢你的帮助 do
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 为什么这个算法的Big-O复杂度是O(n^2)?

    我知道这个算法的大O复杂度是O n 2 但我不明白为什么 int sum 0 int i 1 j n n while i lt j sum 即使我们设定了j n n一开始 我们在每次迭代期间递增 i 并递减 j 因此最终的迭代次数不应该比n
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 使用什么算法来确定使系统达到“零”状态所需的最小操作数?

    这是一种更通用的问题 不是特定于语言的 有关要使用的想法和算法的更多信息 系统如下 它登记朋友群体之间的小额贷款 Alice and Bill要去吃午饭 比尔的卡坏了 所以爱丽丝支付了他的餐费 10 美元 第二天Bill and Charl
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait

随机推荐

  • 在协程 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 对于任何