问题标签 [integer-hashing]

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 回答
2581 浏览

java - 对于整数元组,什么是好的散列函数?

我有这个课...

...并且我仅在一个对象中等于iStart和另一个对象中时才定义此类对象之间的相等性。iStopiStartiStop

所以既然我已经覆盖equals()了,我需要覆盖,hashCode()但我不确定如何为这个类定义一个好的散列函数。iStart使用and为此类创建哈希码的好方法是什么iStop

0 投票
3 回答
149 浏览

algorithm - 哈希函数 - 两种不同的含义?

当我们说哈希函数时,我发现它意味着在大多数文章中将键的序列字节转换为 32 位或 64 位无符号整数,例如看到这个

但是,当你实现 hash_table 时,看起来散列函数意味着将一个非常大的整数转换为更小的内部数组索引,而在这个域中,上面提到的“散列函数”的含义变成了键的散列值

  1. 我的理解对吗?
  2. 有人可以提供一些关于将大整数转换为更小的内部数组索引的见解或链接或论文吗?

谢谢

0 投票
3 回答
1201 浏览

c - 哈希中的冲突检查

我对哈希概念有一些理解问题,如下所示:

假设,我已经实现了将键作为数字的哈希表(一维数组,比如A[100] )。我有一个简单的哈希函数H(Key) % Table_Size,它将目标索引返回到哈希表中(同时访问与此特定键关联的值)。

假设,我想将0(键)存储到表中。当我将此键传递给H(哈希函数)时,它会返回随机索引,例如 25。

数组 A 中的这个位置有 2 种可能性(索引为 25):

  1. A[25] 包含除0以外的一些键,已存储(以前)
  2. A[25] 包含0

第一种可能性有冲突并且很容易识别(因为当前密钥:0 和已存储的密钥:k 不同),所以第一个没有问题。

但是,对于第二个,我怎么知道天气是否有碰撞?

据我所知,哈希表或数组将是主内存的一部分。假设 A[25] 存储在内存位置 500 中。

我怎么知道这个位置(500)实际上是的还是已经被其他键填充了?

存储单元的什么状态或值代表EMPTYNULLUNUSED位置?

而且,如果我想将0作为密钥存储到此位置进行碰撞检查怎么办?

我目前假设如果任何内存位置是EMPTYNULLUNUSED,那么它将处于 RESET 状态(所有单元格都是 0)。这是真的 ?

这可能是个愚蠢的问题,但我想知道在这种情况下如何检查碰撞。

--

提前致谢!!(海得拉巴海泰因)

0 投票
2 回答
173 浏览

java - Java:在散列函数溢出方面需要帮助

我正在处理一项任务,我必须将 10,000 个数字散列到负载大小为 0.1、.2 .3 .... 到 0.9 的散列表中。我的问题是我的散列函数给了我一些溢出或类似的东西。如果我对负载因子为 0.5 的表(如 36077(mod)20,000)进行哈希处理,它会给我 16070 作为键。这只发生在高于负载因子的数字上。这是我的散列函数的代码。

谢谢你。

0 投票
1 回答
146 浏览

c++ - 调试断言失败

我正在尝试为学校作业创建自己的哈希类,但是在完成部分任务后,我遇到了一个我无法调试的错误。

当我运行我的项目时,我得到一个“调试断言失败!...表达式:无效的空指针。”

该程序在我的驱动程序文件 (test.cpp) 的第 16 行给出了这个错误。在我看来,指向我的班级的指针不是NULL.

任何有关导致此错误的原因以及如何解决此错误的帮助将不胜感激。

0 投票
1 回答
4231 浏览

python - python:在列表中查找匹配的元组

在另一个 2 元组列表中找到匹配的 2 元组的最快方法是什么?

以下代码看起来效率极低。loc1 和 loc2 是 (x,y) 坐标的元组列表。

我认为散列是关键,但不确定如何在 Python 上做到这一点。请教我一个优雅的代码。谢谢。

0 投票
2 回答
1485 浏览

vb.net - storing highly sensitive data in sql server

I've been looking for finding the best solution to store highly sensitive information like an Amount or a balance in a banking application. Can I store that just as a numeric field or Do I need any encryption to encrypt that data? Am a bit worried about encryptions since these fields are frequently being accessed by the users. So when ever it gets accessed there needs to be some decryption mecahnism and to store back the new balance amount that again needs some encryption. Or is there is a better solution for that.

Database is SQL Server 2008 R2 and the platform is .NET 4.0

0 投票
5 回答
7428 浏览

java - 以与顺序无关的方式散列一组整数

我想散列一组整数,使整数的顺序对计算的散列值没有影响。即H([32224,12232,564423]) == H([564423,32224,12232])

唯一集合的数量将在几百万的范围内。速度非常重要,但我需要知道所选方法的碰撞上限。

维基百科有一个关于散列向量的好部分,但我不理解它背后的数学,无法自信地在代码中实现它们。如果有人可以解释一些代码所涉及的数学,我将不胜感激。理想情况下,我希望最终散列为 32 位。如果它有任何用处 - 我将在 Java 中实现它。

更新:由于性能原因(在很多这样的集合上操作),我特别希望避免对集合中的整数进行排序。

0 投票
0 回答
499 浏览

mac-address - 将 64 位值散列为 32 位 MAC 地址

我正在研究如何将 64 位模具修订字段转换为 32 位 MAC 地址的建议,我可以将其用于无线应用程序以避免冲突。

模具信息是

我不知道坐标的范围,但根据一些样本,我认为坐标限制在 < 256。这有效地减少了 2 个字节的空间。但是这个lot数字是完全填充的。

我要试试这个(伪代码使它可读,我把演员排除在外)

并扔掉 s 的前 16 位lot和 s 的前 8 位coordinate。我觉得也许我应该对lot某个地方的前 16 位进行异或运算,但我在现实世界中没有这方面的经验。

以下是模具修订信息的示例:little endian byte dump

0 投票
4 回答
3049 浏览

java - Java Hashcode 给出整数溢出

背景资料:

在我的项目中,我将强化学习 (RL) 应用于 Mario 领域。对于我的状态表示,我选择使用带有自定义对象的哈希表作为键。我的自定义对象是不可变的,并且覆盖了 .equals() 和 .hashcode() (由 IntelliJ IDE 生成)。

这是生成的 .hashcode(),我在注释中添加了可能的值作为额外信息:

问题:

这里的问题是,上面代码中的结果可能会超过Integer.MAX_VALUE. 我在网上读过这不一定是问题,但在我的情况下是。这部分是由于使用的算法是 Q-Learning(一种 RL 方法)并且取决于存储在哈希表中的正确 Q 值。基本上我在检索值时不会有冲突。在运行我的实验时,我发现结果一点都不好,我 95% 确定问题在于从哈希表中检索 Q 值。(如果需要,我可以详细说明我为什么确定这一点,但这需要一些与问题无关的项目额外信息。)

问题:

有没有办法避免整数溢出,也许我在这里忽略了一些东西?或者是否有另一种方法(可能是另一种数据结构)来相当快地获得给定我的自定义键的值?

评论:

在阅读了一些评论后,我确实意识到我使用 HashTable 的选择可能不是最好的选择,因为我想要不会导致冲突的唯一键。如果我仍然想使用 HashTable,我可能需要正确的编码。