【发布时间】:2014-05-29 20:45:35
【问题描述】:
首先,免责声明;哈希对于我的目标来说是一个有点不准确的术语,请随时提出更好的标题。
无论如何,我目前正在尝试编写一个实时运行的复杂空间算法。为了节省周期,我决定生成一个包含所有 32,000 种可能性的查找表。
如果我按照惯例这样做,值(包括范围和字段计数)2x +0 -> +15 和 3x -2 -> +2 将分别映射到两个四位和三个三位值,给我一个 2 ^ (2*4 + 3*3) = 131,072 个条目的查找表大小,几乎是 410% 的浪费。
鉴于算法的性质,冲突绝对会削弱它的功能(所以没有传统的哈希函数,除非我能保证不会与所有相关值发生冲突)。除此之外,我正在使用的结构相当大(即,我/真的/希望避免分配超过 200% 的我需要的东西)。最后,由于这个表会经常被引用,我想避免传统哈希表在桶查找和过于复杂的哈希函数中的开销。
采用更传统的计算机科学方法后,我开始坚信解决方案在于我完全不知道的一些基本转换数学。知道是否是这种情况吗?
【问题讨论】:
标签: c++ hash lookup lookup-tables