数据结构第七章(图---总结一)

首先看的是图的各种定义 一大堆 没仔细记 就看了没多久 因为性质太多了
会了
(1)图的创建保存方式
一 邻接矩阵法
用二维数组进行保存即可
二 邻接表
用了很多结构体数组保存点 然后在结构体中会有个首指针 这个指针专门用来保存 与该节点所连接的点 的各种信息
学会了邻接表的创建 虽然太多代码。。但是还是自己能敲出来
(2)图的遍历方式
一 深度优先搜索(dfs)
函数递归调用 由一个节点一直遍历到底,时间复杂度太高
二 广度优先搜索 (bfs)
使用队列实现 一层一层的遍历 时间复杂度度相对 不高
(3)最小生成树
就是构成连通图的最小代价生成的树状结构称为 最小生成树
一共分为俩个内容:
一 普里姆算法 (prim)
首先生成一个邻接矩阵,此算法就是算出从起点出发每次找出最短的路径,然后把路径记录下来 下次继续用这个最短路径找出下一个路径 直到图遍历完毕
具体分开讲
二 克鲁斯卡尔(kruskal)
与普雷姆算法不同的是 这个算法 使用的是边集数组 ,而普雷姆使用的是顶点数组,
克鲁斯卡尔 与并查集一样 只不过就是先把 每条边的权值排个序 然后 用并查集 加入图就行了
(4)最短路径
对于网图来说 最短路径指俩个顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源地 最后一个顶点是终点 ,求最短路径 一共有俩种方法:
一: 迪杰斯特拉(Dijkstra)也叫单源路径求法
此算法与最小生成树的普雷姆方法差不多 ,只不过就是用权值保存的数组 要判断路径总和之比 如果小才使用这个顶点做下一次的起始点。
二: 弗洛伊德(floyd) 多源路径法
此算法与简单的dp差不多 首先生成俩个一模一样的邻接矩阵 然后有 三重循环 第一重循环就是 表示借过这个点 然后下面俩层循环 表示起点和终点,如果从起点走到终点的距离 比从起点借过 第一重循环的那个点再到终点 距离 大 那么 我肯定是借过这个点 所以 改变 这个邻接矩阵的值
最后借过的点遍历到 最后 整个图的 最短路径就保存在邻接矩阵里面了
(5)拓扑排序
首先讲一下AOV网 AOV网:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网 我们称为AOV网
拓扑序列 在一个具有n个顶点的有向图中,满足顶点 vi vj 之间有一条路径 ,则在顶点序列中顶点Vi必在Vj之前 ,则我们称这样的顶点为拓扑序列
拓扑排序 从AOV网中选择一个入度为0的顶点输出,然后删除此顶点,并删除以此顶点为尾的弧,重复此操作,知道输出全部顶点或者AOV网中不存在入度为0的顶点为止

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值