第l章 绪论
1.1 算法的概念
1.1.1 从计算机的优势和劣势谈起
1.1.2 问题和算法
1.1.3 什么是算法
1.2 算法设计的要求
1.3 算法效率的度量
1.3.1 时间复杂度
1.3.2 空间复杂度
1.4 本课程的总体结构
1.5 相关语言和函数库简介
1.5.1 从C到C++
1.5.2 C++语言的功能改进
1.5.3 命名空间
1.5.4 C++的输入输出
1.5.5 函数重载和函数模板
1.5.6 面向对象初步
1.5.7 string类
习题
第2章 若干数学问题的算法
2.1 数论相关问题
2.2 多项式四则运算
2.2.1 一元多项式乘法
2.2.2 一元多项式除法
2.3 多项式插值问题
2.3.1 拉格朗日插值法
2.3.2 牛顿插值法
2.4 非线性方程求解
2.4.1 二分法
2.4.2 牛顿迭代法
2.5 线性方程组求解
2.5.1 雅可比迭代法
2.5.2 高斯消去法
2.6 一元线性回归
习题
第3章 线性结构的妙用
3.1 数据结构基本概念
3.2 线性表概念及应用
3.2.1 线性表基本概念
3.2.2 顺序表概念及实现
3.2.3 顺序表应用:学生名册管理
3.2.4 链表的概念及实现
3.2.5 单链表应用:通讯录管理
3.3 堆栈和队列的应用
3.3.1 堆栈的概念及实现
3.3.2 堆栈应用:表达式求值
3.3.3 队列的概念及实现
3.3.4 队列应用:整数排序
3.3.5 优先队列的概念及实现
习题
第4章 哈夫曼编码和图的 短路径
4.1 树和二叉树
4.1.1 树
4.1.2 二叉树
4.2 二叉树的实现与分析
4.3 二叉树的遍历
4.3.1 二又树的遍历方式
4.3.2 遍历算法的实现
4.4 二叉树的示例
4.5 哈夫曼树
4.5.1 哈夫曼树和哈夫曼编码
4.5.2 构造哈夫曼编码
4.5.3 哈夫曼编码实现
4.6 图和邻接表
4.6.1 图的存储
4.6.2 图的搜索
4.7 图的 短路径
习题
第5章 马踏棋盘与道路规划
5.1 贪心算法
5.2 活动安排问题
5.3 马踏棋盘问题
5.4 道路规划和 小生成树问题
5.4.1 Prim算法
5.4.2 Kruskal算法
习题
第6章 动态规划
6.1 动态规划基本概念
6.1.1 挖金矿问题
6.1.2 动态规划算法的基本思想
6.1.3 适用情况
6.1.4 求解基本步骤
6.2 O-1背包问题
6.2.1 性原理
6.2.2 递推关系
6.2.3 构造 解
6.2.4 算法实现
6.3 长公共子序列问题
6.3.1 长公共子序列的结构
6.3.2 子问题的递归结构
6.3.3 计算 值
6.3.4 构造 长公共子序列
6.3.5 算法实现
6.4 流问题
6.4.1 流网络
6.4.2 Ford—Fulkerson方法
6.4.3 Ford—Fulkerson方法伪代码
6.4.4 小费用 流
6.4.5 动态规划与 流问题
习题
第7章 遗传算法
7.1 遗传算法的概念
7.2 遗传算法的设计
7.3 函数 值问题求解
7.4 函数 值问题求解程序实现
7.5 旅行商问题
习题
第8章 人工神经网络与深度学习
8.1 机器学习
8.2 人工神经网络的概念
8.3 感知器
8.4 感知器算法
8.5 BP算法
8.6 BP算法中正向传播过程及代价函数的编程实现
8.7 BP算法示例
8.8 深度学习
8.9 MNIST数据集上的手写识别问题
8.10 MNIST数据集上的手写识别问题实验
习题
第9章 群体智能算法
9.1 群体智能算法概述
9.2 群体智能算法的定义和特点
9.3 群体智能算法的计算模式
9.4 常见的群体智能算法
9.5 蚁群算法
9.5.1 蚁群算法的生物背景
9.5.2 蚁群算法的原理
9.5.3 蚁群算法的流程
9.5.4 蚁群算法的应用
9.5.5 蚁群算法的某实例编程实现
9.6 粒子群算法
9.6.1 算法概述
9.6.2 算法的模型
9.6.3 算法的基本流程
9.6.4 算法的应用
9.6.5 算法的实例分析
9.7 人工蜂群算法
9.7.1 人工蜂群算法的生物背景
9.7.2 人工蜂群算法的原理
9.7.3 人工蜂群算法的流程
9.7.4 人工蜂群算法的应用
9.7.5 人工蜂群算法的编程实现
习题
参考文献