算法精粹:經典計算機科學問題的Java實現 Classic Computer Science Problems in Java

David Kopec 譯者 陳洋//楊楠晨

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

商品描述

本書是一本面向中高級程序員的算法教程,借助Java語言,
用經典的算法、編碼技術和原理來求解計算機科學的一些經典問題。
全書共10章,講述了常見的搜索算法、常見的圖算法、遺傳算法、k均值聚類算法、
簡單的神經網絡、對抗搜索算法等,通過豐富的方案、示例和習題展開具體實踐。
本書將計算機科學與應用程序、數據、性能等現實問題深度關聯,定位獨特,
示例經典,可以幫助程序員提升用Java解決實際問題的技術、編程和應用能力。

作者簡介

David Kopec

是佛蒙特州伯靈頓的尚普蘭學院計算機科學與創新專業的副教授。
他是一名經驗豐富的iOS開發人員,也是Dart for Absolute Beginners(Apress出版社,2014年出版)一書的作者。
David擁有達特茅斯學院的經濟學學士學位和計算機科學碩士學位。

目錄大綱

前言
致 謝
第1章一些小問題1
1.1 斐波那契數列1
1.1.1 第一次遞歸嘗試1
1.1.2 基線條件的運用2
1.1.3 使用記憶化4
1.1.4 簡潔的斐波那契方法5
1.1.5 使用流來生成斐波那
 契數列6
1.2 簡單的壓縮算法6
1.3 牢不可破的加密方案10
1.3.1 按順序獲取數據10
1.3.2 加密和解密11
1.4 計算13
1.5 漢諾塔問題14
1.5.1 對塔進行建模15
1 5.2 求解漢諾塔問題15
1.6 實際應用17
1.7 習題18
第2章搜索問題19
2.1 DNA搜索19
2.1.1 存儲DNA 19
2.1.2 線性搜索21
2.1.3 二分搜索22
2.1.4 通用示例25
2.2 迷宮求解26
2.2.1 生成隨機迷宮28
2.2.2 迷宮的其他方法30
2.2.3 深度優先搜索31
2.2.4 廣度優先搜索35
2.2.5 A*搜索38
2.3 傳教士和食人族問題43
2.3.1 用代碼來表達問題44
2.3.2 求解46
2.4 實際應用48
2.5 習題49
第3章約束滿足問題50
3.1 構建約束滿足問題的解決框架51
3.2 澳大利亞地圖著色問題54
3.3 八皇后問題57
3.4 單詞搜索問題59
3.5 字謎問題65
3.6 電路板佈局問題66
3.7 實際應用67
3.8 習題67
第4章圖問題68
4.1 地圖是圖的一種68
4.2 搭建圖的框架70
4.3 查找最短路徑76
4.4 最小化網絡構建成本78
4.4.1 權重處理78
4.4.2 查找最小生成樹82
4.5 在加權圖中查找最短路徑87
4.6 實際應用91
4.7 習題92
第5章遺傳算法93
5.1 生物學背景93
5.2 通用遺傳算法94
5.3 簡單測試101
5.4 回顧字謎問題103
5.5 優化列表壓縮算法107
5.6 遺傳算法面臨的挑戰110
5.7 實際應用110
5.8 習題111
第6章k均值聚類112
6.1 預備知識112
6.2 k均值聚類算法115
6.3 按年齡和經度對州長進行
 聚類121
6.4 按長度對邁克爾·傑克遜的
 專輯進行聚類125
6.5 k均值聚類算法問題及其
 擴展127
6.6 實際應用127
6.7 習題128
第7章簡單神經網絡129
7.1 生物學基礎129
7.2 人工神經網絡131
7.2.1 神經元131
7.2.2 層132
7.2.3 反向傳播133
7.2.4 全貌135
7.3 預備知識136
7.3.1 點積136
7.3.2 激活函數137
7.4 構建神經網絡138
7.4.1 神經元的實現138
7.4.2 層的實現139
7.4.3 神經網絡的實現141
7.5 分類問題144
7.5.1 數據的歸一化145
7.5.2 經典的鳶尾花數據集146
7.5.3 葡萄酒的分類150
7.6 加速神經網絡152
7.7 神經網絡存在的問題及擴展153
7.8 實際應用154
7.9 習題155
第8章對抗搜索156
8.1 棋盤遊戲的基礎組件156
8.2 井字棋158
8.2.1 井字棋的狀態管理158
8.2.2 極小化極大算法161
8.2.3 用井字棋測試極小化
 極大算法164
8.2.4 開發井字棋AI 166
8.3 四子棋168
8.3.1 四子棋遊戲程序168
8.3.2 四子棋AI 174
8.3.3 用alpha-beta剪枝算法優化
 極小化極大算法176
8.4 超越alpha-beta剪枝效果的
 極小化極大算法改進方案177
8.5 實際應用178
8.6 習題179
第9章其他問題180
9.1 背包問題180
9.2 旅行商問題185
9.2.1 樸素解法186
9.2.2 進階190
9.3 電話號碼助記符191
9.4 實際應用194
9.5 習題194
第10章採訪布賴恩·戈茨195
附錄A 術語表206
附錄B 更多資源210