可由乙個給定計算模型機械地執行的規則或計算步驟序列稱為該計算模型的乙個計算
演算法是滿足下列條件的計算:
輸出:滿足給定約束條件地結果
演算法的目的是求解問題
乙個演算法面向乙個問題,而不是僅求解乙個問題的乙個或幾個例項
偽**例項
input: a[1, ..., n] = n個數
output: a[1, ..., n] = n個sorted數
for j=2 to n do
key <- a[j];
i <- j-1
while i>0 and a[i]>key do
a[i+1] <- a[i];
i <- i-1;
a[i+1] <- key;
設input和output是兩個集合。乙個問題是乙個關係r ⊆
\subseteq
⊆ input × output
output稱為問題r的輸出或結果集合
o ut
put=
output = \
output
= 問題定義了輸入和輸出的關係→
\to→ r=
=}
r = \ = \ \}
r==}
可計算否
能行計算否
演算法設計與分析
用計算機語言實現演算法
軟體系統
### 可計算理論
近似演算法
複雜性測度 →
\to→輸入大小的函式
用途 需要的數學基礎
需要的數學能力
設input是問題r的輸入集合,com
plex
ity(
x)
complexity(x)
comple
xity
(x)是求解r的演算法a的複雜性函式,siz
e(y)
size(y)
size(y
)是確定r中輸入大小的函式,a的最壞複雜性是
m ax
max\
max我們往往集中於只求最壞情況執行時間:
平均複雜性往往與最壞複雜性大致一樣差 mi
nmin\
min設 y∈i
nput
y\in input
y∈inpu
t, y作為演算法a的輸入出現的概率是p
yp_y
py,a的平均複雜性為
∑ y∈
inpu
tpy×
comp
lexi
ty(s
ize(
y)
)\sum_ p_y \times complexity(size(y))
y∈inpu
t∑p
y×c
ompl
exit
y(si
ze(y
))記作:θ(n
2)
\theta(n^2)
θ(n2
)
如果乙個演算法的最壞情況執行時間具有比另乙個演算法更低的增長量級,通常認為前者比後者有效
指令(所需時間為常量)
資料移動指令
控制指令
基本資料型別
基本操作 →
\to→ 每個操作常數的時間
暫不涉及
隨機化方法
演算法設計與分析 第一章 遞迴演算法
緒論 演算法的五大特性 輸入 乙個演算法有零個或多個輸入。輸出 乙個演算法有乙個或多個輸出。有窮性 乙個演算法必須總是在執行有窮步之後結束,且每一步都在有窮時間內完成。確定性 演算法中的每一條指令必須有確切的含義,對於相同的輸入只能得到相同的輸出。可行性 演算法描述的操作可以通過已經實現的基本操作執...
演算法設計與分析複習 第一章 演算法引論
1,什麼是演算法?演算法有哪些基本特徵?請指出演算法同程式的相同點與不同點。答 演算法是解決問題的方法或過程,是滿足以下四個性質的指令序列 1 輸入 有 0 個以上的輸入 2 輸出 至少有 1 個輸出 3 確定性 指令清晰 無歧義 4 有限性 指令執行次數有限,時間有限 5 可行性 演算法和程式的相...
演算法設計技巧與分析筆記 第一章
1.搜尋 設a 1 n 為乙個n個元素的陣列,判定給定元素x是否在a中 線性搜尋 直接掃瞄a中所有專案,將每個專案與x做比較。二分搜尋 a low high 為有序非空陣列 假定為公升序 a mid 為中間元素 演算法分析 時間複雜度 o log n 2.排序 設a 1 n 為乙個n個元素的陣列,將...