使用多变量密钥散列访问时间
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)
(如果字符串的长度是常数)。
假设字典有 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)
(如果字符串的长度是常数)。