真正支配整個世界的十種算法

前幾天,我在 Reddit 上面閒逛的時候,發現了一篇有趣的文章,名爲《影響咱們世界的十大算法》。做者 George Dvorsky 但願經過此文解釋算法在當今世界上的重要意義,以及哪些算法爲咱們的文明作出突出貢獻。html

 

如今,若是你們對於算法有些涉獵,那麼在讀過文章後的第一個想法極可能是——做者真的知道算法是什麼嗎?或者說 Facebook 新聞源是否屬於算法?由於若是 Facebook 新聞源也是一種算法,那麼咱們幾乎能夠把一切東西都歸結爲算法。所以,我但願在本篇文章中解釋算法的真實定義,然後探討 10 種(或者更多)真正支配着整個世界的算法。算法

 

算法到底是什麼?數據庫

 

直白地講,算法是指一切通過明肯定義的計算過程,其將某個或者某組值做爲輸入內容,併產生某個或者某組值做爲輸出結果。所以,算法表明的是一系列計算步驟,用於將輸入轉換爲輸出。數組

資源來源:Thomas H. Cormen 與 Chales E. Leiserson (2009 年),《算法導論》第 3 版。瀏覽器

 更簡單地總結,咱們能夠將算法視爲一系列用於解決某個任務的步驟(是的,不只僅是計算機會使用算法,人類一樣在使用算法)。就目前的標準來看,算法應當具備如下三大重要特徵才被視爲擁有實際效果:安全

  1. 應該是有限的: 算法應該在有限的時間內用有限的步驟解決掉其旨在解決的問題,也就是說算法必須在有限的時間內能夠完成,要否則就沒有現實意義網絡

     

  2. 應該具備明確的指令: 算法中的每一個步驟必須通過精肯定義 ; 同時應針對每種狀況作出明確說明。機器學習

     

  3. 應該切實有效: 算法應當可以解決其旨在解決的問題。此外,算法應該被證實能夠單純利用紙筆工具實現收斂。函數

此外,須要強調的是算法的應用不只侷限於計算科學,同時它也做爲一種數學實體。事實上,早在公元前 1600 年就已經出現第一條記錄在案的數學算法——巴比倫人發現了最先的已知算法,用於分解平方根。所以,回到文章開頭咱們討論的問題,我讀到的那篇文章將算法視爲計算實體,但若是採起這樣一個更爲寬泛的定義,那麼支配世界的十大算法極可能體現爲算術方法(例如減法、乘法等)工具

可是,若是採起咱們在本文中作出的算法定義,那麼問題仍然存在:支配世界的十種算法究竟有哪些?在這裏,我列出一份小小的清單,排名不分前後。

1. 合併排序,快速排序與堆排序

 

 

對元素進行排序的最佳算法是什麼?具體答案取決於你的實際須要,所以我把這三種比較經常使用的排序算法列爲同一類 ; 也許你更偏心其中一種,但事實上三者都很是重要。

 

其中合併排序算法是迄今爲止咱們所擁有的最爲重要的算法之一。這是一種基於比較的排序算法,以分治的方法解決本來時間複雜度爲 O(n^2) 的問題。該算法由數學家 John von Neumann 於 1945 年發明得出。

 

快速排序是另外一種用於解決排序問題的方法,其可以實現就地分區,一樣屬於一類分而治之的算法。該算法的問題在於其在排序方面並不穩定,但在對基於內存的數組進行排序時表現出色。

 

最後是堆排序算法,其利用優先級隊列來減小數據中的搜索時間。該算法一樣屬於就地算法,且一樣不屬於穩定排序。

 

這些算法相較於咱們以前使用過的其它方法(例如冒泡排序)有了很大的改進。事實上,正是因爲這些算法的出現,咱們才得以迎來數據挖掘、人工智能等網絡上常見的衆多現代計算工具。

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

 

 整個數字世界都在使用這些簡單但很是強大的算法,這些算法可以將信號從時域轉換爲頻域,反之亦然。事實上,正是因爲這些算法的存在,本篇文章才能被更多朋友所看到。

互聯網、Wi-Fi、智能手機、電話、計算機、路由器以及衛星等幾乎一切具備內置計算裝置的設備都會以這樣或者那樣的方式使用這些算法以保持運行。若是不研究這些重要的算法,你們也不可能拿下電子學、計算機或者通訊科學學位。

 3. 迪傑斯特拉算法(又譯戴克斯特拉算法)

 

 

實事求是地講,若是沒有這種算法,互聯網根本沒法像今天這樣保持高效運做。這種圖搜索算法具備多種應用方式,可以將須要解決的問題建模爲圖,並在其中找到兩個節點間的最短路徑。

 

今天,雖然咱們已經擁有更好的最短路徑問題解決方案,但迪傑斯特拉算法仍然在強調穩定性的衆多系統當中獲得普遍應用。

 4. RSA 算法

若是沒有加密與網絡安全機制做爲保障,互聯網的重要程度不可能達到現在的水平。你們可能會想「胡說,國家安全局局和衆多情報機構的監控早就毀掉了互聯網安全」或者「互聯網根本就沒有安全可言,傻子纔會相信這種安全宣傳」; 但必須認可,大多數人仍然具備必定程度的安全信心,不然你根本就不會經過互聯網進行消費。畢竟若是真的否認現有網絡體系的安全性,誰會願意在 Web 服務中輸入本身的信用卡號碼?

 

