一些重要的演算法

2021-06-16 04:42:41 字數 2491 閱讀 5473

下面是一些比較重要的演算法,原文羅列了32個,但我覺得有很多是數論裡的或是比較生僻的,和計算機的不相干,所以沒有選取。下面的這些,有的我們經常在用,有的基本不用。有的很常見,有的很偏。不過了解一下也是好事。也歡迎你留下你覺得有意義的演算法。(注:本篇文章並非翻譯,其中的演算法描述大部份摘自wikipedia,因為維基百科描述的很專業了)

a*搜尋演算法

分支定界 (branch and bound) 演算法是一種在問題的解空間樹上搜尋問題的解的方法。但與回溯演算法不同,分支定界演算法採用廣度優先或最小耗費優先的方法搜尋解空間樹,並且,在分支定界演算法中,每乙個活結點只有一次機會成為擴充套件結點。

資料壓縮

迪科斯徹演算法(dijkstra)是由荷蘭計算機科學家艾茲格·迪科斯徹(edsger wybe dijkstra)發明的。演算法解決的是有向圖中單個源點到其他頂點的最短路徑問題。舉例來說,如果圖中的頂點表示城市,而邊上的權重表示著城市間開車行經的距離,迪科斯徹演算法可以用來找到兩個城市之間的最短路徑。

動態規劃

動態規劃是一種在數學和電腦科學中使用的,用於求解包含重疊子問題的最優化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於電腦科學和工程領域。比較著名的應用例項有:求解最短路徑問題,揹包問題,專案管理,網路流優化等。這裡也有一篇文章說得比較詳細。

歐幾里得演算法

在數學中,輾轉相除法,又稱歐幾里得演算法,是求最大公約數的演算法。輾轉相除法首次出現於歐幾里得的《幾何原本》(第vii卷,命題i和ii)中,而在中國則可以追溯至東漢出現的《九章算術》。

最大期望(em)演算法

在統計計算中,最大期望(em)演算法是在概率(probabilistic)模型中尋找引數最大似然估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(latent variable)。最大期望經常用在機器學習和計算機視覺的資料聚類(data clustering)領域。最大期望演算法經過兩個步驟交替進行計算,第一步是計算期望(e),利用對隱藏變數的現有估計值,計算其最大似然估計值;第二步是最大化(m),最大化在 e 步上求得的最大似然值來計算引數的值。m 步上找到的引數估計值被用於下乙個 e 步計算中,這個過程不斷交替進行。

快速傅利葉變換 (fft)

快速傅利葉變換(fast fourier transform,fft),是離散傅利葉變換的快速演算法,也可用於計算離散傅利葉變換的逆變換。快速傅利葉變換有廣泛的應用,如數字訊號處理、計算大整數乘法、求解偏微分方程等等。本條目只描述各種快速演算法,對於離散傅利葉變換的性質和應用,請參見離散傅利葉變換。

雜湊函式

hash function是一種從任何一種資料中建立小的數字「指紋」的方法。該函式將資料打亂混合,重新建立乙個叫做雜湊值的指紋。雜湊值通常用來代表乙個短的隨機字母和數字組成的字串。好的雜湊函式在輸入域中很少出現雜湊衝突。在雜湊表和資料處理中,不抑制衝突來區別資料,會使得資料庫記錄更難找到。

堆排序

heapsort 是指利用堆積樹(堆)這種資料結構所設計的一種排序演算法。堆積樹是乙個近似完全二叉樹的結構,並同時滿足堆積屬性:即子結點的鍵值或索引總是小於(或者大於)它的父結點。

歸併排序

merge sort是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。

ransac 演算法

ransac 是」random sample consensus」的縮寫。該演算法是用於從一組觀測資料中估計數學模型引數的迭代方法,由fischler and bolles在1981 提出,它是一種非確定性演算法,因為它只能以一定的概率得到合理的結果,隨著迭代次數的增加,這種概率是增加的。 該演算法的基本假設是觀測資料集中存在」inliers」(那些對模型引數估計起到支援作用的點)和」outliers」(不符合模型的點),並且這組觀測資料受到雜訊影響。ransac 假設給定一組」inliers」資料就能夠得到最優的符合這組點的模型。

rsa加密演演算法

這是乙個公鑰加密演算法,也是世界上第乙個適合用來做簽名的演算法。今天的rsa已經專利失效,其被廣泛地用於電子商務加密,大家都相信,只要金鑰足夠長,這個演算法就會是安全的

並查集union-find

並查集是一種樹型的資料結構,用於處理一些不相交集合(disjoint sets)的合併及查詢問題。常常在使用中以森林來表示。

viterbi algorithm

尋找最可能的隱藏狀態序列(finding most probable sequence of hidden states)

附錄

關於這個世界上的演算法,你可以看看wikipedia的這個網頁:

一些重要的演算法

原文 http coolshell.cn p 2583 下面是一些比較重要的演算法,原文 羅 列了32個,但我覺得有很多是數論裡的或是比較生僻的,和計算機的不相干,所以沒有選取。下面的這些,有的我們經常在用,有的基本不用。有的很常見,有的 很偏。不過了解一下也是好事。也歡迎你留下你覺得有意義的演算法...

一些重要的演算法

酷殼 http coolshell.cn 原文 http coolshell.cn p 2583 下面是一些比較重要的演算法,原文羅列了32個,但我覺得有很多是數論裡的或是比較生僻的,和計算機的不相干,所以沒有選取。下面的這些,有的我們經常在用,有的基本不用。有的很常見,有的很偏。不過了解一下也是好...

一些重要的演算法

下面是一些比較重要的演算法,原文羅列了32個,但我覺得有很多是數論裡的,和計算機的不相干,所以沒有選取。下面的這些,有的我們經常在用,有的基本不用。有的很常見,有的很偏。不過了解一下也是好事。也歡迎你留下你覺得有意義的演算法。注 本篇文章並非翻譯,其中的演算法描述大部份摘自wikipedia,因為維...