我被要求推薦一種資源(在線,書或教程)來學習算法(在麻省理工學院介紹算法的意義上) CS或數學專業。顯然,MIT的書太涉及了,一些較輕的處理方法(如OReilly的算法簡介)似乎仍然需要在算法分析方面有一些背景知識。是否有資源以某種方式呈現材料,使得那些沒有理論計算機科學背景的開發人員會覺得有用?學習資源非CS /數學學位算法
回答
我認爲學習算法的最好方法是通過各種競爭網站。
- USACO - 我個人最喜歡的,因爲它提供了通過材料
- TopCoder一個清晰的路徑 - 已經提到
- Sphere Online Judge - 偉大的,如果你想在比C/C++/Java的 之外的其他語言工作
就書籍而言,我見過的非數學專家的最佳單本介紹是Data Structures and Algorithms。它將逐行介紹一種算法,並向您展示它如何以數學方式進行分解,而CLRS的其他優秀分析部分則不太清晰。
Skiena的Algorithm Design Manual也很好,他的Programming Challenges也是優秀的,它本質上是通過Valladolid Online Judge的教程。老實說,我認爲初學者能做的一件最有用的事情就是實現各種算法 - 合併排序,比如說緊接着Quicksort,然後針對不同大小的輸入進行排序。創建一個電子表格,其中顯示隨時間增長的圖表。非專業人士很少有耐心或專業知識來建立一種復發關係,並通過它解決問題。但是你必須明白隨着時間的推移增長的效果,並且沒有更好的方法來學習這一點,而不是通過它的內存堆棧觀看你自己的程序衝擊。 :)
我說這是一個非CS,非數學程序員,他花了好幾個月的時間來圍繞算法分析。
我不確定你指的是哪本麻省理工學院的書,但是規範文本是CLRS.我不認爲它除了高中數學之外還真的假設任何背景。
就我個人而言,我發現在過去的幾年裏做TopCoder算法競賽是我學習常用算法並將其付諸實踐的最佳方式。也許你應該嘗試一樣。無論你做什麼,我都建議你花更多的時間來實踐你學習的東西,而不是頭腦時間,因爲這是真正內化不同技術的方法。
是的我正在談論CLRS。你是對的,因爲它是一個介紹性文字,然而,它的書面大小和學術方式會威脅到許多人...... – ennuikiller 2010-10-13 14:05:36
@ennuikiller - 當你第一次嘗試Knuth的時候,CLRS就不那麼令人生畏了。我知道,通過痛苦的經歷... – rtperson 2010-10-13 14:27:29
我會去參加由史蒂文斯基納所着的Algorithm Design Manual。它非常易讀,並以易於理解的方式從基礎開始。例如,它很好地解釋了big-O符號。重點在於實際應用,這對於來自非理論領域的初學者來說是一大好處。
本書的後半部分是常見算法問題和實際解決方案的參考。作爲學習輔助工具,我發現它非常寶貴,現在作爲參考。
感謝您的建議! – ennuikiller 2010-10-13 14:03:15
- 1. 學習按位運算的資源?
- 2. 去學習資源
- 3. 學習資源Verilog
- 4. XRCed學習資源?
- 5. 學習資源Selenium
- 6. Specflow學習資源
- 7. JavaScript學習資源
- 8. Umbraco學習資源?
- 9. Ocaml學習資源
- 10. Emberjs學習資源
- 11. AOP學習資源
- 12. RoR - 學習資源
- 13. 學習元組演算的好資源?
- 14. Angular2動畫學習資源
- 15. 資源學習jQuery的
- 16. 學習資源Spring MVC
- 17. 要學習的資源KnockoutJS
- 18. 學習pyqt的好資源?
- 19. wxWidgets 2.9學習資源
- 20. 學習QML的資源?
- 21. mockito的學習資源
- 22. 學習Spring.NET的資源
- 23. Qt的學習資源
- 24. 要學習的資源NewtonScript
- 25. 學習SuiteCRM的資源?
- 26. 學習螞蟻 - 資源
- 27. 學習資源tk/tile
- 28. Facebook API的學習資源
- 29. 要學習的資源MSDeploy
- 30. 要學習的資源EJB
這裏沒有競爭,只有同事 – none 2010-10-13 14:07:50
@none--我稱他們爲「比賽站點」,因爲他們專門設置了允許人們進行各種算法比賽的訓練。他們是優秀的學習工具。 – rtperson 2010-10-13 14:16:45