用于快速查询的整数向量的散列

时间:2016-11-29 15:50:16

标签: c algorithm hash bit-manipulation

我代表一个带有3x2向量的单项式。例如,

x y z   : ( (variable id, exponent of variable) ) 

        : ( (1,1) , (2, 1) , (3,1) )

x^2 z^2 : ( (1,2) , (3,2) , (null, null) )

不同变量的总数是一百万,但单项包含最多三个不同的变量。

我想做像

这样的查询
  1. 单项x中的y^2 z^2是?
  2. y3的权力是否大于y^2 z^2
  3. 是否有一个哈希函数会在O(1)中回答这些问题?
    或者我应该循环遍历3x2向量?

    我问,因为我维护了一个包含500万个这样单项式的哈希表。 因此,默认情况下,我必须使用散列结构来进行搜索。 也许有一个哈希方案也可以回答上面的两个问题。

    相关问题:best codebook for manipulation of monomials

1 个答案:

答案 0 :(得分:2)

我认为你必须遍历3x2向量。

有人可能会争辩说,在向量上循环是一个O(1)操作。为什么?因为向量中的条目数正好是3,这是一个小的常数。换句话说,循环计数与大数字无关:

  • n这是变量的数量,
  • m这是单项式的数量。

mn的大小(或小)并不重要,循环向量总是花费相同的时间,所以它在技术上是一个O (1)操作。