《比較未來的九大算法》是一本輕鬆的書,基本上是在手機上看完的。這本書算是一本科普書,我也確實從這裏邊知道了不少東西,不過還只是一些粗淺的認識,所以寫個筆記。
Papage Rank和搜索引擎: 這兩個技術其實是相關性很大的,Page Rank相當於一個相關度排序的算法。搜索引擎其實就是根據索引來尋找資源。想要深度的瞭解這些東西,可以去學習Lucene,這是一個開源的項目。
公鑰加密: 公鑰加密適用的場合非常多,現在的https好像就是使用的公鑰加密。網絡上的公鑰加密和生活中的傳遞明信片是類似的。不過,我們希望明信、片的內容只被收件人看到。作者介紹了迪菲-赫爾曼密鑰交換,下面是密鑰交換的過程:- 愛麗絲與鮑伯協定使用 p=23以及base g=5.
- 愛麗絲選擇一個祕密整數a=6, 計算A = ga mod p併發送給鮑伯。
- A = 56 mod 23 = 8.
- 鮑伯選擇一個祕密整數b=15, 計算B = gb mod p併發送給愛麗絲。
- B = 515 mod 23 = 19.
- 愛麗絲計算s = B a mod p
- 196 mod 23 = 2.
- 鮑伯計算s = A b mod p
- 815 mod 23 = 2.
如果 p 是一個至少 300 位的質數,並且a和b至少有100位長, 那麼即使使用全人類所有的計算資源和當今最好的算法也不可能從g, p和g^a mod p 中計算出 a。這個問題就是著名的離散對數問題。
糾錯碼: 糾錯碼的本質就是利用冗餘信息來發現傳輸錯誤。常見的什麼奇偶校驗、CRX校驗還有哈希算法校驗。定位算法可以一定程度上的糾正一些錯誤,但是不可能糾正任何情況下的錯誤。
數據壓縮: 數據壓縮分爲有損壓縮和無損壓縮。比較常見的方法有形成長度編碼,簡單來說,就是把AAAA改記爲A4;還有同前把戲,就是“back *, copy *”的編碼方式;更短符號法就是把最常用的符號用更短的編碼記錄,這樣總體的信息長度就可以縮短了。有損壓縮主要是圖像、音像文件的壓縮了,這個比較好理解。數字簽名:RSA是一個常用的數字簽名算法。RSA算法非常簡單,概述如下: 找兩素數p和q 取n=p*q 取t=(p-1)*(q-1) 取任何一個數e,要求滿足e<t並且e與t互素(就是最大公因數爲1) 取d*e%t==1 這樣最終得到三個數: n d e 設消息爲數M (M <n) 設c=(M**d)%n就得到了加密後的消息c 設m=(c**e)%n則 m == M,從而完成對c的解密。 注:**表示次方,上面兩式中的d和e可以互換。