我正在尝试对这些值进行哈希处理10, 100, 32, 45, 58, 126, 3, 29, 200, 400, 0 我需要一个函数,将它们映射到一个大小为13的数组中而不会引起任何碰撞。 我花了几个小时思考并搜索,但无法解决。我还没有接近可行的解决方案。 我该如何找到这种类型的哈希函数...
我希望您能够快速处理一定范围内的字符串,并计算它们的值。输入文件的格式如下: January 7 March 22 September 87 March 36 等等。由于行宽度相同,我可以使用fread快速读取一行,并且我已经开发了一个完美的哈希函数,但我想看看是否...
考虑一个带有以下签名的查找函数,需要为给定的字符串键返回一个整数: int GetValue(string key) { ... } 此外,需要考虑的是,当编写函数的源代码时,已经预先知道了键值映射和编号N,例如: // N=3 { "foo", 1 }, { "bar", 42 },...
我最近阅读了这篇文章《扔掉钥匙:易用、极简完美哈希》,讲述了如何为已知的键集生成极简完美哈希表。 该文章似乎假定您需要一个中间表。如果我们假设键集很小(即<64),是否有其他更简单的方法来生成这样的函数? 在我的案例中,我想将一组线程ID映射到数组中的唯一数据块。线程在哈希函数生成之...
我有10^8个在范围[0; 2^63-1]内的随机整数。这些整数没有重复。完整的列表在编译时已知,但它只是唯一的随机数。这些数字永远不会改变。 为了显式存储一个整数,需要8个字节,并且每个整数有一个关联的1字节值,因此显式存储需要约860 MB。 因此,我想找到一个最小的完美哈希函数,将[...
我想了解如何将短的ASCII字符串转换为数字(int、float或数字字符串)。我看到这里的帖子中提到了完美哈希,似乎是我需要的。然而,我对此的数学理解还不够。 你如何将ASCII字符串转换为数字序列,然后再转回字符串? 顺便说一句,将字符串分解为其ASCII字符数字很容易。 fore...
我正在尝试使用编译时生成的数组来实现快速函数调度器,以便在运行时使用O(1)。这里是一些代码以澄清: template<int i> void f() { // do stuff } // specialized for every managed integer...
我想创建一个哈希映射(或其他结构,如果您有任何建议)来存储键值对。在创建地图的同时,所有键将一次性插入,但我不知道键是什么(任意长度的字符串),直到运行时需要创建地图。 我正在解析类似于这样的查询字符串"x=100&name=bob&color=red&y=150"(...
我有一个整数类型 long,其值介于 Long.MIN_VALUE = 0x80...0 (-2^63) 和 Long.MAX_VALUE = 0x7f...f (2^63 - 1) 之间。我希望以干净高效的方式将其哈希为同类型的正整数(即介于 1 和 Long.MAX_VALUE 之间),并...
在阅读维基百科上的 鸽笼原理时,我发现 - "在哈希表中不可避免地会发生冲突,因为可能的键的数量超过了数组中索引的数量。没有任何聪明的哈希算法可以避免这些冲突"。但是gperf难道不正是在做这件事吗? 请解惑。