搜索 优化方法(大纲)

1|0剪枝策略


  1. 调整搜索顺序(层次)
    比如让体积大的先选,或者选择比较少的位置先枚举
  2. 排除等效冗余
    发现两个搜索状态(子树)其实是等价的(比如A+BB+A),只需要枚举其中一种即可
  3. 可行性剪枝
    不行的状态直接skip
  4. 最优性剪枝
    现在的花费已经大于答案直接skip
    A*的思路:现在的答花费+估计函数已经大于答案 直接skip
  5. 记忆化
    一个状态只做一次

2|0迭代加深


优化dfs(当分支很多但答案在较浅位置浪费的枚举时间太多)
应用场景:搜索树的规模随着深度的增长急剧增长,但可以肯定答案在一个较浅的节点上
限制层数(深度),找不到再一步一步增加

3|0双向搜索 (dfs和bfs都可以)


常常处理例如n=40O(2n)问题
n砍一半
应用场景:有初态也有终态,从两端同时搜,在中间交汇组合答案

4|0双端队列优化bfs 和 优先队列优化bfs


边权有0和1两种的用双端队列优化,1的加队尾,0的加队头
边权各种各样的用优先队列优化,有点类似于最短路dijkstra

5|0A*


估计函数(不能大于未来实际代价)+优先队列bfs
每个状态只扩展一次

6|0IDA*


迭代加深+A*(用dfs)


__EOF__

作  者哈奇莱特
出  处https://www.cnblogs.com/lighthqg/p/17687242.html
关于博主:这个人很懒 什么也没有留下
版权声明:未获得本人同意请勿随意转载
声援博主:制作不易 点个赞吧

posted @   哈奇莱特  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示