【问题标题】:Multidimensional Reverse Table lookup多维逆向表查找
【发布时间】:2021-08-06 02:57:28
【问题描述】:

我正在寻找一个二维表的反向查找,即表:F(x,y),给定 F,找到 x 和 y

我当前的方法使用嵌套的 for 循环在表中搜索所有 x 和 y,以在某些错误中找到 F。这里的复杂之处在于,查询到的“F”可能与我的查找表中的“F”不完全匹配。我的桌子上也有 NaN。我希望这个程序能找到离查询的“F”最近的“F”。

该表目前是一个二维数组,但我认为这里的地图可能更合适。我知道如何从中创建多维地图:https://www.geeksforgeeks.org/implementing-multidimensional-map-in-c/

我还在这里找到了一些关于如何使用 Boost 对一维地图进行反向地图查找的很好的答案(特别是 @Rob):Reverse map lookup

我在结合这两种方法以及 findNearest 功能时遇到了一些麻烦。

【问题讨论】:

  • 您可能需要一个二维空间分区数据结构,例如四叉树。
  • 表有变化吗?如果没有,只需创建一个包含所有 (F, x, y) 三元组的向量并对其进行排序。然后 findNearest() 相当于在这个向量中执行二进制搜索,并选择任一侧更接近目标的元素。
  • 你能分享你的LUT吗?所以我们实际上可以看到你有什么......理想情况下还可以使用 3D 绘图预览......也可以查看Reverse complex 2D lookup table

标签: c++ algorithm boost c++14 linear-search


【解决方案1】:

听起来您想使用 Boost Geometry 的索引套件。

它不仅有最近 k 个查询,而且还为您提供各种坐标系(包括测地线系统)。

Spatial Indexes

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多