当前位置: 首页 > 知识库问答 >
问题:

设计具有有限冲突的哈希函数

何兴邦
2023-03-14

这里是我需要完成的,但是我刚开始哈希&甚至不知道从哪里开始。有人能帮帮我吗?

对由5个字符(A-Z和A-Z中的字符)组成的文本词设计一个名为Bailando的哈希函数。

  1. 提供一个算法(一组操作)来生成哈希函数的输出。尝试提出一个看起来没有冲突的哈希设计。
  2. 什么是基于您的设计的Bailando(“hello”)、Bailando(“three”)和Bailando(“olleh”)。
  3. 是否可以在哈希设计中找到任何两个产生冲突的5个字符的单词?
  4. 如何改进功能以减少冲突次数?

共有1个答案

花烨
2023-03-14

a-z a-z表示52个可能不同的字符,因此可以以6位存储。5个字符可以存储30位,这样5字符字可以很容易地转换成一个整数。在ascii中,所有有效字符都在64-128之间,因此下面的代码将起作用:

int hash = 0;
for (int i=0;i<5;i++)
   hash = hash<<6 + ((int)str[i])>>6;
 类似资料:
  • 我正在使用这个散列函数,但是我会遇到很多冲突。目的是添加元素的ascii值并输出该值。有什么方法可以优化这个或另一个功能来减少碰撞的次数?

  • 问题内容: HashMap中的Hash Collision或Hashing Collision并不是一个新话题,我遇到了多个博客和讨论区,解释了如何产生Hash Collision或如何以模棱两可和详细的方式避免它。我最近在一次采访中遇到了这个问题。我有很多事情要解释,但我认为准确地给出正确的解释真的很困难。抱歉,如果我在这里重复我的问题,请给我准确的答案: 哈希冲突到底是什么?它是一项功能或常见

  • 我试图故意制造碰撞。 所以,我有和对象。我已经覆盖了Country的和方法,以便: india.hash代码()==india2.hash代码() 根据JavaHashMap中的冲突解决方案和文章“让这个国家对象在hashmap中”的一部分,如果key1的结果等于key2上的相同操作,那么应该会有冲突。 所以,我放置断点来查看的内容,并查看它的是2。也就是说,它包含两个不同的条目,并且没有link

  • 我已经读过hashtable的各种变体,但我不清楚哪种更适合内存不足的系统(我们有一个内存限制) 线性/二次探测适用于稀疏表<我认为双重散列在这方面与二次散列相同 外部链接与群集无关 我检查过的大多数教科书似乎都假设总会有额外的空间可用,但实际上,在我看到的大多数示例实现中,由于哈希表从未减半,因此占用的空间比实际需要的要多得多 那么,当我们想充分利用内存时,哈希表的哪种变体最有效? 更新: 所以

  • 使用: 所有类都在中生成,在中没有类。没有-p开关,所有xsd都是在它们自己的默认包中生成的。但无法告诉wsimport为每个XSD使用特定的包。现在我使用以下绑定文件,这可能是不正确的,但wsimport对此没有抱怨: 在包org.broker.wsi.b_2和org.broker.wsi.t_1中,不生成任何文件。 欢迎提出建议。

  • 在令牌冲突的情况下,如何定义ANTLR lexer行为?让我解释一下“冲突”标记的含义。例如,假设定义了以下内容: 这里有一个冲突,因为在读取一系列数字后,lexer将不知道是有一个INT还是多个INT\u阶段标记(或两者的不同组合)。测试之后,如果INT是在INT\u阶段之后定义的,那么lexer会更喜欢查找INT\u阶段,但可能不是INT?否则,将找不到INT\u阶段。 另一个例子是: 我被告