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

2020-12-11 虎嗅APP

   

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


現在,如果大家對於算法有些涉獵,那麼在讀過文章後的第一個想法很可能是——作者真的知道算法是什麼嗎?或者說 Facebook 新聞源是否屬於算法?因為如果 Facebook 新聞源也是一種算法,那麼我們幾乎可以把一切東西都歸結為算法。因此,我希望在本篇文章中解釋算法的真實定義,而後探討 10 種真正支配著整個世界的算法。


算法究竟是什麼?


直白地講,算法是指一切經過明確定義的計算過程,其將某個或者某組值作為輸入內容,並產生某個或者某組值作為輸出結果。因此,算法代表的是一系列計算步驟,用於將輸入轉換為輸出。



更簡單地總結,我們可以將算法視為一系列用於解決某個任務的步驟。就目前的標準來看,算法應當具有以下三大重要特徵才被視為擁有實際效果:


  1. 應該是有限的: 算法應該在有限的時間內用有限的步驟解決掉其旨在解決的問題,也就是說算法必須在有限的時間內可以完成,要不然就沒有現實意義。


  2. 應該具有明確的指令: 算法中的每個步驟必須經過精確定義 ; 同時應針對每種情況做出明確說明。


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


此外,需要強調的是算法的應用不僅局限於計算科學,同時它也作為一種數學實體。事實上,早在公元前 1600 年就已經出現第一條記錄在案的數學算法——巴比倫人發現了最早的已知算法,用於分解平方根。因此,回到文章開頭我們討論的問題,我讀到的那篇文章將算法視為計算實體,但如果採取這樣一個更為寬泛的定義,那麼支配世界的十大算法很可能體現為算術方法。


但是,如果採取我們在本文中做出的算法定義,那麼問題仍然存在:支配世界的十種算法究竟有哪些?在這裡,我列出一份小小的清單,排名不分先後。


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



對元素進行排序的最佳算法是什麼?具體答案取決於你的實際需要,因此我把這三種比較常用的排序算法列為同一類 ; 也許你更偏愛其中一種,但事實上三者都非常重要。


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


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


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


這些算法相較於我們之前使用過的其它方法有了很大的改進。事實上,正是由於這些算法的出現,我們才得以迎來數據挖掘、人工智慧等網絡上常見的眾多現代計算工具。


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



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


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


3. 迪傑斯特拉算法



實事求是地講,如果沒有這種算法,網際網路根本無法像今天這樣保持高效運作。這種圖搜索算法具有多種應用方式,能夠將需要解決的問題建模為圖,並在其中找到兩個節點間的最短路徑。


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


4. RSA 算法


如果沒有加密與網絡安全機製作為保障,網際網路的重要程度不可能達到如今的水平。大家可能會想「胡說,國家安全局局和眾多情報機構的監控早就毀掉了網際網路安全」或者「網際網路根本就沒有安全可言,傻子才會相信這種安全宣傳」; 但必須承認,大多數人仍然具有一定程度的安全信心,否則你根本就不會通過網際網路進行消費。畢竟如果真的否定現有網絡體系的安全性,誰會願意在 Web 服務中輸入自己的信用卡號碼?


在密碼學領域,有一種算法仍然是目前世界上最重要的算法之一,這就是 RSA 算法。該算法由 RSA 公司的創始人們開發而成,使得密碼學成果得以供世界上的每個人隨意使用,甚至最終塑造了當今密碼學技術的實現方式。RSA 算法希望解決的問題是如何在獨立平臺及最終用戶之間共享公鑰,從而實現加密。


5. 安全哈希算法


這實際上並不是真正的算法,而是由 NIST所開發的一系列加密散列函數。然而,該算法家族對於世界秩序的維持起到了至關重要的作用。從應用程式商店、電子郵件、防病毒軟體再到常用的網絡瀏覽器,這一切都在使用這類算法,用以確定你所下載的是否正是你希望獲得的內容,或者你是否已經成為中間人攻擊或者網絡釣魚攻擊的受害者。


6. 整數分解


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


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


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


7. 連結分析



在網際網路時代下,分析不同實體間的關係當然非常重要。從搜尋引擎到社交網絡再到營銷分析工具,每一方都在努力發現隨著時間推移而不斷變化的網際網路結構。


連結分析可以說是普羅大眾眼中最神秘也最難以理解的算法之一。問題在於,我們可以通過多種不同方法實現連結分析,而且多種特徵的存在使得每種算法間都存在著一定差異,但其底層基礎卻又高度相似。


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


那麼,誰在使用這一算法?谷歌公司需要進行網頁排名,Facebook 需要發布新聞提要,Google+ 與 Facebook 的好友推薦,LinkedIn 的工作崗位與聯繫人推薦,Netflix 與 Hulu 的影視關聯、YouTube 的相關視頻等等皆屬於這一類。雖然其各自擁有不同的目標與參數組合,但背後的數學原理卻是相通的。


