
什么是算法?
簡(jiǎn)而言之,任何定義明確的計(jì)算步驟都可稱為算法,接受一個(gè)或一組值為輸入,輸出一個(gè)或一組值。(來(lái)源:homas H. Cormen, Chales E. Leiserson 《算法導(dǎo)論第3版》)
可以這樣理解,算法是用來(lái)解決特定問(wèn)題的一系列步驟(不僅計(jì)算機(jī)需要算法,我們?cè)谌粘I钪幸苍谑褂盟惴?。算法必須具備如下3個(gè)重要特性:
[1] 有窮性。執(zhí)行有限步驟后,算法必須中止。
[2] 確切性。算法的每個(gè)步驟都必須確切定義。
[3] 可行性。特定算法須可以在特定的時(shí)間內(nèi)解決特定問(wèn)題,
其實(shí),算法雖然廣泛應(yīng)用在計(jì)算機(jī)領(lǐng)域,但卻完全源自數(shù)學(xué)。實(shí)際上,最早的數(shù)學(xué)算法可追溯到公元前1600年-Babylonians有關(guān)求因式分解和平方根的算法。
那么又是哪10個(gè)計(jì)算機(jī)算法造就了我們今天的生活呢?請(qǐng)看下面的表單,排名不分先后:
1. 歸并排序(MERGE SORT),快速排序(QUICK SORT)和堆積排序(HEAP SORT)
哪個(gè)排序算法效率最高?這要看情況。這也就是我把這3種算法放在一起講的原因,可能你更常用其中一種,不過(guò)它們各有千秋。
歸并排序算法,是目前為止最重要的算法之一,是分治法的一個(gè)典型應(yīng)用,由數(shù)學(xué)家John von Neumann于1945年發(fā)明。
快速排序算法,結(jié)合了集合劃分算法和分治算法,不是很穩(wěn)定,但在處理隨機(jī)列陣(AM-based arrays)時(shí)效率相當(dāng)高。
堆積排序,采用優(yōu)先佇列機(jī)制,減少排序時(shí)的搜索時(shí)間,同樣不是很穩(wěn)定。
與早期的排序算法相比(如冒泡算法),這些算法將排序算法提上了一個(gè)大臺(tái)階。也多虧了這些算法,才有今天的數(shù)據(jù)發(fā)掘,人工智能,鏈接分析,以及大部分網(wǎng)頁(yè)計(jì)算工具。
2. 傅立葉變換和快速傅立葉變換
這兩種算法簡(jiǎn)單,但卻相當(dāng)強(qiáng)大,整個(gè)數(shù)字世界都離不開(kāi)它們,其功能是實(shí)現(xiàn)時(shí)間域函數(shù)與頻率域函數(shù)之間的相互轉(zhuǎn)化。能看到這篇文章,也是托這些算法的福。
因特網(wǎng),WIFI,智能機(jī),座機(jī),電腦,路由器,衛(wèi)星等幾乎所有與計(jì)算機(jī)相關(guān)的設(shè)備都或多或少與它們有關(guān)。不會(huì)這兩種算法,你根本不可能拿到電子,計(jì)算機(jī)或者通信工程學(xué)位。(USA)
3.代克思托演算法 (Dijkstra’s algorithm)
可以這樣說(shuō),如果沒(méi)有這種算法,因特網(wǎng)肯定沒(méi)有現(xiàn)在的高效率。只要能以“圖”模型表示的問(wèn)題,都能用這個(gè)算法找到“圖”中兩個(gè)節(jié)點(diǎn)間的最短距離。
雖然如今有很多更好的方法來(lái)解決最短路徑問(wèn)題,但代克思托演算法的穩(wěn)定性仍無(wú)法取代。
4. RSA非對(duì)稱加密算法
毫不夸張地說(shuō),如果沒(méi)有這個(gè)算法對(duì)密鑰學(xué)和網(wǎng)絡(luò)安全的貢獻(xiàn),如今因特網(wǎng)的地位可能就不會(huì)如此之高?,F(xiàn)在的網(wǎng)絡(luò)毫無(wú)安全感,但遇到錢相關(guān)的問(wèn)題時(shí)我們必需要保證有足夠的安全感,如果你覺(jué)得網(wǎng)絡(luò)不安全,肯定不會(huì)傻乎乎地在網(wǎng)頁(yè)上輸入自己的銀行卡信息。
RSA算法,密鑰學(xué)領(lǐng)域最牛叉的算法之一,由RSA公司的三位創(chuàng)始人提出,奠定了當(dāng)今的密鑰研究領(lǐng)域。用這個(gè)算法解決的問(wèn)題簡(jiǎn)單又復(fù)雜:保證安全的情況下,如何在獨(dú)立平臺(tái)和用戶之間分享密鑰。
5. 哈希安全算法(Secure Hash Algorithm)
確切地說(shuō),這不是一種算法,而是一組加密哈希函數(shù),由美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所首先提出。無(wú)論是你的應(yīng)用商店,電子郵件和殺毒軟件,還是瀏覽器等等,都使用這種算法來(lái)保證你正常下載,以及是否被“中間人攻擊”,或者“網(wǎng)絡(luò)釣魚”。
6. 整數(shù)質(zhì)因子分解算法(Integer factorization)
這其實(shí)是一個(gè)數(shù)學(xué)算法,不過(guò)已經(jīng)廣泛應(yīng)用與計(jì)算機(jī)領(lǐng)域。如果沒(méi)有這個(gè)算法,加密信息也不會(huì)如此安全。通過(guò)一系列步驟將,它可以將一個(gè)合成數(shù)分解成不可再分的數(shù)因子。
很多加密協(xié)議都采用了這個(gè)算法,就比如剛提到的RSA算法。
7. 鏈接分析算法(Link Analysis)
在因特網(wǎng)時(shí)代,不同入口間關(guān)系的分析至關(guān)重要。從搜索引擎和社交網(wǎng)站,到市場(chǎng)分析工具,都在不遺余力地尋找因特網(wǎng)的正真構(gòu)造。
鏈接分析算法一直是這個(gè)領(lǐng)域最讓人費(fèi)解的算法之一,實(shí)現(xiàn)方式不一,而且其本身的特性讓每個(gè)實(shí)現(xiàn)方式的算法發(fā)生異化,不過(guò)基本原理卻很相似。
鏈接分析算法的機(jī)制其實(shí)很簡(jiǎn)單:你可以用矩陣表示一幅“圖“,形成本征值問(wèn)題。本征值問(wèn)題可以幫助你分析這個(gè)“圖”的結(jié)構(gòu),以及每個(gè)節(jié)點(diǎn)的權(quán)重。這個(gè)算法于1976年由Gabriel Pinski和Francis Narin提出。
誰(shuí)會(huì)用這個(gè)算法呢?Google的網(wǎng)頁(yè)排名,F(xiàn)acebook向你發(fā)送信息流時(shí)(所以信息流不是算法,而是算法的結(jié)果),Google+和Facebook的好友推薦功能,LinkedIn的工作推薦,Youtube的視頻推薦,等等。
普遍認(rèn)為Google是首先使用這類算法的機(jī)構(gòu),不過(guò)其實(shí)早在1996年(Google問(wèn)世2年前)李彥宏就創(chuàng)建的“RankDex”小型搜索引擎就使用了這個(gè)思路。而Hyper Search搜索算法建立者馬西莫·馬奇奧里也曾使用過(guò)類似的算法。這兩個(gè)人都后來(lái)都成為了Google歷史上的傳奇人物。
8. 比例微積分算法(Proportional Integral Derivative Algorithm)
飛機(jī),汽車,電視,手機(jī),衛(wèi)星,工廠和機(jī)器人等等事物中都有這個(gè)算法的身影。
簡(jiǎn)單來(lái)講,這個(gè)算法主要是通過(guò)“控制回路反饋機(jī)制”,減小預(yù)設(shè)輸出信號(hào)與真實(shí)輸出信號(hào)間的誤差。只要需要信號(hào)處理,或電子系統(tǒng)來(lái)控制自動(dòng)化機(jī)械,液壓和加熱系統(tǒng),都需要用到這個(gè)算個(gè)法。
沒(méi)有它,就沒(méi)有現(xiàn)代文明。
9. 數(shù)據(jù)壓縮算法
數(shù)據(jù)壓縮算法有很多種,哪種最好?這要取決于應(yīng)用方向,壓縮mp3,JPEG和MPEG-2文件都不一樣。
哪里能見(jiàn)到它們?不僅僅是文件夾中的壓縮文件。你正在看的這個(gè)網(wǎng)頁(yè)就是使用數(shù)據(jù)壓縮算法將信息下載到你的電腦上。除文字外,游戲,視頻,音樂(lè),數(shù)據(jù)儲(chǔ)存,云計(jì)算等等都是。它讓各種系統(tǒng)更輕松,效率更高。
10. 隨機(jī)數(shù)生成算法
到如今,計(jì)算機(jī)還沒(méi)有辦法生成“正真的”隨機(jī)數(shù),但偽隨機(jī)數(shù)生成算法就足夠了。這些算法在許多領(lǐng)域都有應(yīng)用,如網(wǎng)絡(luò)連接,加密技術(shù),安全哈希算法,網(wǎng)絡(luò)游戲,人工智能,以及問(wèn)題分析中的條件初始化。
這個(gè)表單并不完整,很多與我們密切相關(guān)的算法都沒(méi)有提到,如機(jī)器學(xué)習(xí)和矩陣乘法。另外,知識(shí)有限,如有批漏,還望指正。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10