【问题标题】:An algorithm to checking a list without having the whole list items一种在没有整个列表项的情况下检查列表的算法
【发布时间】:2019-05-23 04:49:57
【问题描述】:

如果没有整个列表,我如何检查一个巨大的列表中是否存在特殊元素? 例如,我们有一个十六进制数字列表,然后我想通过网络发送它我需要一个替代相关的东西来通过网络发送它,接收者只需检查列表中是否包含一些项目,而无需了解整个项目并阅读它们或列表的排序。

我认为我们可以使用整个列表的哈希并打破它来搜索元素或使用某种压缩算法来最小化列表并检查该元素。

出于安全原因,最好是无法读取整个数据,只能检查项目是否存在,传输海岸的大小最小,出于性能原因,存在检查速度最快。

【问题讨论】:

    标签: algorithm list hash cryptography compression


    【解决方案1】:

    是的,您可以这样做,如果每个项目都有唯一的 ID,那么您可以使用 hashList。 hashList 是一个列表,每个项目都由一个键索引。

    原理很简单,hashList会计算key的hash,然后用这个hash来确定对象要保存的内存地址。

    所以,如果你想知道 list 是否包含一个元素,你只需要 O(1) 使用 key。

    【讨论】:

    • 困难在于没有唯一的ID。项目是随机长数字(非对称加密算法的私钥),唯一的唯一属性是十六进制密钥编号及其 sha256 哈希。
    【解决方案2】:

    布隆过滤器是非常接近的解决方案,但它在不存在可能返回但不存在但存在时准确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2011-12-20
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多