主宰這個世界的10大演算法

主宰這個世界的10大演算法

主宰這個世界的10大演算法


資料來源: https://mp.weixin.qq.com/s/RGyliuW4dOeQbwXTetS_-w


什麼是演算法?

簡而言之,任何定義明確的計算步驟都可稱為演算法,接受一個或一組值為輸入,輸出一個或一組值。(來源:homas H. Cormen, Chales E. Leiserson 《演算法導論第3版》)

可以這樣理解,演算法是用來解決特定問題的一系列步驟(不僅電腦需要演算法,我們在日常生活中也在使用演算法)。演算法必須具備如下3個重要特性:

有窮性,執行有限步驟後,演算法必須中止。
確切性,演算法的每個步驟都必須確切定義。

可行性,特定演算法須可以在特定的時間內解決特定問題。


01. 歸併排序(MERGE SORT)、快速排序(QUICK SORT)和堆積排序(HEAP SORT)

02. 傅立葉轉換和快速傅立葉轉換- 這兩種演算法簡單,但卻相當強大,整個數位世界都離不開它們,其功能是實現時間域函數與頻率域函數之間的相互轉化。能看到這篇文章,也是托這些演算法的福。

03. 狄克斯特拉演算法 (Dijkstra’s algorithm)- 可以這樣說,如果沒有這種演算法,網際網路肯定沒有現在的高效率。只要能以“圖”模型表示的問題,都能用這個演算法找到“圖”中兩個節點間的最短距離。雖然如今有很多更好的方法來解決最短路徑問題,但狄克思特拉演算法的穩定性仍無法取代。

04. RSA非對稱加密演算法-毫不誇張地說,如果沒有這個演算法對金鑰學和網路安全的貢獻,如今網際網路的地位可能就不會如此之高。現在的網路毫無安全感,但遇到錢相關的問題時我們必需要保證有足夠的安全感,如果你覺得網路不安全,肯定不會傻乎乎地在網頁上輸入自己的銀行卡資訊。RSA演算法,金鑰學領域最牛叉的演算法之一,由RSA公司的三位創始人提出,奠定了當今的金鑰研究領域。用這個演算法解決的問題簡單又複雜:保證安全的情況下,如何在獨立平臺和用戶之間分享金鑰。

05. 雜湊安全演算法(Secure Hash Algorithm)- 確切地說,這不是一種演算法,而是一組加密雜湊函數,由美國國家標準技術研究所首先提出。無論是你的應用商店,電子郵件和殺毒軟體,還是流覽器等等,都使用這種演算法來保證你正常下載,以及是否被“中間人攻擊”,或者“網路釣魚”。

06. 整數質因數分解演算法(Integer factorization)- 這其實是一個數學演算法,不過已經廣泛應用與電腦領域。如果沒有這個演算法,加密資訊也不會如此安全。通過一系列步驟將,它可以將一個合成數分解成不可再分的數因數。很多加密協定都採用了這個演算法,就比如剛提到的RSA演算法。

07. 連結分析演算法(Link Analysis)- 在網際網路時代,不同入口間關係的分析至關重要。從搜尋引擎和社交網站,到市場分析工具,都在不遺餘力地尋找網際網路的正真構造。

08. 比例微積分演算法(Proportional Integral Derivative Algorithm)- 飛機,汽車,電視,手機,衛星,工廠和機器人等等事物中都有這個演算法的身影。簡單來講,這個演算法主要是通過“控制回路回饋機制”,減小預設輸出信號與真實輸出信號間的誤差。只要需要信號處理,或電子系統來控制自動化機械,液壓和加熱系統,都需要用到這個算個法。

09. 資料壓縮演算法-資料壓縮演算法有很多種,哪種最好?這要取決於應用方向,壓縮mp3,JPEG和MPEG-2檔都不一樣。哪裡能見到它們?不僅僅是資料夾中的壓縮檔。你正在看的這個網頁就是使用資料壓縮演算法將資訊下載到你的電腦上。除文字外,遊戲,視頻,音樂,資料儲存,雲計算等等都是。它讓各種系統更輕鬆,效率更高。

10. 亂數產生演算法-到如今,電腦還沒有辦法生成“正真的”亂數,但偽亂數產生演算法就足夠了。這些演算法在許多領域都有應用,如網路連接,加密技術,安全雜湊演算法,網路遊戲,人工智慧,以及問題分析中的條件初始化。