algorithm - 从 2^24 值到 2^7 索引的高效映射

标签 algorithm performance search data-structures mapping

我有一个数据结构,其中存储一个 24 位宽的值。我有很多这些对象。

为了最大限度地降低存储成本,我从 2^24 个可能值中计算出 2^7 个最重要的值,并将它们存储在静态数组中。因此,我只需在我的数据结构中为该数组保存一个 7 位索引。

问题是:我得到了这些 24 位值,我必须即时将它们转换为我的 7 位索引(无法进行预处理)。计算基本上是搜索 2^7 个值中最适合的一个。显然,对于大量对象,这需要一些时间。

一个明显的解决方案是创建一个长度为 2^24 的简单字节映射数组。但这需要 16 MB 的 RAM。太多了。

对 16 MB 数组的一个观察:平均有 31 个连续值是相同的。不幸的是,还有许多不同的连续值。


您将如何实现从 24 位值到 7 位索引的转换,从而尽可能节省 CPU 和内存?

最佳答案

如果不知道“最适合”的定义是什么,很难说。也许是 kd-tree将允许根据某种指标或其他指标的接近度进行合适的搜索,以便您快速排除大多数候选人,并且只需要实际测试 2^7 中的一些来查看哪个是最好的?

这听起来类似于图像处理器在缩小到较小的调色板时遇到的问题。我实际上并不知道为此使用了哪些算法/结构,但我确信它们是可查找的,并且可能会有所帮助。

关于algorithm - 从 2^24 值到 2^7 索引的高效映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358867/

相关文章:

python - 有没有比我做的更好的方法来猜测可能的未知变量而不用蛮力?机器学习?

c++ - remove_if and then erase 在 vector 上是否有效?

performance - R 中的执行效率与程序员效率

javascript - 在父级的特定位置查找和元素的最快方法

javascript - 如何在 p5.js 中的点数组之间绘制正方形?

java - Java中的字符串压缩算法

php - 让脚本等待生成稀疏文件

javascript - 如何使用 jQuery 搜索 JSON 树

MySQL find_in_set 与多个搜索字符串

java - Solr 自动提交不起作用