YuCloud

紫菊气,飘庭户,晚烟笼细雨。

《谢新恩·冉冉秋光留不住》 - 五代 - 李煜

搜索(待完善)

  • 概述

搜索解决的问题范围:
o 最优问题
o 数个数问题
o 存在性问题

都可以用暴力搜索的方法解决(不保证效率),原因是这些问题都可以将状态或个数枚举出来。

注意:搜索可以使用递归实现也可以使用循环实现(如动态规划,bfs等)

搜索方法(dfs): //bfs 比较简单我就不写了

vec{y1,y2,y3...yn}  dfs  (vec{x1,x2,x3...xn})
{        
    if(check())    
    {        
        do something    
    }                     //结束时的操作        
     ______________________________________________    
    {        
        do.....                          //进入下一层递归所需要做的事        
        //(如   map[i][j]='.';)     
    }    
    ______________________________________    
    dfs(下一层的参数)   ......                    //多个dfs() 用循环代替
                                                 // 如 for(int i=0;i<n;i++){
                                                            dfs(i);
                                                        }
    ——————————————————————————————————————    
    {        
        do.....                          //返回上一层递归所需要做的事        
        // remark[i]=0;  复原操作        
        // D[i][k]=res;   记忆化    
    }    
    ———————————————————————————————————————      
    return vec{y1,y2,y3...yn};          //你想要求的东西
}

像一个分裂的细胞,每个细胞会做一些事,并将新的参数传到下一层。,最底层的细胞会把信息一层一层的返回给祖始细胞

搜索的常见优化:
o 记忆化
o 剪枝
o A* IDA*
o 迭代加深

posted @ 2020-09-22 22:43  tree[3]  阅读(103)  评论(0编辑  收藏  举报