十大演算法解析

2021-07-23 03:20:50 字數 2801 閱讀 9429

一、什麼是演算法?

演算法就是任何明確定義的計算過程,它接收一些值或集合作為輸入,並產生一些值或集合作為輸出。這樣,演算法就是將輸入轉換為輸出的一系列計算過程。——thomas h. cormen, chales e. leiserson (2009) 《演算法導論第三版》

二、有效的演算法應該含有三個重要特性:

1. 演算法必須是有限的。如果你設計的演算法永無休止地嘗試解決問題,那麼它是無用的。

2. 演算法必須具備明確定義的指令。演算法的每一步都必須準確定義,在任何場景下指令都應當沒有歧義。

3. 演算法必須是有效的。乙個演算法被設計用以解決某個問題,那麼它就應當能解決這個問題,並且僅僅使用紙和筆就能證明該演算法是收斂的。

三、十大演算法

1.歸併排序,快速排序和堆排序

哪個排序演算法最好?這取決於你的需求,但是它們都是同等重要的。

a> 歸併排序演算法是目前為止我們擁有的最重要的演算法之一。它是一種基於比較的排序演算法,使用分治法解決那些原本複雜度為o(n^2)的問題。歸併排序是由數學家john von neumann於2023年發明的。

b> 快速排序是解決排序問題的另一種途徑,它使用就地分解演算法,同時它也是一種分治演算法。這個演算法的問題在於它是不穩定的排序演算法,但它在基於記憶體的陣列排序上確實非常高效。

c> 堆排序演算法使用乙個優先佇列降低資料的查詢時間,它也是一種就地排序演算法,同樣也是不穩定的排序演算法。

相較於曾經使用的其他排序演算法(如氣泡排序),上述演算法帶來了顯著的改進。事實上,多虧了它們,今天我們才有了資料探勘、人工智慧、鏈結分析,以及世界上大部分的計算機工具,也包括網路在內。

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

整個數字世界都在使用這些簡單而又強大的演算法,將訊號從頻域轉換為時域,反之亦然。事實上,正是歸功於這些演算法,你才能看到這篇文章。

網際網路、你的wifi、智慧型手機、**、計算機、路由器、衛星,幾乎所有內建計算機的東西都會以各種方式使用這些演算法實現各自的功能。如果你沒有學習這些重要的演算法,你將無法獲得電子、計算機或通訊方面的學位。

3.迪傑斯特拉(dijkstra)演算法

如果沒有這個演算法,當今網際網路將無法有效工作。這是一種圖搜尋演算法,它被廣泛應用在能夠建模為圖的問題中,用以找出兩個節點之間的最短路徑。

目前,即便我們已經擁有了解決最短路徑問題的更好方法,迪傑斯特拉演算法依然在那些重視穩定性的系統中得到應用。

4.rsa演算法

在資訊加密領域,有乙個演算法始終是世界上最重要的演算法之一,它就是rsa演算法。這個演算法是由rsa公司的創始人所建立的,它使資訊加密惠及千家萬戶,奠定了當今資訊加密的運作基礎。rsa演算法用來解決乙個簡單而又複雜的問題:怎樣在不同平台和終端使用者之間共享公鑰,繼而實現資訊加密(我想說明一下這個問題還沒完全解決,我想我們需要基於這個方向做更多工作)。

5.安全雜湊演算法

6.整數因式分解

這是在計算機領域被大量使用的數學演算法,沒有這個演算法,資訊加密會更不安全。該演算法定義了一系列步驟,得到將一合數分解為更小因子的質數分解式。這被認為是一種fnp問題,它是np分類問題的延伸,極其難以解決。

許多加密協議(如rsa演算法)都基於這樣乙個原理:對大的合數作因式分解是非常困難的。如果乙個演算法能夠快速地對任意整數進行因式分解,rsa的公鑰加密體系就會失去其安全性。

量子計算的誕生使我們能夠更容易地解決這類問題,同時它也開啟了乙個全新的領域,使得我們能夠利用量子世界中的特性來保證系統安全。

7.鏈結分析

在網際網路時代,分析不同實體間的關係是相當重要的。從搜尋引擎,社交網路,到營銷分析工具,每個人都在不停尋找網際網路的真正結構。

鏈結分析背後的理念非常簡單,以矩陣形式描繪出一張圖,將問題轉換為特徵值問題。特徵值是一種很好的渠道,它有助於展現圖的結構以及每個節點的相對重要性。該演算法是由gabriel pinski和francis narin於2023年建立的。

8.比例積分微分演算法

這個演算法使用一種控制迴路反饋機制,將期望輸出訊號和實際輸出訊號之間的錯誤最小化。無論何處,只要你需要進行訊號處理,或者你需要一套電子系統,用來自動化控制機械、液壓或熱力系統,這個演算法都會有用武之地。

9.資料壓縮演算法

要判斷哪種資料壓縮演算法最為重要是很困難的,因為它取決於不同的應用環境。它們可以應用在zip和***上,也可以應用在jpeg和mpeg-2上。但眾所周知,在所有結構中這些演算法都極其重要。

10.隨機數生成

隨機數生成器的用途非常廣泛,從互聯聯絡、資料加密、安全雜湊演算法、電子遊戲、人工智慧、優化分析,到問題的初始條件、金融等等,都有它們的身影。

十大濾波演算法

10大經典濾波演算法,已在網上有很多 的。這些演算法可以說是圍繞 去除突發訊號,取中間訊號,對採集的多個訊號求平均或者根據其特性對其加權求得。這10種基本是在基礎的限幅,求平均,加權的基礎上組合得來。個人覺得,使用的時候,需具體看所採集的訊號特性,來選擇使用濾波方式,也可自己組合出新的濾波演算法。十...

十大演算法總結

排序演算法的總結 基礎排序 a.冒泡 誰大誰上,每一輪都把最大的頂到天花板 效率太低o n 掌握swap b.選擇排序,效率較低,但經常用它內部的迴圈方式來找最大值和最小值 怎麼一次性求出陣列的最大值和最小值 o n c.插排,雖然平均效率低,但是在序列基本有序時,它很快,所以也有其適用範圍 arr...

常用十大演算法 分治演算法

將複雜問題拆分成許多個具有規律的重複性操作的子問題,通過求解子問題再合併,使之成為複雜問題的結果。分治演算法可以求解的一些經典問題 二分搜尋,大整數乘法,棋盤覆蓋,合併排序,快速排序 線性時間選擇,最接近點對問題,迴圈賽日程表,漢諾塔 下面以漢諾塔求解為例,了解分治演算法 漢諾塔 又稱河內塔 問題是...