《算法图解》 第11章 简介一些算法

一些有趣的算法:

   回顾 数组+二分查找  简介了  二叉查找树(binary search tree)的数据结构.

   反向索引  很有用的数据结构: 一个散列表,将单词映射到包含它的页面。这种数据结构被称为反向索引(inverted index),常用于创建搜索发动机。

   傅里叶变换非常适用于处理信号,可使用它来压缩音乐。首先将音频文件分解为音符,傅里叶变换能准确地指出各个音符对整个歌曲的贡献,让你能够把不重要的音符删除。这就是MP3的工作原理。JPG也是一种压缩格式,也用到了上述的工作原理。

    可扩展性与海量处理:

            并行算法,多核也难以多倍提升速度:

              并行性管理开销。

              负载均衡。

           特殊的算法——分布式算法MapReduce:

                   映射(map)函数:

                   归并(reduce)函数:

     布隆过滤器和HyperLogLog(占用内存空间少,预测结果比较准确,用来处理海量数据):

             布隆过滤器是概率型数据结构

                     可能错报  报搜集过实际上未搜集

                     不可能漏报   举例;这个网站未搜集就肯定未搜集

             HyperLogLog  一种类似于布隆过滤器的算法:

    SHA算法  (局部不敏感,稍微修改就会生成大不同的散列值):

             安全散列算法(secure hash algorithm,SHA)函数   根据一个字符串生成另一个字符串(散列值)   

             密码登录 时,可以通过比较散列值。存储在 数据库中的 散列值 和  用户密码生成的 散列值 做比较

        simhash   (局部敏感,可以查重文章之类的)

   Diffie-Hellman密钥交换

       双方无需知道加密算法,不必会面协商要使用的加密算法

       要破解加密的消息比登天还难

       Diffie-Hellman:公钥和私钥。

             公钥加密再发布,接收的人用私钥进行解密得知解密信息。替代者为RSA。

  线性回归:

           线性规划用于在给定约束条件下最大限度地改善指定的指标。

           所有的图算法都可以用线性规划来实现。线性规划师宽泛得多的框架,图问题只是其中的一个子集。

          线性规划使用simplex算法,这个算法比较复杂,此书没有介绍。

       

猜你喜欢

转载自blog.csdn.net/qq_41109499/article/details/84449119