一些重要的演算法(共計18個)

來源:互聯網
上載者:User

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

  1. A*搜尋演算法
    俗稱A星演算法。這是一種在圖形平面上,有多個節點的路徑,求出最低通過成本的演算法。常用於遊戲中的NPC的移動計算,或線上遊戲的BOT的移動計算上。該演算法像Dijkstra演算法一樣,可以找到一條最短路徑;也像BFS一樣,進行啟發學習法的搜尋。
  2. Beam Search
    束搜尋(beam search)方法是解決最佳化問題的一種啟發學習法方法,它是在分枝定界方法基礎上發展起來的,它使用啟發學習法方法估計k個最好的路徑,僅從這k個路徑出發向下搜尋,即每一層只有滿意的結點會被保留,其它的結點則被永久拋棄,從而比分枝定界法能大大節省已耗用時間。束搜尋於20 世紀70年代中期首先被應用於人工智慧領域,1976 年Lowerre在其稱為HARPY的語音辨識系統中第一次使用了束搜尋方法,他的目標是並行地搜尋幾個潛在的最優決策路徑以減少回溯,並快速地獲得一個解。
  3. 二分取中尋找演算法
    一種在有序數組中尋找某一特定元素的搜尋演算法。搜素過程從數組的中間元素開始,如果中間元素正好是要尋找的元素,則搜素過程結束;如果某一特定元素大於或者小於中間元素,則在數組大於或小於中間元素的那一半中尋找,而且跟開始一樣從中間元素開始比較。這種搜尋演算法每一次比較都使搜尋範圍縮小一半。
  4. Branch and bound
    分支定界(branch and bound)演算法是一種在問題的解空間樹上搜尋問題的解的方法。但與回溯演算法不同,分支定界演算法採用廣度優先或最小耗費優先的方法搜尋解空間樹,並且,在分支定界演算法中,每一個活結點只有一次機會成為擴充結點。
  5. 資料壓縮
    資料壓縮是通過減少電腦中所儲存資料或者通訊傳播中資料的冗餘度,達到增大資料密度,最終使資料的儲存空間減少的技術。資料壓縮在檔案儲存體和分布式系統領域有著十分廣泛的應用。資料壓縮也代表著尺寸媒介容量的增大和網路頻寬的擴充。
  6. Diffie–Hellman密鑰協商
    Diffie–Hellman key exchange,簡稱“D–H”,是一種安全性通訊協定。它可以讓雙方在完全沒有對方任何預先資訊的條件下通過不安全通道建立起一個密鑰。這個密鑰可以在後續的通訊中作為對稱金鑰來加密通訊內容。
  7. Dijkstra’s 演算法
    迪科斯徹演算法(Dijkstra)是由荷蘭電腦科學家艾茲格·迪科斯徹(Edsger Wybe Dijkstra)發明的。演算法解決的是有向圖中單個源點到其他頂點的最短路徑問題。舉例來說,如果圖中的頂點表示城市,而邊上的權重表示著城市間開車行經的距離,迪科斯徹演算法可以用來找到兩個城市之間的最短路徑。
  8. 動態規劃
    動態規劃是一種在數學和電腦科學中使用的,用於求解包含重疊子問題的最佳化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於電腦科學和工程領域。比較著名的應用執行個體有:求解最短路徑問題,背包問題,專案管理,網路流最佳化等。這裡也有一篇文章說得比較詳細。
  9. 歐幾裡得演算法
    在數學中,輾轉相除法,又稱歐幾裡得演算法,是求最大公約數的演算法。輾轉相除法首次出現於歐幾裡得的《幾何原本》(第VII卷,命題i和ii)中,而在中國則可以追溯至東漢出現的《九章算術》。
  10. 最大期望(EM)演算法
    在統計計算中,最大期望(EM)演算法是在機率(probabilistic)模型中尋找參數最大似然估計的演算法,其中機率模型依賴於無法觀測的隱藏變數(Latent Variable)。最大期望經常用在機器學習和電腦視覺的資料聚類(Data Clustering)領域。最大期望演算法經過兩個步驟交替進行計算,第一步是計算期望(E),利用對隱藏變數的現有估計值,計算其最大似然估計值;第二步是最大化(M),最大化在 E 步上求得的最大似然值來計算參數的值。M 步上找到的參數估計值被用於下一個 E 步計算中,這個過程不斷交替進行。
  11. 快速傅裡葉變換(FFT)
    快速傅裡葉變換(Fast Fourier Transform,FFT),是離散傅裡葉變換的快速演算法,也可用於計算離散傅裡葉變換的逆變換。快速傅裡葉變換有廣泛的應用,如數字訊號處理、計算大整數乘法、求解偏微分方程等等。本條目只描述各種快速演算法,對於離散傅裡葉變換的性質和應用,請參見離散傅裡葉變換。
  12. 雜湊函數
    HashFunction是一種從任何一種資料中建立小的數字“指紋”的方法。該函數將資料打亂混合,重新建立一個叫做散列值的指紋。散列值通常用來代表一個短的隨機字母和數字組成的字串。好的散列函數在輸入欄位中很少出現散列衝突。在散列表和資料處理中,不抑制衝突來區別資料,會使得資料庫記錄更難找到。
  13. 堆排序
    Heapsort是指利用堆積樹(堆)這種資料結構所設計的一種排序演算法。堆積樹是一個近似完全二叉樹的結構,並同時滿足堆積屬性:即子結點的索引值或索引總是小於(或者大於)它的父結點。
  14. 歸併排序
    Merge sort是建立在歸併操作上的一種有效排序演算法。該演算法是採用分治法(Divide and Conquer)的一個非常典型的應用。
  15. RANSAC 演算法
    RANSAC 是”RANdom SAmpleConsensus”的縮寫。該演算法是用於從一組觀測資料中估計數學模型參數的迭代方法,由Fischler and Bolles在1981提出,它是一種非確定性演算法,因為它只能以一定的機率得到合理的結果,隨著迭代次數的增加,這種機率是增加的。該演算法的基本假設是觀測資料集中存在”inliers”(那些對模型參數估計起到支援作用的點)和”outliers”(不符合模型的點),並且這組觀測資料受到雜訊影響。RANSAC 假設給定一組”inliers”資料就能夠得到最優的符合這組點的模型。
  16. RSA加密演算法
    這是一個公開金鑰加密演算法,也是世界上第一個適合用來做簽名的演算法。今天的RSA已經專利失效,其被廣泛地用於電子商務加密,大家都相信,只要密鑰足夠長,這個演算法就會是安全的
  17. 並查集Union-find
    並查集是一種樹型的資料結構,用於處理一些不相交集合(Disjoint Sets)的合并及查詢問題。常常在使用中以森林來表示。
  18. Viterbi algorithm
    尋找最可能的隱藏狀態序列(Finding most probable sequence of hidden states)

關於這個世界上的演算法,你可以看看Wikipedia的這個網頁:http://en.wikipedia.org/wiki/List_of_algorithms

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.