最後,我想強調一點,雖然很多人認為谷歌公司似乎是第一家使用這種算法的企業,但早在 1996 年,由 Robin Li 開發的 RankDex 小型搜尋引擎已經開始利用這一基本思路進行頁面排名。最終,HyperSearch 的創始人 Massimo Marchiori 也開始使用這種基於單頁間關係的頁面排名算法。


8. 比例微積分算法



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


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


也可以說,如果沒有這種算法,那麼我們的現代文明將無從談起。


9. 數據壓縮算法


很難確定哪種壓縮算法的重要性最高,因為根據實際應用需求,大家使用的算法可能包括 zip、mp3 乃至 JPEG 以及 MPEG-2 等等。但相信大家都能清晰地感受到這些算法在各類結構中的重要作用。


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


10. 隨機數生成算法



今天,我們還沒有「真正的」隨機數生成器,但已經擁有眾多完全可以滿足需求的偽隨機數生成器。這些算法廣泛存在於互連連結、加密、安全哈希算法、視頻遊戲、人工智慧、優化、問題條件初始化以及財務等領域。


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



相關焦點

  • 真正統治世界的十大算法
    不久前的某一天,我在瀏覽Reddit發現了一篇有趣的文章《統治世界的十大算法》,作者George Dvorsky在那篇文章中試圖解釋算法之於當今世界的重要性,以及哪些算法對人類文明最為重要。
  • 葉羅麗第八季漫畫:曼多拉的野心這麼大,竟然要支配整個世界
    一:曼多拉最早的野心一直以來曼多拉就是《精靈夢葉羅麗》中的主要反派,她也是葉羅麗戰士的最大敵人。為了維護人類世界,葉羅麗戰士還是蠻辛苦的,至少要一直與曼多拉戰鬥,這種壓力一般人理解不了。不過曼多拉的具體野心是什麼呢?其實曼多拉一直看不慣人類,就利用汙染環境為藉口,竟然要毀滅人類世界。其實這只是第一步計劃罷了,不過這個第一步就很難走出來,只打敗葉羅麗戰士就很艱難了,更不用說其他的其他的野心了,根本就沒有辦法實現。
  • 新手必看的十種機器學習算法
    然而,在眾多的機器學習算法中,哪些是又上手快捷又功能強大、適合新手學習的呢?Towards Data Science 上一篇文章就介紹了十種新手必看的機器學習算法,雷鋒網 AI 科技評論全文編譯如下。機器學習領域有一條「沒有免費的午餐」定理。簡單解釋下的話,它是說沒有任何一種算法能夠適用於所有問題,特別是在監督學習中。
  • 「暴躁」帶貨主播在線吵架,實屬大數據算法支配下的情非得已
    移動網際網路發展至今,壟斷趨勢越發明顯,電商主播面臨的困境極其特殊,一方面他們要直接面對市場競爭壓力,另一方面還要接受被大數據算法篩選和支配的命運打開我媽的抖音,我發現除了界面一樣外,她的抖音和我的抖音是兩個不同的世界
  • 世界會客廳·跨年場|沈虹:被算法支配,值得恐懼嗎
    近些年,看似遙不可及的「算法」逐漸走下神壇,全面進入人們的日常生活。有時,我們是算法系統中的用戶,有時,我們是它的「打工者」。被算法支配,值得恐懼嗎?以下為澎湃新聞(www.thepaper.cn)整理的發言摘錄,以饗讀者。什麼是算法?算法是什麼?這是每年AI社會學這門課開課的第一個問題。
  • 十種世界上最大的貓
    貓也許是世界上最可愛的動物,它們可愛的臉,毛茸茸的皮毛足以引起任何人的注意,在這裡,我們列出了世界上最大的十種貓科動物的名單,它們的體積和重量都很大,當然也比它們的同伴更加顯得蓬鬆,看看世界上最大的10隻貓品種吧!
  • 改變世界的十位算法大師
    其經典著作《電腦程式設計藝術》更是被譽為算法中「真正」的聖經,像KMP和LR(K)這樣令人不可思議的算法,在此書比比皆是。難怪連 Bill Gates都說:「如果能做對書裡所有的習題,就直接來微軟上班吧!」
  • 支配世界的一組可怕的數字
    不知道大家有沒有聽說過82法則,是大自然和社會中支配著整個世界運行的自然法則它還有一些其他的名字
  • AI 的十種 「新數學」
    對這一問題,他給出「人工智慧的十種新數學」的回答。 隨後並邀請智源研究院不同研究領域的六位科學家,對如何將 AI 理論與 AI 應用相結合的問題進行激烈且深度的探討。 整個研討分為兩部分,首先由北京大學教授林偉做引導報告《人工智慧新數學》,隨後七位學者圍繞多個問題進行辯論。
  • HFSS算法及應用場景介紹
    由於當今世界計算機的飛速發展,讓計算電磁學這門學科也有了很大的發展,如圖1所示,從大的方面來看,我們將計算電磁學分為精確的全波算法和高頻近似算法,在每一類下面又分了很多種算法,結合到HFSS軟體,通過ANSYS公司40餘年來堅持不懈的研發和戰略性的收購,到目前為止,HFSS有FEM、IE(MoM)、DGTD、PO、SBR+等算法,本文會針對每種算法和應用場景逐一介紹,相信你看完這篇文章應該對
  • 聊聊改變世界的5大算法
    [導讀] 算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。周末了,今天來輕鬆概念性總結分享一下改變世界5大算法,當然足以改變世界的算法遠不止這5個。比如還有卡爾曼濾波算法啦等等,等以後有機會整理。
  • 消弭「環境決定論」與「意見支配世界」 之間的邏輯悖謬
    消弭「環境決定論」與「意見支配世界」 之間的邏輯悖謬 ——馬克思歷史唯物主義生成的另一種路徑 2019年10月23日 16:04 來源:《馬克思主義與現實》 作者:李成旺 字號
  • 史上最全ISIGHT優化算法(2)
    ISIGHT的優化算法分為四大類,分別為直接搜索法、梯度優化算法、全局優化算法、多目標優化算法,如下圖所示。每種類都提供了大量的高效優化算法,各算法之間相互補充,各有所長,大大擴展了ISIGHT的優化能力。
  • 算法,即剝削
    從經濟學的角度,算法支配騎手是一種壟斷行為。這種技術性壟斷,很可能構成平臺濫用數據優勢,以及價格歧視中的大數據殺熟。在反壟斷法的框架下,濫用市場支配地位是三類壟斷行為中的一類。在大數據時代,平臺可能濫用大數據的支配優勢。數據是一種資源,也是一種權力。
  • HFSS算法簡介
    FEM算法的支配方程見下圖:ACA 方法基於數值層面的加速技術,具有更好的普適性,但效率相比 MLFMM 稍差, MLFMM 算法基於網格層面的加速,對金屬材料,鬆散結構,具有更高的效率。IE算法的支配方程見下圖:
  • 手指經常發麻竟預示這十種疾病 一定要警惕!
    川北在線核心提示:原標題:手指經常發麻竟預示這十種疾病 一定要警惕! 疾病每天都在人身邊的,如果不想發作,就需要時刻觀察,當你遇到手發麻時,不要忽視它,說明你有可能已經患病了,今天就讓天天養生網小編來介紹一下手發麻是什麼疾病導致的?
  • 被「鼴鼠」支配的恐懼
    然而最近國外出現了一種名為「鼴鼠」的勒索軟體,手段十分惡劣,讓人真切地感受到了被「鼴鼠」支配的恐懼。假郵局的甜蜜郵件其實勒索軟體的套路都基本一致,俗話說的好:社工玩兒的溜,走遍天下都不慫。殊不知這隻「鼴鼠」背後的加密算法並沒有那麼簡單。「真相只有一個」並不總是出現在現實生活中,我們遇到的大多數情況是「真相的背後還有一個真相」想知道真相背後的真相,我們得先了解兩個概念:對稱加密算法與非對稱加密算法。
  • 統治世界的十大排序算法!
    0.1 算法分類十種常見排序算法可以分為兩大類:比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此也稱為非線性時間比較類排序。這個算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。作為最簡單的排序算法之一,冒泡排序給我的感覺就像 Abandon 在單詞書裡出現的感覺一樣,每次都在第一頁第一位,所以最熟悉。冒泡排序還有一種優化算法,就是立一個 flag,當在一趟序列遍歷中元素沒有發生交換,則證明該序列已經有序。但這種改進對於提升性能來說並沒有什麼太大作用。
  • KDnuggets 數據科學家最常用的十種算法
    這是基於 844 個投票者的結果排名前十的算法以及他們的投票者的比例分布如下:圖 1 :數據科學家使用度最高的 10 大算法文末有全部算法的集合列表每個受訪者平均使用 8.1 個算法,這相比於 2011 的相似調查顯示的結果有了巨大的增長與 2011 年關於數據分析/數據挖掘的調查相比,我們注意到最常用的方法仍然是回歸
  • 人工智慧時代的算法裁判及其規制
    摘    要:現在的世界已經進入人工智慧時代, 我們也已經進入了算法社會。在人工智慧的發展中, 算法發揮著極其重要的作用。[12]  馬科斯·奧特羅 (Marcos Otero) 認為, 真正支配整個世界的有10種算法, 即: (1) 1合併排序、快速排序與堆排序; (2) 傅利葉變換與快速傅利葉變換; (3) 迪傑斯特拉算法 (又譯作戴克斯特拉算法) ; (4) RSA算法; (5) 安全哈希算法; (6) 整數分解; (7) 連結分析; (8) 比例微積分算法; (9) 數據壓縮算法; (10) 隨機數生成算法