`
lzrzhao
  • 浏览: 69028 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求一无向图G中所有环

 
阅读更多
1. 判断N结点的无向图G是否有环

假定:结点个数为M,边条数为E
遍历一遍,判断图分为几部分(假定为P部分,即图有 P 个连通分量)
对于每一个连通分量,如果无环则只能是树,即:边数=结点数-1
只要有一个满足 边数 > 结点数-1
原图就有环
将P个连通分量的不等式相加,就得到:
所有边数 > 所有结点数+连通分量个数
即: E+P>M 所以只有判断
E +P>M就表示原图有环,否则无环.

2.对于每一个连通分量,单独计算其环的个数,则无向图G的总环数即为各连通分量环数总和
前提:对一连通分量P,将其用邻接矩阵表示法来表示
1. 用广度优先算法求出P的支撑树(即生成树),在求支撑树的过程中,用 -1表示被加入支撑树中的边。(对于无权图可以用1表示);
2. 在邻接矩阵中寻找权值不是-1的边(当然也不是0,如果是无权图,就应该找值为1的边),假定该边连接的是节点i和j。将其边的权值改为-1;
3. 采用深度优先遍历算法求出从顶点i到顶点j之间所有简单路径(注意给每个顶点赋不同权值。例如-1,0,1分别表示未遍历,已经遍历但还有相邻结点未遍历完,已经遍历而且相邻结点已遍历完。这样做主要是为了防止回溯到上一已访问过的结点。);
3. 根据生成树的定义,在生成树上每增加一条边,就会有一个回路。在生成树上寻找i和j的路径。将该简单路径与边(i,j)连接即得环。输出该环;
4. 继续在邻接矩阵中寻找权值不是-1的边,假定该边连接的两顶点是v和w。将其边的权值改为-1;
5. 求出从顶点i到顶点j之间的所有简单路径;
6.分别将所求出的简单路径与边(i,j)连接即得环,输出该环;
7.重复执行步骤4-7,直到在邻接矩阵中没有权值是-1的边为止。
分享到:
评论

相关推荐

    判断有向图中是否存在环

    在计算机科学与图论中,判断一个有向图中是否存在环(cycle)是一项非常重要的任务。环是指在一个图中存在一条路径,该路径的起点和终点是同一个节点。如果一个有向图中存在环,则称其为非强连通图。本篇文章将详细...

    邻接表或者邻接矩阵为存储结构实现连通无向图的深度优先和广度优先遍历

    在这个程序设计任务中,我们需要实现的是连通无向图的深度优先遍历(DFS)和广度优先遍历(BFS),这两种遍历方法是图算法的基础。无向图指的是图中的边没有方向,即任意两个节点之间可以双向连接。 1. **邻接表和...

    数据结构6.8有向无环图及应用

    在本章节中,我们将探讨一种特殊类型的有向图——有向无环图(Directed Acyclic Graph,简称DAG),也称为AOV网(Activity On Vertex network)。这种图在网络和计算机科学中有广泛的应用,尤其是在项目管理和软件...

    python判断无向图环是否存在的示例

    暂时是一个手动设置无向图中的边,用一个二维数组表示,后面会改进为用户自己定义无向图的边。 学习python的新手,若大佬有解决的办法,希望不吝赐教 #无向图判断环是否存在 def dfs(u,fa): for i in range(v): n...

    设有一有向图为g(vdoc.docx

    1. **有向图**:题目中的有向图G(V,E),其中V={v0, v1, v2, v3},E={, v0>, , v1>, , v2>, , v1>, , v3>},表示了顶点间的连接方向。有向图可以用来模拟各种关系,如网络中的链接或任务的依赖关系。 2. **邻接矩阵*...

    设有一有向图为g(vdoc.pdf

    2. **邻接矩阵的应用**:对于无向图,邻接矩阵是一个二维数组,用于表示图中各个顶点之间的连接关系。它可以用以下方式解决问题: - (1) 边的数量可以通过计算矩阵中非零元素的数量得出。 - (2) 两个顶点之间是否...

    数据结构-3期(KC002) 无向图的深度优先遍历.docx

    总结来说,无向图的深度优先遍历是一种遍历图的方法,适用于邻接表表示的图,通过递归和回溯策略访问所有可达顶点。在实际应用中,DFS常用于拓扑排序、求解连通分量、判断环路等问题。理解并掌握DFS算法对于理解和...

    数据结构第4次作业.docx

    AOE网络是一种特殊的有向无环图(DAG),用于项目管理中的进度计划。计算`ve[]`和`vl[]`值涉及到拓扑排序和关键路径计算。 5. **关键路径**: 关键路径是项目中耗时最长的路径,决定了项目的最早完成时间。给定...

    设有一有向图为g(vdoc (2).docx

    在这些题目中,我们涉及了图论的基本概念和算法,主要涵盖了有向图、无向图、邻接矩阵、邻接表、最短路径、最小生成树、拓扑排序、关键路径等知识点。 1. 有向图的表示:G=(V,E),其中V={v0, v1, v2, v3},E={, v0...

    设有一有向图为g(vdoc (2).pdf

    2. 无向图的邻接矩阵表示:这是一个二维数组,行和列对应图中的顶点,如果两个顶点之间有边,则对应位置的值为1,没有边则为0。用邻接矩阵可以快速判断任意两个顶点间是否有边,以及计算顶点的度(入度+出度)。 3....

    判断给定的图是不是有向无环图实例代码

    在本实例代码中,我们探讨如何判断一个有向图是否为无环图,具体是通过实现拓扑排序算法来完成的。 拓扑排序是将有向无环图的所有节点进行线性排列,使得对于图中的每一条有向边 (u, v),节点 u 在排列中出现在节点...

    数据结构题集答案(C语言版)(严蔚敏-吴伟民著)

    在计算机科学中,指的是所有能够输入到计算机中并被计算机程序处理的符号的总称。 - **数据元素**: 数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 - **数据对象**: 性质相同的数据元素的集合,是...

    用Prim算法求无向图的最小生成树 (2).pdf

    最小生成树是指一个无环且连通的子图,它包含原图的所有顶点,并且边的权重之和尽可能小。在Prim算法中,我们逐步构建这个子图,每次添加一条连接已选顶点和未选顶点的最小权重边。 在给定的代码中,首先定义了最大...

    图习题及参考答案 (2).pdf

    如果无向图中所有顶点的度大于 2,则必有环路。 6. 错。有向图中所有顶点的度大于 2 并不必然存在环路。 7. 对。图的广度优先搜索用于遍历图的各个层次。 8. 对。Prim 算法适用于稠密图,Kruskal 算法适用于稀疏图。

    图在数据结构中的地位

    - 在无向图中,如果存在一个顶点序列,使得序列中的每一对相邻顶点间有边相连,就形成了路径。简单路径要求序列中除起点和终点外,其他顶点不重复。 - 简单回路或简单环是起点和终点相同的简单路径。 - 有向图中...

    数据结构第7章图.docx

    16. 无向图G的边集:无向图G包含6个顶点和4条边,分别为(a,b),(a,e),(a,c),(b,e)。无向图中的边是双向的,因此(a,b)与(b,a)视为同一边。 这些知识点涵盖了图的基本概念、性质、遍历策略以及图的存储结构,对于...

    第7章 图答案1

    16. **无向图G的边数**:无向图G的边数可以通过计算邻接矩阵中非零元素的一半得到,或者通过遍历邻接表来统计。具体边数无法从给定信息中得出。 以上内容涵盖了图论的基础知识,包括图的定义、性质、遍历方法和存储...

    欧拉图与汉密尔顿图的概念与应用

    欧拉图的判定定理:无向图 G 是欧拉图,当且仅当 G 是连通图,且 G 中没有奇度顶点。此定理是欧拉图的必要和充分条件。 欧拉图的判定方法:根据欧拉图的判定定理,可以通过检查图的连通性和顶点度数来判断一个图...

    离散数学图基本概念PPT课件.pptx

    例如,一个无向图G可能有五个顶点V={v1, v2, ..., v5}和七条边E={(v1,v1), (v1,v2), (v2,v3), (v2,v3), (v2,v5), (v1,v5), (v4,v5)}。在无向图中,边不区分方向。 2. **有向图**:与无向图相似,但边是有向的,即由...

Global site tag (gtag.js) - Google Analytics