十分鐘了解演算法(0) 初始演算法

2021-09-13 23:08:12 字數 743 閱讀 5423

演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且毎條指令表示乙個或多個操作。

輸入(可以沒有)

輸出(至少乙個)

有窮性確定性

可行性正確性:演算法至少應該具有輸入、輸出和加工處理無歧義性、 能正確反映問題的需求、能夠得到問題的正確答案。

時間效率髙和儲存量低

乙個程式的執行時間,依賴於演算法的好壞和問題的輸入規模。

定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t ( n)隨n的變化情況,並確定t (n)的數量級。

記做:t (n) = o(f(n))

特點:一般情況下,隨著n的増大,t(n)増長最慢的演算法為最優演算法。

推導:計算最壞情況下的運算元。如果演算法需要操作n次,每次需要進行m個操作,則演算法的速度為o(n*m)

用常數1取代執行時間中的所有加法常數。

在修改後的執行次數函式中,只保留最高端項。

如果最高端項存在且不是1,則去掉與這個項相乘的常數。 在比較演算法時,如果兩種演算法的大o執行時間不同,則大o裡的常量無關緊要。

常見:比較:

o(1 )< o(logn) < o(n) < o(nlogn) < o(n2) < o(n3) < o(2n )n)

定義:演算法的空間複雜度通過計算演算法所需的儲存空間實現。一般情況下,乙個程式在機器上執行時,除了需要儲存程式本身的指令、常數、變數和輸入資料外,還需要儲存對資料操作的儲存單元。

記做:s(n)= o(f(n))

十分鐘了解演算法(3) 有趣的演算法

k最近鄰,就是k個最近的鄰居的意思,每個樣本都可以用它最接近的k個鄰居來代表。如果乙個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。1.特徵抽取 挑選合適的特徵 確定樣本的特徵值,建立n維座標軸 標出每個樣本的點,並使用畢達哥拉斯公式...

十分鐘了解演算法(2) 初始貪心演算法和動態規劃

為了達到目的,每一步都採取最優的方法,也就是區域性最優解,從而得到全域性最優解。往往不能得到最優解,只有近似解。簡單粗暴,速度快。從條件中找出使得利益最大化的最值 不斷擴大規模,繼續找最值 np完全問題 定義 問題涉及序列 集合,需要計算所有的解並從中選出最小 最短的那個。特點 例子 1.活動安排問...

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...