20世紀最好的10個演算法

2021-04-01 03:10:28 字數 4350 閱讀 9498

人類在20世紀產生了10個著名的演算法,是什麼演算法?這裡是一篇文章,介紹了美國科學家評出的10個演算法,感興趣可以看一看。

20世紀最好的10個演算法

三鏡先生

一、演算法一詞的**

algos是希臘字,意思是「疼」,a1gor是拉丁字,意思是「冷卻」。這兩個字都不是algorithm(演算法)一詞的詞根,a1gorithm一詞卻與9世紀的阿拉伯學者al-khwarizmi有關,他寫的書《al-jabr w』al muqabalah》(代數學)演變成為現在中學的代數教科書。ad-khwarizmi強調求解問題的有條理的步驟。如果他能活到今天的話,他一定會被以他的名字而得名的方法的進展所感動。

二、20世紀10最好的演算法

20世紀最好的演算法,計算機時代的挑選標準是對科學和工程的研究和實踐影響最大。下面就是按年代次序排列的20世紀最好的10個演算法。

1.  monte carlo方法

2023年,在洛斯阿拉莫斯科學實驗室工作的john von neumann,stan ulam和nick metropolis編制了metropolis演算法,也稱為monte carlo方法。metropolis演算法旨在通過模仿隨機過程,來得到具有難以控制的大量的自由度的數值問題和具有階乘規模的組合問題的近似解法。數字計算機是確定性問題的計算的強有力工具,但是對於隨機性(不確定性)問題如何當時並不知曉,metropolis演算法可以說是最早的用來生成隨機數,解決不確定性問題的演算法之一。

2.  線性規劃的單純形方法

2023年,蘭德公司的gre dantzig創造了線性規劃的單純形方法。就其廣泛的應用而言,dantzig演算法一直是最成功的演算法之一。線性規劃對於那些要想在經濟上站住腳,同時又有賴於是否具有在預算和其他約束條件下達到最優化的能力的工業界,有著決定性的影響(當然,工業中的「實際」問題往往是非線性的;使用線性規劃有時候是由於估計的預算,從而簡化了模型而促成的)。單純形法是一種能達到最優解的精細的方法。儘管理論上講其效果是指數衰減的,但在實踐中該演算法是高度有效的——它本身說明了有關計算的本質的一些有趣的事情。

3.  krylov子空間疊代法

2023年,來自美國國家標準局的數值分析研究所的magnus hestenes, eduard stiefel和cornelius lanczos開創了krylov子空間疊代法的研製。這些演算法處理看似簡單的求解形為

ax=b

的方程的問題。當然隱藏的困難在於a是乙個巨型的n*n 矩陣,致使代數解

x=b/a

是不容易計算的(確實,矩陣的「相除」不是乙個實際上有用的概念)。疊代法——諸如求解形為

kx(k+1)=kx(k)+b-ax(k)

的方程,其中k 是乙個理想地「接近」a 的較為簡單的矩陣——導致了krylov子空間的研究。以俄羅斯數學家nikolai krylov命名的krylov子空間由作用在初始「餘量」向量

r(0)=b-ax(0)

