图的学习以及最小生成树2月16日

图的基本概念
在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关。图是一种较线性表和树更加复杂的数据结构。在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。

图的定义:图是由顶点的有穷非空集合和顶点之间的边的集合组成的,G表示,V是图G中顶点的集合,E是图G中边的集合

无向图:任意两点的边都是无向边组成的图(无向边:(A,B)表示点A能到点B,点B也能到点A)

有向图:任意两点的弧都是有向边组成的图(有向边:<A,B>表示点A能到点B,点B不能到点A(B为弧头,A为弧尾)

边较少的图叫稀疏图,反之叫稠密图

权,网:图的边或弧相关的数叫权,这种带权的图通常叫做网

顶点的度:无向图中顶点的度表示和顶点相关联的的边的数目(记TD);有向图中分为入度和出度

 入度为顶点为弧头有关联的弧,出度为顶点为弧尾有关联的弧

路径长度:路径长度是路径上边或弧的数目

回路,环:第一个顶点和最后一个顶点相同的路径称为回路或环

连通图:图中任意两点都是连接的(有路径),有向图中称为强连通图。
存储方式

邻接矩阵:

其实就是用二维数组来存储数据,如果顶点数据是其他的加给结构体就行。有相图其实就是列与行哪个在前的改变。

邻接表:

就是用链表来进行存储,其指针域是代表指向的那条边的顶点。

十字链表与邻接多重表

总的来说要看情况来使用图的存储方式。

最小生成树算法理解

prim算法

此算法难点就是如何更新并判断顶点与树之间的最小代价因为代价值是可能发生改变的。

算法实现

这里用了isjoin与lowcost数组来实现,lowcost如何更新其实就只要把你新加入的哪个顶点与其他顶点的边权值相比较,如果值较之前原来的树与此顶点的值小就更新新的权值。isjoin是防止重复加入树。

kruskl算法

此算法难点就是如何判断联通,是不是很熟悉,其实就可以应用并查集思想了,而且还要用到排序因为此算法要一个个边权从小到大来连接。

此上就是我对此算法的理解。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值