好文档 - 专业文书写作范文服务资料分享网站

深度优先搜索

天下 分享 时间: 加入收藏 我要投稿 点赞

深度优先搜索(DFS) 穷举

在我们遇到的一些问题当中,有些问题我们不能够确切的找出数学模型,即找不出一种直接求解的方法,解决这一类问题,我们一般采用搜索的方法解决。搜索就是用问题的所有可能去试探,按照一定的顺序、规则,不断去试探,直到找到问题的解,试完了也没有找到解,那就是无解,试探时一定要试探完所有的情况(实际上就是穷举);

对于问题的第一个状态,叫初始状态,要求的状态叫目标状态。 搜索就是把规则应用于实始状态,在其产生的状态中,直到得到一个目标状态为止。

产生新的状态的过程叫扩展(由一个状态,应用规则,产生新状态的过程) 搜索的要点:(1)初始状态; (2)重复产生新状态;

(3)检查新状态是否为目标,是结束,否转(2);[1]

如果搜索是以接近起始状态的程序依次扩展状态的,叫宽度优先搜索。 如果扩展是首先扩展新产生的状态,则叫深度优先搜索。 深度优先搜索

深度优先搜索用一个数组存放产生的所有状态。 (1) 把初始状态放入数组中,设为当前状态;

(2) 扩展当前的状态,产生一个新的状态放入数组中,同时把新产生的状态设为当前状态;

(3) 判断当前状态是否和前面的重复,如果重复则回到上一个状态,产生它的另一状态; (4) 判断当前状态是否为目标状态,如果是目标,则找到一个解答,结束算法。 (5) 如果数组为空,说明无解。

事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.

找出一条V0到V6的道路

假设按照以下的顺序来搜索:

1.V0->V1->V4,此时到底尽头,仍然到不了V6,于是原路返回到V1去搜索其他路径;

2.返回到V1后既搜索V2,于是搜索路径是V0->V1->V2->V6,,找到目标节点,返回有解。

这样搜索只是2步就到达了,但是如果用BFS的话就需要多几步。

深度优先搜索

深度优先搜索(DFS)穷举在我们遇到的一些问题当中,有些问题我们不能够确切的找出数学模型,即找不出一种直接求解的方法,解决这一类问题,我们一般采用搜索的方法解决。搜索就是用问题的所有可能去试探,按照一定的顺序、规则,不断去试探,直到找到问题的解,试完了也没有找到解,那就是无解,试探时一定要试探完所有的情况(实际上就是穷举);对于问题的第一个状态,叫初始状态
推荐度:
点击下载文档文档为doc格式
5va424bk9w4oweh0q68m0sr9z0p08p00nya
领取福利

微信扫码领取福利

微信扫码分享