1. 程式人生 > >《演算法圖解》 第11章 簡介一些演算法

《演算法圖解》 第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演算法,這個演算法比較複雜,此書沒有介紹。