【问题标题】:Hashing Access time with multi variable key使用多变量键散列访问时间
【发布时间】:2018-04-27 17:52:48
【问题描述】:

假设一个字典有 2 个变量键而不是 1 个 like

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

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

提前致谢。

【问题讨论】:

  • 澄清一下 - 查找 [1, 5] 的预期结果是什么都找不到?
  • 是的,它应该返回NULL,但时间复杂度是多少?

标签: algorithm performance hash hashmap hashtable


【解决方案1】:

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

【讨论】:

  • @templatetypedef 如果字符串的长度是恒定的,那么它将是 O(1)。
【解决方案2】:

当你在哈希表中查找时,所涉及的成本是

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

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

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

上述参数概括为任何固定大小的三元组作为键。当键具有可变长度时,您通常必须担心散列和比较键的成本,如果您在没有长度限制的情况下散列字符串,就会出现这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2023-02-04
    • 2015-09-12
    • 2013-08-02
    • 1970-01-01
    相关资源
    最近更新 更多