計算機學科一些重要演算法的列表

2021-05-28 08:26:34 字數 2129 閱讀 7447

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

a*搜尋演算法

俗稱a星演算法。這是一種在圖形平面上,有多個節點的路徑,求出最低通過成本的演算法。常用於遊戲中的npc的移動計算,或線上遊戲的bot的移動計算上。該演算法像dijkstra演算法一樣,可以找到一條最短路徑;也像bfs一樣,進行啟發式的搜尋。

beam search

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

資料壓縮

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

歐幾里得演算法

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

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

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

雜湊函式

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

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

歸併排序

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

ransac 演算法

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

rsa加密演演算法

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

並查集union-find

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

viterbi algorithm

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

計算機程式設計中一些重要的演算法

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

計算機一級學科

學科門類一共12個01 哲學 05 文學 09 農學 02 經濟學 06 歷史學 10 醫學 03 法學 07 理學 11 軍事學 04 教育學 08 工學 12 管理學 每個學科門類下面包括若干個一級學科 學科 每個一級學科下面包括若干二級學科 也就是專業 電腦科學與技術是一級學科,是屬於工學門類...

評計算機專業中的一些「重要」課程

計算機專業概念有點大。我本人畢業於國防科技大學計算機 科學與技術專業,個人覺得就電腦科學與技術專業而言,以下這些是必修的 1 計算機組成原理 包括先修課程 數字邏輯與數字系統 簡稱 數電 這是一門硬體基礎課,學完後你能清楚的知道如何從用最簡單的數字元件,像搭積木一樣構成整個計算機系統,那就算及格了。...