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

2022-07-01 04:15:09 字數 3166 閱讀 5316

原文:

譯者:claudio

reddit有篇帖子介紹了演算法對我們現在生活的重要性,以及哪些演算法對現代文明所做貢獻最大。如果對演算法有所了解,讀這篇文章時你可能會問「作者知道演算法為何物嗎?」,或是「facebook的『資訊流』(news feed)算是一種演算法嗎?」,如果「資訊流」是演算法,那就可以把所有事物都歸結為一種演算法。才疏學淺,結合那篇帖子,接下來我試著解釋一下演算法是什麼,又是哪10個演算法正在主導我們的世界。

什麼是演算法?

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

[1]有窮性。執行有限步驟後,演算法必須中止。

[2]確切性。演算法的每個步驟都必須確切定義。

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

其實,演算法雖然廣泛應用在計算機領域,但卻完全源自數學。實際上,最早的數學演算法可追溯到西元前2023年-babylonians有關求因式分解和平方根的演算法。

那麼又是哪10個計算機演算法造就了我們今天的生活呢?請看下面的表單,排名不分先後

1. 歸併排序(merge sort),快速排序(quick sort)和堆積排序(heap sort)

哪個排序演算法效率最高?這要看情況。這也就是我把這3種演算法放在一起講的原因,可能你更常用其中一種,不過它們各有千秋。

歸併排序演算法,是目前為止最重要的演算法之一,是分治法的乙個典型應用,由數學家john von neumann於2023年發明。

快速排序演算法,結合了集合劃分演算法和分治演算法,不是很穩定,但在處理隨機列陣(am-based arrays)時效率相當高。

堆積排序,採用優先佇列機制,減少排序時的搜尋時間,同樣不是很穩定。 與早期的排序演算法相比(如冒泡演算法),這些演算法將排序演算法提上了乙個大台階。也多虧了這些演算法,才有今天的資料發掘,人工智慧,鏈結分析,以及大部分網頁計算工具。

2. 傅利葉變換和快速傅利葉變換

這兩種演算法簡單,但卻相當強大,整個數字世界都離不開它們,其功能是實現時間域函式與頻率域函式之間的相互轉化。能看到這篇文章,也是託這些演算法的福。

網際網路,wifi,智慧型機,座機,電腦,路由器,衛星等幾乎所有與計算機相關的裝置都或多或少與它們有關。不會這兩種演算法,你根本不可能拿到電子,計算機或者通訊工程學位。(usa)

3.代克思托演演算法 (dijkstra's algorithm)

可以這樣說,如果沒有這種演算法,網際網路肯定沒有現在的高效率。只要能以「圖」模型表示的問題,都能用這個演算法找到「圖」中兩個節點間的最短距離。

雖然如今有很多更好的方法來解決最短路徑問題,但代克思托演演算法的穩定性仍無法取代。

4. rsa非對稱加密演算法

毫不誇張地說,如果沒有這個演算法對金鑰學和網路安全的貢獻,如今網際網路的地位可能就不會如此之高。現在的網路毫無安全感,但遇到錢相關的問題時我們必需要保證有足夠的安全感,如果你覺得網路不安全,肯定不會傻乎乎地在網頁上輸入自己的銀行卡資訊。

rsa演算法,金鑰學領域最牛叉的演算法之一,由rsa公司的三位創始人提出,奠定了當今的金鑰研究領域。用這個演算法解決的問題簡單又複雜:保證安全的情況下,如何在獨立平台和使用者之間分享金鑰。

5. 雜湊安全演算法(secure hash algorithm)

6. 整數質因子分解演算法(integer factorization)

這其實是乙個數學演算法,不過已經廣泛應用與計算機領域。如果沒有這個演算法,加密資訊也不會如此安全。通過一系列步驟將,它可以將乙個合成數分解成不可再分的數因子。很多加密協議都採用了這個演算法,就比如剛提到的rsa演算法。

7. 鏈結分析演算法(link analysis)

在網際網路時代,不同入口間關係的分析至關重要。從搜尋引擎和社交**,到市場分析工具,都在不遺餘力地尋找網際網路的正真構造。

鏈結分析演算法一直是這個領域最讓人費解的演算法之一,實現方式不一,而且其本身的特性讓每個實現方式的演算法發生異化,不過基本原理卻很相似。

鏈結分析演算法的機制其實很簡單:你可以用矩陣表示一幅「圖「,形成本徵值問題。本徵值問題可以幫助你分析這個「圖」的結構,以及每個節點的權重。這個演算法於2023年由gabriel pinski和francis narin提出。

普遍認為google是首先使用這類演算法的機構,不過其實早在2023年(google問世2年前)李彥巨集就建立的「rankdex」小型搜尋引擎就使用了這個思路。而hyper search搜尋演算法建立者馬西莫·馬奇奧裡也曾使用過類似的演算法。這兩個人都後來都成為了google歷史上的傳奇人物。

8. 比例微積分演算法(proportional integral derivative algorithm)

飛機,汽車,電視,手機,衛星,工廠和機械人等等事物中都有這個演算法的身影。

簡單來講,這個演算法主要是通過「控制迴路反饋機制」,減小預設輸出訊號與真實輸出訊號間的誤差。只要需要訊號處理,或電子系統來控制自動化機械,液壓和加熱系統,都需要用到這個算個法。沒有它,就沒有現代文明。

9. 資料壓縮演算法

資料壓縮演算法有很多種,哪種最好?這要取決於應用方向,壓縮***,jpeg和mpeg-2檔案都不一樣。

10. 隨機數生成演算法

到如今,計算機還沒有辦法生成「正真的」隨機數,但偽隨機數生成演算法就足夠了。這些演算法在許多領域都有應用,如網路連線,加密技術,安全雜湊演算法,網路遊戲,人工智慧,以及問題分析中的條件初始化。

這個表單並不完整,很多與我們密切相關的演算法都沒有提到,如機器學習和矩陣乘法。另外,知識有限,如有批漏,還望指正。

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

2014 5 31 14 18 發布者 linux 檢視 125 收藏 0 分享 4 摘要 reddit有篇帖子介紹了演算法對我們現在生活的重要性,以及哪些演算法對現代文明所做貢獻最大。如果對演算法有所了解,讀這篇文章時你可能會問作者知道演算法為何物嗎?或是facebook的資訊流 news fee...

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

可以這樣理解,演算法是用來解決特定問題的一系列步驟 不僅計算機需要演算法,我們在日常生活中也在使用演算法 演算法必須具備如下3個重要特性 1 有窮性。執行有限步驟後,演算法必須中止。2 確切性。演算法的每個步驟都必須確切定義。3 可行性。特定演算法須可以在特定的時間內解決特定問題,其實,演算法雖然廣...

主宰全球的10大演算法

編者按 reddit有篇帖子介紹了演算法對我們現在生活的重要性,以及哪些演算法對現代文明所做貢獻最大。這個表單並不完整,很多與我們密切相關的演算法都沒有提到,如機器學習和矩陣乘法,歡迎你繼續補充。如果對演算法有所了解,讀這篇文章時你可能會問 作者知道演算法為何物嗎?或是 facebook的 資訊流 ...