简单地分几类,并不全面,讨论也不甚严密,以后不断完善。
从总的思路而言,设计者一般都希望把大的问题简化,变成小问题。最好变成一系列原子操作,利用计算机任劳任怨地循环或迭代。
一、插入型
假定已经有一部分优化结果,研究新加入一个数据时,必须运行的步骤,使得新的数据集变成优化结果。这种办法的起始条件比较简单,当只有一个数据时,可以默认就是优化的结果。但是运行到后面,已有结果数据量较大时,新加入数据可能要经历较长的遍历时间。此外,数据的插入顺序也会影响最终结果,最好是配有一个优秀的随机访问器。
典型的例子:
1、排序算法里的“插入排序(insertion sort)”。假定一组数已经有序,新加入一个数,应该插入在何处。
2、Delaunay三角化里的incremental法。假定已经delaunay三角化,新插入一个点,如何变成新的delaunay三角。
3、各种二叉树的建立。
二、改进型
典型例子:
1、解旅行商问题TSP的linkern法。
三、分治型
准确来说,分治并非一种独立的方法。所谓分而治之,把总的数据集分成小的集合。如何治之?完全可以在小集合里套用上述各种方法。
1、排序算法中的“快速排序(quick sort)”。
2、排序算法中的“归并排序(merge sort)”