廣度優(yōu)先遍歷樹必須是二叉樹 有哪些比較基礎(chǔ)的計算機(jī)書籍?
有哪些比較基礎(chǔ)的計算機(jī)書籍?我就從一個算法初學(xué)者的角度來回答一下吧。推薦一下「算法與數(shù)據(jù)結(jié)構(gòu)」從入門到進(jìn)階的書單。一.入門系列這些書籍通過圖片、打比方等通俗易懂的方法來講述,讓你能達(dá)到懂一些基礎(chǔ)算法,
有哪些比較基礎(chǔ)的計算機(jī)書籍?
我就從一個算法初學(xué)者的角度來回答一下吧。
推薦一下「算法與數(shù)據(jù)結(jié)構(gòu)」從入門到進(jìn)階的書單。
一.入門系列
這些書籍通過圖片、打比方等通俗易懂的方法來講述,讓你能達(dá)到懂一些基礎(chǔ)算法,線性表,堆棧,隊列,樹,圖,DP算法,背包問題等,不要求會實現(xiàn),但是看過以下這些書對于之后實現(xiàn)算法打下堅實的思維基礎(chǔ)。
很適合在閑暇之余拿出來閱讀一番。
1.1 《啊哈!算法》
閱讀鏈接:
這不過是一本有趣的算法書而已。和別的算法書比較,如果硬要說它有什么特點的話,那就是你能看懂它。
推薦理由: 本書中涉及到的數(shù)據(jù)結(jié)構(gòu)有棧、隊列、鏈表、樹、并查集、堆和圖等;涉及到的算法有排序、枚舉、深度和廣度優(yōu)先搜索、圖的遍歷,當(dāng)然還有圖論中不可以缺少的四種最短路徑算法、兩種最小生成樹算法、 割點與割邊算法、二分圖的最大匹配算法等
1.2《算法圖解》
閱讀鏈接:
推薦理由:這本圖解書很容易看懂,不枯燥。書中的前三章將幫助你打下基礎(chǔ),帶你學(xué)習(xí)二分查找、大O表示法、兩種基本的數(shù)據(jù)結(jié)構(gòu)以及遞歸等。余下的篇幅將主要介紹應(yīng)用廣泛的算法,具體內(nèi)容包括:面對具體問題時的解決技巧,比如,何時采用貪婪算法或動態(tài)規(guī)劃;散列表的應(yīng)用;圖算法;K最近鄰算法。
1.3《妙趣橫生的算法(C語言實現(xiàn) 第2版)》
閱讀鏈接:
推薦理由:理論與實踐相結(jié)合,旨在幫助讀者理解算法,并提高C語言編程能力,培養(yǎng)讀者的編程興趣,并鞏固已有的C語言知識。
1.4《趣學(xué)算法》
閱讀鏈接:
推薦理由:非常好的一本書,圖解多,思路清晰,不僅講了問題分析算法設(shè)計的過程,還講了如何優(yōu)化算法,使讀者體驗算法的奧妙
1.5《大話數(shù)據(jù)結(jié)構(gòu)》
閱讀鏈接:
推薦理由:文中附有大量插圖,適合對大段文字提不起興趣的朋友。以一個計算機(jī)教師教學(xué)為場景,講解數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法的知識。通篇以一種趣味來敘述,大量引用了各種各樣的生活知識來類比,并充分運用圖形語言來體現(xiàn)抽象內(nèi)容,對數(shù)據(jù)結(jié)構(gòu)所涉及到的一些經(jīng)典算法做到逐行分析、多算法比較。與市場上的同類數(shù)據(jù)結(jié)構(gòu)圖書相比,本書內(nèi)容趣味易讀,算法講解細(xì)致深刻,是一本非常適合自學(xué)的讀物。
1.6 《學(xué)習(xí)算法思想 修煉編程內(nèi)功》
慕課網(wǎng)鏈接:
推薦理由:視頻課程,這樣精致的課程很難找到第二個,我暫時還沒看過比這個課程能更好的進(jìn)行算法入門了,小吳的PPT制作動畫靈感就是來源于此。
二.基礎(chǔ)系列
通過基本入門算法書的調(diào)教,你已經(jīng)逐漸體會到了算法的魅力,現(xiàn)在正是時候去閱讀基礎(chǔ)系列踏入算法的領(lǐng)域?。?!
這些書籍需要你費點心思去閱讀。
2.1《算法導(dǎo)論中文版》
閱讀鏈接:
排在基礎(chǔ)系列第一的位置應(yīng)該沒意見吧:)
推薦理由:本書將嚴(yán)謹(jǐn)性和全面性融為一體,深入討論各類算法,并著力使這些算法的設(shè)計和分析能為各個層次的讀者接受。
2.2《數(shù)據(jù)結(jié)構(gòu)與算法 Java版》
閱讀鏈接:
適合想通過Java語言來學(xué)習(xí)算法的小伙伴們。
推薦理由:本書把算法分析與最有效率的Java程序的開發(fā)有機(jī)地結(jié)合起來,深入分析每種算法,內(nèi)容全面、縝密嚴(yán)格,并細(xì)致講解精心構(gòu)造程序的方法。
2.3《數(shù)據(jù)結(jié)構(gòu)與算法:Python語言描述》
閱讀鏈接:
適合想通過Python語言來學(xué)習(xí)算法的小伙伴們。
推薦理由:本書基于Python語言介紹了數(shù)據(jù)結(jié)構(gòu)與算法的基本知識,主要內(nèi)容包括抽象數(shù)據(jù)類型和Python面向?qū)ο蟪绦蛟O(shè)計、線性表、字符串、棧和隊列、二叉樹和樹、集合、排序以及算法的基本知識。本書延續(xù)問題求解的思路,從解決問題的目標(biāo)來組織教學(xué)內(nèi)容,注重理論與實踐的并用。
2.4《學(xué)習(xí)JavaScrit數(shù)據(jù)結(jié)構(gòu)與算法(第2版)》
閱讀鏈接:
適合想通過JavaScrit語言來學(xué)習(xí)算法的小伙伴們。
推薦理由:本書首先介紹了JavaScript語言的基礎(chǔ)知識,接下來討論了數(shù)組、棧、隊列、鏈表、集合、字典、散列表、樹、圖等數(shù)據(jù)結(jié)構(gòu),之后探討了各種排序和搜索算法,包括冒泡排序、選擇排序、插入排序、歸并排序、快速排序、順序搜索、二分搜索,還介紹了動態(tài)規(guī)劃和貪心算法等常用的高級算法及相關(guān)知識。
2.5《數(shù)據(jù)結(jié)構(gòu)與算法分析:C語言描述(原書第2版)》
閱讀鏈接:
適合想通過C語言來學(xué)習(xí)算法的小伙伴們。
推薦理由:在本書中,作者更加精煉并強(qiáng)化了他對算法和數(shù)據(jù)結(jié)構(gòu)方面創(chuàng)新的處理方法。通過C程序的實現(xiàn),著重闡述了抽象數(shù)據(jù)類型的概念,并對算法的效率、性能和運行時間進(jìn)行了分析。
2.6《數(shù)據(jù)結(jié)構(gòu)與算法分析:C 描述(第3版)》
閱讀鏈接:
適合想通過C 語言來學(xué)習(xí)算法的小伙伴們。
推薦理由:這是是數(shù)據(jù)結(jié)構(gòu)和算法分析的經(jīng)典教材,書中使用主流的程序設(shè)計語言C 作為具體的實現(xiàn)語言。
三.進(jìn)階系列
掌握了一定的數(shù)據(jù)結(jié)構(gòu)與算法的知識,現(xiàn)在你已經(jīng)是一名合格的程序員了。但如果你想要參加面試,那就需要閱讀以下書籍進(jìn)行準(zhǔn)備了。
這些書籍需要你花費時間和精力去仔細(xì)閱讀,但為了漲薪,值得!
3.1 《劍指Offer:名企面試官精講典型編程題(第2版)》
閱讀鏈接:
我想,只要是程序員應(yīng)該都聽說過這本書吧,哪怕你沒看過。
推薦理由:《劍指Offer:名企面試官精講典型編程題(第2版)》剖析了80個典型的編程面試題,系統(tǒng)整理基礎(chǔ)知識、代碼質(zhì)量、解題思路、優(yōu)化效率和綜合能力這5個面試要點。
3.2《算法謎題》
閱讀鏈接:
推薦理由:算法是計算機(jī)科學(xué)領(lǐng)域最重要的基石之一。算法謎題,就是能夠直接或間接地采用算法來加以解決的謎題。求解算法謎題是培養(yǎng)和鍛煉算法思維能力一種最有效和最有樂趣的途徑。
3.3《編程之法 面試和算法心得》
閱讀鏈接:
推薦理由:本書涉及面試、算法、機(jī)器學(xué)習(xí)三個主題。書中的每道編程題目都給出了多種思路、多種解法,不斷優(yōu)化、逐層遞進(jìn)。
四.工作系列
適合已經(jīng)工作的程序員閱讀,可以提升你的思維廣度,也可以在面試前翻一翻。
4.1《編程珠璣(第2版?修訂版)》
閱讀鏈接:
歷史上最偉大的計算機(jī)科學(xué)著作之一?。?!
推薦理由:融深邃思想、實戰(zhàn)技術(shù)與趣味軼事于一爐的奇書,帶你真正領(lǐng)略計算機(jī)科學(xué)之美。
4.2《程序員實用算法》
閱讀鏈接:
推薦理由:《程序員實用算法》重點關(guān)注的是實用、立即可用的代碼,并且廣泛討論了可移植性和特定于實現(xiàn)的細(xì)節(jié)?!冻绦騿T實用算法》作者介紹了一些有用但很少被討論的算法,它們可用于語音查找、日期、B樹和索引文件、數(shù)據(jù)壓縮、任意精度的算術(shù)、校驗和與數(shù)據(jù)驗證,并且還最全面地介紹了查找例程、排序算法和數(shù)據(jù)結(jié)構(gòu)。
4.3《編程之美》
閱讀鏈接:
推薦理由:這本書收集了約60道算法和程序設(shè)計題目,這些題目大部分在近年的筆試、面試中出現(xiàn)過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發(fā),引導(dǎo)讀者發(fā)現(xiàn)問題,分析問題,解決問題,尋找更優(yōu)的解法。
五.大佬系列
適合大佬們踏入的領(lǐng)域,小吳膜拜中。
5.1《數(shù)據(jù)挖掘原理與算法》
閱讀鏈接:
推薦理由:內(nèi)容覆蓋面最廣,除了所有書都有的內(nèi)容外,還包括FOIL算法和空間數(shù)據(jù)挖掘等。
5.2《集體智慧編程》
閱讀鏈接:
推薦理由:非常實用的寶典,看了這本書,如果有工具,可以解決大部分問題。
如何系統(tǒng)學(xué)習(xí)AI?
人工智能雖然經(jīng)過了60多年的發(fā)展,期間也有眾多著名科學(xué)家的參與,但是目前人工智能領(lǐng)域的發(fā)展依然處在初級階段,整個人工智能領(lǐng)域還有大量的課題需要攻關(guān),所以目前人工智能領(lǐng)域更關(guān)注中高端人才。
要想系統(tǒng)的學(xué)習(xí)AI一方面需要具備扎實的基礎(chǔ)知識,另一方面還需要通過具體的崗位實踐(課題研發(fā))來完成,因為目前人工智能領(lǐng)域的很多方向還依然有待完善,所以對于初學(xué)者來說選擇一個方向并完成入門學(xué)習(xí)是比較現(xiàn)實的選擇。
人工智能的入門學(xué)習(xí)需要具備以下知識結(jié)構(gòu):
第一:編程語言。編程語言是學(xué)習(xí)人工智能的基礎(chǔ)內(nèi)容之一,掌握了編程語言才能完成一系列具體的實驗。推薦學(xué)習(xí)Python語言,一方面原因是Python語言簡單易學(xué),實驗環(huán)境也易于搭建,另一方面原因是Python語言有豐富的庫支持。目前Python語言在人工智能領(lǐng)域有廣泛的應(yīng)用,包括機(jī)器學(xué)習(xí)、自然語言處理和計算機(jī)視覺等方向。
第二:算法設(shè)計基礎(chǔ)。目前人工智能的研究內(nèi)容集中在六個大的方向上,分別是自然語言處理、知識表示、自動推理、機(jī)器學(xué)習(xí)、計算機(jī)視覺和機(jī)器人學(xué),這些內(nèi)容都有一個重要的基礎(chǔ)就是算法設(shè)計,可以說算法設(shè)計是研究人工智能的關(guān)鍵所在。學(xué)習(xí)算法設(shè)計可以從基礎(chǔ)算法開始,包括遞歸、概率分析和隨機(jī)算法、堆排序、快速排序、線性時間排序、二叉樹搜索、圖算法等內(nèi)容。
第三:人工智能基礎(chǔ)。人工智能基礎(chǔ)內(nèi)容的學(xué)習(xí)是打開人工智能大門的鑰匙,人工智能基礎(chǔ)內(nèi)容包括人工智能發(fā)展史、智能體、問題求解、推理與規(guī)劃、不確定知識與推理、機(jī)器學(xué)習(xí)、感知與行動等幾個大的組成部分。
在完成以上內(nèi)容的學(xué)習(xí)之后,最好能參加一個人工智能的項目組(課題組),在具體的實踐中完成進(jìn)一步的學(xué)習(xí)過程。
隨著大數(shù)據(jù)的發(fā)展,人工智能也進(jìn)入了一個全新的發(fā)展時代,對于基礎(chǔ)薄弱的初學(xué)者來說,通過大數(shù)據(jù)進(jìn)入人工智能領(lǐng)域也是一個不錯的選擇。
我從事互聯(lián)網(wǎng)行業(yè)多年,目前也在帶計算機(jī)專業(yè)的研究生,主要的研究方向集中在大數(shù)據(jù)和人工智能領(lǐng)域,我會陸續(xù)在頭條寫一些關(guān)于互聯(lián)網(wǎng)技術(shù)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會有所收獲。
如果有互聯(lián)網(wǎng)方面的問題,也可以咨詢我,謝謝!