使用多变量密钥散列访问时间

Hashing Access time with multi variable key

假设字典有 2 个可变键而不是 1 个像

dictionary[3,5] = Something
dictionry[1,2] = Something
dictionary[3,1] = Something

搜索时间是否仍为 O(1)。如果我需要查找字典 [1,5] 是否存在,它会产生常数时间吗?

提前致谢。

当您在散列 table 中进行查找时,所涉及的成本是

的成本
  • 散列要查找的项目,并且
  • 将该项目与 table 中的其他条目(预期的 O(1) 数量)进行比较。

我们可以将哈希 table 查找的预期成本写为 O(hash-cost + compare-cost)。

在您的情况下,散列一对而不是单个元素的成本仍然是 O(1) - 只需散列该对的每个元素并对这两个值应用一些散列组合步骤。类似地,比较两对的成本也是 O(1)(假设可以在常数时间内比较该对的每个单独元素)。因此,查找仍将是(预期的)常数时间。

以上论点概括为任何固定大小的三元组作为键。当键的长度可变时,您通常不得不担心散列和比较键的成本,如果您对没有长度限制的字符串进行散列,就会出现这种情况。

是的。这不是新的。通常,您可以有一个带有字符串键的字典。如果您将字符串视为字符数组,则您有一个字符列表作为键。所以,在同样的情况下,你可以说你的字典也适用于 O(1)(如果字符串的长度是常数)。