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