我现在面临一个使用散列的应用程序,但我仍无法弄清楚它是如何工作的。这里是我的问题,哈希是用来生成一些指标,以及与这些指标我访问到不同的表后,我补充一点,我开始使用索引每个表的价值,并与我得到我的最终值。这样做是为了减少对内存的要求。输入到散列函数是做一个随机数恒定并从应用程序的某些参数之间的XOR。

这是一个典型的散列应用?我不明白的事情是我们如何使用散列可以减少对内存的要求?任何人都可以阐明此?

感谢您

有帮助吗?

解决方案

单独哈希没有任何与记忆。

什么它通常用于是一个哈希表。哈希表的工作由计算散列的你正在键控关闭的,然后将其用于作为一个指数到的数据结构。

散列允许你减小键(字符串等)转换成像的整数更紧凑的值或一组位。

这可能是你指的是内存的储蓄 - 减少了大量关键,简单的整数

请注意,虽然,哈希不是唯一的!一个好的散列算法最小化的碰撞,但它们并非旨在以减少为唯一值 - 这样做是不可能的(例如,如果你的散列输出一个32位的整数,你的散列将只有2 ^ 32个唯一值)

其他提示

这是个布隆过滤器你在说什么?它使用散列函数来获得空间有效的方式来测试集的成员资格。如果是,则看到的链接进行说明。

最好的哈希实现是存储器低效的,否则将有更多的计算涉及 - 这将准确地丢失散列点

散列实现方式用于处理效率,因为它们会向您提供恒定的运行时间对于像插入,删除和检索操作。

您可以考虑一下在您的所有数据,不管是什么类型或大小,总是在一个固定长度的形式来表示一个单向散列的质量。

如果正在进行的散列这可以解释为不是构建真哈希表,但只创建一个字符串/存储器块表中的索引。如果你在你的数据有相同的字符串(或存储序列)20次,然后您更换字符串只是其散列/表索引的所有20个实例,可以实现这样的数据压缩。如果有包含在表中的每个哈希值的实际冲突链,但是,那么我刚才所描述的是不是发生了什么事情;在这种情况下,对于散列的原因很可能是加快执行(通过提供快速访问存储的值),而不是压缩。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top