怎麼學演算法
㈠ 演算法該怎麼學感覺好難
很多人都會說"學一樣東西難",一開始我也覺得很大程度是因為每個人的智力水平等等不可改變的因素. 但是後來我發現,有一個東西也很能決定一個人是否會覺得一樣東西難學,那就是理解方式.
一件事物通過不同的途徑讓一個人理解效果差異是很大的.就比如說數學裡面教你一個圓,有的人看到一個圓就能很快明白什麼是圓,有的人卻非得看到x^2+y^2 = r^2這種式子才有感覺,甚至有的人需要"到定點距離為定長的點集"這種描述才能理解. 那這個不一定是說誰的智力水平更高,而是因為他們對不同形式事物的敏感程度不同.
回到演算法上來.演算法本質是一種數學.他是抽象的操作集合.(看這么說你可能會覺得不知所雲,但是如果我說他只是一種解決問題的辦法可能就好理解). 所以很多書,論文,或者很多老師教的都是一種數學描述的演算法,這樣子的演算法就我個人而言相當難理解,看了就想到代數高數什麼的.. 但是如果找一個圖文並茂的解釋,或者找個人一步一步把一個演算法給你我比劃一下,我立刻就能理解. 說白了,就是你一定要找很多很多不同的角度來嘗試接受一種東西,你一定可以找到一種你相當敏感的角度,用這個角度學習你就會游刃有餘. 智力因素並沒有太大影響的.
具體點說,你可以試試這幾種不同的角度.
直接看數學形式的演算法.我個人最無法接受的形式,但是有人很喜歡..例子就是演算法導論上面那種描述.
聽一般語言描述,最理想是找一個明白的人,給你用通俗語言講講原理.這個不錯,很多我是這么理解的
圖形理解,叫理解的人給你畫插圖,分布圖,結構圖等等,來分解一個演算法,找到他的思路.說到圖,有一個人的博客這方面做得很好:matrix67.
程序理解.找到一種演算法的實現程序,對著程序理解,可以嘗試分布運行,觀察一下變數的變化,這樣來理解演算法.
實在太難的演算法,可以邊寫邊改來理解.當時我學習插頭dp的時候就是這樣,不論怎麼總是一知半解,最後硬著頭皮寫了一遍,改了很久,但是改過了的時候,也就真的明白了是怎麼回事了.
也許還有別的什麼辦法,因為人對事物的接受角度實在是太多了.多想想你平時學習什麼比較容易,找出你最敏感的理解方式就行了.
有感而發說的一些東西,不一定都是正確的,只供參考,歡迎指正.
㈡ 如何學習數據結構與演算法
1、記住數據結構,記住演算法思想(是什麼)記住數據結構最直觀的東西;記憶該數據結構的定義、性質、特點等。很多東西的理解和創新都是以記憶為前提的。
2、進行大量相關編程練習,用編程語言去實現某一數據結構上的演算法(怎麼辦)
很多時候,理解一個演算法很容易,很容易在紙上去模擬一個演算法的實現過程。但具體實現,則是另一回事。一定得先自己思考,然後再去看書中給的編程語言實現。
3、“記住”特定情景下,利用某一特定的數據結構,去解決問題 (為什麼+怎麼辦)
每介紹一種數據結構,浙大數據結構與演算法的MOOC課程都會有一個實際問題來作為“引子”,回答了“這種數據結構為什麼會出現”。有的是為了實現特定的操作,有的是為了時間和空間上(大部分考慮的是時間復雜性)效率的更高(所以,沒事的時候,分析一下演算法的時間復雜性)。這些東西,我們也須理解記憶。每一數據結構都有其特性,去解決某一類問題,我們需要去記憶,去感悟。
4、形成一個屬於自己的知識體系
如何去“記住”(記好筆記,多多復習);在學習過程中,遇到挫折,產生挫敗感該如何處理(這個是必然會發生的,總有難以理解不會的地方);如何進行心態方面的調整(欲速則不達,不過也有”敏捷學習“的概念)。
㈢ 想學習演算法,如何入門
入門的話推薦兩本書:《演算法圖解》和《大話數據結構》,
另外推薦一門視頻課程《300分鍾搞定數據結構與演算法》,不想花時間看書的同學,建議看這個視頻課程,是關於數據結構和演算法很好的一個課程。
㈣ 做為一個初學者,如何才能學好演算法呢,感覺自己很菜
凡事都講究動機,你學習演算法的目的是什麼呢?目的不同,學法不同側重不同。
如果你是准備跳槽,以面試為目的,可以先從cracking the coding interview入手,題目是按照鏈表,樹圖,遞歸這種章節安排的,每章都有題目,難度適中,第一遍自己寫不出來很正常,畫圖分析,然後再做第二遍,第二遍就快很多,理解也深刻了,實在理解不了的演算法,沒辦法,背吧,說不定到後面不知什麼時候就理解了,所謂讀書百遍,其意自現,演算法也一樣。
如果你是半路出家的程序員,看書覺得看不下去,可以試著看看視頻,現在網路這么發達,網上有很多免費的精品視頻,比如潭州教育老師的數據結構以及清華鄧俊輝老師的數據結構都是特別好的課程。
最後一種就是你對演算法理論和精髓確實感興趣,且有一定的數學功底,你可以嘗試研究下《演算法導論》,甚至《計算機程序設計藝術》(反正我是看不下去)。
其實,無論出於哪種目學習演算法,其實最重要的一點就是:多編程實踐,多思考,這是廢話,但這也是真理。
㈤ 初學者如何學演算法
先看看兩本書,一本數據結構,一本離散數學。。。看完以後你就會。。。。
㈥ 學習演算法的路,該怎麼走
先學數據結構,然後看演算法入門書,推薦《趣學演算法》,有大量圖解,比較簡單,容易懂,而且有源碼下載直接運行。傳統的演算法書,大多注重內容的收錄,但卻忽視思維過程的展示,因此我們學習了經典的演算法,卻費解於演算法設計的過程。遇到一個實際問題,通過問題分析,選擇使用什麼樣的演算法策略,基於這種演算法策略選擇什麼樣的數據結構,有時演算法策略和數據結構的選擇並不是唯一的,不同的演算法策略和數據結構設計的演算法,其復型行雜性是不同的。而很多書就是灌輸式的講一個實例,一下子就選擇了一個認定是最優的演算法策略,告訴你就這樣干,不談數據結構,然後分析演算法復雜性,就結束了。
原則上講演算法策略就講演算法策略,不依賴任何程序設計語言和數橡租薯據結構,但對很多學生來講,尤其是語言沒學好,數據結構也不熟練的同學,只講演算法策略,如同空中樓閣。自己用演算法解決實際問題,一頭霧水。剛入門者不建議直接看《演算法導論》,雖然它是經典,不適合初學者,會看蒙圈。演算法入門推薦《趣學演算法》,這本書有大量圖解,適合初學者,從問題出發,根據實際問題進行分析,選擇合適的演算法策略,並分析為什麼採用這種演算法策略,然後選擇什麼數據結構,梁者不同的數據結構復雜性會有什麼區別,巧妙地將數據結構和演算法策略擰成了一條線。通過大量實例,充分展現演算法設計的思維過程,讓學生充分體會遇到一個問題,如何分析,使用什麼演算法策略,採用什麼數據結構,演算法的復雜性如何,是否有優化的可能。

