数据结构—第六章 图

图:

可简单理解为有一些顶点和连接顶点的连线组成。

度:

与结点关联的边数,在有向图中为入度与出度之和。

任意一个图的总度数等于其边数的2倍

出度:在有向图中以这个结点为起点的有向边的数目。(可形象的理解为离开这个结点的边的数目)入度:在有向图中以这个结点为终点的有向边的数目。(可形象的理解为进入/指向这个结点的边的数目)

联通:

如果在同一无向图中两个结点存在一条路径相连,则称这两个结点连通。

如果有向图中任意两个结点之间存在两条路径(即(i,j)两点中,既从i到j有一条路径,j到i也有一条路径),则两点是强连通的。当一个图中任意两点间都是强连通的,则该图称之为强连通图。

强连通分量:非强连通图有向图中的最大子强连通图。

在强连通图中,必定有一条回路经过所有顶点。

回路:

起点与相同的路径,又叫“环”。

完全图:

任意两点间都存在边使其相连的无向图或任意两点间都存在两条不同边的有向图称作完全图

有向 有n(n-1)条边       无向 有n(n-1)/2条边

完全图:任意两个点都有一条边相连

图的存储结构:

邻接矩阵表示法:所谓邻接矩阵存储结构就每个顶点用一个一维数组存储边的信息,这样所有点合起来就是用矩阵表示图中各顶点之间的邻接关系。所谓矩阵其实就是二维数组。

邻接链表表示法。

图的遍历:

搜索引擎的两种基本抓取策略 —深度优先/广度优先

深度优先遍历,就是在每个点x上面的的多条分支时,任意选择一条边走下去,执行递归,直到回溯到点x后再走其他的边。

按照深度优先遍历的过程,以每一个结点第一次被访问的顺序,依次赋值1~N的整数标记,该标记就被称为时间戳。

一般来说,我们在对树的进行深度优先时,对于每个节点,在刚进入递归时和回溯前各记录一次该点的编号,最后会产生一个长度为2 N 2N2N的序列,就成为该树的D F S DFSDFS序。


若在一个无向图中的一个子图中任意两个点之间都存在一条路径(可以相互到达),并且这个子图是“极大的”(不能在扩展),则称该子图是原图的一个联通块

稠密图适于在邻接矩阵上进行深度遍历;  稀疏图适于在邻接表上进行深度遍历。

极小连通子图:该子图是G 的连通子图,在该子图中删除任何一条边,子图不再连通。
生成树:包含图G所有顶点的极小连通子图(n-1条边)。

使用不同的遍历图的方法,可以得到不同的生成树;从不同的顶点出发,也可能得到不同的生成树;按照生成树的定义,n 个顶点的连通网络的生成树有 n 个顶点、n-1 条边。

kruskal算法:

        每次选择权值最小的边,若该边两点没有加入集合,就将他加入。
        起初每个点的都是一个独立的集合,把边权从小到达排序,按照边权枚举边,用并查集判断两个是否在同一个集合,如果在一个集合就跳过当前边,反之就联通这两个集合。

Prim算法:

        每次选择当前点所连的边的最小值,然后把它连起来。有些类似D i j k s t r a DijkstraDijkstra就是一个
        普通版本的时间复杂度为O ( n 2 )        堆优化的算法时间复杂度为O(nlogn)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值