作品简介

本书是一本面向中高级程序员的算法教程,借助Java语言,用经典的算法、编码技术和原理来求解计算机科学的一些经典问题。全书共10章,讲述了常见的搜索算法、常见的图算法、遗传算法、k均值聚类算法、简单的神经网络、对抗搜索算法等,通过丰富的方案、示例和习题展开具体实践。本书将计算机科学与应用程序、数据、性能等现实问题深度关联,定位独特,示例经典,可以帮助程序员提升用Java解决实际问题的技术、编程和应用能力。

大卫·科帕克(David Kopec),是费蒙特州伯灵顿大学香普兰学院计算机科学与创新专业的副教授。他的著作有《Classic Computer Science Problems in Python*》(Manning,2019),《Classic Computer Science Problems in Swift》(Manning,2018)以及《Dart for Absolute Beginners》(Apress,2014)。他还是一名软件开发和播客。

作品目录

  • Preface 前言
  • Acknowledgements 致谢
  • 第1章 一些小问题
  • 1.1 斐波那契数列
  • 1.2 简单的压缩算法
  • 1.3 牢不可破的加密方案
  • 1.4 计算π
  • 1.5 汉诺塔问题
  • 1.6 实际应用
  • 1.7 习题
  • 第2章 搜索问题
  • 2.1 DNA搜索
  • 2.2 迷宫求解
  • 2.3 传教士和食人族问题
  • 2.4 实际应用
  • 2.5 习题
  • 第3章 约束满足问题
  • 3.1 构建约束满足问题的解决框架
  • 3.2 澳大利亚地图着色问题
  • 3.3 八皇后问题
  • 3.4 单词搜索问题
  • 3.5 字谜问题
  • 3.6 电路板布局问题
  • 3.7 实际应用
  • 3.8 习题
  • 第4章 图问题
  • 4.1 地图是图的一种
  • 4.2 搭建图的框架
  • 4.3 查找最短路径
  • 4.4 最小化网络构建成本
  • 4.5 在加权图中查找最短路径
  • 4.6 实际应用
  • 4.7 习题
  • 第5章 遗传算法
  • 5.1 生物学背景
  • 5.2 通用遗传算法
  • 5.3 简单测试
  • 5.4 回顾字谜问题
  • 5.5 优化列表压缩算法
  • 5.6 遗传算法面临的挑战
  • 5.7 实际应用
  • 5.8 习题
  • 第6章 k均值聚类
  • 6.1 预备知识
  • 6.2k 均值聚类算法
  • 6.3 按年龄和经度对州长进行聚类
  • 6.4 按长度对迈克尔·杰克逊的专辑进行聚类
  • 6.5k 均值聚类算法问题及其扩展
  • 6.6 实际应用
  • 6.7 习题
  • 第7章 简单神经网络
  • 7.1 生物学基础
  • 7.2 人工神经网络
  • 7.3 预备知识
  • 7.4 构建神经网络
  • 7.5 分类问题
  • 7.6 加速神经网络
  • 7.7 神经网络存在的问题及扩展
  • 7.8 实际应用
  • 7.9 习题
  • 第8章 对抗搜索
  • 8.1 棋盘游戏的基础组件
  • 8.2 井字棋
  • 8.3 四子棋
  • 8.4 超越alpha-beta剪枝效果的极小化极大算法改进方案
  • 8.5 实际应用
  • 8.6 习题
  • 第9章 其他问题
  • 9.1 背包问题
  • 9.2 旅行商问题
  • 9.3 电话号码助记符
  • 9.4 实际应用
  • 9.5 习题
  • 第10章 采访布赖恩·戈茨
  • Appendix A 附录A 术语表
  • Appendix B 附录B 更多资源
展开全部