ih5做自适应网站淮安企业网站制作
news/
2025/9/22 22:36:24/
文章来源:
ih5做自适应网站,淮安企业网站制作,网站建设哪个公司好,nuxt做多页面网站深度优先搜索(Depth-First-Search)
从起点出发#xff0c;走过的点要做标记#xff0c;发现有没走过的点#xff0c;就随意挑一个往前走#xff0c;走不 了就回退#xff0c;此种路径搜索策略就称为“深度优先搜索”#xff0c;简称“深搜”。
其实称为“远度优先搜索”…深度优先搜索(Depth-First-Search)
从起点出发走过的点要做标记发现有没走过的点就随意挑一个往前走走不 了就回退此种路径搜索策略就称为“深度优先搜索”简称“深搜”。
其实称为“远度优先搜索”更容易理解些。因为这种策略能往前走一步就往前走一 步总是试图走得更远。所谓远近(或深度就是以距离起点的步数来衡量的。
中国大学mooc 郭炜老师的算法上讲的几个模板伪代码 我写了一下注释便于理解
1.判断从V出发是否能走到终点
int main()
{将所有点标记为新点起点 1;终点 8;coutDfs(起点);
}bool Dfs(V){if(V为终点)return true;if(V为旧点)return false;将V标记为旧点对和V相邻的每个节点U{//往往要写多个if将每个相邻节点都考虑到if(Dfs(U)true)return true;
}return fasle;
}
2.判断从V出发是否能走到终点如果能要记录路径:
Node path[MAX_LEN];//MAX_LEN取节点总数即可
//path记录路径。node可以是int节点标号也可以是结构题类型
int depth;//深度int main()
{将所有点标记为新点;//一般memset全变成0表示新点1表示旧点depth 0;if(Dfs(起点)){for(int i0;idepth;i)//输出经过的每个点的路径coutpath[i]endl;}
}bool Dfs(V){if(V为终点)path[depth]V;return true;
}if(V为旧点)return false;将V标记为旧点;path[depth]V;depth;对和V相邻的每个节点U{if(Dfs(U)true)
//如果返回true那么说明从v开始能走到终点
}--depth;//现在v是放到path里的但是返回false说明从v出发走不到终点//v不应出现在路径里所以深度减一。return false;
}
3.深度优先遍历图上所有节点
Dfs (V) { if( V是旧点 )return; //如果v已经走过那马上返回将V标记为旧点 ;对和 V相邻的每个点 U { Dfs (U);//包含他的父节点和子节点都要涉及到//常用if判断条件是否满足然后dfs}
}
int main() {将所有点 都标记为新;while( 在图中能找到新点 k)Dfs (k);//这样避免了有多个连通图的情况
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910609.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!