社区
数据结构与算法
帖子详情
图的广度优先遍历可以不用队列吗?
pulley
2003-09-23 10:41:40
我知道图的深度优先遍历的非递归算法可以不用栈。有没有不使用队列的广度优先遍历算法?
...全文
1370
11
打赏
收藏
图的广度优先遍历可以不用队列吗?
我知道图的深度优先遍历的非递归算法可以不用栈。有没有不使用队列的广度优先遍历算法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Besich
2003-09-24
打赏
举报
回复
LeeMaRS(偶是小菜虎,不准说我牛!)
老弟,你给的,我怎么看,怎么是深度搜索?
Besich
2003-09-24
打赏
举报
回复
这样子就可以搜索,转化成2叉树了!
当然,这个转化法子,估计你也知道,很多数据结构书中都有介绍
关键是怎么搜索问题!
比方说如果搜索第n层的话,必须搜索pLNode n次,则是第n层。。。。。。
图问题我没考虑过,我说过这是我这两天看The Art Of Computer Programming 后,看到作者转化的时候,突然领悟的,至于图,我感觉方法相似,毕竟图和树联系很紧密
Besich
2003-09-24
打赏
举报
回复
当然可以
首先你要有转化思想
我拿树举例(shit!这两天刚刚看TAOCP学的个新招就这样被你给骗走。。。。。。多给点分)
A
/ | \
B C D
/ | \ /|\
E F GH I J
转化为
A
/
B--C--D
/ /
E--F--GH--I--J
这样搜索,。。。钱不够,先发了,马上到楼下输入点钱继续。。。。
短歌如风
2003-09-24
打赏
举报
回复
深度优先算法之所以可以不用栈,是因为在每一步的结果路径中都包含了这个信息。广度优先恐怕很难不用队列。
短歌如风
2003-09-24
打赏
举报
回复
深度优先算法之所以可以不用栈,是因为在每一步的结果路径中都包含了这个信息。广度优先恐怕很难不用队列。
Besich
2003-09-24
打赏
举报
回复
老天?
搞错了......
我那法子能判断是第几层而已......
sorry......
因为前几天看到这东西,正好能解决以前我的个问题,就......
呵呵
IAmWaistcoat
2003-09-24
打赏
举报
回复
可以
LeeMaRS
2003-09-24
打赏
举报
回复
ft了,昨天大意了,我写的那个的确是DFS,抱歉。
还有就是同意ZhangYv说的。
BSCH,即使是这样转化也还是不行的,要不你试着描述一下算法试试:)
我想不管怎么样,DFS对数据的处理顺序就是运用栈的特性,BFS对数据的处理顺序就是运用队列的特性。至于“栈”“队列”怎么实现,不同的程序可能有不同的方式,但考虑到本质上的时候,还是回回归到“栈”“队列”上来。
不知道今天说的对不对了^^
ZhangYv
2003-09-24
打赏
举报
回复
递归和非递归算法从“程序结构”和“数学逻辑结构”的两个角度来说也是不同的
可能真会存在不用队列的。。。和不用栈的。。。,但程序也只能鳖脚的模拟它们(这种数据结构)的特点。
ZhangYv
2003-09-24
打赏
举报
回复
广度优先遍历算法就是要让搜索的节点先进先出啊,这本来就是队列的特点,为什么要不用队列的广度优先遍历算法?好象没见过...
深度优先的就是要搜索的节点后进先出吧,这本来就是栈的特点,为什么要不用栈的深度度优先遍历算法?
需要注意的是,操作系统中的“栈”和数据结构的“栈”是不同的(概念),
递归和非递归算法从“程序结构”和“数学逻辑结构”也是不同的。
图的深度优先遍历的非递归程序结构的算法可以不用系统堆栈...
LeeMaRS
2003-09-24
打赏
举报
回复
也可以用系统的栈来完成的, 比如经常看到有人这样写FloodFill:
void FloodFill(int x, y);
{
if ((x or y is our of range) || (visited[x][y])) return;
visited[x][y] = 1;
FloodFill(x + 1, y);
FloodFill(x - 1, y);
FloodFill(x, y + 1);
FloodFill(x, y - 1);
}
大意就是这样. 这么写主要就是有个判重方法受到一些限制, 不能直接搜索队例判重了. 而且显然效率不太好.
C语言-
广度优先遍历
本文详细介绍了
图
的
广度优先遍历
算法,包括使用邻接矩阵和邻接表两种表示方式下的实现过程。首先,通过构建无向
图
,然后利用循环
队列
进行
广度优先遍历
,实现了对
图
中所有节点的访问。文章提供了完整的源代码,包括创建
图
、打印邻接矩阵或邻接表、
广度优先遍历
等关键函数。
图
的遍历 ——
广度优先遍历
本文介绍
图
的
广度优先遍历
(BFS)的概念、算法步骤与实现,包括基于邻接矩阵和邻接表的两种实现方式,并分析了算法的时间与空间复杂度。
图
的邻接矩阵实现与深度优先遍历、广度优先
本文深入探讨了
图
数据结构的两种主要遍历方法:深度优先遍历(DFS)和
广度优先遍历
(BFS)。通过递归实现深度优先遍历,利用
队列
结构实现
广度优先遍历
,展示了如何在
图
中有效搜索和访问所有顶点。代码示例使用C++语言,介绍了创建
图
、遍历
图
的具体步骤。
图
的遍历——深度优先遍历与
广度优先遍历
本文介绍了
图
的遍历方法,包括深度优先搜索和广度优先搜索,分别阐述了它们的过程、代码实现和复杂度分析,并提供了测试案例。深度优先搜索类似于树的先序遍历,而广度优先搜索借助
队列
实现,适用于非连通
图
的遍历。
图
的
广度优先遍历
本文介绍了
图
的
广度优先遍历
算法,通过迷宫比喻阐述其工作原理。
广度优先遍历
从起点开始,尽可能辐射覆盖更多节点并标记为已访问。算法过程中使用
队列
确保先访问距离起点近的节点。文章提供了一个具体的实现代码示例,展示了对一个
图
的遍历顺序为0,2,1,5,3,4。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章