㈦ 想做一名演算法工程師需要學什麼
1、業務認知&問題定位
首先要清楚你所要解決的問題是什麼,是否需要復雜的演算法求解。問題的定義來源於你對業務的認知和理解。我們經常陷入一種誤區,覺得自己是一名演算法工程師,遇到任務問題都想要用復雜的演算法去求解。正所謂一頓操作猛如虎,得來的效果卻很一般。因此,做事之前一定要在理解業務的基礎上,把問題定位清楚,用合適的方法求解。
2、數據挖掘&分析
深度學習的應用能夠突飛猛進的一個重要原因就是大數據的支撐。當前獲取數據的成本很低,而數據清理和挖掘的成本很高,但非常重要。數據是模型的輸入,是模型能夠擬合的上限。在入模之前,你需要花一定的精力用於數據工作,這是必要也是值得的。因此,掌握數據能力也是一名演算法工程師的必經之路。
3、演算法策略
這是每位演算法工程師的硬實力,有了清晰的問題和可用的數據後,我們需要選擇合適的演算法策略求解問題。就銷量預估而言,由於特徵大部分都是表格型,樹模型及其變體成為首選的方案。通過樹模型,你能夠快速拿到一個不錯的baseline。但千萬不要停滯不前,你需要調研更多的先進的方案進行優化,即使此時能夠拿到的受益不多,但請堅持專研的精神(近期時序模型中,熱度很高的informer值得嘗試)。此外,「人工智慧,有多少人工就有多少智能」這句話在實際應用領域體現得淋漓盡致。策略也屬於演算法的一部分,人工策略有時候能夠帶來很大的受益,也能夠找到更適合的演算法優化方向。例如,我們在優化首猜的貨品池時,考慮到首猜目前的推薦演算法已經非常優秀了,但消費者的成交來源主要是搜索,我們通過人工分析選擇了做增量貨品供給的方式,拿到了不錯的業務效果。基於此,我們也找到了更合適的選品演算法優化方向。
4、離線實驗和線上AB實驗
實驗是驗證理論的最佳手段,也是最具有說服力的。我們需要找到幾個合適的指標進行優化,並且要保證離線效。
㈧ 怎麼學習數據結構演算法效果比較好,需要每個程序都編寫嗎
1. 程序 = 數據結構 + 演算法
2. 學習:剛開始看時肯定會有些不清楚,因為你是剛學完 C 語言,對 C 語言還不太熟練。你學習數據結構時找一本經典的數據結構書,看完一個數據結構後用 C 語言將其實現。開始時的實現肯定會有困難,那麼請 google 下會有很多優秀的數據結構源碼的。你可以模仿這些優秀的源碼寫。請記住一定要開始時自己實現,當被卡住了就看一下源碼,看看自己被卡在了什麼地方,引起注意以便下次自己會寫。當你把書上的數據結構源碼寫了一遍之後,你已經超過了你絕大部分的同學。
3. 運用: 這時你就需要對這些數據結構加以運用,你可以在 google 上搜索「某個數據結構 + ACM」,你就會看到一些題目,這些題目都是數據結構的運用,甚至有這些數據結構的變形。每種數據結構做5題左右。期間你還會遇到程序另一重要的方面演算法,有不會的就 google。 期間可以學到的數據結構和演算法做小軟體玩兒,例如壓縮軟體,五子棋之類的。
4. 深入: 當你完成了第三步你已經是你們學校的小高手了。這時看你的方向如果這時發現自己喜歡 ACM 的話就去搞 ACM,如果不感興趣,就找自己感興趣的技術學習一下,做幾個完整的項目,例如寫個編譯器,或者實現一個簡單的編程語言。
總結:無論選擇哪條道路只要按照這些做了,你以後肯定會成為搶手貨。
