图的应用:强连通分支

强连通分支

关注一下互联网相关的非常巨大图:

  • 由主机通过网线(或无线)连接而成的图
  • 以及由网页通过超链接连接而形成的图
    在这里插入图片描述

网页所形成的图

  • 以网页(URL作为id)为顶点,网页内包含的超链接作为边,可以转换为一个有向图
    在这里插入图片描述

路德学院计算机系网站链接情况,有三个有趣的现象

  • 其中包含了许多路德学院其他系的网站
  • 还包括一些爱荷华其他大学学院的网站
  • 还有一些人文学院的网站
    在这里插入图片描述

我们可以猜想web的底层结构可能存在某些同类网站的聚集

在图中发现高度聚集节点群的算法,即寻找"强连通分支Strongly Connected Components"算法

强连通分支,定义为图G的一个子集C

  • C中的任意两个顶点v,w之间都有路径来回,即(v,w)(w,v)都是C的路径
  • 而且是具有这样性质的最大子集

具有3个强连通分支的9顶点有向图

一旦找到强连通分支,可以据此对图的顶点进行分类,并对图进行化简

在这里插入图片描述

强连通分支算法:转置概念

再用深度优先算法搜索来发现强连通分支之前,先熟悉一个概念:Transposition转置

  • 一个有向图G的转置G^t,定义为将图G的所有边的顶点交换次序,如将(v,w)转换为(w,v)
  • 可以观察到图和转置图在强连通分支的数量和划分上,是相同的
    在这里插入图片描述

强连通分支算法: Kosaraju算法思路

首先,对图G调用DFS算法,为每个顶点计算"结束时间";

然后,将图进行转置,得到G^T

再对G^T调用DFS算法,但在dfs函数中,对每个顶点的搜索循环里,要以顶点的"结束时间"倒序的顺序来搜索

最后,深度优先森林中的每一棵树就是一个强连通分支

算法讲解视频实例 中国大学

另外的常用强连通分支算法

  • Tarjan算法
  • Gabow算法,对Tarjan的改进

参考阅读

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leopold·Lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值