导学_深度优先搜索

知·识·概·要

【迷宫问题】

今天我们从一个简简单单的迷宫问题引入今天的知识点。

今天,田所浩二的好朋友德川约田所去餐厅食雪(意味深),但田所从家到餐厅的路事一个一个一个一个迷宫,由于田所不会走迷宫,他在死胡同里迷路力(悲),现在他十分甚至九分的需要一种方法帮他成功赶到餐厅。
用什么方法呢?就事深度优先搜索罢(喜)!

【深度优先搜索】

什么事深度优先搜索?
深度优先搜索,简称深搜,事一种对于树而言的搜索方法(当然,对于图而言也事可以的罢)。
我们看一眼这个迷宫,把它抽象成一棵树。

有了树以后,就可以开始搜索力(狂喜)!
首先确定起点和终点,不难发现家事起点,餐厅事终点;
接着看,从家可以直接到达A点,这时把A当作新的起点进行搜索;

A点可以直接到达C点,把C当作新的起点;

C点可以直接到达FED三个点,它们都没有可以直接到达的点,退回到C点,这一过程事回溯;

C点可以直接到达的三个点全部走过,回溯;

A点还可以直接到达B点,没有可以直接到达的点,回溯;

A点还可以直接到达G点,把G当作新的起点;

G点可以直接到达H点,没有可以直接到达的点,回溯;

G点还可以直接到达餐厅,找到目标,停止搜索。

总结:深搜就事不撞南墙不回头,只有到达路的尽头时才会回溯。

【图的深度优先遍历】

讲完搜索,再来讲一讲遍历。
遍历与搜索像啊很像啊,只不过遍历事相对于图的一种算法,遍历可以走任何的邻接点,这就事跟搜索的不同之处。
比如这样一个图:

假如我们规定较小的数字优先,对这个图进行深度优先遍历。
首先,确定起点为1

1的两个邻接点中,选取较小的结点2,以2为新的起点;

2的两个邻接点中,选取较小的结点3,以3为新的起点;

3的两个邻接点中,选取较小的结点4,以4为新的起点;

4没有未被访问的邻接点,回溯;

选择3的另一个邻接点5作为新的起点;

此时整个图所有的结点都已经被访问过,停止遍历。

课·后·练·习

【题目描述】

有一块N×M的土地,雨后积起了水,有水标记为W,干燥为.。八连通的积水被认为是连接在一起的。请求出院子里共有多少水洼?

【输入描述】

第一行为N,M(1N,M110)
下面为N*M的土地示意图。

【输出描述】

一行,共有的水洼数。

【输入样例】

10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

【输出样例】

3

那么这期导学就到这里,压力马斯内!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值