怎麼學習演算法
『壹』 怎麼學習演算法
1、先學好一種熱門的編程語言基礎,一定要精通;
2、學好數學,由淺入深,高等數學、線性代數、離散數學、概率論、數理統計、計算方法等等;
3、主要培養邏輯能力,可以去網上下載或參考經典演算法題目的解法和思路,因為算數的部分計算機能搞定~
4、不要束縛自己的思維,頭腦風暴一般,隨意思考,演算法想怎麼寫就怎麼寫,你會發現突然就寫對了,但不知道為什麼會對=_=
希望對你有幫助
『貳』 演算法怎麼學
貪心演算法的定義:
貪心演算法是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,只做出在某種意義上的局部最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當前狀態有關。
解題的一般步驟是:
1.建立數學模型來描述問題;
2.把求解的問題分成若干個子問題;
3.對每一子問題求解,得到子問題的局部最優解;
4.把子問題的局部最優解合成原來問題的一個解。
如果大家比較了解動態規劃,就會發現它們之間的相似之處。最優解問題大部分都可以拆分成一個個的子問題,把解空間的遍歷視作對子問題樹的遍歷,則以某種形式對樹整個的遍歷一遍就可以求出最優解,大部分情況下這是不可行的。貪心演算法和動態規劃本質上是對子問題樹的一種修剪,兩種演算法要求問題都具有的一個性質就是子問題最優性(組成最優解的每一個子問題的解,對於這個子問題本身肯定也是最優的)。動態規劃方法代表了這一類問題的一般解法,我們自底向上構造子問題的解,對每一個子樹的根,求出下面每一個葉子的值,並且以其中的最優值作為自身的值,其它的值舍棄。而貪心演算法是動態規劃方法的一個特例,可以證明每一個子樹的根的值不取決於下面葉子的值,而只取決於當前問題的狀況。換句話說,不需要知道一個節點所有子樹的情況,就可以求出這個節點的值。由於貪心演算法的這個特性,它對解空間樹的遍歷不需要自底向上,而只需要自根開始,選擇最優的路,一直走到底就可以了。
話不多說,我們來看幾個具體的例子慢慢理解它:
1.活動選擇問題
這是《演算法導論》上的例子,也是一個非常經典的問題。有n個需要在同一天使用同一個教室的活動a1,a2,…,an,教室同一時刻只能由一個活動使用。每個活動ai都有一個開始時間si和結束時間fi 。一旦被選擇後,活動ai就占據半開時間區間[si,fi)。如果[si,fi]和[sj,fj]互不重疊,ai和aj兩個活動就可以被安排在這一天。該問題就是要安排這些活動使得盡量多的活動能不沖突的舉行。例如下圖所示的活動集合S,其中各項活動按照結束時間單調遞增排序。
關於貪心演算法的基礎知識就簡要介紹到這里,希望能作為大家繼續深入學習的基礎。
『叄』 怎麼學習函數演算法
老師上課務必要認真聽,因為這個知識非常重要,每次考試肯定會涉及到. 要記住各種函數的表達式,圖像,還有當圖像怎麼移動時函數表達式會怎麼變化…… 當一個點在函數圖像上時,要善於把這個點代入到函數表達式中…… 其實說的越多還不如上課好好聽,落實每一個知識點,加油哦! ——男孩/jump
『肆』 初學者如何學演算法
先看看兩本書,一本數據結構,一本離散數學。。。看完以後你就會。。。。