剛學演算法,在看演算法導論,有些地方看的很慢,所以是不是可以找視頻看看?
視頻教程,特別是CS方面的視頻教程的作用,一般來說,是把人接受知識的速度放慢,比如把書上的兩三頁紙拆開來叨叨一個小時,以提供一種卧槽我一看視頻教程就理解了的錯覺。
我賭一塊,同樣看視頻教程的時間用來細心看書和理解,學到的東西絕對比看視頻來的多。唯一的問題只在於你願不願意靜下心來慢慢看書而已。《演算法導論》這本書大而全,內容很多,難度也較大,剛開始學演算法直接看這本書會有一些困難,建議先從簡單的入門《數據結構與演算法分析:C語言描述》開始。
我以前初看演算法書經常有這樣的想法『卧槽,原來可以這麼解決,太神奇了』,那一刻醐醍灌頂覺得又學會了新知識,然後過段時間就逐漸忘記了。看視頻也容易給人那種「偽聽懂,偽學會『的感覺,其實過段時間同樣也就忘記了。
學演算法的關鍵不是看視頻還是看經典教材,最最最關鍵是自己寫代碼做實現,代碼跑通了,代碼優化了才是學會了。
《演算法導論》是非常好的一本演算法書(樓教主(樓天城_百度百科)非常推崇《演算法導論》,見ACrush』s chat in topcoder (learning from the master)),需要耐下心來慢慢看,不可急於求成,操之過急。結合MIT《演算法導論》的公開課(地址見 @Zhzzzzzh 的回答)效果確實會更好。
我之前也寫過關於如何讀《演算法導論》的拙見,你是如何堅持讀完《演算法導論》這本書的? - 知乎用戶的回答,希望對題主有所幫助。先學一遍數據結構,然後去看MIT演算法導論公開課
當你知道自己能看懂證明部分的時候,跳過證明部分,然後就沒有太大的難度了…如果證明部分都看不懂,先擔心一下自己的數學會比較實際一點……
我不太同意排名最高的答案,每個人學習習慣不太一樣。
我的建議是,在剛開始入門的時候用視頻入門,比較了解想深入時用書去補。
這個和你上學是一個道理,老師的用處是領你進門,等你學會了回頭覺得老師不如你的時候,說明老師的任務完成了,你該自己探索或者跟著新的老師學了。
這書你用錯了。這書是用來放在書架上撐場子的。
這本書要耐心看下去,可以看看網易公開課。http://open.163.com/special/opencourse/algorithms.html
。。演算法不是看出來的,多用紙筆寫寫畫畫,然後再去機器上實現。不停的重複這個過程,直到你可以對一個演算法脫手而出。。。
演算法導論在初學者眼裡可是一個高傲的姑娘。直接看書,十有八九是上不了她。在視頻里幫慢慢把她衣服剝光,你又覺得太慢沒意思等不了。說到底,你到底多想上呢..
不同意高贊。
老師能告訴你作者是出於什麼需求用什麼思維理念想到那些書上的結論的。
而大多書只是告訴你,這樣可以,為什麼這樣可以。
並不能告訴你當初作者是怎麼想到這樣的,為什麼這樣最好,怎樣可以更好。而我認為懂了這些,才能算真正意義上掌握了這些知識。
我很喜歡「C++ concurrency in action」這本書就是因為,這本書寫得就像是一個老師在面對面教你一樣。每個人的學習習慣不大一樣,我是屬於那種聽老師講一講能更快理清思路的人(特別是演算法導論這種有一噸數學證明的大部頭Orz)
推薦MIT的公開課 Introduction to Algorithms (Fall 2011) (MIT的演算法課是一個系列,一共三門,這是第一門)
還有網易雲課堂的 演算法設計與分析之入門篇 (也是一個系列,主講人是哈工大的王宏志教授,演算法導論中文版(第三版)的譯者之一)
完全因人而異,因課而異。
我原來看微波教材也是看起來難受,後來下個視頻,許多疑點就清楚了。信號與系統,看視頻難受,看書就ok了。
就這樣
個人覺得,學習演算法不能光有輸入(看書),沒有輸出(做練習)。不知題主學演算法是在學校跟隨老師學習還是在自學。如果是在校上課,跟著做作業即可;如果是自學,可以參考麻省理工演算法導論公開課留的作業: Assignments | Introduction to Algorithms (SMA 5503),網易上也有該課程的視頻。親自動手編程、推導,才能深刻理解並應用,不用擔心進度緩慢,吃透一個點比囫圇吞棗要好。
人與人果然還是很難相互理解啊。
啰嗦可以跳過,不少信息還是有人細講有人點撥比自己死啃好得多,至於說效率的,呵呵,懂透徹了,加上訓練,不是事半功倍嗎?太多人死啃進死胡同,錯都不知道自己錯在哪,在錯誤的方向浪費力氣,很久才出來,還有人沒出來。相比之下誰效率高。
當然,自學能力出眾的人似乎可以例外,但是話別說太滿,任你再天才,總會遇到一些地方需要他人點撥,人的思維常常是容易進去誤區的。
題主,按你自己覺得適合的方法去學吧,快是結果但別是一開始的目的。我倒是覺得直接看這個不是太好,你完全可以先去看個類似的公開課之類的.
導論側重數學證明...這大概就是很多人覺得看著「難受,進度慢的原因」.普林的那個演算法數據結構的課就不錯,另外有本文字描述性的algorithm design.演算法,除了專門針對特定情況優化的,本質上都應該給人一種很general的感覺(KMP沒覺得...)所以學習的時候,應該是感性的方式去體會...
體會完了要剖析本質了,數學分析.(導論出場)最後在運用,並且延展的時候,又要回到感性.題主如果是初學演算法的話,其實是不建議看《演算法導論》的,因為這本書雖然叫導論,但是初學者很難看的懂。題主不如先去看看《演算法圖解》作為入門,這本書框架清晰,案例簡單易懂,而且很多演算法過程作者都用圖解的方式展現出來了,易於讀者理解。
教學視頻的話,網易公開課和麻省理工學院公開課上都有很多的。
6.042j 6.006 6.046j(也就是演算法導論公開課) 6.851 6.854
6.172youtube上都能搜到數學專業的表示,學數學真有優勢
確實花同樣的時間和精力,看書比視頻效率高,不過如果覺得看書一開始看不進去,可以用視頻帶一帶。coursera里有普林斯頓的演算法課,教材官網也有演算法的java程序實現,看過的都說好(我沒看過,額)也有中文的課,我記得是位奶奶講的,很清楚。演算法導論這本書還有自己配套的手冊吧,習題解好像也有,還有很多技術牛牛寫的博客也會講習題或者讀書筆記什麼的,看書的時候順便刷博客反正我會覺得更有動力一點。說完了。
推薦閱讀: