图--强连通分支

本文探讨了互联网中由主机和网页形成的有向图,并重点关注了强连通分支的概念。强连通分支是图中任意两点间均有路径往返的顶点集合,且是具有该性质的最大子集。文章介绍了利用深度优先搜索和转置图来发现这些分支的Kosaraju算法,从而对图进行顶点分类和化简。
摘要由CSDN通过智能技术生成

图–强连通分支

  1. 我们关注一下互联网相关的非常巨大图

    1. 由主机通过网线(或无线)连接而形成的图
    2. 以及由网页通过超链接连接而形成的图
      1. 以网页(URI作为id)为顶点,网页内包含的超链接作为边,可以转换为一个有向图
  2. 我们可以猜想,web的底层结构可能存在某些同类网站的聚集

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

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

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

    2. 下图是具有3个强连通分支的9顶点有向图

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GDeBdd5-1614326661677)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210221171452699.png)]

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

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YujHdPgm-1614326661680)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210221171549418.png)]

  5. 利用深度优先搜索,我们可以再次创建强大的算法

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

    一个有向图G的转置 G T \mathbf{G}^{\boldsymbol{T}} GT,定义为将图G的所有边的顶点交换次序,如将(v,w)转换为(w,v)

    可以观察到图和转置图在强连通分支的数量和划分上,是相同的

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GuUoQ8gR-1614326661681)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210221172051718.png)]

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

    1. 对图G调用DFS算法,为每个顶点计算"结束时间";
    2. 然后,将图G进行转置,得到 G T \mathbf{G}^{\boldsymbol{T}} GT,
    3. 再对 G T \mathbf{G}^{\boldsymbol{T}} GT调用DFS算法,但在dfs函数中,对每个顶点的搜索循环里,要以顶点的"结束时间"倒序的顺序来搜索
    4. 最后,深度优先森林中的每一棵树就是一个强连通分支
# coding: utf-8

# from pythonds.graphs import Graph
import graph_ccc


# 通用深度优先搜索
class DFSGraph(graph_ccc.Graph)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值