算法精粹 經典電腦科學問題的 Python 實現 Classic Computer Science Problems in Python

[美] 大衛·科帕克(David Kopec) 戴旭譯

  • 算法精粹 經典電腦科學問題的 Python 實現-preview-1
  • 算法精粹 經典電腦科學問題的 Python 實現-preview-2
算法精粹 經典電腦科學問題的 Python 實現-preview-1

買這商品的人也買了...

商品描述

本書是一本面向中*級程序員的算法教程,借助Python語言,
用經典的算法、編碼技術和原理來求解計算機科學的一些經典問題。
全書共9章,不僅介紹了遞歸、結果緩存和位操作等基本編程組件,
還講述了常見的搜索算法、常見的圖算法、神經網絡、遺傳算法、
k均值聚類算法、對抗搜索算法等,運用了類型提示等Python*級特性,
並通過各級方案、示例和習題展開具體實踐。
本書將計算機科學與應用程序、數據、性能等現實問題深度關聯,
定位獨特,示例經典,適合有一定編程經驗的中級Python程序員提升用Python解決實際問題的技術、
編程和應用能力。  

作者簡介

David Kopec

是香普蘭學院(Champlain College)的計算機科學與創新專業助理教授,
該學院位於美國佛蒙特州的伯靈頓市。
他是一位經驗豐富的軟件開發人員,
也是Classic Computer Science Problems in Swift和Dart for Absolute Beginners的作者。
他擁有達特茅斯學院(Dartmouth College)的經濟學學士學位和計算機科學碩士學位。

目錄大綱

目錄
第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.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迷宮的其他函數30
2.2. 3深度優先搜索31
2.2.4廣度優先搜索35
2.2.5 A*搜索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.2 k均值聚類算法119
6.3按年齡和經度對州長進行聚類124
6.4按長度聚類邁克爾·傑克遜的專輯128
6.5 k均值聚類算法問題及其擴展130
6.6現實世界的應用131
6.7習題131

第7章十分簡單的神經網絡133
7.1生物學基礎133
7.2人工神經網絡135
7.2.1神經元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.1神經元的實現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開發井字棋AI 168
8.3四子棋169
8.3.1四子棋遊戲程序170
8.3.2四子棋AI 175
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