看数据结构写代码(43) 关节点

本文介绍了无向图中关节点的概念,即删除某顶点会将连通图分成两个以上连通分量的节点。讨论了重连通图的特性,并提供了两种求解关节点的方法:一是通过删除节点并遍历判断连通性,二是基于关节点的特性进行深度优先遍历。文章还给出了具体实现代码,着重展示了依据关节点第一条特性判断的函数`findArticul`。
摘要由CSDN通过智能技术生成

首先 说明一下 概念问题:

关节点 :如果删除无向 图中的一个顶点,以及与顶点相关的边,把 图的 一个连通 分量 变成 两个 以上的 连通 分量。这样的顶点叫做关节点

没有 关节点的 无向图,叫做 重连通图。重连通图中 任意 两个顶点 至少 存在 两条以上的 通路。

如果 删除 连通图上的 k个 节点,才能 破坏 他的连通性,那么 这个连通图的 连通度 为k。

下面的算法 是 求 连通图的 关节点,并没有 考虑 求图的 关节点,不过 要 改成 图的 关节点 也不难,只要 加 一个 for i = 0 ,...g.verNum即可.


求关节点,我所知道的 有两种方法:

1.定义法: 依次 删除 连通图的 的节点,然后深度优先 遍历 连通图,看 连通图 是否 连通。 假设 n个顶点,e条边,,时间复杂度 O(n * (n+e))

2.根据 关节点 的两种特性 来 深度优先遍历连通图。时间复杂度 O(n+e)

当然 第二种 方法 比较 好。


书上 给出了 关节点的 两种特性

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值