第1章 引言 1
1.1 研究背景 1
1.2 研究目标和内容 2
1.3 本书组织结构 5
第2章 算法程序自动化方法概述 6
2.1 基于演绎推理的方法 6
2.2 程序变换方法 9
2.2.1 横向变换 11
2.2.2 纵向变换 12
2.2.3 广义纵向变换 16
2.3 基于归纳推理的方法 19
2.4 基于机器学习和进化的方法 21
2.5 模型驱动软件开发方法 21
2.6 生成式程序设计方法 22
2.7 分析与小结 23
第3章 PAR方法 25
3.1 循环不变式新定义和新开发策略 26
3.2 语言 27
3.2.1 Radl规约及其变换规则 28
3.2.2 Radl算法表示法 31
3.3 算法程序开发方法 31
3.4 分析与小结 32
第4章 基于PAR的算法形式化开发 34
4.1 自动问题分划 35
4.2 启发式规约变换 40
4.3 一个实例 43
4.4 小结 49
第5章 置换和查找类算法生成模型 50
5.1 置换问题的代数性质 50
5.2 领域分析 52
5.3 领域设计 55
5.4 排序算法类构件实现 57
5.4.1 类型构件SortingList 57
5.4.2 类型构件Heap 74
5.4.3 算法构件DBPSort 77
5.4.4 算法构件UBPSort 81
5.4.5 算法构件HSort 85
5.5 查找算法类构件实现 85
5.5.1 类型构件SearchingList 85
5.5.2 类型构件Hash 88
5.5.3 算法构件UnorderSearch 92
5.5.4 算法构件OrderSearch 94
5.6 小结 96
第6章 置换算法程序生成 98
6.1 荷兰国旗问题 98
6.1.1 平衡分划求解 98
6.1.2 非平衡分划求解 102
6.1.3 算法分析和扩展 103
6.2 基于DBP分划的排序算法 104
6.2.1 归并排序 104
6.2.2 插入排序 105
6.2.3 二分插入排序 106
6.2.4 其他排序算法 106
6.3 基于UBP分划的排序算法 107
6.3.1 快速排序 107
6.3.2 选择排序 107
6.3.3 冒泡排序 108
6.3.4 堆排序 108
6.4 其他类排序算法 108
6.4.1 H-增量排序 108
6.4.2 双向选择排序 111
6.5 系统支持 117
6.6 小结 118
第7章 查找算法程序生成 121
7.1 无序查找 121
7.1.1 递归查找 121
7.1.2 线性查找 122
7.1.3 散列表查找 122
7.1.4 其他查找算法 125
7.2 有序查找 125
7.2.1 有序线性查找 125
7.2.2 二分查找 126
7.2.3 二叉树查找 126
7.2.4 其他查找算法 127
7.3 系统支持 127
7.4 小结 128
第8章 总结与讨论 130
8.1 相关工作比较 130
8.2 主要内容和贡献 132
8.3 进一步的工作 134
参考文献 136
附录 Radl规约文法 145