信息学竞赛中搜索问题的常见优化技巧

来源:互联网 发布:手机黄金交易软件 编辑:程序博客网 时间:2024/06/08 18:46

①在解决约束满足问题的时候,题目给出的约束条件越强,对于搜索中的剪枝就越有利。之所以深度优先搜索的效率在很大程度上优于穷举,就是因为它在搜索过程中很好的利用了题目中的约束条件进行剪枝,达到提高程序效率的目的
②不同的搜索顺序搜索对象就直接影响到我们对于题目约束条件的运用
③选择合适的搜索顺序对于提高程序的效率是编程设计最有效的技巧之一,运用良好的搜索顺序来对搜索题目进行优化是一个性价比很高的算法
④相对于深度优先搜索的另外一类题目——给出起始和目标状态,以及状态转移的规则,要求找到一条到达目标状态的的路径或者方法。这类问题我们叫它路径寻找问题(例如走迷宫问题)。解决这类问题最有效的手段是选取合适的构造Hash表的方法

Hash表的一般构造方法有:
状态压缩——运用2进制来记录状态。
直接取余法—-选取一个素数M作为除数。
平方取中法—-计算关键值平方,再取中间r位形成一个大小为2^r的表。
折叠法———把所有字符的ASCII码加起来。
⑥判重是决定程序效率的关键
⑦Hash表是非常重要的广度优先搜索优化方式之一,它能够把搜索算法的效率从大指数级提高到小指数级、多项式级甚至常数级。
⑧如何利用好已知的信息对搜索进行剪枝将直接影响程序的效率

原创粉丝点击