Algorithms学习笔记-Chapter0序言
0.開篇
《Algorithms》源自Berkeley和UCSD課程講義,由?? Sanjoy Dasgupta / Christos H. Papadimitriou / Umesh Vazirani 編寫。
豆瓣鏈接:https://book.douban.com/subject/1996256/
中文版:https://book.douban.com/subject/3155710/
1.Algorithm
伴隨數字系統的發展,算法“Algorithm”作為計算方法逐漸發展壯大,推動了社會發展。
設計算法需要注意的三個問題:
- 算法是否正確
- 算法性能怎樣/復雜度多少?
- 還能怎樣改進?
2.Fibonacci
定義:
可知Fn? = 20.694n,指數級。
- 遞歸定義算法fib1
正確性肯定能保證,復雜度為指數級
- 多項式算法fib2
算法復雜度為O(n)
3.O符號
前面的分析中,將一個語句抽象為一次操作,然而fib數極大的時候,兩大數相乘所需時間比小整數相乘時間多很多,即“Arithmetic operations on arbitrarily large numbers cannot possibly be performed in a single, constant-time step”,所以前面的抽象并不完全合理。
隨著整數增大,n位整數相乘復雜度為O(n)(見Chapter 1),因此fib2復雜度應為O(n2)。
O符號表示復雜度在常數范圍內的上界。
Ω表示常數范圍內的下界,而a = θ(b)表示a處于常數倍b的范圍內。
4.Exercise 0.4
是否存在比fib2更快的Fibonacci算法?
利用矩陣乘積,僅需求中間矩陣的n次方。
普通的算法需要n次連乘。從矩陣的角度來考慮,該矩陣滿秩,因此矩陣Mn可以分解成QTVnQ,其中Q為特征向量列組成的矩陣,V為特征值對角陣。這樣只需要對求特征值的n次冪即可。
?
轉載于:https://www.cnblogs.com/softwarecb/p/algorithms-C0.html
總結
以上是生活随笔為你收集整理的Algorithms学习笔记-Chapter0序言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法竞赛注意事项(废话)
- 下一篇: jieba库的使用和好看的词元