搜索集合分区数据结构

时间:2017-06-02 15:33:22

标签: algorithm data-structures

我正在尝试为一组对象执行特别昂贵的计算,并且我想知道是否有更高效的数据结构或算法。

假设我们有一组可以枚举的N(~1k)项,因此我们可以将它们编入索引并将它们表示为整数。对于这些事情中的每一件事,我都想跟踪一个特定的状态。但一般来说,唯一状态的数量将远远小于N,最多N/10,但通常接近N/1000

要表示此地图,我们可以:

  1. 大小为N的数组,其中i为每个第i项的状态。
  2. 树数据结构(我特别模糊,因为我不确定在这种情况下可能更好的树/特里),其中每个叶子代表一个项目和一个州。
  3. 哈希表,类似于3。
  4. 有一对位向量的列表,表示一组项目和状态。因此,列表的总长度将是唯一状态的数量。
  5. ...?
  6. 在我的代码的热路径中,我需要获取2个这样的地图并合并它们,以便更新每个项目的状态。如果执行合并的成本为k,则给定数组表示的运行时间为O(kN)。通常,k的成本按查找顺序排列,因此记忆技术无济于事。这看起来很浪费,因为我知道一般来说我只有N/1000个唯一值。另一个考虑因素是这些地图的存储要求。存储N项是多余的,甚至可以枚举所有项目(#4地图)。

    我可以做得更好吗?

    谢谢。

0 个答案:

没有答案