穷举法也许是走投无路的最后稻草
一般有更好的算法就不会选择穷举
不是办法的办法
步骤
确定问题的解的定义,姐空间的范围,以及正确的判定条件
根据控件的特点来选择搜索策略,逐个检验解空间中的候选是否正确
thinking:把有限个元素构成的集合中,把所有元素一一枚举,通过比较找出结果
穷举就是依赖计算机不知疲倦的计算能力对解空间内的候选值逐个使用,很多暴力破解密码的程序就是
这么干的如果有好的解决办法,一般不会选择穷举,算法思想简单没有条件性和约束性的假设
解空间:
不一定是线性,全部可能的候选解的一个约束范围
要确定解空间,首先要确定解的数据模型,如果数据模型错误或者不合适,就会导致解空间结构繁杂,
范围难以确定
解空间策略
解空间的结构可能是线性表,集合,树或者图
线性搜索算法用于对线性空间解空间的搜索
广度优先和深度优先的递归搜索算法适用于树形或图形解空间
要在常用的搜索策略上多实践
启发性搜索
利用某种策略或计算依据加快算法的收敛速度
剪枝策略
排除一些明显不可能是正确解的过程
广度优先算法需要额外的存储空间,深度优先算法容易陷入状态循环
搜索算法的评估和收敛
当问题规模大到一定规模的时候,无法对解空间进行完整搜索,这时候需要对搜索算法进行评估
确定一些收敛原则
收敛原则是只要找到一个比较好的解就返回,根据评估判断是否需要继续下一次搜索。
网友评论