【算法概论】搜索算法

搜索算法

       搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。(百度百科)

       搜索算法需要在指数量级的繁杂的可选对象中搜索某个具有特定性质的解,而且,求解这些问题似乎没有什么捷径可行。(《算法概论》)

       现阶段,搜索算法实际上是根据初始条件和扩展规则构造一棵“解答树”并寻找符合目标状态的节点的过程。为什么会选择树这一结构呢?The procedure of solving many problems may be represented by trees, therefore the solving of these problems becomes a tree searching problem.

       搜索算法最重要的两点?

       Problem space / State space (the set of all possible solutions )

       Tree Searching Strategies

       在构造“解答树”中则有四个问题?

       How to organize the candidate solution space?

       How to traverse the candidate solution space?

       Techniques of pruning the search?

       Analysis of searching algorithm?

       来看主要的几个树的搜索算法~

目录

Breadth - First Search

Depth - First Search

Hill Climbing

Best-first search strategy 

Backtracking

Branch-and-bound Searching Algorithm

A* algorithm


Breadth - First Search

       1)构造一个顶点元素类型的队列,初始状态时其内的元素只有根节点;

       2)将队列中的队首元素与目标元素比较,如果是,停止寻找;否则,继续执行程序;

       3)将队首元素的后继节点依次加入队列中,移除队列中的队首元素;

       4)如果队列为空,查找失败;否则,转向第二步。

Depth - First Search

       1)构造一个顶点元素类型的栈,初始状态时其内的元素只有根节点;

       2)将栈中的栈顶元素与目标元素比较,如果是,停止寻找;否则,继续执行程序;

       3)移除栈顶元素,并将栈顶元素的后继节点依次加入栈中,;

       4)如果栈为空,查找失败;否则,转向第二步。

Hill Climbing

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值