ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构之图的遍历

2022-04-14 12:04:22  阅读:167  来源: 互联网

标签:连通 遍历 邻接矩阵 访问 图中 顶点 数据结构 之图


一、图的遍历概念

定义:从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每一个顶点仅被访问一次,就叫做图的遍历,他说图的基本运算。

遍历的实质:找每个顶点的邻接点的过程。

特点:因为图中是多对多,所有图中有可能存在回路,且图的任一顶点都可能与其他顶点相通,在访问完某个顶点之后可能沿着某些边又回到了曾经访问过的顶点。

避免重复访问思路:设置辅助数组visited[n],用来标记每个被访问过的顶点。

初始状态visited[i]为0,顶点被访问可以修改为1,防止多重被访问

二、图的遍历常用算法

1.深度优先搜索(Depth_First Search——DFS)

理解:选择随机一条路一直走到底,开始回退上一步,判断还有其他的路吗,如果有继续走,直到否则继续回退,直到回退到开始位置,判断是否还有未遍历的,如果没有表示全部已经遍历完毕。
选择的开始不一样,遍历结果也不同。类似于树的先根遍历

(1)邻接矩阵表示的无向图深度遍历实现:

void DFS(AMGraph G,int V) {            // 图G为邻接矩阵类型,v为起始顶点
    cout << v; visited[v] = true       // 访问第v个顶点,修改辅助数组表示已被访问
    for(w=0;w<G.vexnum;w++) {          // 依次检测邻接矩阵v所在的行
        if((G.arcs[v][w] != 0) && (!visited[w]))
            DFS(G,w)
        // w是v的临界点,如果w未访问,则递归调用DFS
    }
}

 稀疏图适合邻接表上进行深度遍历,
 稠密图适合在邻接矩阵上进行深度遍历,

(2)非连通图的遍历:

通过连通分量 来判断 是否还有还有  生成树中的连通图  未被遍历

2.广度优先搜索(Breadth_First Search——BFS)

 

标签:连通,遍历,邻接矩阵,访问,图中,顶点,数据结构,之图
来源: https://www.cnblogs.com/kongxudeshenghuo/p/16143866.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有