一 演算法的數學基礎

2022-09-03 07:54:08 字數 1111 閱讀 9739

換底公式:\(\log_ab=\frac\)

證明:設\(z=\log_ab, x=\log_cb,y=\log_ca\),則\(a^z=b,c^x=b,c^y=a =>^z=c^x=>yz=x,\)所以\(z=\frac\),即\(\log_ab=\frac\)

模同餘定理

(1)兩個數a與b,如果他們除以c後的餘數相同,則稱a和b模同餘。記為\(a\equiv b(mod n)\)

(2)模同餘的條件也可記為:a與b的差整除c

級數公式

(1)\(\sum\limits_^2^i=2^-1\)

(2)\(\sum\limits_^a^i=\frac-1}\)

(3)當公式2中,\(0,則\(\sum\limits_^a^i\leq \frac\)

相對增長率描述了2個函式之間的關係,是函式間的相對級別

函式關係的4個定理:

(1)定理1:有2個函式\(t(n)\)和\(f(n)\),若存在正數c和\(n_0\),使得當\(n\geq n_0\)時,\(t(n) \leq cf(n)\),則稱\(t(n)=o(f(n))\)

(2)定理2:有2個函式\(t(n)\)和\(f(n)\),若存在正數c和\(n_0\),使得當\(n\geq n_0\)時,\(t(n) \geq cf(n)\),則稱\(t(n)=\omega(f(n))\)

(3)定理3:若兩個函式\(t(n)\)和\(f(n)\)之間的關係是\(t(n)=\omega(f(n))\)或\(t(n)=o(f(n))\),則稱\(t(n)=\theta(f(n))\)

(4)定理4:有2個函式\(t(n)\)和\(f(n)\),若存在正數c和\(n_0\),使得當\(n> n_0\)時,\(t(n),則稱\(t(n)=o(f(n))\)

要證明\(t(n)=o(f(n))\),通常不需要證明過程,而是利用一些已知的結果。當\(t(n)=o(f(n))\)時,可以保證\(t(n)\)在以不快於\(f(n)\)的速率增長

我們可以通過計算極限\(\lim\limits_\frac\)來確定2個函式的相對增長率

(3)if/else語句:if(condition)else 執行時間為condition判斷時間 + s1/s2語句執行的時間

(4)遞迴函式的時間複雜度

演算法導論 一 演算法基礎

迴圈不變式主要用來幫助我們理解程式的正確性。迴圈不變式的三條性質 初始化 迴圈的第一次迭代之前,它為真。保持 如果迴圈的某次迭代之前它為真,那麼下次迭代之前它仍為真。終止 再迴圈終止時,可驗證演算法的正確性。偽 的重要性在於它可以簡潔地表達出演算法的本質 縮排代表塊結構 採用縮排代表塊結構可以大大提...

(一)演算法基礎 排序演算法

作為演算法的入門,排序演算法再合適不過了,在這裡我主要介紹四種排序演算法 插入排序 歸併排序 快速排序以及希爾排序。不過在介紹這些演算法之前,我們先來做一些準備工作。一 演算法測試函式 在實現乙個演算法後,必然要對這個演算法進行除錯和分析,這裡我寫了一些函式用於演算法的測試。隨機數組生成函式 int...

基礎演算法之一 演算法概論

常見的基礎演算法有 分治 動態規劃 貪心 回溯與分支限界等,常用的技巧方法有 遞迴,遞推,空間時間互換,快取,重疊子問題,記憶化。演算法的本質是 狀態,狀態的轉移,問題的定義,以及子問題的定義。分治演算法思想 分而治之,大事化小小事化了。一句話 化繁為簡。例子 快排。動態規劃思想 由前乙個或者幾個狀...