上的矩陣冪張成的。當 a是對稱矩陣時,lanczos找到了一種生成這種子空間的正交基的極好的方法。對於對稱正定的方程組,hestenes 和stiefel提出了稱為共軛梯度法的甚至更妙的方法。過去的50年中,許多研究人員改進並擴充套件了這些演算法。當前的一套方法包括非對稱方程組的求解技巧,像字首縮拼詞為gmres和bi-cgstab那樣的演算法。(gmres和bi-cgstab分別首次出現於1986和1992  siam journal on scientific and statistical ***puting(美國工業與應用數學學會的科學和統計計算雜誌)。

4.  矩陣計算的分解方法

2023年,橡樹嶺國家實驗室的a1ston householder系統闡述了矩陣計算的分解方法。研究證明能把矩陣因子分解為三角、對角、正交和其他特殊形式的矩陣是極其有用的。這種分解方法使軟體研究人員能生產出靈活有效的矩陣軟體包。這也促進了數值線性代數中反覆出現的大問題之一的捨入誤差分析問題。 (2023年倫敦國家物理實驗室的james wilkinson基於把矩陣分解為下和上三角矩陣因子的積的lu分解,在美國計算機協會(acm)的雜誌上發表了一篇題為「矩陣逆的直接方法的誤差分析」的重要文章。)

5.  fortran最優編譯程式

2023年,john backus在ibm領導乙個小組研製fortran最優編譯程式。fortran的創造可能是計算機程式設計歷史上獨一無二的最重要的事件:科學家(和其他人)終於可以無需依靠像地獄那樣可怕的機器**,就可告訴計算機他們想要做什麼。雖然現代編譯程式的標準並不過分――fortran i只包含23,500條組合語言指令――早期的編譯程式仍然能完成令人吃驚的複雜計算。就像backus本人在2023年在ieee annals of the history of ***puting 發表的有關fortran i,ii, iii的近代歷史的文章中回憶道:編譯程式「所產生的如此有效的**,使得其輸出令研究它的程式設計人員都感到嚇了一跳。」

6.  矩陣本徵值計算的qr演算法

1959—61年,倫敦ferranti ltd.的j.g. f. francis找到了一種稱為qr演算法的計算本徵值的穩定的方法。本徵值大概是和矩陣相連在—起的最重要的數了,而且計算它們可能是最需要技巧的。把—個方陣變換為乙個「幾乎是」上三角的矩陣――意即在緊挨著矩陣主對角線下面的一斜列上可能有非零元素――是相對容易的,但要想不產生大量的誤差就把這些非零元素消去,就不是平凡的事了。qr 演算法正好是能達到這一目的的方法,基於qr 分解, a可以寫成正交矩陣q 和乙個三角矩陣r 的乘積,這種方法疊代地把 a=q(k)r(k) 變成 a(k+1)==q(k)r(k) 就加速收斂到上三角矩陣而言多少有點不能指望。20世紀60年代中期qr 演算法把一度難以對付的本徵值問題變成了例行程式的計算。

7.  快速分類法

1962:倫敦elliott brothers, ltd.的tony hoare提出了快速(按大小)分類法.把n個事物按數或字母的次序排列起來,在心智上是不會有什麼觸動的單調平凡的事。智力的挑戰在於發明一種快速完成排序的方法。hoare的演算法利用了古老的分割開和控制的遞迴策略來解決問題:挑乙個元素作為「主元」、把其餘的元素分成「大的」和「小的」兩堆(當和主元比較時)、再在每一堆中重複這一過程。儘管可能要做受到嚴厲責備的做完全部n(n-1)/2 次的比較(特別是,如果你把主元作為早已按大小分類好的表列的第乙個元素的話!),快速分類法執行的平均次數具有o(nlog(n)) 的有效性,其優美的簡潔性使之成為計算複雜性的著名的例子。

8.  快速fourier變換

2023年,ibm的t. j. watson研究中心的james cooley以及普林斯頓大學和at&t貝爾實驗室的john tukey向公眾透露了快速fourier變換(方法)(fft)。應用數學中意義最深遠的演算法,無疑是使訊號處理實現突破性進展的fft。其基本思想要追溯到gauss(他需要計算小行星的軌道),但是cooley—tukey的**弄清楚了fourier變換計算起來有多容易。就像快速分類法一樣,fft有賴於用分割開和控制的策略,把表面上令人討厭的o(n*n) 降到令人歡樂的o(nlog(n)) 。但是不像快速分類法,其執行(初一看)是非直觀的而且不那麼直接。其本身就給電腦科學一種推動力去研究計算問題和演算法的固有複雜性。

9.  整數關係偵查演算法

2023年,brighamyoung大學的helaman ferguson 和rodney forcade提出了整數關係偵查演算法。這是乙個古老的問題:給定—組實數,例如說x(1),x(2),...,x(n) ,是否存在整數a(1),a(2),..,a(n) (不全為零),使得

a(1)x(1)+a(2)x(2)+...+a(n)x(n)=0

對於n=2 ,歷史悠久的歐幾里得演算法能做這項工作、計算x(1)/x(2) 的連分數展開中的各項。如果x(1)/x(2) 是有理數,展開會終止,在適當展開後就給出了「最小的」整數a(1)和a(2) 。歐幾里得演算法不終止——或者如果你只是簡單地由於厭倦計算——那麼展開的過程至少提供了最小整數關係的大小的下界。ferguson和forcade的推廣更有威力,儘管這種推廣更難於執行(和理解)。例如,他們的偵查演算法被用來求得邏輯斯諦(logistic)對映的第三和第四個分歧點,b(3)=3.544090 和 b(4)=3.564407所滿足的多項式的精確係數。(後者是120 階的多項式;它的最大的係數是257^30 。)已證明該演算法在簡化量子場論中的feynman圖的計算中是有用的。

10. 快速多極演算法

2023年,耶魯大學的leslie greengard 和vladimir rokhlin發明了快速多極演算法。該演算法克服了n體模擬中最令人頭疼的困難之一:經由引力或靜電力相互作用的n個粒子運動的精確計算(想象一下銀河系中的星體,或者蛋白質中的原於)看來需要o(n*n) 的計算量——比較每一對質點需要一次計算。該演算法利用多極展開(淨電荷或質量、偶極矩、四矩,等等)來近似遙遠的一組質點對當地一組質點的影響。空間的層次分解用來確定當距離增大時,比以往任何時候都更大的質點組。快速多極演算法的乙個明顯優點是具有嚴格的誤差估計,這是許多演算法所缺少的性質。

三、結束語

2l世紀將會帶來什麼樣的新的洞察和演算法?對於又乙個一百年完整的回答顯然是不知道的。然而,有一點似乎是肯定的。正如20世紀能夠產生最好的l0個演算法一樣,新世紀對我們來說既不會是很寧靜的,也不會是弱智的。

20世紀10個最偉大的演算法

由computer in science enigeering和ieee computer society聯合評選出來的20世紀10個最偉大的演算法 1 蒙特卡羅演算法。1946 john von neumann,stan ulam,and nick metropolis 2 單純形方法。1947 ...

20世紀10個最偉大的演算法

高等數值分析課上,讀到由computer in science enigeering和ieee computer society聯合評選出來的20世紀10個最偉大的演算法,特錄於此 1 蒙特卡羅演算法。1946 john von neumann,stan ulam,and nick metropol...

20世紀10個最偉大的演算法

高等數值分析課上,讀到由computer in science enigeering和ieee computer society聯合評選出來的20世紀10個最偉大的演算法,特錄於此 1 蒙特卡羅演算法。1946 john von neumann,stan ulam,and nick metropol...