图论基础:广度、深度、拓扑、强连通

好久都没有碰过算法了,今天看了算法导论的图论基础,总结一下。
只列出关键词,具体算法可百度关键词,只是帮助自己理解,很多词语用得不严禁

图的表示
图由点(V)和边(E)构成,边存在有向边,无向边,带权边等区别。
边的通常使用两个端点代表,图的表示一般通过邻接链表或邻接矩阵。

图的搜索
图的一大问题就是图的搜索,这是图的基本算法。总体上分为广度优先和深度优先算法。
广度优先: 通常解决两点间的最短距离问题,算法的本质有点像“每次都选最好的”

深度优先:有点像人走迷宫,选择一个点,然后有路就会一直走下去,遇到死路退回,继续走。
深度优先每个顶点可记录两个属性,v.d表示第一经过v的时间,v.f表示返回时经过v的时间。
深度优先可以将图化为树,将边分为树边,前向边,后向边,横边。
深度优先是对图的一种重构。

参考: http://blog.csdn.net/mcgrady_tracy/article/details/12450469

拓扑排序
无回路的图中,将每个顶点排序,使得该图没有指向后面的边。可应用的环境,比如:一堆事件需要做,但是洗锅需要在炒菜之前做,对这些事件进行排序。

想出的算法:遍历图,将图中没有前置节点的顶点取出,并删除和该点有关的所有边,先取出的顶点排在前面。
缺点:复杂度高,需要删边遍历查找等操作。

深度优先算法:将图深度优先遍历,记录v.f,根据v.f由大到小进行排序。
思想:意思就是每次都取v.f最大的,无环图中,父亲的v.f一定比儿子的v.f大,所以v.f最大的一定没有父亲。

参考:http://blog.csdn.net/liwen_7/article/details/7298736

强连通分量
在图中,环的存在对图的影响比较大,所以经常将环缩成一个点,能缩成一个点的叫做强连通分量,定义是强连通分量中的点任意两两可达。

想出的算法:深度搜索图,将后向边(回边)包含的顶点进行缩点,同时处理缩点后的边的关系。
缺点:复杂度高,没缩一个点需要处理边的更换。

Kosaraju算法:利用了图G和他的反土GT,将G进行深度优先,并排序(类是与拓扑排序,虽然存在回边的情况)。在GT图中,按照G图的拓扑顺序进行深度优先搜索,此时产生的树都是强连通分量。
证明:假设在GT图中,顶点v搜索到u。那么在G图中必定存在u到v的边,假如u、v不在同一个强连通分量中,存在两种情况(深度先搜索v,那么v.f

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值