1.、分治法
将一个问题分解为若干个规模较小的子问题,且这些子问题的互相独立且与原问题类型相同。递归处理这些子问题,直到这些子问题的规模小到可以直接求解,然后将这些子问题合并到原问题的解。
例:归并排序,快速排序
2.贪心法
基本思想:把求解的问题分解成几若干个子问题,对每个子问题求解,得到子问题的局部最优解,把子问题的局部最优解合并成原来问题的一个解。
两个特性:贪心选择特性,最有子结构特性
例:最小生成树(prim、克鲁斯卡尔算法)
3..动态规划发
将待求解的问题分若干个相互练习的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇见时对它进行求解,并把答案保存起来,让以后再次遇到时直接引用答案,不必重新求解。
例:多段图问题
4.回溯法
基本思想:
1)针对所给的问题,定义问题的解空间;
2)确定易于搜索的解空间结构;
3)以深度优先方式搜索解空间,并在搜索的过程中用剪枝函数避免无效的搜索。
例:批处理作业问题、0/1背包问题
5.分支限界法
常见的两种分支限界法框架:
1)队列式(FIFO)分支限界法:按照队列先进先出的原则选取下一个结点为扩展节点;
2)优先队列式分支限界法:按照优先队列中规定的优先级选取优先级最高的节点成为当前的扩展节点。
分支限界法的算法步骤:
1)针对所给的问题,定义问题的解空间
时间: 2024-10-21 06:23:01