算法精粹 經(jīng)典計算機科學(xué)問題的Python實現(xiàn)(異步圖書出品)
定 價:59 元
- 作者:大衛(wèi)·科帕克(David Kopec) 著,戴旭 譯
- 出版時間:2020/7/1
- ISBN:9787115535122
- 出 版 社:人民郵電出版社
- 中圖法分類:TP311.561
- 頁碼:209
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書是一本面向中高級程序員的算法教程,借助Python語言,用經(jīng)典的算法、編碼技術(shù)和原理來求解計算機科學(xué)的一些經(jīng)典問題。全書共9章,不僅介紹了遞歸、結(jié)果緩存和位操作等基本編程組件,還講述了常見的搜索算法、常見的圖算法、神經(jīng)網(wǎng)絡(luò)、遺傳算法、k均值聚類算法、對抗搜索算法等,運用了類型提示等Python高級特性,并通過各級方案、示例和習(xí)題展開具體實踐。
本書將計算機科學(xué)與應(yīng)用程序、數(shù)據(jù)、性能等現(xiàn)實問題深度關(guān)聯(lián),定位獨特,示例經(jīng)典,適合有一定編程經(jīng)驗的中高級Python程序員提升用Python解決實際問題的技術(shù)、編程和應(yīng)用能力。
1.計算機科學(xué)和算法問題具有非常廣泛的應(yīng)用領(lǐng)域,而且經(jīng)常出現(xiàn)在程序員面試題中;
2.本書所采用的Python語言是當前***的程序設(shè)計語言,基于Python3.7版本;
3.將計算機科學(xué)與應(yīng)用程序、數(shù)據(jù)、性能等現(xiàn)實問題深度關(guān)聯(lián)。
看似新穎或獨特的計算機科學(xué)問題,往往根植于經(jīng)典算法、編碼技巧和工程原理。經(jīng)典方法仍然是解決這些問題的最佳途徑!理解用Python實現(xiàn)的這些技巧,可以擴展你在Web開發(fā)、數(shù)據(jù)處理、機器學(xué)習(xí)等方面獲得成功的潛力。
本書詳細介紹一些經(jīng)過時間驗證的方案、練習(xí)和算法,以提升你解決計算機科學(xué)問題的技能。從二分搜索算法這種簡單的任務(wù),到用k 均值聚類算法對數(shù)據(jù)進行聚類,很多編碼挑戰(zhàn)都將迎刃而解。破解將計算機科學(xué)與應(yīng)用、數(shù)據(jù)、性能等真實世界相關(guān)聯(lián)的問題,會讓你特別享受那種滿足感,甚至可以讓你在下一次工作面試中應(yīng)對自如!
本書主要內(nèi)容
● 搜索算法。
● 圖的常見技術(shù)。
● 神經(jīng)網(wǎng)絡(luò)。
● 遺傳算法。
● 對抗性搜索。
● 始終使用類型提示。
本書適合中級Python 程序員閱讀。
大衛(wèi)·科帕克(David Kopec)是香普蘭學(xué)院(Champlain College)的計算機科學(xué)與創(chuàng)新專業(yè)助理教授,該學(xué)院位于美國佛蒙特州的伯靈頓市。他是一位經(jīng)驗豐富的軟件開發(fā)人員,也是Classic Computer Science Problems in Swift和Dart for Absolute Beginners的作者。他擁有達特茅斯學(xué)院(Dartmouth College)的經(jīng)濟學(xué)學(xué)士學(xué)位和計算機科學(xué)碩士學(xué)位。
目錄
第 1章 幾個小問題 1
1.1 斐波那契序列 1
1.1.1 嘗試第 一次遞歸 1
1.1.2 基線條件的運用 3
1.1.3 用結(jié)果緩存來救場 4
1.1.4 自動化的結(jié)果緩存 5
1.1.5 簡潔至上的斐波那契 6
1.1.6 用生成器生成斐波那契數(shù) 7
1.2 簡單的壓縮算法 7
1.3 牢不可破的加密方案 12
1.3.1 按順序讀取數(shù)據(jù) 12
1.3.2 加密和解密 13
1.4 計算( 15
1.5 漢諾塔 15
1.5.1 對塔進行建!16
1.5.2 求解漢諾塔問題 17
1.6 現(xiàn)實世界的應(yīng)用 19
1.7 習(xí)題 20
第 2章 搜索問題 21
2.1 DNA搜索 21
2.1.1 DNA的存儲方案 22
2.1.2 線性搜索 23
2.1.3 二分搜索 24
2.1.4 通用示例 26
2.2 求解迷宮問題 28
2.2.1 生成一個隨機迷宮 29
2.2.2 迷宮的其他函數(shù) 30
2.2.3 深度優(yōu)先搜索 31
2.2.4 廣度優(yōu)先搜索 35
2.2.5 A*搜索 39
2.3 傳教士和食人族 44
2.3.1 表達問題 45
2.3.2 求解 47
2.4 現(xiàn)實世界的應(yīng)用 48
2.5 習(xí)題 49
第3章 約束滿足問題 51
3.1 構(gòu)建約束滿足問題的解決框架 52
3.2 澳大利亞地圖著色問題 55
3.3 八皇后問題 58
3.4 單詞搜索 60
3.5 字謎(SEND+MORE=MONEY) 63
3.6 電路板布局 65
3.7 現(xiàn)實世界的應(yīng)用 66
3.8 習(xí)題 67
第4章 圖問題 69
4.1 地圖就是圖 69
4.2 搭建圖的框架 71
4.3 查找最短路徑 77
4.4 最小化網(wǎng)絡(luò)構(gòu)建成本 79
4.4.1 權(quán)重的處理 79
4.4.2 查找最小生成樹 83
4.5 在加權(quán)圖中查找最短路徑 89
4.6 現(xiàn)實世界的應(yīng)用 95
4.7 習(xí)題 96
第5章 遺傳算法 97
5.1 生物學(xué)背景知識 97
5.2 通用的遺傳算法 98
5.3 簡單測試 105
5.4 重新考慮SEND+MORE=MONEY問題 107
5.5 優(yōu)化列表壓縮算法 111
5.6 遺傳算法面臨的挑戰(zhàn) 113
5.7 現(xiàn)實世界的應(yīng)用 114
5.8 習(xí)題 115
第6章 k均值聚類 117
6.1 預(yù)備知識 117
6.2 k均值聚類算法 119
6.3 按年齡和經(jīng)度對州長進行聚類 124
6.4 按長度聚類邁克爾·杰克遜的專輯 128
6.5 k均值聚類算法問題及其擴展 130
6.6 現(xiàn)實世界的應(yīng)用 131
6.7 習(xí)題 131
第7章 十分簡單的神經(jīng)網(wǎng)絡(luò) 133
7.1 生物學(xué)基礎(chǔ) 133
7.2 人工神經(jīng)網(wǎng)絡(luò) 135
7.2.1 神經(jīng)元 135
7.2.2 分層 136
7.2.3 反向傳播 137
7.2.4 全貌 139
7.3 預(yù)備知識 140
7.3.1 點積 140
7.3.2 激活函數(shù) 140
7.4 構(gòu)建神經(jīng)網(wǎng)絡(luò) 142
7.4.1 神經(jīng)元的實現(xiàn) 142
7.4.2 層的實現(xiàn) 143
7.4.3 神經(jīng)網(wǎng)絡(luò)的實現(xiàn) 145
7.5 分類問題 148
7.5.1 數(shù)據(jù)的歸一化 148
7.5.2 經(jīng)典的鳶尾花數(shù)據(jù)集 149
7.5.3 葡萄酒的分類 152
7.6 為神經(jīng)網(wǎng)絡(luò)提速 155
7.7 神經(jīng)網(wǎng)絡(luò)問題及其擴展 156
7.8 現(xiàn)實世界的應(yīng)用 157
7.9 習(xí)題 157
第8章 對抗搜索 159
8.1 棋盤游戲的基礎(chǔ)組件 159
8.2 井字棋 161
8.2.1 井字棋的狀態(tài)管理 161
8.2.2 極小化極大算法 164
8.2.3 用井字棋測試極小化極大算法 167
8.2.4 開發(fā)井字棋AI 168
8.3 四子棋 169
8.3.1 四子棋游戲程序 170
8.3.2 四子棋AI 175
8.3.3 用α-β剪枝算法優(yōu)化極小化極大算法 177
8.4 超越α-β剪枝效果的極小化極大算法改進方案 178
8.5 現(xiàn)實世界的應(yīng)用 179
8.6 習(xí)題 179
第9章 其他問題 181
9.1 背包問題 181
9.2 旅行商問題 186
9.2.1 樸素解法 186
9.2.2 進階 191
9.3 電話號碼助記符 191
9.4 現(xiàn)實世界的應(yīng)用 193
9.5 習(xí)題 194
附錄A 術(shù)語表 195
附錄B 其他資料 201
附錄C 類型提示簡介 205