哈希应用

        Hash,通常翻译成哈希算法,中文也称为散列,即通过一种变换,将非规则的原始数据映射到固定尺度上,从而便于筛选和对比。

        很像一个字典,每一个字的读音、笔画 比较复杂,但是都能够通过页码索引到,这个页码就是我们针对原始数据的映射结果,或者说散列值。

        举个例子,给定一段文字,让你统计出里面里面出现频率最高的10个字。

一. 哈希函数选择

       选择映射方法,这里我们假设对候选的1000个字进行编号,每一个数字对应一个编号:

       “你” ->  125

       “变” ->  778

       “夜” ->  536

       “计” ->  98

       通过这种编号方式,对原始文件进行遍历,我们能够得到对应的编码,记录每一个编码的次数,就能够对你需要的Top10进行描述。

二. 分布式哈希

      上述方法有一个好处,当你需要处理的问题过于庞大时,怎么能够更快处理呢?

      对于服务器端Server,假设我们每个小时都能收到来自用户的上千万条请求,那么如何统计这里面的 Top10 呢?

      看上去这是一个很棘手的问题,但实际上很好解决,构建分布式算法,将1000万条请求分配给1000台机器去做,每台机器处理1万条数据,这样处理过程看上就变得简单多了,在每台机器处理完之后,只需要对这10000个结果进行二次统计即可。

      从概率的角度来分析,往往我们不需要每台机器都去处理 Top10,也许每台都处理 Top1,实际结果总是对的,这也是分布式加速的方案(我们不需要100%精确,只要保证大概的准确率就能满足要求)。

      好了,那就大家准备一个自己遇到的问题,实现一下吧。

你可能感兴趣的:(数学)