问题标签 [hash-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3882 浏览

java - Java 最快的哈希函数

我有一个长度为 128 个字符的布尔字符串(如“01100..001”)(表示 0/1 的 128 个数字)。我在 Java 中寻找一个高效(快速)的散列函数,它产生的表示比 128 位低得多,而且显然冲突更少。任何人都可以帮助我,有没有这样的哈希函数?有什么建议吗?

0 投票
2 回答
1389 浏览

hash - 相似哈希函数(simhash)

我在使用哈希函数时遇到问题。我必须为文档中的每个单词分配一些数字(128 位或 64 位)。因此,“相似度”的哈希值必须与“相似度”相近。这意味着,如果相似度的值=>10022(比如说),那么相似度=>10025。这应该与相似的词接近。不同名称的哈希值也应该相似。这意味着,“john”的哈希值也应该接近“michel”或“sita”......等等。如果任何人对此有任何想法。

先谢谢了。:)

0 投票
4 回答
1639 浏览

java - 如何在 Java 中实现哈希函数 `h(k) = (A·k mod 2^w) >> (w – r)`

重要的提醒:

这不是一个供人们向我发表他们对哈希的看法的讨论帖。我只需要知道如何使给定的函数在 java 中工作——最好有一个例子。

问题:

为了在即将到来的面试中磨练我对哈希函数的理解,我观看了麻省理工学院计算机科学教授的两场免费讲座 (http://videolectures.net/mit6046jf05_leiserson_lec08/)。所以讲座结束后,我尝试在java中实现以下哈希函数。

我认为这在java中很容易实现。但是当我在 w=32 处执行 2^w 时,我在 Java 中得到不准确的结果。在现实生活中2^32 = 4294967296但不是在 java 中,它会将结果截断为2^31 - 1or 2147483647

有谁知道如何解决这个问题以便在 Java 中实现该功能?

编辑:

我看到很多回复都集中在 32 上。如果我的电脑是 64 位的怎么办?w = 32因为我使用的是 Java ,所以我被设置困住了?

0 投票
1 回答
608 浏览

django - 复合主键,谷歌应用引擎(django)

我在谷歌应用引擎上使用 django nonrel/djangoappengine。不能直接指定复合主键。但是,应该可以模仿这种行为。我想知道什么是最好的方法。

问题

考虑以下数据模型

我希望 (salesman, year) 被视为主键。也就是说,如果我这样做

“表” AccumulatedSales 应包含一行。所以第二次保存会覆盖第一次。

可能的解决方案

问题

  • 这种方法是好的还是“正确的”?
  • 字段键的最佳数据类型是什么?就我个人而言,我希望有 som 128 位字段,但据我所知,这是不可用的。
0 投票
1 回答
256 浏览

math - MASH-2 哈希函数

我们在一门大学课程中学习了 MASH-2 哈希函数,在考试中我们遇到了仅使用科学计算器计算类似 ((62500)^257)) mod (238194151) 的问题。现在我知道一些关于 a^b (mod n) 的理论,但我上面提出的问题甚至很难手动计算。我认为解决这个问题大约需要 15 分钟。我想知道是否有更快的方法来做到这一点。或者即使有某种方法可以以二进制形式进行(将数字转换为二进制,然后进行一些操作)。我需要能够用科学计算器手动完成。

0 投票
2 回答
255 浏览

java - 可扩展类的哈希码(面向未来)

由于我在数学方面没有任何出色的技能,所以我问你是否有任何算法可以用于将来可能会改变的课程。

考虑以下场景:

“角色”类具有以下字段:

几周后,我决定添加一个角色“guest”:

几周后,我决定删除“打印机”这个角色;

由于我会将哈希码保存在数据库中,因此我必须 100% 确定此类的所有版本都会生成唯一的哈希码。

也许这不是问题,我一直使用 Eclispe IDE 源代码生成器中提供的那个。

你能告诉我我是否安全地使用 Eclipse IDE (Indigo) Java 版本 >= 6 方法,或者给我一些关于这个主题的其他建议。我相信这是一件非常普遍的事情。

提前致谢

0 投票
2 回答
419 浏览

java - 变量名与哈希函数有什么关系?

来自 MIT recitation的良好散列函数的属性:

  1. (大约)满足简单统一散列的假设:每个键都有可能散列到 m 个槽中的任何一个。
  2. 散列函数不应该偏向于特定的槽不会将相似的键散列到同一个槽(例如编译器的符号表不应该将变量 i 和 j 散列到同一个槽,因为它们经常结合使用)
  3. 计算速度很快,应该有 O(1) 运行时间
  4. 是确定性的。对于给定的 k,h(k) 应该始终返回相同的值

有人可以进一步解释第 2 点。变量名与散列函数有什么关系?

编辑:我使用 Java。因此,如果答案包含使用 java 语义的解释,那对我来说没问题。

0 投票
2 回答
2817 浏览

scala - 生成 k 对独立的散列函数

我正在尝试在 Scala 中实现Count-Min Sketch算法,因此我需要生成 k 成对独立哈希函数。

这是一个比我以前编程过的任何东西都低的级别,而且我对哈希函数了解不多,除了算法类,所以我的问题是:我如何生成这些 k 成对独立的哈希函数?

我应该使用像 MD5 或 MurmurHash 这样的哈希函数吗?我是否只生成 k 形式的散列函数f(x) = ax + b (mod p),其中 p 是素数,a 和 b 是随机整数?(即,每个人都在算法 101 中学习的通用散列系列)

我正在寻找比原始速度更简单的东西(例如,如果实现起来更简单,我会慢 5 倍)。

0 投票
2 回答
2723 浏览

c++ - 字典(hash_table)中使用了什么哈希函数?

我正在写语言的解释器。有问题:我想创建类型字典,您可以在其中按索引放置任何类型的值,任何类型的值(简单类型的简单 [int,float,string] 或复杂 [list,array,dictionary] 或复杂的简单类型...)。这与 python-lang 中的相同。我应该使用什么哈希函数算法?

对于字符串,有许多哈希示例 - 最简单的:所有字符的总和乘以 31,除以 HASH_SIZE,即那个简单的数字。

但是对于不同的类型,我认为,它必须是更复杂的算法。我找到了 SHA256,但不知道如何使用“unsigned char [32]”结果类型在哈希表中进行寻址 - 它比计算机中的 RAM 多得多。谢谢你。

0 投票
4 回答
6509 浏览

c++ - 对于 unordered_map,对于具有 3 个无符号字符和一个 int 的结构,什么是好的散列函数?

我只想使用我的结构作为键的 unordered_map,因为我不需要任何排序..但我无法找到自己拥有所有这些哈希的东西..

作为一个相关的问题..当人们比较无序和有序映射时,他们从不谈论哈希函数,那怎么可能?一个糟糕的哈希函数不能让无序映射比映射慢吗?(仅由于散列函数)

}

-edit- a,b,c 只能有值 'a', 'b', 'c' 或 'd', n 在 3 到 60 之间变化。