搜索算法——总结

搜索算法

1.广度搜索(bfs)

a.  从初始点开始,根据规则展开第一层节点,并检查目标节点是否在这些节点上,若没有,再将所有的第一层的节点逐一展 开得到第二层节点,如没有,则扩展下去,直到发现目标节点为止

  b. 比较适合求最少步骤或最短解序列的题目

  c.一般设置一个队列queue ,将起始节点放入队列中,然后从队列头取出一个节点,检查是否是目标节点,如不是则进行扩 展,将扩展出的所有节点放到队尾,然后再从队列头取出一个节点,直至找到目标节点。

2.深度搜索(dfs):

     a.一般设置一个栈stack ,将起始节点放入栈中,然后从栈中弹出一个节点,检查是否是目标节点,如不是则进行扩展,

b.将扩展出的所有节点入栈,然后再从栈顶弹出一个节点,直到找到目标节点。深度优先搜索得到的第一个解,不一定是最 优解。

区别:两种算法每次都扩展一个节点的所有子节点,而不同的是,深度搜索下一次扩展的是本次扩展出来的子节点中的一个,而广度搜索 扩展的则是本次扩展的节点的兄弟节点。

3.二分搜索:

a.在有序集合里查找元素,每次将集合分为左右两部分判断解在哪个区域,并调整集合的上下界。

    4.三分搜索:

a.当需要求某凸形或凹形函数的极值,通过函数本身表达式并不容易求解是,用三分算法不断逼近求解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值