我代表一个带有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) )
不同变量的总数是一百万,但单项包含最多三个不同的变量。
我想做像
这样的查询x
中的y^2 z^2
是? y
中3
的权力是否大于y^2 z^2
? 是否有一个哈希函数会在O(1)中回答这些问题?
或者我应该循环遍历3x2向量?
我问,因为我维护了一个包含500万个这样单项式的哈希表。 因此,默认情况下,我必须使用散列结构来进行搜索。 也许有一个哈希方案也可以回答上面的两个问题。
答案 0 :(得分:2)
我认为你必须遍历3x2向量。
有人可能会争辩说,在向量上循环是一个O(1)操作。为什么?因为向量中的条目数正好是3,这是一个小的常数。换句话说,循环计数与大数字无关:
n
这是变量的数量,m
这是单项式的数量。 m
和n
的大小(或小)并不重要,循环向量总是花费相同的时间,所以它在技术上是一个O (1)操作。