gpt4 book ai didi

algorithm - 计算一组点的哈希码的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:35:43 26 4
gpt4 key购买 nike

我正在寻找为一组二维点计算哈希码的最佳方法(以便我可以将多边形存储在哈希表中)。

有一些明显的方法可以做到这一点,例如将所有点坐标连接到一个字符串及其哈希码中,但这会非常慢。

在速度/碰撞范围的另一端,例如,我还可以汇总所有坐标,这会产生非常快的代码,但也会产生很多碰撞。

为一组点计算哈希码的最佳方法是什么

如果坐标是整数(相对于实坐标),最优解是否不同?

编辑:我使用的是 .net,所以哈希码应该是 32 位长。

最佳答案

这项工作没有最佳方法。这完全取决于您能负担得起多大的哈希值。你必须在速度和扩散之间做出权衡。请记住,没有最佳解决方案(如果您不完全知道要散列的内容),在某些情况下 xor 就足够了。

以这段代码为例

unsigned int JSHash(char* str, unsigned int len)
{
unsigned int hash = 1315423911;
unsigned int i = 0;

for(i = 0; i < len; str++, i++)
{
hash ^= ((hash << 5) + (*str) + (hash >> 2));
}

return hash;
}
/* End Of JS Hash Function */

你说把点聚集在一起很慢。如果你修复上层代码,它不需要任何类型的聚合,只需传递 trought(与总和没有太大区别)如果你使用整数和 float ,你可能会修复移位(<< 和 >> 是移位操作,它们一起工作就像按位旋转)以适合您的数据类型。

在此处检查其他哈希函数: http://www.partow.net/programming/hashfunctions/

关于algorithm - 计算一组点的哈希码的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1284296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com