【问题标题】:Hash function to map k nearest data into same bucket哈希函数将 k 个最近的数据映射到同一个桶中
【发布时间】:2020-07-01 00:26:50
【问题描述】:

我有一个数组说[1, 2, 3, 4, 5, 10, 12, 6, 200, 300, 500]。我正在尝试开发一个散列函数,以便以相同距离k 分隔的所有元素应该在输出数组中的相同位置碰撞,在该位置形成一个链表,在该位置链表的标题。这将有助于使用散列函数根据距离找到最近的元素。我尝试了非常简单的哈希函数h(j)=int(j/k),其中k 是距离,例如如果k=5,那么碰撞点将是这样的[1, 2, 3, 4, 5] [6, 10] [12] [200] [300] [500]。 我的目标是给散列函数提供两个数字,例如12 他们应该在数组中返回相同的位置 0 告诉我他们是最近的邻居。 这应该以预期的 theta n 空间和时间复杂度运行。

【问题讨论】:

  • 我还需要等效的散列函数,以便附近的数字应该映射到输出数组中的相同位置。例如[1,2,3,4,,100,200,150] ==> [[1,2,3,4],[100,200,150]]。你有什么发现吗?如果有人为此提供最佳资源,那将是非常有用的。

标签: java python algorithm hashmap hashtable


【解决方案1】:

除非您计划在多个存储桶中使用相同的数字,否则这是不可能的。即使在您自己的示例中,5 与 6 位于不同的存储桶中,但实际上比与 6 分组的 10 更接近 6。

如果您允许相同的数字出现在多个存储桶中,那么您可以获得基于阈值距离的“近邻”分组,但您的结果看起来更像这样(假设最大距离

[1,2,3,4,5] [2,3,4,5,6] [6,10] [10,12] [200] [300] [500]

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多