在密碼學領域,有一種算法仍然是目前世界上最重要的算法之一,這就是 RSA 算法。該算法由 RSA 公司的創始人們開發而成,使得密碼學成果得以供世界上的每一個人隨意使用,甚至最終塑造了當今密碼學技術的實現方式。RSA 算法但願解決的問題是如何在獨立平臺及最終用戶之間共享公鑰,從而實現加密(固然,我認爲 RSA 算法並沒能完全解決這個問題,從業者們還須要在這個方向上投入更多努力)

5. 安全哈希算法

這實際上並非真正的算法,而是由 NIST(美國國家標準技術研究所)所開發的一系列加密散列函數。然而,該算法家族對於世界秩序的維持起到了相當重要的做用。從應用程序商店、電子郵件、防病毒軟件再到經常使用的網絡瀏覽器,這一切都在使用這類算法(實際上,使用的是由這類算法生成的哈希值),用以肯定你所下載的是否正是你但願得到的內容,或者你是否已經成爲中間人攻擊或者網絡釣魚攻擊的受害者。

 6. 整數分解

這是一種在計算領域被大量採用的數學算法。若是沒有這種算法,密碼學技術的安全水平將受到嚴重破壞。該算法用於將複合數的質數因子分解爲較小的非零因數。這也被稱爲 FNP 類問題,屬於 NP 類問題的擴展,且解決難度極高。

 

不少加密協議都以分解大型複合整數或相關問題的難度爲基礎——RSA 算法就是其中的典型表明。正是因爲對任意整數進行因子分解的難度極高,才使得基於 RSA 的公鑰加密機制擁有較高的安全性水平。

 

量子計算的誕生大大下降了此類問題的解決難度,並開闢出一個全新的科學研究領域——利用量子特性保障系統安全。

7. 連接分析

 

 

在互聯網時代下,分析不一樣實體間的關係固然很是重要。從搜索引擎到社交網絡再到營銷分析工具,每一方都在努力發現隨着時間推移而不斷變化的互聯網結構。

 

連接分析能夠說是普羅大衆眼中最神祕也最難以理解的算法之一。問題在於,咱們能夠經過多種不一樣方法實現連接分析,並且多種特徵的存在使得每種算法間都存在着必定差別(容許對算法申請專利),但其底層基礎卻又高度類似。

 

連接分析背後的基本思路很是簡單,即容許使用者以矩陣的形式表示圖形,從而將其轉化爲特徵值問題。這一特徵值能夠爲咱們提供衡量圖形結構以及各節點相對重要性的好方法。該算法由 Gabriel Pinski 與 Francis Narin 於 1976 年發明得出。

 

那麼,誰在使用這一算法?谷歌公司須要進行網頁排名,Facebook 須要發佈新聞提要(所以,咱們將 Facebook 的新聞源服務視爲算法結果,而非算法自己),Google+ 與 Facebook 的好友推薦,LinkedIn 的工做崗位與聯繫人推薦,Netflix 與 Hulu 的影視關聯、YouTube 的相關視頻等等皆屬於這一類。雖然其各自擁有不一樣的目標與參數組合,但背後的數學原理倒是相通的。

 

最後,我想強調一點,雖然不少人認爲谷歌公司彷佛是第一家使用這種算法的企業,但早在 1996 年(谷歌公司誕生的兩年以前),由 Robin Li 開發的 RankDex 小型搜索引擎已經開始利用這一基本思路進行頁面排名。最終,HyperSearch 的創始人 Massimo Marchiori 也開始使用這種基於單頁間關係的頁面排名算法。(谷歌在其申請的專利當中提到了這兩位奠定者。)

8. 比例微積分算法

 

 

你們應該都體驗過飛機、汽車、衛星服務或者手機網絡吧?有些朋友還在工廠當中看到過機器人設備。若是是這樣,那麼你已經見識到了這一算法的威力。

 

該算法旨在利用控制迴路反饋機制以最大程度控制指望輸出信號與實際輸出信號間的偏差。其適用於一切存在信號處理需求的場景,包括以自動化方式經過電子技術控制的機械、液壓或者熱力系統。

 

也能夠說,若是沒有這種算法,那麼咱們的現代文明將無從談起。

9. 數據壓縮算法

很難肯定哪一種壓縮算法的重要性最高,由於根據實際應用需求,你們使用的算法可能包括 zip、mp3 乃至 JPEG 以及 MPEG-2 等等。但相信你們都能清晰地感覺到這些算法在各種結構中的重要做用。

 

除了最直觀的文件壓縮以外,你們還能在哪裏看到壓縮算法的蹤跡?很明顯,網頁會利用數據壓縮技術控制你須要下載的文件體積,此外視頻遊戲、視頻、音樂、數據存儲、雲計算以及數據庫等也都是數據壓縮算法大顯身手的舞臺。能夠說,萬事萬物都離不開數據壓縮,這類算法的存在使得系統可以以成本更低且效率更高的方式爲用戶服務。

10. 隨機數生成算法

 

 

今天,咱們尚未「真正的」隨機數生成器,但已經擁有衆多徹底能夠知足需求的僞隨機數生成器。這些算法普遍存在於互連連接、加密、安全哈希算法、視頻遊戲、人工智能、優化、問題條件初始化以及財務等領域。

 

最後,我想補充一點:這份清單隻表明一種觀點,而非真正全面的列表。由於在機器學習、矩陣乘法以及分類等領域還存在着諸多堪稱文明社會根基的重要算法,而我在本文中並無明確說起。

轉載https://www.huxiu.com/article/267404.html?rec=manual

相關文章
相關標籤/搜索