【发布时间】:2013-04-17 15:18:18
【问题描述】:
大家好,我的哈希函数有一个大问题。我试着解释我的问题:
我有一组字符,我想做一个散列函数,因为我想用散列集更改集合,对于每个字符我都有一个索引,所以我现在做什么:
pair --> index p = 1 index a = 2 index i = 3 index r= 4---> 所以我的哈希返回1234
但如果我有
so --> 索引 s = 12 索引 o = 34 ---> 哈希 1234
碰撞!!!!
附: : 我不能按字母数字排序我的字符....
那么,有没有人可以帮助我?非常感谢:)
【问题讨论】:
-
这就是为什么你不应该设计自己的哈希。使用现有的广泛使用的方法有什么问题,例如 md5/sha1?
-
通常这些字符与一些经常被异或的好选择的数字相乘,但你什么也不做……典型的多个数学专家需要一个月的时间来开发一个哈希算法。
-
因为我的集合中还有整数,如果我必须做 to_string 然后将值传递给 md5/sha1 太贵了:(
-
构建哈希比转换更昂贵。根据您的数据结构,您可以简单地散列结构的内存。所以你不需要转换任何东西。
-
不,不相信我...构建哈希仅对大脑来说更昂贵:) 我尝试使用 md5/sha1/superFast...
标签: hash integer collision hashset hash-function