十個改變了計算機世界的演算法,你知道幾個?
演算法的出現幫助我們解決了生活中很多常見的問題,讓一些事看起來沒有那麼的複雜。今天小千就來給大家介紹十個改變了計算機世界的演算法。
什麼是演算法?
簡而言之,任何定義明確的計算步驟都可稱為演算法,接受一個或一組值為輸入,輸出一個或一組值。(來源:homas H. Cormen, Chales E. Leiserson 《演算法導論第3版》)可以這樣理解,演算法是用來解決特定問題的一系列步驟(不僅計算機需要演算法,我們在日常生活中也在使用演算法)。
演算法必須具備如下3個重要特性:有窮性,執行有限步驟後,演算法必須中止。確切性,演算法的每個步驟都必須確切定義。
可行性,特定演算法須可以在特定的時間內解決特定問題。
其實,演算法雖然廣泛應用在計算機領域,但卻完全源自數學。實際上,最早的數學演算法可追溯到公元前1600年-Babylonians有關求因式分解和平方根的演算法。
那麼,又是哪10個計算機演算法造就了我們今天的生活呢?(請看下面的表單,排名不分先後)
01、歸併排序(MERGE SORT)、快速排序(QUICK SORT)、堆積排序(HEAP SORT)
哪個排序演算法效率最高?這要看情況。這也就是我把3種演算法放在一起講的原因,可能你更常用其中一種,不過它們各有千秋。歸併排序演算法,是目前為止最重要的演算法之一,是分治法的一個典型應用,由數學家John von Neumann於1945年發明。快速排序演算法,結合了集合劃分演算法和分治演算法,不是很穩定,但在處理隨機列陣(AM-based arrays)時效率相當高。堆積排序,採用優先佇列機制,減少排序時的搜尋時間,同樣不是很穩定。與早期的排序演算法相比(如冒泡演算法),這些演算法將排序演算法提上了一個大臺階。也多虧了這些演算法,才有今天的資料發掘,人工智慧,連結分析,以及大部分網頁計算工具。
02、傅立葉變換、快速傅立葉變換
這兩種演算法簡單,但卻相當強大,整個數字世界都離不開它們,其功能是實現時間域函式與頻率域函式之間的相互轉化。能看到這篇文章,也是託這些演算法的福。因特網,WIFI,智慧機,座機,電腦,路由器,衛星等幾乎所有與計算機相關的裝置都或多或少與它們有關。不會這兩種演算法,你根本不可能拿到電子,計算機或者通訊工程學位。(USA)
03、 迪傑斯特拉演算法 (Dijkstra’s algorithm)
可以這樣說,如果沒有這種演算法,因特網肯定沒有現在的高效率。只要能以“圖”模型表示的問題,都能用這個演算法找到“圖”中兩個節點間的最短距離。雖然如今有很多更好的方法來解決最短路徑問題,但代克思託演演算法的穩定性仍無法取代。
04、RSA非對稱加密演算法
毫不誇張地說,如果沒有這個演算法對金鑰學和網路安全的貢獻,如今因特網的地位可能就不會如此之高。現在的網路毫無安全感,但遇到錢相關的問題時我們必需要保證有足夠的安全感,如果你覺得網路不安全,肯定不會傻乎乎地在網頁上輸入自己的銀行卡資訊。RSA演算法,金鑰學領域最牛叉的演算法之一,由RSA公司的三位創始人提出,奠定了當今的金鑰研究領域。用這個演算法解決的問題簡單又複雜:保證安全的情況下,如何在獨立平臺和使用者之間分享金鑰。
05、雜湊演算法(Hash Algorithm)
確切地說,這不是一種演算法,而是一組加密雜湊函式,由美國國家標準技術研究所首先提出。無論是你的應用商店,電子郵件和防毒軟體,還是瀏覽器等等,都使用這種演算法來保證你正常下載,以及是否被“中間人攻擊”,或者“網路釣魚”。
06、整數質因子分解演算法(Integer factorization)
07、連結分析演算法(Link Analysis)
在因特網時代,不同入口間關係的分析至關重要。從搜尋引擎和社交網站,到市場分析工具,都在不遺餘力地尋找因特網的正真構造。連結分析演算法一直是這個領域最讓人費解的演算法之一,實現方式不一,而且其本身的特性讓每個實現方式的演算法發生異化,不過基本原理卻很相似。連結分析演算法的機制其實很簡單:你可以用矩陣表示一幅“圖“,形成本徵值問題。本徵值問題可以幫助你分析這個“圖”的結構,以及每個節點的權重。這個演算法於1976年由Gabriel Pinski和Francis Narin提出。誰會用這個演算法呢?Google的網頁排名,Facebook向你傳送資訊流時(所以資訊流不是演算法,而是演算法的結果),Google+和Facebook的好友推薦功能,LinkedIn的工作推薦,Youtube的影片推薦,等等。普遍認為Google是首先使用這類演算法的機構,不過其實早在1996年(Google 問世2年前)李彥宏就建立的“RankDex”小型搜尋引擎就使用了這個思路。而Hyper Search搜尋演算法建立者馬西莫·馬奇奧裡也曾使用過類似的演算法。這兩個人都後來都成為了Google歷史上的傳奇人物。
08、比例微積分演算法(Proportional Integral Derivative Algorithm)
飛機,汽車,電視,手機,衛星,工廠和機器人等等事物中都有這個演算法的身影。簡單來講,這個演算法主要是透過“控制迴路反饋機制”,減小預設輸出訊號與真實輸出訊號間的誤差。只要需要訊號處理,或電子系統來控制自動化機械,液壓和加熱系統,都需要用到這個算個法。沒有它,就沒有現代文明。
09、資料壓縮演算法
資料壓縮演算法有很多種,哪種最好?這要取決於應用方向,壓縮mp3,JPEG和MPEG-2檔案都不一樣。
哪裡能見到它們?不僅僅是資料夾中的壓縮檔案。你正在看的這個網頁就是使用資料壓縮演算法將資訊下載到你的電腦上。除文字外,遊戲,影片,音樂,資料儲存,雲端計算等等都是。它讓各種系統更輕鬆,效率更高。
10、隨機數生成演算法
到如今,計算機還沒有辦法生成“正真的”隨機數,但偽隨機數生成演算法就足夠了。
這些演算法在許多領域都有應用,如網路連線,加密技術,安全雜湊演算法,網路遊戲,人工智慧,以及問題分析中的條件初始化。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2767005/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java的十大演算法,你知道幾個?Java演算法
- 十個python熱門專案,你知道幾個Python
- 量子計算機改變世界的7大方式計算機
- 一個改變世界的“箱子”
- 計算機網路的 166 個核心概念,你知道嗎?計算機網路
- 「雜談」計算機視覺人臉影像的十幾個大的應用方向,你懂了幾分?計算機視覺
- 量子計算將如何改變世界?
- python的五個特點,你知道幾個?Python
- 演算法,改變了個體與平臺的收入差距演算法
- 《我的世界》十歲了:它如何改變了遊戲和現實?遊戲
- 設計模式 | Spring中用到的設計模式,你知道幾個?設計模式Spring
- 8個Python爬蟲框架,你知道幾個?Python爬蟲框架
- 軟體測試的五個目的,你知道幾個?
- 開放計算十年,改變了什麼,又顛覆了什麼?
- 榮耀9隱藏的3個功能 你知道幾個?
- 7個關於"this"面試題,你知道幾個?面試題
- TQM的八項原則,你知道幾個?
- 你知道黑客的入侵方式都有哪些嗎?這些你知道幾個?黑客
- Python常用的圖形介面程式設計框架,你知道幾個?Python程式設計框架
- 世界上最偉大的十個公式,看看你懂得幾個?公式
- “個人計算機先驅”查克‧派朵離世,他打造的CPU如何改變了個人電腦和遊戲業?計算機遊戲
- 女生最容易就業的5個專業,你知道幾個?就業
- 區塊鏈領域的48個名詞,你知道幾個?區塊鏈
- 這幾個python常用的庫你必須知道!Python
- 目前主流的內網穿透方式 你知道幾個內網穿透
- LLM部署,你必須要知道的幾個技巧!
- Laravel 你應該知道的幾個最佳實踐Laravel
- Linux有哪些虛擬機器?看看這些,你知道幾個!Linux虛擬機
- 計算機是怎麼發明的?試圖用邏輯改變世界的人 - nautil計算機
- Spring中11個最常用的擴充套件點,你知道幾個?Spring套件
- 機器學習大牛最常用的5個迴歸損失函式,你知道幾個?機器學習函式
- Java集合與泛型中的幾個陷阱,你掉進了幾個?Java泛型
- 速看!這10個開源安全工具你知道幾個?
- 設計師必備的技巧性原則!你知道哪幾個?
- Python程式設計師常用的五大工具,你知道幾個?Python程式設計師
- 你應該知道Go語言的幾個優勢Go
- Python最常用的基礎語句,你知道幾個?Python
- 5G的7大用途,你知道幾個?