dfs
DFS(深度优先搜索)简介
DFS是一种常见的图形搜索算法,从根节点开始,沿着一条路径走到底,然后回溯到上一个节点,再继续向下走,直到遍历完整个图。在实现上,可以使用递归和迭代两种方式。
递归实现DFS
递归实现DFS比较简单直观。我们可以先访问当前节点,然后递归遍历所有邻接节点。为了防止重复访问某个节点,需要使用一个visited数组记录已经访问过的节点。
代码如下:
voiddfs(intcur,vectorgraph,vector&visited){visited[cur]=true;for(inti=0;i< graph[cur].size(); i++) { int next = graph[cur][i]; if (!visited[next]) { dfs(next, graph, visited); } }}
迭代实现DFS
迭代实现DFS则需要借助栈来存储节点信息。我们先将根节点入栈,并标记为已访问。每次取出栈顶元素,并遍历所有邻接点,将未被访问过的邻接点入栈并标记为已访问。重复以上步骤直到栈为空。
代码如下:
voiddfs(vectorgraph,vector&visited){stacks;s.push(0);//根节点入栈visited[0]=true;//标记为已访问while(!s.empty()){intcur=s.top();s.pop();for(inti=0;i<graph[cur].size();i++){intnext=graph[cur][i];if(!visited[next]){//如果未被访问过,则入栈并标记为已访问s.push(next);visited[next]=true;}}}}
应用场景
DFS常用于求解图上的连通性问题、拓扑排序、欧拉回路等问题。在人工智能领域中也有广泛应用,例如AlphaGo中就使用了深度优先搜索算法。
总结
DFS是一种重要的图形搜索算法解决各种图论问题时都有广泛应用。通过递归或迭代两种方式都可以实现DFS。掌握好算法提高编程能力有很大帮助。
-
苹果xr怎么关闭飞行模式(iphone如何定时打开飞行模式)
以ios13系统的iPhonexs为例。方法一:1。先打开iPhonexs,再打开手机桌面上的iPhonexs系统【设置】。2.然后找到并点击[飞行模式]旁边的按钮。当它是绿色时,将被打开。再次点按以将关闭。 方法二:1。我们拿到iPhon……
-
miui12稳定版升级开发版(miui12开发版可以升级到稳定版吗)
MIUI11开发版可以升级到稳定版。具体来说,就是打开手机,从手机桌面找到设置选项并打开,然后点击我的设备,打开后点击MIUI版本选项,然后点击页面右上角的三个圆点图标,打开后点击“切换到稳定版”。 MIUI11使用……
-
oppok1屏幕尺寸(oppok1手机分辨率怎么看)
oppok1的屏幕分辨率为2340×1080。oppok1的屏幕尺寸为6.4英寸,屏占比91%,背面为3D渐变机身。采用纳米IMT 3D注塑工艺,有凡星蓝和摩卡红两种配色可选。 Oppok1是继oppo 17之后的又一款水滴形屏幕手机。水滴形屏幕……
-
华为手机耳机双声道怎么设置(华为耳机声道设置在哪设置)
华为手机不支持耳机左右声道的设置,但是打开单声道模式来增加手机的音量。操作方法:打开手机的系统设置界面,点击“高级设置”-“辅助功能”辅助功能页面打开单声道音频。 耳机使用注意事项:1。耳机经常使用会沾上污……
-
联想z5和什么型号手机壳通用(联想z5后盖是什么材质)
以联想z5 ZUI11.5.161系统为例。联想z5的机身采用双面玻璃+金属中框。令人惊讶的是,联想z5的背面也采用了炫丽的纹理,从侧面展现了光影在手机背面流动的效果。联想z5有舒曼黑、佳能蓝、极光三种机身颜色,中极光……
-
青豆怎样保存到冬天吃(新鲜青豆能放冷冻保存吗)
新鲜的四季豆可以用开水焯一下,然后沥干水分,放在保鲜袋里,分成小包装,放在冰箱的冷冻室里保存。不用开水烫一下也可以,但是吃的时候会发现四季豆的皮有点硬。 如果是不带壳的四季豆,可以用开水将四季豆煮熟……